索引器建立和設定
ASF 索引器 是 WMContainer 層元件,用來讀取或寫入進階系統格式 (ASF) 檔案中的 Index Objects。 本主題提供建立 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;
}
相關主題