Partilhar via


Procura

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEnginee Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda vivamente que o novo código utilize MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

Os filtros suportam a procura através da interface IMediaSeeking. O aplicativo consulta o Filter Graph Manager para IMediaSeeking e o usa para emitir comandos de busca. O Filter Graph Manager distribui cada comando de seek para todos os filtros de renderização no gráfico. Cada renderizador passa o comando para cima, através dos pinos de saída dos filtros de entrada, até chegar a um filtro que possa executar a procura. Normalmente, um filtro de origem ou filtro de analisador, como o AVI Splitter, executa a operação de busca.

Quando um filtro executa uma operação de busca, ele libera todos os dados pendentes. O resultado é minimizar a latência dos comandos de busca, porque os dados existentes são liberados do gráfico. Após um comando seek, o tempo de fluxo é redefinido para zero.

O diagrama a seguir ilustra a sequência de eventos.

sequência de acontecimentos

Se um filtro analisador tiver mais de um pino de saída, ele normalmente designa um deles para aceitar comandos de busca. Os outros pinos rejeitam ou ignoram quaisquer comandos de busca que recebem. Desta forma, o analisador mantém todos os seus fluxos sincronizados. No entanto, todos os pinos de saída devem implementar IMediaSeeking::GetCapabilities e IMediaSeeking::CheckCapabilities para retornar os recursos de busca do filtro. Isso garante que o Gerenciador de Gráficos de Filtro retorne o valor correto para o aplicativo.

A interface IMediaPosition foi preterida para filtros. Os clientes de automação ainda precisam usar essa interface no Filter Graph Manager, porque IMediaSeeking não é compatível com automação, mas o Filter Graph Manager traduz todas as chamadas IMediaPosition para chamadas IMediaSeeking.

Flushing

Hora e Relógios no DirectShow