Sdílet prostřednictvím


Vylepšený renderer videa

[Komponenta popsaná na této stránce, Enhanced Video Renderer, je starší funkce. Nahradila ho simple Video Renderer (SVR) vystavená prostřednictvím komponent MediaPlayer a MMFMediaEngine. Pokud chcete přehrát videoobsáh, měli byste do jedné z těchto komponent odesílat data a umožnit jim vytvořit instanci nového rendereru videa. Tyto komponenty jsou optimalizované pro Windows 10 a Windows 11. Společnost Microsoft důrazně doporučuje, aby nový kód používal MediaPlayer nebo nižší úroveň ROZHRANÍ API PRO MMFMediaEngine k přehrávání videosouborů ve Windows místo EVR, 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é.]

Vylepšený renderer videa (EVR) je komponenta, která zobrazuje video na monitoru uživatele. Existují dvě verze EVR:

  • Jímka médií EVR pro aplikace Media Foundation.
  • Filtr EVR pro aplikace DirectShow.

Obě verze používají k vykreslení videa stejné interní objekty a sdílejí mnoho stejných rozhraní.

EVR může kombinovat až 16 video streamů. První vstupní datový proud se nazývá referenční datový proud. Referenční datový proud se vždy zobrazí jako první v pořadí z. Všechny další datové proudy se nazývají podstreamya jsou smíšené nad referenčním streamem. Aplikace může změnit pořadí vykreslování podstreamů, ale v pořadí z nemůže být nejprve žádný podstream.

Grafický ovladač určuje, které formáty videa jsou podporovány, ale obvykle jsou omezeny na následující:

  • Referenční proud: Progresivní nebo prokládání YUV bez alfa na pixel (například NV12 nebo YUY2); nebo progresivní RGB.
  • Substreamy: Progresivní YUV s každou pixel-alfa, například AYUV nebo AI44.

Dostupné podstreamové formáty můžou záviset na formátu referenčního streamu. Další informace naleznete v tématu vyjednávání typu média EVR.

EVR interně používá objekt označovaný jako mixér ke složení snímků ze vstupních proudů na jednu plochu pro vykreslení. Mixér také provádí deinterlacing a opravu barev. Výstupem z mixéru je konečný složený videorámeček. Druhý objekt označovaný jako prezentující vykresluje rámeček videa na displej. Prezentující naplánuje vykreslení snímků a spravuje zařízení Direct3D. Aplikace může poskytnout vlastní implementaci mixéru nebo prezentujícího.

Výstupní frekvence snímků je uzamčena pro referenční datový proud. Pokaždé, když substreamy obdrží nové rámce, mixér je drží na ně. Když referenční datový proud obdrží nový rámec, mixér složí tento rámec s podstreamovými snímky. (Pokud je referenční datový proud prokládání, může úplný referenční rámec vyžadovat více než jednu ukázku média.) Při čekání na referenční rámec je možné, aby podstream obdržel více než jeden rámec. V takovém případě mixér jednoduše zahodí předchozí podstreamový rámec.

Vzhledem k tomu, že prezentující vytvoří zařízení Direct3D, zodpovídá také za sdílení zařízení s jinými objekty kanálu, které potřebují přístup ke službám DirectX Video Acceleration (DXVA). Konkrétně mixér EVR používá služby zpracování videa DXVA k deinterlace a mixování videa. Mimo EVR můžou softwarové dekodéry používat DXVA k akcelerovanému dekódování videa. Prezentující sdílí zařízení Direct3D prostřednictvím Správce zařízení Direct3D. Následující diagram znázorňuje interní architekturu EVR. (Softwarový dekodér, stínovaný šedě, není součástí EVR.)

diagram architektury znázorňující evr.

Rozhraní EVR

EVR podporuje následující rozhraní. Některá z těchto rozhraní jsou implementována mixérem nebo prezentujícím. Pro každé rozhraní popisuje referenční téma, jak získat ukazatel na rozhraní.

Rozhraní Popis
IEVRFilterConfig Nastaví počet vstupních špendlíků ve filtru EVR (jenom DirectShow).
IEVRFilterConfigEx Nakonfiguruje filtr EVR (jenom DirectShow).
IEVRTrustedVideoPlugin Umožňuje modulu plug-in EVR vykreslit chráněné video.
DESIREDSample Umožňuje prezentujícímu EVR vyžádat konkrétní rámec z mixéru.
MMFQualityAdvise Umožňuje správci kvality upravit kvalitu videa EVR.
MMFTopologyServiceLookup Umožňuje vlastnímu mixéru nebo prezentujícímu získat ukazatele rozhraní z EVR.
MMFVideoDeviceID Vrátí identifikátor zařízení mixéru EVR nebo prezentujícího.
MMFVideoDisplayControl Určuje, jak EVR zobrazuje video.
MMFVideoMixerBitmap Alfa prolne statický rastrový obrázek s videem.
MMFVideoMixerControl Určuje, jak enhanced video renderer (EVR) kombinuje podstreamy videa.
MMFVideoMixerControl2 Předvolby ovládacích prvků pro deinterlacing videa
MMFVideoPositionMapper Mapuje pozici vstupního streamu videa na odpovídající pozici ve výstupním streamu videa.
MMFVideoPresenter Vystavený prezentujícím EVR.
MMFVideoProcessor Řídí zpracování videa, včetně úprav, filtrů šumu a filtrů podrobností.
MMFVideoRenderer Nastaví mixér nebo prezentujícího na EVR.
MMFVideoSampleAllocator Přidělí ukázky videa.

 

V této části

Námět Popis
použití filtru DirectShow EVR Jak používat EVR v aplikaci DirectShow
použití jímky médií EVR Jak používat EVR v aplikaci Media Foundation.
použití ovládacích prvků zobrazení videa Jak řídit způsob, jakým EVR zobrazuje video v okně aplikace.
použití ovládacích prvků Video Mixer Jak řídit způsob, jakým funguje mixér EVR.
vyjednávání typů médií EVR Popisuje, jak EVR určuje, které formáty videa může přijmout jako vstup.
vlastních mixérů Jak napsat vlastní mixér pro EVR.
Jak napsat prezentujícího EVR Jak napsat vlastního prezentujícího pro EVR

 

přehrávání zvuku nebo videa