索引器创建和配置

ASF 索引器 是 WMContainer 层组件,用于在 ASF) 文件中读取或写入高级系统格式 (索引对象。 本主题提供有关创建 Media Foundation 提供的默认索引器对象的信息。

有关 ASF 文件结构的信息,请参阅 ASF 文件结构

创建和初始化 ASF 索引器

  1. 调用 MFCreateASFIndexer 函数以接收指向索引 器对象的 IMFASFIndexer 指针。

  2. 调用 IMFASFIndexer::SetFlags 以指定索引器对象的读取或写入模式。 默认情况下,索引器配置为向前查找。

    用途 标志
    阅读 (向前寻找) 零 (默认)
    阅读 (反向查找) MFASF_INDEXER_READ_FOR_REVERSEPLAYBACK
    写入 MFASF_INDEXER_WRITE_NEW_INDEX

     

    注意

    索引器的同一实例不能用于读取和写入。 必须为其中一个或另一个配置索引器。

     

  3. 调用 IMFASFIndexer::Initialize 以通过指定描述要写入或读取的文件的 ContentInfo 对象的 IMFASFContentInfo 指针来初始化索引器。 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;
}

ASF 索引器

使用索引器在 ASF 文件中查找

使用索引器写入新索引