新しい ASF ファイルの ContentInfo オブジェクトの初期化
MFCreateASFContentInfo 関数を呼び出して空の ContentInfo オブジェクトを作成した後、アプリケーションは IMFASFContentInfo::SetProfile を呼び出してエンコード プロファイルを提供する必要があります。 プロファイルの作成の詳細については、「 ASF プロファイルの作成」を参照してください。
プロファイルから情報を読み取る前に、 SetProfile メソッドは、ストリーム識別子またはメディアの種類を確認して、指定されたプロファイル オブジェクトを検証する必要があります。 プロファイルが検証に合格すると、File Properties オブジェクト、Stream Bitrate Properties オブジェクト、Stream Properties オブジェクト、相互排他オブジェクトなど、さまざまなヘッダー オブジェクトが生成されます。
SetProfile は、プリロール値など、特定のプロパティの推奨値を計算して設定します。 これがまだ設定されていない場合、推奨されるプリロール値 (ミリ秒単位) は、プロファイル内のストリームに指定された漏えいバケットの最大バッファー ウィンドウによって異なります。 同様に、データ パケットの最小サイズと最大サイズも設定されます。 推奨される値は、属性を使用してプロファイルに設定されているパケット サイズをオーバーライドする場合があります。
ファイルは作成中であるため、ファイルはブロードキャストの種類として分類され、ファイル プロパティ オブジェクトの Flags フィールドで示されます。 データ パケットの数、再生時間、送信期間など、特定の不明な値は 0 に設定されます。 これらの値は MF_PD_ASF_xxx 属性で表され、ファイルの作成が完了した後にアプリケーションによって更新される必要があります。
指定したプロファイル オブジェクトは、ContentInfo オブジェクトに関連付けられている既存のプロファイルを置き換え、参照されるヘッダー オブジェクトを削除し、プリロールやデータ パケット サイズなどのグローバル ファイル プロパティをリセットします。
SetProfile メソッドは、ASF データ オブジェクトを表すデータ オブジェクトも作成します。 データ パケットに関する情報を含む ContentInfo オブジェクトを再利用すると、 SetProfile は失敗し、既存の ASF データ オブジェクトに既に関連付けられていることを示すMF_E_ALREADY_INITIALIZED エラーを返します。 既定では、新しい ContentInfo オブジェクトの場合、データ パケット数は 0 に設定され、データ オブジェクトのサイズは 50 バイトに設定されます。 マルチプレクサーを使用してデータ パケットを生成する場合、マルチプレクサーは ContentInfo オブジェクトを更新して、データ パケット数などの新しい値を反映します。 データ パケット生成の詳細については、「 新しい ASF データ パケットの生成」を参照してください。
すべてのヘッダー オブジェクトが最終的な ASF ヘッダー オブジェクトに追加された後、 IMFASFContentInfo::GetHeaderSize を呼び出すことでヘッダー の合計サイズを取得できます。 このサイズには、初期データ オブジェクト のサイズが含まれます。
関連トピック