Criação e configuração do indexador
O indexador ASF é um componente de camada WMContainer usado para ler ou gravar objetos de índice em um arquivo ASF (Advanced Systems Format). Este tópico fornece informações sobre como criar o objeto indexador padrão fornecido pelo Media Foundation.
Para obter informações sobre a estrutura de um arquivo ASF, consulte estrutura de arquivos ASF.
Criar e inicializar o indexador ASF
Chame a funçãoMFCreateASFIndexer para receber um ponteiroIMFASFIndexer para o objeto indexador.
Chame IMFASFIndexer::SetFlags para especificar o modo de leitura ou gravação do objeto indexador. Por padrão, o indexador é configurado para busca de encaminhamento.
Usar Bandeira Leitura (busca direta) Zero (padrão) Leitura (busca inversa) MFASF_INDEXER_READ_FOR_REVERSEPLAYBACK Escrita MFASF_INDEXER_WRITE_NEW_INDEX Nota
A mesma instância do indexador não pode ser usada para leitura e gravação. Você deve configurar o indexador para um ou outro.
Chame IMFASFIndexer::Initialize para inicializar o indexador especificando o ponteiro IMFASFContentInfo do objeto ContentInfo que descreve o arquivo a ser escrito ou lido. O objeto ContentInfo contém informações que constituem o objeto de cabeçalho ASF. O objeto indexador requer um objeto ContentInfo válido antes de gerar ou ler entradas de índice de um arquivo ASF.
O exemplo de código a seguir mostra como um aplicativo pode criar e inicializar o objeto indexador para trabalhar com conteúdo ASF específico. O objeto ContentInfo representa o objeto de cabeçalho ASF; o conteúdo é passado como um fluxo 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;
}
Tópicos relacionados