IMFTransform::GetInputAvailableType 方法 (mftransform.h)

获取此媒体基础转换 (MFT) 上的输入流的可用媒体类型。

语法

HRESULT GetInputAvailableType(
  [in]  DWORD        dwInputStreamID,
  [in]  DWORD        dwTypeIndex,
  [out] IMFMediaType **ppType
);

参数

[in] dwInputStreamID

输入流标识符。 若要获取流标识符列表,请调用 IMFTransform::GetStreamIDs

[in] dwTypeIndex

要检索的媒体类型的索引。 媒体类型从零开始编制索引,并按大致优先顺序返回。

[out] ppType

接收指向 IMFMediaType 接口的指针。

返回值

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

返回代码 说明
S_OK
方法成功。
E_NOTIMPL
MFT 没有可用输入类型的列表。
MF_E_INVALIDSTREAMNUMBER
流标识符无效。
MF_E_NO_MORE_TYPES
dwTypeIndex 参数在范围外。
MF_E_TRANSFORM_TYPE_NOT_SET
在设置输入类型之前,必须设置输出类型。

注解

MFT 为每个输入流定义可用媒体类型的列表,并按首选项对其进行排序。 此方法枚举输入流的可用媒体类型。 若要枚举可用类型,请递增 dwTypeIndex ,直到方法返回 MF_E_NO_MORE_TYPES

在一个流上设置媒体类型可能会更改另一个流的可用类型,或更改首选项顺序。 但是,动态更新可用类型的列表不需要 MFT。 测试是否可以设置特定输入类型的唯一保证方法是调用 IMFTransform::SetInputType

在某些情况下,在设置一个或多个输出类型之前,MFT 无法返回输入类型列表。 如果是这样,方法将返回 MF_E_TRANSFORM_TYPE_NOT_SET

实现此方法不需要 MFT。 但是,大多数 MFT 应实现此方法,除非支持的类型很简单,并且可以通过 MFTGetInfo 函数发现。

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

对于编码器,在设置输出类型后, GetInputAvailableType 必须返回与当前输出类型兼容的输入类型列表。 这意味着, GetInputAvailableType 在设置输出类型后返回的所有类型都必须是 SetInputType 的有效类型。

如果输入媒体类型和输出媒体类型的属性不匹配,编码器应拒绝输入类型,例如具有 MF_MT_FRAME_SIZE的分辨率设置、带 MF_MT_VIDEO_NOMINAL_RANGE的标称范围设置或具有MF_MT_FRAME_SIZE

实现说明

如果 MFT 在内部存储媒体类型,则 MFT 应返回媒体类型的克隆,而不是指向原始类型的指针。 否则,调用方可能会修改类型并更改 MFT 的内部状态。

要求

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

另请参阅

IMFTransform

Media Foundation 转换