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.

Ohodnoťte jako ve škole:

Průměrná známka 2,76

Našli jste v článku chybu?
Zasílat nově přidané názory e-mailem
Vitalia.cz: SÚKL: vakcíny jsou bezpečné a s autismem nesouvisí

SÚKL: vakcíny jsou bezpečné a s autismem nesouvisí

DigiZone.cz: Šlágr TV dostala pokutu 100 000 Kč

Šlágr TV dostala pokutu 100 000 Kč

Podnikatel.cz: Šizený guláš na pultě. Jako Lidl to nedělejte

Šizený guláš na pultě. Jako Lidl to nedělejte

120na80.cz: Tady se vaří padělané léky

Tady se vaří padělané léky

Podnikatel.cz: Dělají kanceláře, ve kterých chcete bydlet

Dělají kanceláře, ve kterých chcete bydlet

Vitalia.cz: Proč máme prasklý chléb nejraději?

Proč máme prasklý chléb nejraději?

DigiZone.cz: Robinsonův ostrov se bude natáčet v létě

Robinsonův ostrov se bude natáčet v létě

DigiZone.cz: DAB+ versus FM, ČRo a ČRa proti APSV

DAB+ versus FM, ČRo a ČRa proti APSV

Vitalia.cz: Tetanus v USA – i po odřeninách

Tetanus v USA – i po odřeninách

Vitalia.cz: Kurzy vaření piva

Kurzy vaření piva

DigiZone.cz: Živí mrtví budou na AMC koncem srpna

Živí mrtví budou na AMC koncem srpna

Vitalia.cz: Ministerstvo: tyto příbory jsou nebezpečné

Ministerstvo: tyto příbory jsou nebezpečné

Vitalia.cz: Před, nebo po snídani? Kdy je lepší čistit si zuby

Před, nebo po snídani? Kdy je lepší čistit si zuby

Podnikatel.cz: Přechod z OSVČ na firmu? Totální šok!

Přechod z OSVČ na firmu? Totální šok!

120na80.cz: Zjistěte, zda je vaše klíště infikované

Zjistěte, zda je vaše klíště infikované

Lupa.cz: Válka e-shopů. Alza končí s Heurekou

Válka e-shopů. Alza končí s Heurekou

Podnikatel.cz: Byznys nešlape? Jeden se věší, druhý ne

Byznys nešlape? Jeden se věší, druhý ne

Podnikatel.cz: Když už je sexy, tak ať taky funguje

Když už je sexy, tak ať taky funguje

DigiZone.cz: Šlágr TV: pokuta 100 tisíc za on-line

Šlágr TV: pokuta 100 tisíc za on-line

Root.cz: Zákon o hazardu je v rozporu s ústavou

Zákon o hazardu je v rozporu s ústavou