IMFTransform::SetOutputType 方法 (mftransform.h)

设置、测试或清除此媒体基础转换 (MFT) 的输出流的媒体类型。

语法

HRESULT SetOutputType(
  [in] DWORD        dwOutputStreamID,
  [in] IMFMediaType *pType,
  [in] DWORD        dwFlags
);

参数

[in] dwOutputStreamID

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

[in] pType

指向 IMFMediaType 接口的指针,或 NULL

[in] dwFlags

_MFT_SET_TYPE_FLAGS枚举中的零个或多个标志。

返回值

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

返回代码 说明
S_OK
方法成功。
MF_E_INVALIDMEDIATYPE
转换不能使用建议的媒体类型。
MF_E_INVALIDSTREAMNUMBER
流标识符无效。
MF_E_INVALIDTYPE
建议的类型无效。 此错误代码指示媒体类型本身未正确配置;例如,它可能包含相互矛盾的标志。
MF_E_TRANSFORM_CANNOT_CHANGE_MEDIATYPE_WHILE_PROCESSING
MFT 在处理数据时无法切换类型。 尝试清空或刷新 MFT。
MF_E_TRANSFORM_TYPE_NOT_SET
在设置输出类型之前,必须设置输入类型。
MF_E_UNSUPPORTED_D3D_TYPE
MFT 找不到合适的 DirectX 视频加速 (DXVA) 配置。

注解

此方法可用于设置、测试(无需设置)或清除媒体类型:

  • 若要设置媒体类型,请将 dwFlags 设置为零,并将 pType 设置为指定媒体类型的非 NULL 指针。
  • 若要在不设置媒体类型的情况下测试媒体类型,请将 dwFlags 设置为 MFT_SET_TYPE_TEST_ONLY 并将 pType 设置为指定媒体类型的非 NULL 指针。 如果媒体类型是可接受的,方法返回 S_OK。 否则,它将返回 MF_E_INVALIDMEDIATYPE。 无论返回值如何,当前媒体类型都不会更改。
  • 若要清除媒体类型,请将 pType 设置为 NULL
在一个流上设置媒体类型可能会更改另一个流上可接受的类型。

MFT 可能要求调用方在设置输出类型之前设置一个或多个输入类型。 如果是这样,方法将返回 MF_E_TRANSFORM_TYPE_NOT_SET

如果 MFT 支持 DirectX 视频加速 (DXVA) 但找不到合适的 DXVA 配置 (例如,如果图形驱动程序) 没有适当的功能,则该方法应返回 MF_E_UNSUPPORTED_D3D_TYPE。 有关详细信息,请参阅 支持 Media Foundation 中的 DXVA 2.0

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

要求

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

另请参阅

IMFTransform

Media Foundation 转换