Compartir a través de


Creación y configuración del indexador

El indexador ASF es un componente de capa WMContainer que se usa para leer o escribir objetos de índice en un archivo de formato de sistemas avanzados (ASF). En este tema se proporciona información sobre cómo crear el objeto de indexador predeterminado proporcionado por Media Foundation.

Para obtener información sobre la estructura de un archivo ASF, vea Estructura de archivos ASF.

Para crear e inicializar el indexador ASF

  1. Llame a la función MFCreateASFIndexer para recibir un puntero IMFASFIndexer al objeto indexador.

  2. Llame a IMFASFIndexer::SetFlags para especificar el modo de lectura o escritura para el objeto indexador. De forma predeterminada, el indexador está configurado para la búsqueda directa.

    Uso Marca
    Lectura (búsqueda hacia delante) Cero (valor predeterminado)
    Lectura (búsqueda inversa) MFASF_INDEXER_READ_FOR_REVERSEPLAYBACK
    Escritura MFASF_INDEXER_WRITE_NEW_INDEX

     

    Nota:

    No se puede usar la misma instancia del indexador para leer y escribir. Debe configurar el indexador para uno u otro.

     

  3. Llame a IMFASFIndexer::Initialize para inicializar el indexador especificando el puntero IMFASFContentInfo del objeto ContentInfo que describe el archivo que se va a escribir o leer. El objeto ContentInfo contiene información que constituye el objeto de encabezado ASF. El objeto indexador requiere un objeto ContentInfo válido antes de generar o leer entradas de índice de un archivo ASF.

En el ejemplo de código siguiente se muestra cómo una aplicación puede crear e inicializar el objeto indexador para trabajar con contenido asF específico. El objeto ContentInfo representa el objeto de encabezado ASF; el contenido se pasa como una secuencia de bytes.

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;
}

Indexador de ASF

Usar el indexador para buscar dentro de un archivo ASF

Usar el indexador para escribir un nuevo índice