Share via


ContentInfo オブジェクトのプロパティの設定

ASF ファイルの作成時に、ContentInfo オブジェクトはメディア コンテンツの特性を認識して、さまざまなヘッダー オブジェクトに正しい値が設定されるようにする必要があります。

コンテンツ構成設定は、プロファイル内に含まれるストリーム設定であり、メディア シンクのストリーム識別子、メディアの種類、および漏れバケット パラメーターを指定します。 IMFASFContentInfo::SetProfile を呼び出して ContentInfo オブジェクトにプロファイルを設定すると、これらの値は生成された ASF ヘッダー オブジェクトに反映されます。 これらの設定の詳細については、「 ASF ストリームの作成と構成」を参照してください。

エンコーダー設定を使用した ContentInfo オブジェクトの構成

デジタル メディアのオーディオまたはビデオ データは複雑で、大量のメモリを占有します。 ほとんどの状況では、オーディオとビデオの両方が、ASF ファイルに追加される前にエンコーダーを使用して圧縮されます。 Media Foundation では、エンコーダーは 1 つの入力と 1 つの出力を持つ Media Foundation Transforms (MFT) として実装されます。 出力メディアの種類は、入力ストリームのメディアの種類と、ストリームの圧縮に選択するエンコードの種類に応じて選択する必要があります。

エンコード セッションの前に、エンコードの種類に応じて関連するプロパティを設定してエンコーダーを構成する必要があります。

エンコーダーを構成した後は、設定された ContentInfo オブジェクトで初期化される ASF マルチプレクサー と ASF メディア シンクで、漏洩バケット値などの設定を使用して ASF データ パケットを生成するため、エンコーダー値を使用して ContentInfo オブジェクトを構成する必要があります。 値は、最終的な ASF ヘッダー オブジェクトには保存されません。 エンコード設定はプロパティとして公開されます。 エンコーダー プロパティを使用して ContentInfo オブジェクトを構成するには、次の操作を行います。

  1. エンコーダー (IMFTransform インターフェイス) に対して IPropertyStore インターフェイスに対して直接クエリを実行して、エンコーダーのプロパティ ストアへのポインターを取得します。
  2. IMFASFContentInfo::GetEncodingConfigurationPropertyStore を呼び出します。 ストリーム固有のプロパティを設定するには、 wStreamNumber パラメーターでストリーム識別子を指定します。ファイル レベルのプロパティの場合は、0 を渡します。 ppIStore パラメーターは、IPropertyStore インターフェイスへのポインターを受け取ります。 受信したプロパティ ストアが空です。
  3. エンコーダーで IPropertyStore::GetValue を呼び出し、プロパティ キー定数を指定してプロパティ値を取得します。 エンコード プロパティの完全な一覧については、 コーデック プログラミング リファレンスに関するページを参照してください。
  4. ContentInfo オブジェクトで IPropertyStore::SetValue を呼び出して、プロパティ ストアに必要なプロパティを設定します。
  5. 設定するプロパティごとに手順 3 と 4 を繰り返します。

ASF メディア シンクは、 MFCreateASFMediaSinkActivate を呼び出してアクティブ化オブジェクトを使用して作成できます。 新しいメディア シンク オブジェクトは、ContentInfo オブジェクトのプロパティ ストアで設定できるメディア シンク固有の設定に基づいて構成されます。 次の表は、ASF メディア シンク プロパティ定数を示しています。

プロパティ Description
MFPKEY_ASFMEDIASINK_BASE_SENDTIME 送信時間は、リークバケット内のペイロードがいつ解放されることを示します。 このプロパティ値は、最初の送信時刻を示します。 マルチプレクサは、この値を使用して、生成されたパケットの後続の送信時間を計算し、データが漏れバケットを通って安定して流れるようにします。
MFPKEY_ASFMEDIASINK_AUTOADJUST_BITRATE この BOOL 値は、データが漏れバケットをオーバーフローしないように、マルチプレクサーでビット レートを自動的に調整する必要があるかどうかを示します。
MFPKEY_ASFMEDIASINK_DRMACTION これは、ファイル生成のための ASF メディア シンク DRM アクションを示します。 このリリースでは、DRM トランスコードのみがサポートされています。
MFPKEY_ASFSTREAMSINK_CORRECTED_LEAKYBUCKET このプロパティは、エンコーダーが使用するバッファー ウィンドウとビット レートを決定するときに設定する必要があります。 これらの値を設定するには、 IWMCodecLeakyBucket インターフェイスを使用します。 これは、ASF ファイル内のストリームごとに設定する必要があります。

 

新しいファイルの ASF ヘッダー オブジェクトの書き込み