ファイル シンクのプロパティの設定
ASF ファイル シンクは、アプリケーションが ASF メディア データをファイルにアーカイブするために使用できる Media Foundation によって提供される IMFMediaSink の実装です。 ASF メディア シンクのオブジェクト モデルと一般的な使用方法については、「 ASF メディア シンク」を参照してください。
ASF ファイル シンクを作成した後、出力ファイル内のストリームに関する情報を使用して構成する必要があります。 この手順については、「 ASF ファイル シンクへのストリーム情報の追加」を参照してください。 エンコードの種類に応じて、ファイル シンクに追加のプロパティを設定できます。漏れバケット;一般的なファイルのプロパティ。 これらの設定は、最終的な ASF ヘッダー オブジェクトには書き込まれません。 このトピックでは、ファイル シンクのプロパティ ストアにこれらのプロパティを追加するプロセスについて説明します。
ContentInfo オブジェクトは、ファイル シンクのグローバル ファイル プロパティと個々のストリーム プロパティを保持します。 ファイル シンクの ASF ContentInfo オブジェクトへの参照を取得する方法については、「 ASF ファイル シンクの作成」を参照してください。
ファイル シンクのプロパティ ストア (IPropertyStore) への参照を取得するには、ファイル シンクの ContentInfo オブジェクトの参照で IMFASFContentInfo::GetEncodingConfigurationPropertyStore を呼び出します。
ストリーム エンコードプロパティ
コンテンツを適切にエンコードするには、エンコードの種類や関連するエンコード パラメーターなど、特定のエンコード情報をファイルで把握する必要があります。 これらの値は、ASF ContentInfo オブジェクトによって管理されるプロパティ ストアのプロパティ値として、ファイル シンクに設定されます。 関連するエンコーダーをインスタンス化する前にファイル シンクを構成する場合は、ContentInfo オブジェクトと、設定されたすべてのプロパティを使用して、Windows Media エンコーダーを作成できます。 この場合、プロパティはインスタンス化されたエンコーダーに自動的に設定されます。 逆に、シンクの前にエンコーダーを作成する場合は、エンコーダーで設定したプロパティがファイル シンクのプロパティ ストアにコピーされていることを確認します。
エンコード プロパティを設定するには、ファイル シンクのストリーム レベルのプロパティ ストアにアクセスする必要があります。 IMFASFContentInfo::GetEncodingConfigurationPropertyStore メソッドの wStreamNumber パラメーターにストリーム番号を渡します。 ストリーム番号は、プロファイル内の各ストリームの構成時に設定された値と一致している必要があります。 プロパティ値は、 IPropertyStore::SetValue を呼び出すことによって設定されます。 次の表では、サポートされているプロパティについて説明します。
プロパティはエンコードの種類によって異なります。 プロパティと、設定する必要があるそれぞれの値の詳細については、「 Encoding Properties」を参照してください。
Leaky Bucket プロパティ
漏れバケット パラメーターは、ストリームのエンコーダーによって使用される実際のバッファー ウィンドウを決定します。 ファイル シンクの MFPKEY_ASFSTREAMSINK_CORRECTED_LEAKYBUCKET プロパティには、リークのあるバケット パラメーター、ビット レート、バッファー ウィンドウ、および初期バッファーの完全性が含まれます。このプロパティは、ファイル シンクのストリーム レベルのプロパティ ストアで設定され、エンコーダーの作成と構成後に設定する必要があります。 この値は、 で設定されます。 メディアの種類のネゴシエーション中に、エンコーダーはバッファー ウィンドウと使用するビット レートを決定します。 これらの値は、wmcodecifaces.h で定義されている IWMCodecLeakyBucket インターフェイスを使用して取得できます。そのメソッドを呼び出すには、wmcodecdspuuid.lib にリンクする必要があります。
取得した値は、ASF ファイル シンク内のストリームごとにこのプロパティに設定できます。
グローバル ファイル シンクのプロパティ
ファイル シンクのグローバル プロパティ ストアを取得するには、IMFASFContentInfo::GetEncodingConfigurationPropertyStore メソッドの wStreamNumber パラメーターに 0 を渡します。 プロパティ値は、 IPropertyStore::SetValue を呼び出すことによって設定されます。 次の表では、サポートされているプロパティについて説明します。
ファイル レベルのプロパティ | 説明 |
---|---|
MFPKEY_ASFMEDIASINK_BASE_SENDTIME | 送信時間は、リークバケット内のペイロードがいつ解放されることを示します。 このプロパティ値は、最初の送信時刻を示します。 マルチプレクサは、この値を使用して、生成されたパケットの後続の送信時間を計算し、データが漏れバケットを通って安定して流れるようにします。 |
MFPKEY_ASFMEDIASINK_AUTOADJUST_BITRATE | この BOOL 値は、データが漏れバケットをオーバーフローしないように、マルチプレクサーでビット レートを自動的に調整する必要があるかどうかを示します。 |
MFPKEY_ASFMEDIASINK_DRMACTION | これは、ファイル生成のための ASF メディア シンク DRM アクションを示します。 このリリースでは、DRM トランスコードのみがサポートされています。 |
関連トピック