directshow sdk学习笔记:CMemAllocator与CMediaSample
来源:互联网 发布:阿里软件下载 编辑:程序博客网 时间:2024/06/16 11:07
在directshow的示例中我们发现所有的Filter都继承于CUnknown,但CMediaSample则直接继承于IMediaSample2接口,而未继承自CUnknown。这是因为CUnknown类提供了COM件聚合能力,从CUnknown继承的Filter可以被嵌套,通过delegate的方式为容器提供该Filter所能提供的功能。而CMediaSample只是用于传送媒体数据,不存在被嵌套的可能,因此无需从CUnknown继承。
由于直接继承自接口,CMediaSample不能利用combase.h提供的DECLARE_IUNKNOWN宏来实现IUnknown接口函数的声明与实现,必须手工编写这IUnknown接口函数的声明与实现。CMediaSample继承自IMediaSample2,而IMediaSample2又继承自IMediaSample,因此CMediaSample同时实现了IMediaSample及IMediaSample2,这在CMediaSample的QueryInterface里得到了体现。CMediaSample的AddRef()是标准的AddRef实现方式,值得注意的是其Release实现方式,在引用计数降为零,不是象标准Release实现那样,释放自已,而是调用其所属IMemAllocator引用对象m_pAllocator的ReleaseBuffer,将本MediaSample放入IMemAllocator对象的空闲缓冲池。CMediaSample实例对象的创建是由CMemAllocator完成的,其释放也是由CMemAllocator完成的,需要注意的是其包含的CMemSample的释放不是CMemAllocator的DeCommit进行的,实际是通过调用CMemAllocator类的析构函数中的ReallyFree完成的。
- directshow sdk学习笔记:CMemAllocator与CMediaSample
- directshow 学习笔记 下载包括directshow sdk的directX9 sdk的地址
- DirectX SDK 与 DirectShow SDK
- DirectX SDK 与 DirectShow SDK
- DirectX SDK 与 DirectShow SDK
- DirectX SDK 与 DirectShow SDK
- Directshow(SDK)学习笔记九_视频捕捉
- Directshow(SDK)学习笔记九_视频捕捉
- Directshow(SDK)学习笔记九_视频捕捉
- Directshow(SDK)学习笔记九_视频捕获
- Directshow(SDK)学习笔记九_视频捕捉
- DirectShow SDK笔记【关于DirectShow(1)】
- DirectShow SDK笔记【关于DirectShow(2)】
- DirectShow SDK笔记【关于DirectShow(3)】
- DirectShow SDK笔记【关于DirectShow(4)】
- DirectShow SDK笔记【关于DirectShow(4)】
- DirectShow SDK笔记【关于DirectShow(3)】
- DirectShow SDK笔记【关于DirectShow(2)】
- error LNK1123: 转换到 COFF 期间失败
- 一点心得
- android dialog的黑色边框问题解决
- php 一次删除多张表
- Windows Server2003 IIS 6.0 安全配置
- directshow sdk学习笔记:CMemAllocator与CMediaSample
- aix中 mksysb 系统级备份
- 17个新手常见Python运行时错误
- C#4.0权威指南(奋斗的小鸟)_PDF 电子书
- Shell脚本调试技术
- 生成符合复杂性的随机密码
- PyQt 国际化支持
- C++编码规范
- 回调函数例子