memfile例子的緩衝改進

在使用當中,很多人對應默認的讀取數據大小32768非常不滿意.好像大部分的人都用到時時播放的系統中了.其實這個值是可以修改的.2的n次方的大小,還不能夠改成任意大小的.

在他的基類CAsyncOutputPin::RequestAllocator函數中.
參數IMemAllocator* pPreferred指出的緩衝的大小32768*6.
可以跟蹤看看他的值就知道了.
而參數IMemAllocator ** ppActual就是返回的實際值,他默認是使用pPreferred的.文檔也是說最好不要修改這些東西.當然自己修改是沒有問題的.
通過IMemAllocator的HRESULT SetProperties來設置.可以在文檔中看到:
typedef struct _AllocatorProperties {
    long cBuffers;
    long cbBuffer;
    long cbAlign;
    long cbPrefix;
} ALLOCATOR_PROPERTIES;

其中,cBuffers指出了有多少個緩衝塊,cbBuffer指出了沒有緩衝塊的大小.因爲受到一些限制,緩衝的總數只是能夠爲32768*6的大小...
把cbBuffer改成你想要的值,同時修改相應的cBuffers.就完成了這個工作.好了,你現在的數據量的要求應該是你自己設置的了...跟蹤看看就知道了.

發佈了34 篇原創文章 · 獲贊 1 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章