IMFTransform::GetStreamIDs 方法 (mftransform.h)

获取此媒体基础转换 (MFT) 的输入和输出流的流标识符。

语法

HRESULT GetStreamIDs(
  [in]  DWORD dwInputIDArraySize,
  [out] DWORD *pdwInputIDs,
  [in]  DWORD dwOutputIDArraySize,
  [out] DWORD *pdwOutputIDs
);

parameters

[in] dwInputIDArraySize

pdwInputIDs 数组中的元素数。

[out] pdwInputIDs

指向调用方分配的数组的指针。 方法使用输入流标识符填充数组。 数组大小必须至少等于输入流的数量。 若要获取输入流的数量,请调用 IMFTransform::GetStreamCount

如果调用方传递的数组大于输入流的数量,则 MFT 不得将值写入额外的数组条目。

[in] dwOutputIDArraySize

pdwOutputIDs 数组中的元素数。

[out] pdwOutputIDs

指向调用方分配的数组的指针。 方法使用输出流标识符填充数组。 数组大小必须至少等于输出流的数量。 若要获取输出流的数量,请调用 GetStreamCount

如果调用方传递的数组大于输出流的数量,则 MFT 不得将值写入额外的数组条目。

返回值

该方法返回 HRESULT。 可能的值包括(但并不限于)下表中的项。

返回代码 说明
S_OK
方法成功。
E_NOTIMPL
未实现。 请参阅“备注”。
MF_E_BUFFERTOOSMALL
其中一个或两个数组太小。

注解

流标识符是必需的,因为某些 MRT 可以添加或删除流,因此流的索引可能不是唯一的。 因此,对流进行操作的 IMFTransform 方法采用流标识符。

如果满足以下两个条件,则此方法可返回 E_NOTIMPL

  • 转换具有固定数量的流。
  • 流从 0 到 n – 1 连续编号,其中 n 是输入流或输出流的数目。 换句话说,第一个输入流为 0,第二个为 1,依此:第一个输出流为 0,第二个输出流为 1,依依。
如果满足以下任一条件,则必须实现此方法:
  • MFT 可以添加或删除输出流。
  • MFT 允许客户端添加或删除输入流。
  • 流标识符不是连续的。
所有输入流标识符在 MFT 中必须是唯一的,并且所有输出流标识符都必须是唯一的。 但是,输入流和输出流可以共享相同的标识符。

如果客户端添加输入流,客户端将分配标识符,因此 MFT 必须允许任意标识符,只要它们是唯一的。 如果 MFT 创建输出流,则 MFT 会分配标识符。

按照约定,如果 MFT 只具有一个固定输入流和一个固定输出流,则应将标识符 0 分配给这两个流。

如果在包括 mftransform.h 之前定义了 MFT_UNIQUE_METHOD_NAMES ,则此方法将重命名为 MFTGetStreamIDs。 请参阅 创建混合 DMO/MFT 对象

要求

   
最低受支持的客户端 Windows Vista [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2008 [桌面应用 | UWP 应用]
目标平台 Windows
标头 mftransform.h
Library Mfuuid.lib

另请参阅

IMFTransform

Media Foundation 转换