Share via


Procurando

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Audio/Video Capture in 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 dão suporte à busca por meio da interface IMediaSeeking . O aplicativo consulta o Gerenciador de Grafo de Filtro para IMediaSeeking e o usa para emitir comandos de busca. O Gerenciador de Grafo de Filtro distribui cada comando seek para todos os filtros do renderizador no grafo. Cada renderizador passa o comando upstream, por meio dos pinos de saída dos filtros de upstream, até atingir um filtro que pode executar a busca. Normalmente, um filtro de origem ou filtro de analisador, como o Divisor AVI, 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 seek, pois os dados existentes são liberados do grafo. 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 eventos

Se um filtro de analisador tiver mais de um pino de saída, ele normalmente designa um deles para aceitar comandos seek. Os outros pinos rejeitam ou ignoram todos os comandos de busca que recebem. Dessa 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 Gerenciador de Grafo de Filtro, pois IMediaSeeking não é compatível com Automação, mas o Gerenciador de Grafo de Filtro converte todas as chamadas IMediaPosition em chamadas IMediaSeeking .

Liberando

Hora e relógios no DirectShow