インデクサーの作成と構成
ASF インデクサー は、Advanced Systems Format (ASF) ファイルのインデックス オブジェクトの読み取りまたは書き込みに使用される WMContainer レイヤー コンポーネントです。 このトピックでは、Media Foundation によって提供される既定のインデクサー オブジェクトの作成について説明します。
ASF ファイルの構造については、「 ASF ファイルの構造」を参照してください。
ASF インデクサーを作成して初期化するには
MFCreateASFIndexer 関数を呼び出して、インデクサー オブジェクトへの IMFASFIndexer ポインターを受け取ります。
IMFASFIndexer::SetFlags を呼び出して、インデクサー オブジェクトの読み取りまたは書き込みモードを指定します。 既定では、インデクサーは前方シーク用に構成されています。
用途 フラグ 読み取り (前方シーク) ゼロ (既定値) 読み取り (逆シーク) MFASF_INDEXER_READ_FOR_REVERSEPLAYBACK 書き込み MFASF_INDEXER_WRITE_NEW_INDEX 注意
インデクサーの同じインスタンスを読み取りと書き込みの両方に使用することはできません。 どちらか一方のインデクサーを構成する必要があります。
書き込みまたは読み取りを行うファイルを記述する ContentInfo オブジェクトの IMFASFContentInfo ポインターを指定してインデクサーを初期化するには、IMFASFIndexer::Initialize を呼び出します。 ContentInfo オブジェクトには、 ASF ヘッダー オブジェクトを構成する情報が含まれています。 インデクサー オブジェクトには、ASF ファイルのインデックス エントリを生成または読み取る前に、有効な ContentInfo オブジェクトが必要です。
次のコード例は、アプリケーションが特定の ASF コンテンツを操作するためにインデクサー オブジェクトを作成および初期化する方法を示しています。 ContentInfo オブジェクトは ASF ヘッダー オブジェクトを表します。コンテンツはバイト ストリームとして渡されます。
HRESULT CreateASFIndexer(
IMFASFContentInfo* pContentInfo,
DWORD dwFlags,
IMFASFIndexer** ppIndexer
)
{
*ppIndexer = NULL;
IMFASFIndexer *pIndexer = NULL;
HRESULT hr = MFCreateASFIndexer(&pIndexer);
if (FAILED(hr))
{
goto done;
}
hr = pIndexer->SetFlags(dwFlags);
if (FAILED(hr))
{
goto done;
}
hr = pIndexer->Initialize(pContentInfo);
if (FAILED(hr))
{
goto done;
}
// Return the object to the caller.
*ppIndexer = pIndexer;
(*ppIndexer)->AddRef();
done:
// Clean up.
SafeRelease(&pIndexer);
return hr;
}
関連トピック