CBaseOutputPin.DecideAllocator 方法

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

方法 DecideAllocator 选择内存分配器。

语法

virtual HRESULT DecideAllocator(
   IMemInputPin  *pPin,
   IMemAllocator **pAlloc
);

参数

pPin

指向输入引脚的 IMemInputPin 接口的指针。

pAlloc

接收指向分配器的 IMemAllocator 接口的指针的变量的地址。

返回值

如果成功,则返回S_OK,或返回指示错误原因的 HRESULT 值。

备注

此方法在引脚连接过程结束时调用。 它执行以下步骤:

  1. 调用 IMemInputPin::GetAllocatorRequirements 方法来检索输入引脚的缓冲区要求(如果有)。
  2. 调用 IMemInputPin::GetAllocator 方法以从输入引脚请求分配器。 如果输入引脚不提供分配器,则输出引脚通过调用 CBaseOutputPin::InitAllocator 类方法创建一个分配器。
  3. 调用 CBaseOutputPin::D ecideBufferSize 类方法,用于设置分配器属性。 这是一种纯虚拟方法;派生类必须实现它。
  4. 调用 IMemInputPin::NotifyAllocator 方法,该方法通知正在使用的分配器的输入引脚。

要求

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

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

另请参阅

CBaseOutputPin 类