Condividi tramite


Riercare

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

I filtri supportano la ricerca tramite l'interfaccia IMediaSeeking . L'applicazione esegue una query su Filter Graph Manager per IMediaSeeking e la usa per eseguire i comandi di ricerca. Filter Graph Manager distribuisce ogni comando seek a tutti i filtri del renderer nel grafico. Ogni renderer passa il comando upstream, attraverso i pin di output dei filtri upstream, fino a raggiungere un filtro in grado di eseguire la ricerca. In genere, un filtro di origine o un filtro parser, ad esempio AVI Splitter, esegue l'operazione di ricerca.

Quando un filtro esegue un'operazione di ricerca, scarica tutti i dati in sospeso. Il risultato consiste nel ridurre al minimo la latenza dei comandi seek, perché i dati esistenti vengono scaricati dal grafico. Dopo un comando seek, il tempo di flusso viene reimpostato su zero.

Il diagramma seguente illustra la sequenza di eventi.

sequenza di eventi

Se un filtro del parser ha più di un pin di output, in genere designa uno di essi per accettare i comandi di ricerca. Gli altri pin rifiutano o ignorano i comandi seek ricevuti. In questo modo, il parser mantiene sincronizzati tutti i flussi. Tuttavia, tutti i pin di output devono implementare IMediaSeeking::GetCapabilities e IMediaSeeking::CheckCapabilities per restituire le funzionalità di ricerca del filtro. Ciò garantisce che Filter Graph Manager restituisca il valore corretto all'applicazione.

L'interfaccia IMediaPosition è stata deprecata per i filtri. I client di automazione devono comunque usare questa interfaccia in Filter Graph Manager, perché IMediaSeeking non è compatibile con Automazione, ma Filter Graph Manager converte tutte le chiamate IMediaPosition in chiamate IMediaSeeking .

Flushing

Ora e orologi in DirectShow