IMemAllocator 接口 (strmif.h)
[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayer、 IMFMediaEngine 和 媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
接口 IMemAllocator
分配媒体样本,用于在引脚之间移动数据。
当输入引脚公开 IMemInputPin 接口时,共享分配器的引脚使用此接口。 引脚协商哪个引脚将提供分配器。 分配器用于分配内存缓冲区、检索空缓冲区和释放缓冲区。 并非每个筛选器都会创建自己的分配器,因此多个筛选器可能会使用一个分配器。 有关详细信息,请参阅 筛选器连接方式。
应用程序通常不使用此接口。
若要使用分配器,请执行以下步骤:
- 调用 IMemAllocator::SetProperties 方法以指定缓冲区要求,包括缓冲区数和每个缓冲区的大小。
- 调用 IMemAllocator::Commit 方法来分配缓冲区。
- 调用 IMemAllocator::GetBuffer 方法以检索媒体样本。 此方法将阻止,直到下一个示例可用。
- 完成每个示例后,对示例调用 IUnknown::Release 方法。 当样本的引用计数达到零时,不会删除该示例。 相反,该示例返回到分配器的可用列表。
- 使用分配器后,调用 IMemAllocator::D ecommit 方法来释放缓冲区的内存。
继承
IMemAllocator 接口继承自 IUnknown 接口。 IMemAllocator 还具有以下类型的成员:
方法
IMemAllocator 接口具有以下方法。
IMemAllocator::Commit Commit 方法分配缓冲区内存。 |
IMemAllocator::D ecommit Decommit 方法释放缓冲区内存。 |
IMemAllocator::GetBuffer GetBuffer 方法检索包含空缓冲区的媒体示例。 |
IMemAllocator::GetProperties GetProperties 方法检索分配器将创建的缓冲区数和缓冲区属性。 |
IMemAllocator::ReleaseBuffer ReleaseBuffer 方法发布媒体示例。 |
IMemAllocator::SetProperties SetProperties 方法指定要分配的缓冲区数和每个缓冲区的大小。 |
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | strmif.h (包括 Dshow.h) |