X video rozšíření

Rozšíření X video , často zkrácené na XVideo nebo Xv , poskytuje výstupní video mechanismus pro X Window System . Protokol původně vyvinul David Carver a jeho současná verze (druhá) byla napsána v červenci 1991 . Jeho hlavním účelem dodnes zůstává hardwarové škálování ( grafické karty jsou zahrnuty jako vybavení ) přehrávaného videa pro zobrazení v režimu celé obrazovky. Bez XVideo by tuto práci musel provádět výhradně centrální procesor , což by vyžadovalo více zdrojů a mohlo by to v některých případech vést ke zpomalení přehrávání nebo degradaci obrazu. Kromě toho rozšíření X video používá grafickou kartu pro převod barevného prostoru . Pomocí něj můžete hardwarově upravit jas, kontrast a tón zobrazovaného video streamu.

Pro použití tohoto rozšíření jsou nutné a dostatečné tři věci:

Většina moderních grafických karet poskytuje potřebné funkce pro XVideo. Běžně se o nich hovoří jako o hardwarové podpoře škálování a akceleraci konverze YUV nebo jednoduše o hardwarově akcelerované 2D grafice . X server XFree86 (pro operační systémy UNIX, Linux a částečně Mac OS X) podporuje rozšíření XVideo od verze 4.0.2. Abyste se ujistili, že váš X server toto rozšíření podporuje, můžete použít nástroj xdpyinfo . A ke kontrole, zda aktuální grafická karta podporuje potřebné funkce, můžete použít program xvinfo .

Reprodukce a zpracování

Populární programy pro přehrávání videa používané v X Window jako MPlayer , MythTV nebo xine již obvykle podporují výstup videa přes XVideo. Proto je rozumné používat toto rozšíření všude tam, kde to nainstalovaná grafická karta umožňuje a ovladače to podporují. Zrychlení bude patrné i na počítačích s rychlými procesory.

Navzdory skutečnosti, že protokol poskytuje schopnost číst a zapisovat video streamy z a na grafické karty, dnes jsou nejžádanější funkce XvPutImage a XvShmPutImage . Klienti jeden po druhém dekódují snímky a předávají je grafické kartě pro hardwarové škálování, konverzi a zobrazení.

Zobrazit

Jakmile je obrázek upraven a připraven, zbývá jej pouze zobrazit. V této fázi existuje několik způsobů, jak urychlit výstup videa. A protože plná akcelerace znamená, že grafická karta je zodpovědná za škálování, konverzi a výstup videa, bude konkrétní metoda záviset na tom, kde přesně bude obraz zobrazen.

Role správce kompozitních oken

V Linuxu je přesná metoda zobrazení velmi závislá na používaném správci oken . Se správně nainstalovanými ovladači GPU pro grafické karty od Intel , ATI nebo nVidia lze určité správce oken, nazývané správci kompozitních oken , použít k samostatnému zpracování každého zobrazeného okna. Toho je dosaženo výstupem obsahu každého okna do speciální vyrovnávací paměti a následným spojením do jednoho obrázku. Zatímco se jednotlivá okna vykreslují ve vlastní vyrovnávací paměti, lze do nich v tuto chvíli přidat video vykreslené pomocí textury, než se okno konečně vykreslí. XVideo lze použít ke zrychlení výstupu videa prostřednictvím OpenGL Framebuffer Object nebo rozšíření pbuffer.

Správce oken Metacity implementuje tuto metodu. Prolnutí je implementováno pomocí funkce hardwarové akcelerace 3D grafiky, jako je GLX_EXT_texture_from_pixmap. To mimo jiné umožňuje nezávisle zobrazovat více video streamů na jedné obrazovce. Ostatní manažeři skládání Beryl , Compiz a Compiz Fusion dělají totéž. Compiz Fusion je součástí Ubuntu Linux 7.10 a novějších. Automaticky se aktivuje, pokud systém detekuje hardware, který jej podporuje.

Nicméně na počítačích s omezenou hardwarovou podporou OpenGL, bez podpory Framebuffer Object nebo pbuffer, jako na systémech používajících XGL , nebude rozšíření Xv dostupné.

Problémy s barevným klíčem

Důvod, proč správci oken přímo nepodporují prolnutí, je ten, že je velmi obtížné určit, kam má být video stream vyveden, protože při akceleraci se obsah obrazovky změní na jeden obrázek. Jediný způsob, jak zajistit výstup videa, je použít hardwarové překrytí pomocí barevného klíče . Po nakreslení všech oken jsou jedinou dostupnou informací o oknech jejich velikosti a souřadnice. Pro zobrazení videa jsou ale potřeba i informace o tom, jak a která okna se navzájem překrývají. K tomu programy, které přehrávají video, vybarvují výstupní oblast plnou barvou (řekněme zelenou). Poté, když jsou zobrazena všechna okna, překrývající se okna mohou zakrývat část okna přehrávače videa, ale grafická karta bude muset naskenovat pouze určité souřadnice obrazovky, a pokud jsou na obrazovce zelené tečky, pak by se na tomto místě měl zobrazit tok videa. Podobná metoda byla použita pro hardwarově akcelerovaný video výstup v Microsoft Windows XP (a dřívějších), protože jeho správce oken byl tak těsně integrován s operačním systémem, že jej nebylo možné sám zrychlit.

Pokud tedy správce oken není složený, pak se pro výstup videa použije hardwarové překrytí s barevným klíčem, jak je popsáno v odstavci výše. Použití této metody však může znemožnit získání správného snímku obrazovky s aplikacemi, které používají Xvideo. Také nemusí být možné vysílat video na druhý monitor, pokud je podporováno pouze jedno překrytí hardwaru.

Problémy s novými grafickými kartami

Kvůli vydání DirectX 10 řada moderních grafických karet omezila nebo změnila podporu překrývání textur. To se také dotklo grafických karet řady nVidia GeForce 8. Všechny grafické karty GeForce 8800, včetně 8800GT a 8800GTS, nyní podporují pouze jedno překrytí textury na hlavním monitoru. V důsledku toho nemohou správně vystupovat více než jeden video stream pomocí hardwarové akcelerace, bez ohledu na platformu.

Výsledkem bylo špatné přehrávání videa na operačních systémech jiných než DirectX 10, včetně Windows XP a Linux pomocí XVideo. Tyto změny také poškodily mnoho správců skládání, včetně Compizu a do jisté míry i Metacity .

Viz také

Odkazy