Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
[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.]
Filtr renderatora wideo jest niezawodnym, uniwersalnym modułem renderowania wideo.
Nuta
W systemie Windows XP i nowszym domyślnym modułem renderowania wideo jest Filtr renderatora 7 (VMR-7). Maszyny VMR-7 i renderer wideo mają przyjazną nazwę "Video Renderer". Na wcześniejszych platformach renderer wideo jest domyślnym modułem renderowania. Zobacz Wybieranie odpowiedniego modułu renderowania.
Program renderowania wideo używa powierzchni DirectDraw i nakładki, jeśli karta wideo je obsługuje. Menedżer programu Filter Graph uwidacznia interfejs IVideoWindow, który umożliwia aplikacjom ustawianie i pobieranie właściwości w programie renderowania wideo. W przypadku nowszych kart wideo program Video Renderer obsługuje renderowanie pełnoekranowe. W przeciwnym razie Menedżer filtrów programu Graph automatycznie przełącza się do pełnoekranowego modułu renderowania filtru dla trybu pełnoekranowego. Aby uzyskać więcej informacji, zobacz IVideoWindow::p ut_FullScreenMode.
! [Ważne]
Zwykle okno wideo filtru przetwarza komunikaty w wątku roboczym utworzonym przez Menedżera filtrów programu Graph. Howerver, jeśli aplikacja bezpośrednio tworzy filtr przy użyciu CoCreateInstance, okno wideo przetwarza komunikaty w wątku aplikacji. W takim przypadku wątek aplikacji musi mieć pętlę komunikatów, aby wysyłać komunikaty do okna wideo. Ponadto wątek nie może zakończyć się, dopóki ostatni release wywołać program Video Renderer, który występuje po zamknięciu Menedżera filtrów programu Graph. W przeciwnym razie aplikacja może zakleszczeć.
| Etykieta | Wartość |
|---|---|
| Interfejsy filtru | IBaseFilter, IBasicVideo, IBasicVideo2, IDirectDrawVideo, IKsPropertySet, IMediaPosition, IMediaSeeking, IQualityControl, IQualPropprop, IVideoWindow |
| Typy nośników przypinania danych wejściowych | Nieskompresowane formaty wideo. |
| Interfejsy wyprowadzania danych wejściowych | IMemInputPin, IOverlay, IPin, IPinConnection, IQualityControl |
| Typy nośników wyprowadzania danych wyjściowych | Nie dotyczy. |
| Interfejsy wyprowadzeń wyjściowych | Nie dotyczy. |
| Filtr CLSID | CLSID_VideoRenderer |
| Identyfikator CLSID strony właściwości | Brak strony właściwości. |
| Plik wykonywalny | quartz.dll |
| Merit | Windows XP i nowsze: MERIT_UNLIKELY |
| filtru kategorii | CLSID_LegacyAmFilterCategory |
Uwagi
W wersji debugowania Quartz.dll, jeśli poziom debugowania LOG_TRACE jest ustawiony na 5 lub wyższy, program Video Renderer wyświetla znaczniki czasowe każdej ramki w oknie wideo. Te liczby nie są wyświetlane w wersji detalicznej biblioteki DLL. Aby uzyskać więcej informacji, zobacz Debug output Functions.
Następujące uwagi są przeznaczone dla deweloperów filtrów:
Program Video Renderer akceptuje formaty YUV, jeśli karta graficzna wideo obsługuje powierzchnie nakładki YUV. Gdy po raz pierwszy łączy się z filtrem nadrzędnym, program renderujący wideo wymaga formatu RGB zgodnego z głębią kolorów bieżących ustawień monitora. Jeśli na przykład bieżące ustawienie wyświetlania ma kolor 24-bitowy, filtr nadrzędny musi być w stanie zapewnić 24-bitowe wideo RGB. Gdy wykres filtru zmieni się na stan uruchamiania, program Video Renderer negocjuje zmianę formatu dynamicznego na odpowiednią przestrzeń kolorów YUV.
Łącząc się z typem RGB, program renderujący wideo zapewnia, że może używać interfejsu GDI w przypadku, gdy tryb DirectDraw nie jest dostępny. Przełączy się do interfejsu GDI, jeśli inna aplikacja używa pamięci wideo, jeśli prostokąt wideo łączy dwa monitory w systemie z wieloma monitorami lub jeśli prostokąt wideo jest całkowicie zaciemniany przez inne okno.
Nuta
Program renderujący mieszanie wideo nie wykonuje tego typu zmiany formatu dynamicznego i nie wymaga typu nośnika RGB, ponieważ nigdy nie używa interfejsu GDI do renderowania.
Aby wynegocjować zmianę formatu, moduł renderowania wideo wywołuje IPin::QueryAccept z nowym typem nośnika. Jeśli filtr nadrzędny zwróci S_OK, program Renderer wideo dołączy nowy nośnik do następnego przykładu. Filtr nadrzędny powinien wywoływać IMediaSample::GetMediaType w każdym przykładzie. Jeśli GetMediaType zwraca wartość inną niżnull, wskazuje zmianę formatu, a filtr nadrzędny powinien odpowiadać przez przełączenie typów danych wyjściowych. (Nie przełączaj typów w metodzie QueryAccept). Filtr nadrzędny powinien akceptować co najmniej główne typy RGB i najlepiej obsługiwać typowe typy YUV. Podczas przesyłania strumieniowego program renderowania wideo może przełączać się w przód i z powrotem między typami YUV i RGB dowolną liczbę razy. Program renderowania wideo nie akceptuje zmian formatu dynamicznego zainicjowanych przez filtr nadrzędny.
Gdy moduł renderowania wideo rysuje się na powierzchni nakładki DirectDraw, przydziela jeden bufor dla wejściowego numeru PIN. Jeśli filtr nadrzędny próbuje wymusić połączenie przy użyciu wielu, program renderowania wideo nie będzie mógł użyć powierzchni nakładki.
Tematy pokrewne