CImageAllocator 类

[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayerIMFMediaEngine音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

cimageallocator 类层次结构

CImageAllocator 实现一个分配器,该分配器管理与 GDI 设备无关的位图 (DIB) 。 此类派生自 CBaseAllocator 类。 它创建使用 CImageSample 类实现的媒体示例。

分配器由两个连接的引脚共享,但始终由连接中的一个筛选器拥有。 使用 CImageAllocator 的筛选器必须跟踪分配器是由自己还是由另一个筛选器提供的。 如果分配器本身提供,则拥有筛选器可以依赖于分配器中的所有媒体样本都是 CImageSample 对象这一事实。 因此,它可以使用 CImageSample 对象来获取有关 DIB 的信息, DIB 存储在 DIBDATA 结构中。

每当媒体类型发生更改时,拥有筛选器都应调用 NotifyMediaType

受保护的成员变量 说明
m_pFilter 指向拥有筛选器的指针。
m_pMediaType 指向当前媒体类型的指针。
受保护的方法 说明
Alloc 为缓冲区分配内存。
CheckSizes 根据当前媒体类型检查分配器属性。
CreateDIB 创建 DIB。
CreateImageSample 创建媒体示例。 虚拟。
免费 释放所有缓冲区内存。
公共方法 说明
CImageAllocator 构造函数方法。
NotifyMediaType 通知对象当前媒体类型。
IMemAllocator 方法 说明
SetProperties 指定要分配的缓冲区数和每个缓冲区的大小。

要求

要求
标头
Winutil.h (包括 Streams.h)

Strmbase.lib (零售版本) ;
Strmbasd.lib (调试生成)

另请参阅

CDrawImage 类