Udostępnij przez


Poszukiwanie

[Funkcja skojarzona z tą stroną, DirectShow, jest starszą funkcją. Został zastąpiony przez MediaPlayer, IMFMediaEnginei Audio/Video Capture w Media Foundation. Te funkcje zostały zoptymalizowane pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał MediaPlayer, IMFMediaEngine i Audio/Video Capture w programie Media Foundation zamiast DirectShow, jeśli to możliwe. Firma Microsoft sugeruje, że istniejący kod, który używa starszych interfejsów API, należy przepisać go do korzystania z nowych interfejsów API, jeśli to możliwe.]

Filtry obsługują wyszukiwanie za pośrednictwem interfejsu IMediaSeeking. Aplikacja wysyła zapytanie do Menedżera programu Graph Filter dla IMediaSeeking i używa go do wydawania poleceń wyszukiwania. Menedżer filtrów programu Graph dystrybuuje każde polecenie wyszukiwania do wszystkich filtrów renderatora na wykresie. Każdy moduł renderujący przekazuje polecenie w górę, przez wyjścia filtrów nadrzędnych, dopóki nie osiągnie filtru, który może wykonać poszukiwanie. Zazwyczaj filtr źródłowy lub filtr analizatora, taki jak AVI Splitter, wykonuje operację wyszukiwania.

Gdy filtr wykonuje operację wyszukiwania, opróżnia wszystkie oczekujące dane. Wynikiem jest zminimalizowanie opóźnienia poleceń wyszukiwania, ponieważ istniejące dane są opróżniane z grafu. Po wykonaniu polecenia wyszukiwania czas strumienia resetuje się do zera.

Na poniższym diagramie przedstawiono sekwencję zdarzeń.

sekwencja zdarzeń

Jeśli filtr analizatora ma więcej niż jedno wyjście, zazwyczaj wyznacza jedno z nich do akceptowania poleceń wyszukiwania. Inne pinezki odrzucają lub ignorują wszystkie odbierane polecenia wyszukiwania. W ten sposób analizator przechowuje wszystkie swoje strumienie zsynchronizowane. Jednak wszystkie wyprowadzenia wyjściowe powinny implementować IMediaSeeking::GetCapabilities i IMediaSeeking::CheckCapabilities, aby zwrócić możliwości wyszukiwania filtru. Dzięki temu menedżer filtrów programu Graph zwróci prawidłową wartość do aplikacji.

Interfejs IMediaPosition został wycofany z użycia dla filtrów. Klienci automatyzacji nadal muszą używać tego interfejsu w Menedżerze grafu filtrów, ponieważ IMediaSeeking nie jest zgodny z automatyzacją, ale Menedżer grafu filtrów tłumaczy wszystkie wywołania IMediaPosition na wywołania IMediaSeeking.

spłukiwanie

Czas i Zegary w DirectShow