VDPAU: akcelerace videa grafickou kartou

Adam Štrauch 16. 9. 2009

Desktopové prostředí se dnes hemží čím dál větším množstvím efektů, ty jsou samozřejmě náročné na výpočetní výkon a zrovna CPU má většinou lepší věci na práci než počítat multimédia. Grafické karty mají výkonu na rozdávání, tak proč toho nevyužít. Akcelerovaný desktop už tu máme, je čas zkusit akcelerované video.

Co a proč

S příchodem rychlého Internetu, velkých televizních obrazovek a velkokapacitních médií tu máme nové formáty pro ukládání obrazu, které se soustředí na uložení velmi kvalitního videa na relativně malý diskový prostor. Kvalitní video s sebou nese ale i výkonové požadavky na procesor. Dnešní procesory na tom s multimédii nejsou tak dobře, jak bychom chtěli. Přece jen jde o architekturu, která tu s námi je skoro 30 let. Operace nad multimédii dnes často přebírá grafická karta, jejíchž vývojáři nebyli zatíženi kompatibilitou a přesně věděli, na co se budou soustředit.

Ve Windows je akcelerace přehrávání videa vcelku běžná záležitost a API pro tuhle funkci je dostupné pod názvem DirectX Video Acceleration (DXVA). Využívají ho samozřejmě přehrávače, které používají standardní systémové knihovny pro přehrávání videa, takže podporu najdete všude možně. V Linuxu je to trochu složitější. První podobná funkce je X-Video Bitstream Acceleration (XvBA), která je součástí ovladačů pro grafické karty AMD a to již rok. Bohužel zatím nebyla uvolněna dokumentace a ani jedna řádka kódu pro nějaký přehrávač. Nikdo tak netuší, jak se toto API dá použít. Druhým koněm je Video Decode and Presentation API for Unix (VDPAU) od firmy NVIDIA, která je na tom o poznání lépe a podporu najdeme ve většině dnešních přehrávačů. O něm se dnes budeme bavit.

Když se rozhodneme přehrát video v přehrávači, který podporuje VDPAU, tak ten pokud zjistí, že může video přehrát grafická karta, jí ho postupně posílá přes VDPAU. O vše se pak stará grafická karta a procesor pouze přeposílá data do její paměti. Pro grafickou kartu jsou takovéto výpočty jednodušší a vy si tak můžete vychutnat plynulý chod filmu a při tom mít zátěž procesoru na několika jednotkách procent. Takto by to alespoň mělo vypadat v ideálním případě. Níže si ukážeme, že zatím musíme přehrávačům říkat, že mají VDPAU použít, a to často není pro dobro věci.

Na desktopových počítačích s výkonými procesory nemáte potřebu si komplikovat život s VDPAU. Zvlášť když třeba ve standardní instalaci Ubuntu, ale i v dalších distribucích, podpora není a je potřeba si přidat repositáře a nahradit některé balíčky. Smysl to má ale u netbooků, které mají grafickou kartu právě od firmy NVIDIA. Pak už není problém přehrát si na televizi 1080p video na televizi v nativním rozlišení.

Instalace

Instalaci ukážu na distribuci Ubuntu. Nejde o nic složitého a získáme podporu v přehrávačích:

  • mplayer
  • xine

Xine používá třeba i Totem, takže by v něm měla být podpora k dispozici také. To samé platí pro další přehrávače používající xine.

Nejdříve přidáme repositář. Ten najdeme na adrese launchpad.net/~nvi­dia-vdpau/+archive/ppa. Obsahuje ovladače, knihovny a některé přehrávače. Všechno s podporou VDPAU.

Po výběru vydání na odkazované stránce zkopírujeme vygenerovaný kód do souboru /etc/apt/sources.list. Samozřejmě můžeme použít jakoukoli jinou a třeba i klikací metodu přidávání repositářů (Systém->Správa->Zdroje softwaru). Pro 9.04 vypadá vygenerovaný kód takto:

deb http://ppa.launchpad.net/nvidia-vdpau/ppa/ubuntu jaunty main
deb-src http://ppa.launchpad.net/nvidia-vdpau/ppa/ubuntu jaunty main 

Teď potřebujeme přidat klíče. Jde o klíč 1024R/CEC06767. Nejjednodušší cesta, jak klíč přidat, vede přes příkazovou řádku:

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys CEC06767 

Pokud chcete použít nástroj „Zdroje softwaru“ z nabídky Systém->Správa, tak si stačí klíč stáhnout a naimportovat v záložce „Ověření“.

Nakonec upgradujeme systém třeba pomocí aptitude.

$ sudo aptitude update
$ sudo aptitude safe-upgrade 

A případně ještě nainstalujeme mplayer či smplayer.

Použití

Nejlepší volbou pro použití VDPAU je v aktuálním Ubuntu mplayer. Ten pracuje s VDPAU bezproblémově. Jediné co je potřeba přidat do konfiguračního souboru ~/mplayer/config jsou řádky:

vo=vdpau,xv,
vc=ffvc1vdpau,ffh264vdpau,ffmpeg12vdpau, 

Bohužel takto nakonfigurovaný mplayer nepřehraje běžná videa, která VDPAU nepřelouská, takže užitečnější udělat si alias:

alias mplayer-vdpau='mplayer -vo vdpau -vc ffvc1vdpau,ffh264vdpau,ffmpeg12vdpau' 

Podobnou fintu si můžete vytvořit i u výběru aplikace v kontextové nabídce třeba Nautilu.

Xine a všechny přehrávače na něm založené by měly používat VDPAU automaticky bez zvláštních zásahů. Totem, který používá jako backend Xine, se mi nepodařilo rozjet, ale na stránce s repositářem je krátký návod jak by to mělo jít.

Pokud nemáte rádi příkazovou řádku, tak pomůže určitě smplayer, ve kterém se dá VDPAU zapnout pouhým kliknutím.

Minibenchmark

Určitě vás zajímá, jak moc to ulehčí procesoru. Oproti dekódování h264 a zobrazení přes video výstup OpenGL v mplayeru si VDPAU vezme 10× méně procesorového času. Což je určitě dobrý výsledek. Hodnoty u VDPAU se pohybovaly od 7 do 10 % na procesoru AMD X2 2,1 GHz. U OpenGL výstupu zatížení lítalo mezi 70 a 80 %.

OpenGL:
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
[...]
cx        6012 74.7  2.0 340420 83404 pts/1    RLl+ 18:42   0:06 mplayer -vo gl -vc ffh264 big_buck_bunny_1080p_h264.mov
[...]

VDPAU:
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
[...]
cx        6146  7.9  1.1 308312 46236 pts/1    SLl+ 18:43   0:01 mplayer big_buck_bunny_1080p_h264.mov
[...]

Xv:
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
[...]
cx       14526 50.5  1.4 327816 58272 pts/1    RLl+ 21:05   0:04 mplayer -vo xv -vc ffh264 big_buck_bunny_1080p_h264.mov
[...] 

U OpenGL výstupu procesor na přehrávání často nestačil a mplayer hlásil:

************************************************
**** Your system is too SLOW to play this!  ****
************************************************ 

U Xv výstupu tento problém není. VDPAU se nestará jen o dekódování videa, ale i o jeho postprocesing, což by se mělo projevit i na výsledné kvalitě zobrazení. Video přehrávané přes VDPAU bylo plynulejší a subjektivně mělo lepší obraz. Klasický procesor neměl s h264 kodekem problémy, pokud se jako video výstup použilo Xv.

Závěr

VDPAU si najde svoji cestu v budoucnu. Podpora v aplikacích sice je, ale k bezproblémové funkci to má daleko. Pokud si vyberete VDPAU, jste závislí na tom, co umí vaše karta dekódovat. Pokud konkrétní kodek neumí, čeká vás opět úprava konfigurace pro klasické přehrání. Snad přinesou zlepšení nové verze jednotlivých distribucí.

Poslední vydané ovladače měly podporu VDPAU i pro MPEG na mobilních jádrech. V této oblasti vidím pro VDPAU největší prostor. Intel Atom a podobné procesory bez kompromisů h264 videa nepřehrají a grafické jádro by jim v tomto mohlo pomoci.

Našli jste v článku chybu?
Podnikatel.cz: Zůstat na Heurece je čiré bláznovství

Zůstat na Heurece je čiré bláznovství

Vitalia.cz: Epidemie: Klíšťová encefalitida po ovčím sýru

Epidemie: Klíšťová encefalitida po ovčím sýru

DigiZone.cz: Recenze: TechniSat DigitRadio 2GO

Recenze: TechniSat DigitRadio 2GO

120na80.cz: Cestovní nevolnost. Co pomůže?

Cestovní nevolnost. Co pomůže?

DigiZone.cz: Soud zakázal šíření TV Markíza v ČR

Soud zakázal šíření TV Markíza v ČR

Měšec.cz: TEST: Vyzkoušeli jsme pražské taxikáře

TEST: Vyzkoušeli jsme pražské taxikáře

120na80.cz: Proč komáři létají hlavně večer?

Proč komáři létají hlavně večer?

DigiZone.cz: Slováci první, Češi třetí. Krásný...

Slováci první, Češi třetí. Krásný...

Podnikatel.cz: Chce s trdelníky ovládnout Asii. Poznejte ho

Chce s trdelníky ovládnout Asii. Poznejte ho

Vitalia.cz: 7 receptur z pohanky. Svědčí zdraví

7 receptur z pohanky. Svědčí zdraví

Lupa.cz: Zaměstnanec T-Mobilu ukradl data o zákaznících

Zaměstnanec T-Mobilu ukradl data o zákaznících

DigiZone.cz: HbbTV KinoSvět: už jede na dalších TV

HbbTV KinoSvět: už jede na dalších TV

Podnikatel.cz: 10 citátů Billa Gatese: tesat do kamene

10 citátů Billa Gatese: tesat do kamene

DigiZone.cz: ČTÚ květen: rušení TV vysílání narůstá

ČTÚ květen: rušení TV vysílání narůstá

DigiZone.cz: Mobilní aplikace pro DVTV je tady

Mobilní aplikace pro DVTV je tady

Vitalia.cz: Jíme přesolené potraviny. Zrovna tyhle

Jíme přesolené potraviny. Zrovna tyhle

DigiZone.cz: Satelitní Flix TV vyráží do boje

Satelitní Flix TV vyráží do boje

DigiZone.cz: Noxon iRadio 1 W bude za pár měsíců

Noxon iRadio 1 W bude za pár měsíců

DigiZone.cz: Robinsonův ostrov moderuje Novotný

Robinsonův ostrov moderuje Novotný

Lupa.cz: Text umírá, na webu zbude jen video

Text umírá, na webu zbude jen video