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。 可能的值包括(但并不限于)下表中的项。
返回代码 | 说明 |
---|---|
|
方法成功。 |
|
MFT 没有可用输入类型的列表。 |
|
流标识符无效。 |
|
dwTypeIndex 参数在范围外。 |
|
在设置输入类型之前,必须设置输出类型。 |
注解
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 |
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈