Udostępnij za pośrednictwem


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).

diagram architektury przedstawiający 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.

 

odtwarzania audio/wideo