IMFDeviceTransform::GetStreamIDs 方法 (mftransform.h)

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

语法

HRESULT GetStreamIDs(
  [in]  DWORD dwInputIDArraySize,
  [out] DWORD *pdwInputStreamIds,
  [out] DWORD dwOutputIDArraySize,
        DWORD *pdwOutputStreamIds
);

parameters

[in] dwInputIDArraySize

pdwInputStreamIDs 中的元素数

[out] pdwInputStreamIds

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

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

[out] dwOutputIDArraySize

pdwOutputStreamIDs 中的元素数。

pdwOutputStreamIds

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

返回值

该方法返回 HRESULT。 可能的值包括但不限于下表中给出的值。

返回代码 说明
S_OK
已成功转换流状态。
E_POINTER
传递的指针无效。
MF_E_BUFFERTOOSMALL
传入的缓冲区没有足够的空间来填充流 ID。

注解

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

所有输入流标识符在 MFT 中必须是唯一的,并且所有输出流标识符都必须是唯一的。 但是,输入流和输出流可以共享相同的标识符。 I

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

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

要求

   
最低受支持的客户端 Windows 10 版本 1703
目标平台 Windows
标头 mftransform.h

另请参阅

IMFDeviceTransform