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。 可能的值包括(但并不限于)下表中的项。
返回代码 | 说明 |
---|---|
|
方法成功。 |
|
未实现。 请参阅“备注”。 |
|
其中一个或两个数组太小。 |
注解
流标识符是必需的,因为某些 MRT 可以添加或删除流,因此流的索引可能不是唯一的。 因此,对流进行操作的 IMFTransform 方法采用流标识符。
如果满足以下两个条件,则此方法可返回 E_NOTIMPL :
- 转换具有固定数量的流。
- 流从 0 到 n – 1 连续编号,其中 n 是输入流或输出流的数目。 换句话说,第一个输入流为 0,第二个为 1,依此:第一个输出流为 0,第二个输出流为 1,依依。
- 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 |