MFTRegister 函数 (mfapi.h)

将有关媒体基础转换的信息 (MFT) 添加到注册表。

应用程序可以通过调用 MFTEnum 或 MFTEnumEx 函数来枚举 MFT

语法

HRESULT MFTRegister(
  [in] CLSID                  clsidMFT,
  [in] GUID                   guidCategory,
  [in] LPWSTR                 pszName,
  [in] UINT32                 Flags,
  [in] UINT32                 cInputTypes,
  [in] MFT_REGISTER_TYPE_INFO *pInputTypes,
  [in] UINT32                 cOutputTypes,
  [in] MFT_REGISTER_TYPE_INFO *pOutputTypes,
  [in] IMFAttributes          *pAttributes
);

parameters

[in] clsidMFT

MFT 的 CLSID。 还必须使用相同的 CLSID 将 MFT 注册为 COM 对象。

[in] guidCategory

指定 MFT 类别的 GUID。 有关 MFT 类别的列表,请参阅 MFT_CATEGORY

[in] pszName

包含 MFT 友好名称的宽字符字符串。

[in] Flags

_MFT_ENUM_FLAG 枚举中以下标志的零个或多个按位 OR

含义
MFT_ENUM_FLAG_ASYNCMFT
MFT 在软件中执行异步处理。 请参阅 异步 MRT。 此标志不适用于硬件转换。

需要 Windows 7。

MFT_ENUM_FLAG_FIELDOFUSE
应用程序必须解锁 MFT 才能使用它。 请参阅 IMFFieldOfUseMFTUnlock

需要 Windows 7。

MFT_ENUM_FLAG_HARDWARE
MFT 使用 AVStream 驱动程序或基于 GPU 的代理 MFT 执行基于硬件的数据处理。 此类别中的 MCT 始终以异步方式处理数据。 请参阅 硬件 MRT
注意 此标志适用于完全在硬件中执行其工作的视频编解码器和视频处理器。 它不适用于使用 DirectX 视频加速协助解码的软件解码器。
 
需要 Windows 7。
MFT_ENUM_FLAG_SYNCMFT
MFT 在软件中执行同步处理。 此标志不适用于硬件转换。
MFT_ENUM_FLAG_TRANSCODE_ONLY
MFT 已针对转码进行优化,不应用于播放。

需要 Windows 7。

 

标志 设置为零等效于设置 MFT_ENUM_FLAG_SYNCMFT 标志。 MRT 的默认处理模型是同步处理。

在 Windows 7 之前,已保留 Flags 参数。

[in] cInputTypes

pInputTypes 数组中的元素数。

[in] pInputTypes

指向MFT_REGISTER_TYPE_INFO结构的数组 指针。 数组的每个成员都指定 MFT 支持的输入格式。 此参数可以为 NULL。

此参数可以为 NULL。 但是,如果 参数为 NULL,则仅当应用程序为所需输入类型指定 NULL 时,才会枚举 MFT。

[in] cOutputTypes

pOutputTypes 数组中的元素数。

[in] pOutputTypes

指向MFT_REGISTER_TYPE_INFO结构的数组 指针。 数组的每个成员定义 MFT 支持的输出格式。

此参数可以为 NULL。 但是,如果 参数为 NULL,则仅当应用程序为所需输出类型指定 NULL 时,才会枚举 MFT。

[in] pAttributes

指向包含其他注册表信息的属性存储的 IMFAttributes 接口的指针。 此参数可以为 NULL。 如果参数为非 NULL,则属性将作为字节数组写入注册表。 可以使用 MFTGetInfo 函数检索属性。

为此参数定义了以下属性:

含义
MFT_CODEC_MERIT_Attribute
包含硬件编解码器的优点值。 请参阅 编解码器优点

返回值

如果此函数成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。

注解

此函数创建的注册表项由以下函数读取:

函数 说明
MFTEnum 按媒体类型和类别枚举 MRT。
MFTEnumEx MFTEnum 的扩展版本。
MFTGetInfo 通过 CLSID 查找 MFT 并检索注册表信息。
 

此函数不会为 CoCreateInstanceCoGetClassObject 函数注册 MFT 的 CLSID。

若要从注册表中删除条目,请调用 MFTUnregister。 如果从系统中删除 MFT,应始终调用 MFTUnregister

pInputTypespOutputTypes 参数中提供的格式旨在帮助应用程序按格式搜索 MRT。 应用程序可以使用 MFTEnumMFTEnumEx 函数枚举与一组特定格式匹配的 MFT。

建议在 pInputTypes 中 至少指定一个输入类型,在 pOutputTypes 参数中指定一个输出类型。 否则,可能会在 枚举中跳过 MFT。

在 64 位 Windows 上,此函数的 32 位版本在注册表的 32 位节点中注册 MFT。 有关详细信息,请参阅 注册表中的 32 位和 64 位应用程序数据

要求

   
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 mfapi.h
Library Mfplat.lib
DLL Mfplat.dll

另请参阅

MFTEnumEx

媒体基础函数

Media Foundation 转换

_MFT_ENUM_FLAG