MFCreateSampleCopierMFT 函数 (mfidl.h)

创建示例复制器转换的实例。

语法

HRESULT MFCreateSampleCopierMFT(
  [out] IMFTransform **ppCopierMFT
);

parameters

[out] ppCopierMFT

接收指向 IMFTransform 接口的 指针。 调用方必须释放接口。

返回值

如果此函数成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。

注解

示例复制器是媒体基础转换 (MFT) ,可将数据从输入样本复制到输出样本,而无需修改数据。 从示例中复制以下数据:

  • 所有 示例属性
  • 时间戳和持续时间。
  • 示例标志 (请参阅 IMFSample::SetSampleFlags) 。
  • 媒体缓冲区中的数据。 如果输入样本包含多个缓冲区,则数据将复制到输出样本上的单个缓冲区中。
此 MFT 在以下情况下很有用:
  • 一个管道对象(如媒体源)为输出分配媒体样本。
  • 另一个管道对象(如媒体接收器)为输入分配自己的媒体样本。 例如,对象可能需要从特殊内存池(如视频内存)分配的缓冲区。
下图显示了媒体源和媒体接收器的这种情况。 关系图:媒体源指向示例;媒体接收器指向第二个样本;示例复制器指向从第一个样本到第二个样本的箭头

为了使媒体接收器从媒体源接收数据,必须将数据复制到媒体接收器拥有的媒体样本中。 示例复制器可用于此目的。

此类媒体接收器的一个具体示例是 增强的视频呈现器 (EVR) 。 EVR 分配包含 Direct3D 表面缓冲区的样本,因此无法直接从媒体源接收视频样本。 从 Windows 7 开始,拓扑加载程序通过在媒体源和 EVR 之间插入示例复制器自动处理这种情况。

要求

   
最低受支持的客户端 Windows 7 [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 R2 [仅限桌面应用]
目标平台 Windows
标头 mfidl.h
Library Mf.lib
DLL Mf.dll

另请参阅

媒体基础函数