CImageAllocator 类

[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 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 类