最近一直在DM365平台上进行音视频录制的开发工作, 由于系统为wince6.0,所以采用了directshow实现。视频编码模块封装成单独的filter, 由于硬编码器的输入缓冲区要求物理地址连续(TI提供了一个叫CMEM的模块),这就需要重新实现directshow的内存管理机制。
一、实现自己的内存分配器
1. 内存管理的几个相关接口及类有:
1).IMemAllocator
2).CBaseAllocator
3).CMemAllocator
2. 实际的内存分配相关函数是在CMemAllocator中实现,涉及3个函数:
1).HRESULT CMemAllocator::Alloc(void), 此函数进行内存分配,代码如下: