Hledání

[Funkce přidružená k této stránce DirectShow je starší funkce. Byla nahrazena MediaPlayer, IMFMediaEnginea Audio/Video Capture v Media Foundation. Tyto funkce jsou optimalizované pro Windows 10 a Windows 11. Microsoft důrazně doporučuje, aby nový kód používal MediaPlayer, MMFMediaEngine a Audio/Video Capture v Media Foundation místo DirectShow, pokud je to možné. Microsoft navrhuje, aby se stávající kód, který používá starší rozhraní API, přepsal, aby se nová rozhraní API používala, pokud je to možné.]

Filtry podporují hledání prostřednictvím rozhraní IMediaSeeking. Aplikace se dotazuje Správce grafů filtru na IMediaSeeking a používá ho k vydávání příkazů hledání. Správce grafů filtru distribuuje každý příkaz vyhledávání do všech vykreslovacích filtrů v grafu. Každý renderer předává příkaz směrem nahoru, přes výstupní piny filtrů, dokud nedosáhne filtru, který může provést příkaz seek. Obvykle filtr zdroje nebo analyzátoru, například AVI Splitter, provádí operaci hledání.

Když filtr provede operaci hledání, vyprázdní všechna čekající data. Výsledkem je minimalizace latence příkazů hledání, protože existující data se vyprázdní z grafu. Po příkazu hledání se čas streamování resetuje na nulu.

Následující diagram znázorňuje posloupnost událostí.

posloupnost událostí

Pokud má filtr analyzátoru více než jeden výstupní pin, obvykle jeden z nich určí k přijímání příkazů pro hledání. Ostatní piny zamítnou nebo ignorují všechny příkazy hledání, které obdrží. Tímto způsobem analyzátor uchovává všechny své streamy synchronizované. Všechny výstupní piny by však měly implementovat IMediaSeeking::GetCapabilities a IMediaSeeking::CheckCapabilities, aby se zobrazily možnosti vyhledávání filtru. Tím se zajistí, že Správce grafů filtru vrátí do aplikace správnou hodnotu.

Rozhraní IMediaPosition je pro filtry zastaralé. Klienti automatizace stále potřebují používat toto rozhraní ve Správci grafů filtru, protože IMediaSeeking není kompatibilní s automatizací, ale Správce grafů filtru překládá všechna volání IMediaPosition do volání IMediaSeeking.

proplachování

čas a hodiny v DirectShow