Ulepszony moduł renderowania wideo
[Składnik opisany na tej stronie, ulepszony program renderowania wideo, jest starszą funkcją. Został zastąpiony przez Simple Video Renderer (SVR) uwidoczniony za pośrednictwem MediaPlayer i IMFMediaEngine składników. Aby odtworzyć zawartość wideo, należy wysłać dane do jednego z tych składników i umożliwić im utworzenie wystąpienia nowego modułu renderowania wideo. Te składniki zostały zoptymalizowane pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał MediaPlayer lub niższego poziomu interfejsów API IMFMediaEngine do odtwarzania multimediów wideo w systemie Windows zamiast EVR, 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.]
Ulepszony program renderujący wideo (EVR) to składnik, który wyświetla wideo na monitorze użytkownika. Istnieją dwie wersje oprogramowania EVR:
- Ujście multimediów EVR dla aplikacji Media Foundation.
- Filtr EVR dla aplikacji DirectShow.
Obie wersje używają tych samych obiektów wewnętrznych do renderowania wideo i współużytkują wiele z tych samych interfejsów.
Aparat EVR może mieszać maksymalnie 16 strumieni wideo. Pierwszy strumień wejściowy jest nazywany strumieniem odwołania . Strumień odwołania jest zawsze wyświetlany jako pierwszy w kolejności z. Wszelkie dodatkowe strumienie są nazywane podstreamamii są mieszane na strumieniu odniesienia. Aplikacja może zmienić kolejność z podstreams, ale żaden podstream nie może być pierwszy w kolejności z.
Sterownik graficzny określa, które formaty wideo są obsługiwane, ale zazwyczaj są one ograniczone do następujących:
- Strumień referencyjny: Progresywny lub przeplotowy YUV bez alfa na piksel (np. NV12 lub YUY2); lub progresywny RGB.
- Podstreams: Progressive YUV with per-pixel-alpha, takich jak AYUV lub AI44.
Dostępne formaty podstream mogą zależeć od formatu strumienia odwołania. Aby uzyskać więcej informacji, zobacz negocjacji typu nośnika EVR.
Wewnętrznie EVR używa obiektu o nazwie miksera do tworzenia złożonych ramek ze strumieni wejściowych na jedną powierzchnię do renderowania. Mikser wykonuje również deinterlacing i korektę kolorów. Wyjście z miksera jest ostateczną złożoną ramką wideo. Drugi obiekt o nazwie prezenter renderuje ramkę wideo do wyświetlania. Prezenter planuje renderowanie ramek i zarządzanie urządzeniem Direct3D. Aplikacja może zapewnić niestandardową implementację miksera lub prezentera.
Szybkość klatek wyjściowych jest zablokowana do strumienia odniesienia. Za każdym razem, gdy podbiegi otrzymują nowe ramki, mikser trzyma się na nich. Gdy strumień odniesienia otrzymuje nową ramkę, mikser składa się z ramek podrzędnych. (Jeśli strumień odwołania jest przeplatany, kompletna ramka referencyjna może wymagać więcej niż jednego przykładu multimediów). Istnieje możliwość otrzymania więcej niż jednej ramki, podczas gdy mikser czeka na ramkę referencyjną. W takim przypadku mikser po prostu odrzuca poprzednią ramkę podwzbiegu.
Ponieważ prezenter tworzy urządzenie Direct3D, jest również odpowiedzialny za udostępnianie urządzenia innym obiektom potoku, które muszą uzyskiwać dostęp do usług DirectX Video Acceleration (DXVA). W szczególności mikser EVR wykorzystuje usługi przetwarzania wideo DXVA do deinterlace i mieszać wideo. Poza EVR dekodatory programowe mogą używać DXVA do przyspieszonego dekodowania wideo. Prezenter udostępnia urządzenie Direct3D za pomocą menedżera urządzeń Direct3D. Na poniższym diagramie przedstawiono wewnętrzną architekturę aparatu EVR. (Dekoder oprogramowania, zacieniony w kolorze szarym, nie jest częścią EVR).
Interfejsy EVR
Aplikacja EVR obsługuje następujące interfejsy. Niektóre z tych interfejsów są implementowane przez mikser lub prezenter. W każdym interfejsie w temacie referencyjnym opisano sposób pobierania wskaźnika do interfejsu.
Interfejs | Opis |
---|---|
IEVRFilterConfig | Ustawia liczbę wyprowadzeń wejściowych w filtrze EVR (tylko DirectShow). |
IEVRFilterConfigEx | Konfiguruje filtr EVR (tylko DirectShow). |
IEVRTrustedVideoPlugin | Umożliwia wtyczkę EVR do renderowania chronionego wideo. |
IMFDesiredSample | Umożliwia prezenterowi EVR żądanie konkretnej ramki z miksera. |
IMFQualityAdvise | Umożliwia menedżerowi jakości dostosowanie jakości wideo EVR. |
IMFTopologyServiceLookup | Umożliwia mikserowi niestandardowemu lub prezenterowi pobieranie wskaźników interfejsu z urządzenia EVR. |
IMFVideoDeviceID | Zwraca identyfikator urządzenia miksera lub prezentera EVR. |
IMFVideoDisplayControl | Określa sposób wyświetlania wideo przez aplikację EVR. |
IMFVideoMixerBitmap | Alfa łączy statyczny obraz mapy bitowej z filmem wideo. |
IMFVideoMixerControl | Określa sposób, w jaki ulepszony moduł renderowania wideo (EVR) miesza podstreamy wideo. |
IMFVideoMixerControl2 | Steruje preferencjami deinterlacingu wideo. |
IMFVideoPositionMapper | Mapuje położenie wejściowego strumienia wideo na odpowiednią pozycję na wyjściowym strumieniu wideo. |
IMFVideoPresenter | Uwidoczniony przez prezentera EVR. |
IMFVideoProcessor | Steruje przetwarzaniem wideo, w tym korektą, filtrami szumów i filtrami szczegółów. |
IMFVideoRenderer | Ustawia mikser lub prezenter na EVR. |
IMFVideoSampleAllocator | Przydziela przykłady wideo. |
W tej sekcji
Temat | Opis |
---|---|
używanie filtru DirectShow EVR | Jak używać aparatu EVR w aplikacji DirectShow. |
używanie ujścia multimediów EVR | How to use the EVR in a Media Foundation application (Jak używać aplikacji EVR w aplikacji Media Foundation). |
przy użyciu kontrolek wyświetlania wideo | Jak kontrolować sposób, w jaki EVR wyświetla wideo w oknie aplikacji. |
za pomocą kontrolek miksera wideo | Jak kontrolować sposób działania miksera EVR. |
negocjacji typu nośnika EVR | Opisuje, w jaki sposób EVR określa formaty wideo, które mogą akceptować jako dane wejściowe. |
niestandardowych mikserów | Jak napisać niestandardowy mikser dla EVR. |
Jak napisać prezentera EVR | Jak napisać niestandardowy prezenter dla EVR. |
Tematy pokrewne