次の方法で共有


Data Unit Extensions の使用 (Microsoft Media Foundation)

Windows Media Audio および Video コーデックは、Advanced Systems Format (ASF) コンテナーで適切に動作するように設計されています。 ASF は、Windows Media Audio (WMA) ファイルと Windows Media Video (WMV) ファイルに使用される構造化形式です。 これは、データのストリーミング用に設計された拡張可能な形式です。 ASF 構造体の通常とは異なる特性の 1 つは、メタデータを個々のサンプルにアタッチし、そのデータをサンプルと共にビット ストリームに埋め込む機能です。 この方法で格納されるメタデータの項目は、データ ユニット拡張機能または サンプル拡張機能と呼ばれます。

データ ユニット拡張機能には、エンコーダー、デコーダー、またはプレーヤー アプリケーションに必要な情報を含めることができます。 Windows Media 9 シリーズのコーデックに実装されているデータユニット拡張の種類のほとんどは、メディアをデコードしてレンダリングするアプリケーション用のデータを含みます。 たとえば、ソース データから SMPTE タイム コードを保持するには、それらをデータ ユニット拡張機能として追加します。 ただし、次のコーデック機能にはデータ ユニット拡張機能が必要です。

  • 強制キー フレーム挿入
  • インターレース ビデオ エンコード
  • コーデックに直接アクセスするときにデータ ユニット拡張機能を使用するのが難しいのは、オブジェクトが拡張データを受け取るメカニズムです。 これは、この機能をサポートするように設計されたバッファー オブジェクトを使用して、Windows Media Format SDK のオブジェクトによって実現されます。 Windows Media Format SDK を使用して、データ ユニット拡張機能を必要とするコーデック機能をアクティブ化することをお勧めしますが、これらの機能はスタンドアロンのコーデック オブジェクトで動作させることができます。

拡張サンプルをコーデック オブジェクトに渡す

Windows Media Format SDK では、 INSSBuffer インターフェイスを公開するバッファー オブジェクトが使用されます。 最新のインターフェイスは INSSBuffer4 です。 データ ユニット拡張機能を持つコーデック オブジェクトにサンプルを渡すには、IMediaBuffer または IMFMediaBuffer インターフェイスと INSSBuffer インターフェイスを実装するバッファー オブジェクトを使用する必要があります。 Windows Media Format SDK または Microsoft Media Foundation によって作成されたバッファー オブジェクトを使用してこれを実現することも、要件を満たす独自のバッファー クラスを作成することもできます。 独自のバッファー クラスを作成するには、 INSSBuffer インターフェイスのメソッド プロトタイプに準拠する必要があります。 これらのインターフェイス定義は、Windows Media Format SDK と共にインストールされている wmsbuffer.h ヘッダー ファイルにあります。

Windows Media コーデック