[このページに関連付けられている機能である Windows Media Format 11 SDK は、レガシ機能です。 これは、ソース リーダーとシンク ライターによって置き換えられます。 ソース リーダーとシンク ライターは、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、Windows Media Format 11 SDK ではなくソース リーダーとシンク ライターを使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
データ ユニット拡張機能 (DUEs) またはバッファー プロパティとも呼ばれるサンプル拡張機能は、ASF ファイルの data セクションのメディア サンプルに添付されているデータの項目です。 Windows Media Format SDK では、いくつかの種類のサンプル拡張機能が定義されています。 独自の拡張機能の種類を作成することもできます。
サンプル拡張機能を使用するには、プロファイルのストリーム構成データで拡張機能の種類を識別する必要があります。 IWMStreamConfig2::AddDataUnitExtension メソッドを呼び出して、拡張データを含むサンプルを受け入れるようにストリームを構成します。
INSSBuffer3::SetProperty メソッドを呼び出して、個々のサンプル拡張機能を入力サンプルに追加する必要があります。 サンプルを読み取るときに、 INSSBuffer3::GetProperty メソッドを呼び出して拡張データを取得できます。 また、INSSBuffer4 インターフェイスのメソッドを使用して、サンプルにアタッチされているデータユニット拡張機能を列挙することもできます。
次の表に、定義済みのデータ ユニット拡張識別子の一覧と、それぞれのサンプルに添付されているデータについて説明します。
| 拡張機能 GUID のサンプル | 説明 |
|---|---|
| WM_SampleExtensionGUID_OutputCleanPoint | データは、サンプルが クリーンポイントであるかどうかを示します。 値 0 は、サンプルがクリーンポイントではないことを示します。 0 以外の値は、それがクリーンポイントであることを示します。 このサンプル データ ユニット拡張機能 (DUE) の種類は、サードパーティ製コーデックでエンコードされたプレ圧縮メディア ストリームを書き込む際に、クリーンポイントを追跡するために使用されます。 |
| WM_SampleExtensionGUID_Timecode | データは、サンプルに関連付けられた SMPTE 時間コード データを含む WMT_TIMECODE_EXTENSION_DATA 構造体です。この DUE のサイズは常にWM_SampleExtension_Timecode_Size(14 バイト)です。 |
| WM_SampleExtensionGUID_FileName | この種類のサンプル拡張機能は、ファイル ストリームに使用されます。 ファイル ストリーム サンプル内のデータは、データ ファイルの一部です。 サンプル拡張機能のデータは、サンプル内のコンテンツの取得元となるファイルの名前を指定します。ファイル名は、パス情報のない name.extension 形式のファイル名を含むワイド文字列です。 |
| WM_SampleExtensionGUID_ContentType | データは、サンプルに含まれるコンテンツの種類を識別します。 この種類のサンプル拡張機能は、インターレースされたビデオ ストリームで使用されます。インターレースされたすべてのコンテンツでは、ビットごとの OR によって組み合わされたWM_CT_INTERLACED フラグと、WM_CT_BOTTOM_FIELD_FIRST、WM_CT_TOP_FIELD_FIRST、またはWM_CT_REPEAT_FIRST_FIELDが使用されます。 フィールドの順序はエンコード プロセスでは使用されませんが、レンダリング ハードウェアに渡すことができるように、圧縮されたサンプルで維持されます。 インターレース コンテンツを正しくないフィールド順序で再生すると、ビデオ内のモーション ジッターなどのアーティファクトが発生します。 この DUE のサイズは常にWM_SampleExtension_ContentType_Size。 |
| WM_SampleExtensionGUID_PixelAspectRatio | データは、サンプル内のコンテンツのピクセル縦横比を示します。 これはビデオにのみ適用されます。この拡張の種類は、正方形以外のピクセルの縦横比を識別するために使用されます。 詳細については、「 正方形以外のピクセルでビデオ ストリームを読み書きするには」を参照してください。 縦横比の値は、低いバイトが X のアスペクトで、高いバイトが Y の側面を持つ単語として格納されます。 たとえば、16:9 は0x0910として格納されます。 この DUE のサイズは常にWM_SampleExtension_PixelAspectRatio_Sizeされ、これは 2 バイトです。 |
| WM_SampleExtensionGUID_SampleDuration | データは、バッファー オブジェクトに含まれるサンプルの期間をミリ秒単位で示します。 再生時に、この DUE が設定されている場合、リーダー オブジェクトはそれを使用して既存のサンプル期間の値を上書きします。この DUE は、ビットレートが 100 kbps 以上のビデオ ストリーム上の SDK ランタイム コンポーネントによって自動的に設定されます。この場合、DUE 情報のオーバーヘッドは重要ではありません。 ビット レートが 100 kbps 以下のストリームには設定されません。 (高ビット レート ストリーム上の) ライターによって値が独自のデータで上書きされるため、アプリケーションでこの DUE を手動で設定しないでください。 この DUE のサイズは常にWM_SampleExtension_SampleDuration_Sizeで、これは 2 バイトです。 |
| WM_SampleExtensionGUID_ChromaLocation | データは、I420 ビデオ形式で使用される彩度サブサンプリングの種類を示します。この拡張機能の値は、次のいずれかの値に設定されます。
この DUE のサイズは常にWM_SampleExtension_ChromaLocation_Sizeで、これは 1 バイトです。 |
| WM_SampleExtensionGUID_ColorSpaceInfo | データは、現在のビデオ フレームに使用される色空間に関する情報を提供します。この拡張機能の値は 、WMT_COLORSPACEINFO_EXTENSION_DATA 構造体です。 このデータ ユニット拡張機能は、プロファイルで構成されていません。 デコーダーからの出力サンプルに含まれています。 この DUE のサイズは常にWM_SampleExtension_ColorSpaceInfo_Size(3 バイト)です。 |
| WM_SampleExtensionGUID_UserDataInfo | データはカスタム ユーザー データです。データの最初の 4 バイトには、カスタム データのサイズが含まれます。 次のバイトには、サンプル拡張機能で提供されるユーザー データの種類が含まれます。 次の種類がサポートされています。
このデータ ユニット拡張機能は、プロファイルで構成されていません。 デコーダーから出力されるサンプルに含まれています。 |
| WM_SampleExtensionGUID_SampleProtectionSalt | データはサンプルによって暗号化されます。 この拡張の種類のサンプルは、ASF 以外のファイル形式と Windows Media DRM 以外の権限保護スキームからインポートされるコンテンツに使用されます。保護されたコンテンツをインポートするときは、各サンプルに一意の塩を含める必要があります。 通常、この値は単調に増加するカウンターです。 |