エンコーダー MFT のインスタンス化
Microsoft Media Foundation では、エンコーダーはメディア ファンデーション変換 (MFT) として実装されます。 エンコーダーを作成する前に、まずニーズに最も適したエンコーダーを見つける必要があります。
Windows Media オーディオ コーデック
カテゴリ: MFT_CATEGORY_AUDIO_ENCODER
メジャー タイプ: MFMediaType_Audio
サブタイプ: MFAudioFormat_WMAudioV9、MFAudioFormat_WMAudioV8、MFAudioFormat_WMAudio_Lossless、MFAudioFormat_WMASPDIF
Windows Media ビデオ コーデック
カテゴリ: MFT_CATEGORY_VIDEO_ENCODER
メジャー タイプ: MFMediaType_Audio
サブタイプ: MFVideoFormat_WVC1、MFVideoFormat_WMV3、MFVideoFormat_WMV2、MFVideoFormat_WMV1
メディア ファンデーションには、システムで使用できるさまざまなエンコーダーを列挙するためにアプリケーションで呼び出すことができるいくつかの関数が用意されています。 エンコーダーは COM オブジェクトとして登録され、レジストリ エントリは COM クラス ファクトリの標準形式に従います。 レジストリは、メディア形式 (オーディオまたはビデオ) によって分類されるエンコーダーの CLSID を維持します。 Windows Media エンコーダーのクラス識別子は、wmcodecdsp.h ヘッダー ファイルの定数として定義されます。 メディア ファンデーションでは、カテゴリ、サポートされている入力の種類、およびサポートされている出力の種類を指定することで、MFTRegisterLocal または MFTRegisterLocalByCLSID の呼び出しを通じてエンコーダーを登録できます。 これらの関数を使用して正常に登録されると、MFT はメディア ファンデーション列挙関数によって考慮されます。
エンコーダー MFT のインスタンスを作成する場合、アプリケーションには次の選択肢があります。
- エンコーダー MFT を直接作成し、IMFTransform インターフェイスへのポインターを受け取ります。 詳細については、「CoCreateInstance を使用したエンコーダーの作成」を参照してください。
- エンコーダー MFT のライセンス認証オブジェクトのインスタンスを作成し、IMFActivate インターフェイスへのポインターを受け取ります。 詳細については、「エンコーダーのライセンス認証オブジェクトの使用」を参照してください。
アプリケーションでパイプライン レイヤー ASF コンポーネントを使用してファイルを ASF 形式にエンコードしている場合は、エンコーダー MFT を変換ノードとしてパイプラインに挿入する必要があります。 エンコード トポロジで変換ノードを作成する場合、オブジェクトの種類を IMFTransform インターフェイスまたは IMFActivate オブジェクトへのポインターとして設定できます。 メディア ファンデーションには、エンコード トポロジ内の変換ノードとして便利に設定できるように、Windows Media エンコーダー用のライセンス認証オブジェクトが用意されています。 トポロジが解決されると、メディア セッションはライセンス認証オブジェクトを使用してエンコーダー MFT のインスタンスを作成します。
関連トピック