使用制限のフィールド
注意
このトピックは、Windows 7 以降に適用されます。
使用分野の制限とは、特定のテクノロジのライセンスを使用する方法を制限する規定です。
Media Foundation には、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 Activation オブジェクト | アプリケーションが使用するデコーダーまたはエンコーダーを直接列挙する場合は、MFTEnumEx 関数によって返される IMFActivate ポインターにMFT_FIELDOFUSE_UNLOCK_Attributeを設定します。 IMFActivate::ActivateObject を呼び出して MFT を作成する前に、 属性を設定します。 アクティブ化オブジェクトは、MFT の作成時に IMFFieldOfUseMFTUnlock::Unlock を呼び出します。 |
次の図は、MFT アクティブ化オブジェクトと IMFFieldOfUseMFTUnlock インターフェイスの関係を示しています。
関連トピック