使用限制字段
注意
本主题适用于 Windows 7 或更高版本。
使用领域限制是一项规定,用于限制如何使用特定技术的许可证。
Media Foundation 提供了一种机制,用于强制实施媒体基础转换的字段限制, (MFT) ,尤其是编解码器。 此机制要求 MFT 阻止应用程序自己使用,直到应用程序与 MFT 执行握手。 Media Foundation 不定义握手 ,通常涉及某种加密交换。
注册和枚举
如果 MFT 具有使用字段限制,则注册 MFT 时设置 MFT_ENUM_FLAG_FIELDOFUSE 标志。 此标志适用于以下 MFT 注册 API:
默认情况下,向此标志注册的 MFT 将从枚举结果中排除。 若要枚举具有使用字段限制的 MFT,请调用 MFTEnumEx 并在 Flags 参数中指定MFT_ENUM_FLAG_FIELDOFUSE标志。 下图演示了此过程。
MFTEnum 函数始终排除具有使用字段限制的任何 MFT。
解锁 MFT
若要对使用字段限制使用 MFT,请执行以下步骤:
- 应用程序实现 IMFFieldOfUseMFTUnlock 接口。
- IMFFieldOfUseMFTUnlock::Unlock 方法使用指向 MFT 的 IUnknown 接口的指针。
- 在 Unlock 方法中,应用程序使用 MFT 定义的任何机制执行所需的握手。 此步骤未由 Media Foundation API 定义。
- 如果 Unlock 方法成功,MFT 将自行解锁。
应用程序通过设置MFT_FIELDOFUSE_UNLOCK_Attribute属性来指定 IMFFieldOfUseMFTUnlock 指针。 设置此属性的方法有多种不同,具体取决于应用程序如何创建解码器或编码管道:
API | 如何解锁使用字段 |
---|---|
源读取器 | 如果应用程序使用 源读取器 解码媒体文件,请在配置参数中设置 MFT_FIELDOFUSE_UNLOCK_Attribute 属性。 请参阅 源读取器属性。 |
接收器编写器 | 如果应用程序使用接收器编写器对媒体文件进行编码,请在配置参数中设置 MFT_FIELDOFUSE_UNLOCK_Attribute 属性。 请参阅 接收器编写器属性。 |
快速转码 | 如果应用程序使用快速转码功能创建编码拓扑,请在调用 IMFTranscodeProfile::SetContainerAttributes 时设置MFT_FIELDOFUSE_UNLOCK_Attribute。 有关快速转码功能的详细信息,请参阅 转码 API。 |
拓扑 | 如果直接创建拓扑,请将 MFT_FIELDOFUSE_UNLOCK_Attribute 设置为拓扑上的属性。 请参阅 拓扑属性。 |
MFT 激活对象 | 如果应用程序直接枚举要使用的解码器或编码器,请在 MFTEnumEx 函数返回的 IMFActivate 指针上设置MFT_FIELDOFUSE_UNLOCK_Attribute。 在调用 IMFActivate::ActivateObject 之前设置属性以创建 MFT。 激活对象在创建 MFT 时调用 IMFFieldOfUseMFTUnlock::Unlock 。 |
下图显示了 MFT 激活对象与 IMFFieldOfUseMFTUnlock 接口之间的关系。
相关主题