memfile例子的缓冲改进

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 capboy 的 blog

在使用当中,很多人对应默认的读取数据大小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.就完成了这个工作.好了,你现在的数据量的要求应该是你自己设置的了...跟踪看看就知道了.

本文关键:directshow
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top