索引子建立和設定
ASF 索引子 是 WMContainer 層元件,可用來以進階系統格式讀取或寫入索引物件 (ASF) 檔案。 本主題提供建立 Media Foundation 所提供的預設索引子物件的相關資訊。
如需 ASF 檔案結構的相關資訊,請參閱 ASF 檔案結構。
若要建立和初始化 ASF 索引子
呼叫 MFCreateASFIndexer 函式,以接收索引 器物件的 IMFASFIndexer 指標。
呼叫 IMFASFIndexer::SetFlags 以指定索引子物件的讀取或寫入模式。 根據預設,索引子會設定為向前搜尋。
使用 旗標 閱讀 (向前搜尋) 零 (預設) 讀取反向搜尋 () MFASF_INDEXER_READ_FOR_REVERSEPLAYBACK 寫入 MFASF_INDEXER_WRITE_NEW_INDEX 注意
索引子的相同實例不能用於讀取和寫入。 您必須為其中一個或另一個設定索引子。
呼叫 IMFASFIndexer::Initialize ,藉由指定 ContentInfo 物件的 IMFASFContentInfo 指標來初始化索引子,以描述要寫入或讀取的檔案。 ContentInfo 物件包含構成 ASF 標頭物件的資訊。 索引子物件需要有效的 ContentInfo 物件,才能產生或讀取 ASF 檔案的索引項目目。
下列程式碼範例示範應用程式如何建立和初始化索引子物件,以使用特定的 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;
}
相關主題