コーデック形式を列挙するには

[このページに関連付けられている機能である Windows Media Format 11 SDK は、従来の機能です。 ソース リーダーシンク ライターに置き換わりました。 ソース リーダーシンク ライターは、Windows 10とWindows 11用に最適化されています。 Microsoft では、可能であれば、新しいコードで Windows Media Format 11 SDK ではなくソース リーダーシンク ライターを使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]

コーデック形式は、コーデックからのデータが設定されたストリーム構成オブジェクトです。 各コーデック形式には、コーデックでサポートされているメディア構成が含まれています。 ほとんどのオーディオ コーデックでは、有限の数の形式がサポートされています。それぞれの形式はコーデックによって列挙され、 IWMCodecInfo のメソッドを使用してアクセスできます。 一方、ビデオ コーデックは 1 つの形式のみを提供します。 これは、ビデオ ストリームには、オーディオ ストリームの設定よりも柔軟な変数 (フレーム サイズなど) があるためです。 ビデオ ストリームでは、ストリーム構成値の一部を入力する必要があります。オーディオ ストリームの構成は、名前、接続名、およびストリーム番号を割り当てるためにのみ編集する必要があります。 詳細については、「 すべてのストリームに共通の構成」を参照してください。

列挙されるコーデック形式は、 IWMCodecInfo3::SetCodecEnumerationSetting を使用して設定されている現在のコーデック列挙設定によって異なります。 現在、サポートされているコーデック プロパティは 2 つだけです。コーデックが実行するエンコード パスの数を指定する g_wszNumPasses と、コーデックで可変ビット レート エンコードを使用するかどうかを指定する g_wszVBREnabled。 いずれかのコーデックでサポートされるエンコード パスの最大数は 2 であるため、次の表に示すように、コーデックを取得できる 4 つの異なる構成があります。

  定数ビット レート (CBR) ストリーム 2 パス CBR ストリーム 品質ベースの可変ビットレート (VBR) ストリーム ビット レート ベースの VBR ストリーム (制約付きまたは制約なし)
g_wszVBREnabled false false TRUE TRUE
g_wszNumPasses 1 2 1 2

 

コーデックでサポートされている形式を列挙するには、 IWMCodecInfo::GetCodecFormatCount を使用して、サポートされているコーデックの数を検索します。 次に、形式ごとに IWMCodecInfo::GetCodecFormat を呼び出します。 書式インデックスの範囲は 0 から、サポートされている書式の合計数より 1 未満です。 IWMCodecInfo2::GetCodecFormatDesc を呼び出すことで、形式の説明を取得できます。 GetCodecFormatDesc を使用する場合、ストリーム構成オブジェクトは両方のメソッドによって取得されるため、GetCodecFormat を使用する必要はありません。 ビデオ コーデック形式には説明は含まれません。 各ビデオ コーデックには、その種類のすべてのストリームに使用される 1 つの形式しかありません。

コーデック形式を取得すると、フォーマット設定を含むストリーム構成オブジェクトの IWMStreamConfig インターフェイスが取得されます。

コーデックからのストリーム構成情報の取得