Using nVidia VDPAU with Ubuntu 9.04
Tempo fa nVidia ha introdotto VDPAU (Video Decode and Presentation API for Unix), un set di API sviluppate per le sue schede video dalla serie 8 in poi, per poter fornire agli utenti unix in generale (i sitemi operativi supportati spaziano da Linux a FreeBSD passando per Solaris) capacità simili a quelle offerte da PureVideoHD in ambiente Windows.
Ma più precisamente cosa fanno queste API? In pratica permettono di demandare parte della decodifica video e del post-processing all’hardware della GPU con un drastico abbattimento del carico di lavoro sulla CPU. Al momento è possibile accelerare la decodifica dei filmanti codificati in MPEG-1, MPEG-2, MPEG-4 AVC (H.264), VC-1 e WMV3/WMV9.
Il software che supporta VDPAU include Xine, mPlayer, VLC , FFmpeg, MythTV e XBMC; inoltre nVidia ha sviluppato un backend per VA-API (Video Acceleration API, la libreria concorrente sviluppata da Intel) in modo che il software che supporta solo VA-API e non VDPAU venga accelerato comunque.
Installazione e configurazione
Occorre fare attenzione però al fatto che le GPU della serie 8 più vecchie non supportano questa libreria. Per sfruttare queste capacità è necessario avere almeno i driver nVidia per X11 dalla versione 180.06 in poi.
Un programmino molto comodo per vedere quali feature supporta la vostra VGA è vdpinfo, comoda utility che fornisce un output simile a quello di glxinfo ed affini, a quel sito è possibile scaricare i sorgenti, per compilarli è sufficiente avere installato la libreria nvidia-180-libvdpau-dev ed eseguire make. L’output fornito è simile al seguente…
paolomargara@merdbook:~/vdpinfo$ ./vdpinfo display: :0.0 screen: 0 API version: 0 Information string: Unknown Video surface: name width height types ------------------------------------------- 420 4096 4096 NV12 YV12 422 4096 4096 UYVY YUYV Decoder capabilities: name level macbs width height ------------------------------------ MPEG1 0 8192 2048 2048 MPEG2_SIMPLE 3 8192 2048 2048 MPEG2_MAIN 3 8192 2048 2048 H264_MAIN 41 8190 2032 2048 H264_HIGH 41 8190 2032 2048 VC1_SIMPLE 1 8190 2048 2048 VC1_MAIN 2 8190 2048 2048 VC1_ADVANCED 4 8190 2048 2048 ...
…che ci permette di vedere quali sono i formati per cui è possibile sfruttare l’accelerazione della nostra VGA. Prima di eseguirlo abbiate cura di verificare che l’utente da voi utilizzato sia nel gruppo video, altrimenti non riuscirete ad accedere al device /dev/nvidiactl.
In questa parte del post vedremo come installare mPlayer col supporto VDPAU. Visto che, almeno in questo periodo, non ho intenzione di mettermi a ricompilarlo, per questa volta mi sono appoggiato a launchpad, dopo un po’ di navigazione ho trovato un package mainteiner i cui pacchetti mi sono sembrati di qualità ed ho scaricato dal suo repository quanto necessario. Il suo repository è raggiungibile all’indirizzo https://launchpad.net/~brandonsnider/+archive/ppa
I passi richiesti per installare il tutto si possono riassumere con le seguenti righe di comando:
wget https://launchpad.net/~brandonsnider/+archive/ppa/+files/mplayer_1.0~rc3+svn20090410-0ubuntu20~ppa4_amd64.deb wget https://launchpad.net/~brandonsnider/+archive/ppa/+files/smplayer-translations_0.6.7-0ubuntu1~ppa2_all.deb wget https://launchpad.net/~brandonsnider/+archive/ppa/+files/smplayer_0.6.7-0ubuntu1~ppa2_amd64.deb dpkg -i *.deb
Ora la versione di mPlayer che avete installato sulla vostra macchina vi permetterà di accelerare la decodifica dei filmati codificati in Mpeg2, VC1, WMV3 e H264; da notare che si è installato anche un comodo front-end per mplayer.
Ora è solo necessario eseguire pochi semplici passi (che lo stesso package mainteiner ci illustra) per abilitare l’accelerazione VDPAU nel video player appena installato.
Una volta avviato smplayer cliccate su Options>Preferences e eliminate ogni percorso per memorizzare gli screenshot, passare al tab Video e cambiare l’output driver in VDPAU. Infine cliccate su Advanced>Options for Mplayer e nell’Options box inserite -vc ffmpeg12vdpau,ffh264vdpau,ffwmv3vdpau,ffvc1vdpau, avendo cura di lascire la virgola finale. Infine disabilitate il Post-Processing ed il multithreading.
Tenete presente che se volete utilizzare mPlayer a riga di comando potete digitare…
mplayer -vo help
…per verificare di avere il supporto VDPAU abilitato e…
mplayer -vo vdpau -vc ffmpeg12vdpau,ffh264vdpau,ffwmv3vdpau,ffvc1vdpau, $filmato
…per vedere un $filmanto qualsiasi.
Analisi di prestazioni
Tuttavia ciò che mi sono chiesto non appena installato tutto quanto è necessario per sfruttare VDPAU è: ma dopo tutto questo di quanto viene sgravata la CPU?
Così ho eseguito un paio di test, la macchina su cui sono stati eseguiti è un MacBook unibody late 2008 equipaggiato con un processore Intel Core2 Duo P7350 a 2.00GHz e 2GB di memoria RAM, ci tengo a precisare che la VGA (una 9400m) non ha memoria dedicata ma bensì condivisa con quella di sistema. Il test è stato eseguito campionando ogni secondo la percentuale di utilizzo di CPU e memoria, mPlayer è stato eseguito a riga di comando come indicato precedentemente.
Ho eseguito due test con e senza VDPAU abilitata.
Nel primo caso si tratta del trailer di Serenity, scaricato dal sito h264info, nel formato 720p (equivalente a HDready), nel test eseguito senza VDPAU la percentuale di utilizzo della CPU si attesta attorno ad una media del 40% mentre nel caso con VDPAU attivato il risultato è stato di un utilizzo attorno al 2.2%, non male il miglioramento riscontrato è di circa 18 volte!!!
Riguardo l’uso della memoria di sistema non ho diagrammato il risultato, l’andamento dell’utilizzo si attestava attorno al 2% nel caso senza VDPAU e attorno al 1.1% nel caso con VDPAU.
Successivamente si è eseguita la prova con un trailer nel formato 1080p (equivalente al FullHD), in questo caso si tratta del trailer di Transformer – revenge of the fallen, nel test eseguito senza VDPAU la percentuale di utilizzo della CPU si attesta attorno ad una media del 56% con picchi ben oltre il 67% mentre nel caso con VDPAU attivato il risultato è stato di un utilizzo attorno al 3.5%, non male il miglioramento riscontrato è di circa 16 volte!!!
Riguardo l’uso della memoria di sistema non ho diagrammato il risultato, l’andamento dell’utilizzo si attestava attorno al 2.1% nel caso senza VDPAU e attorno al 1.6% nel caso con VDPAU.
Che dire? Il miglioramento è netto e non lascia spiraglio a discussioni. Con una scheda video nVidia col supporto sia hardware che software a VDPAU è possibile visionare filmati ad altissima definizione anche con processori molto poco potenti, a questo punto pare chiaro il perchè nVidia sta spingendo sulla piattaforma ION che a questo punto pare essere il candidato perfetto per un mediacenter a bassisimo consumo ma dall’elevata flessibilità.
Grazie per la guida Nvidia/VDPAU, ho appena comprato un Acer Revo (Atom+ION) ed ero contretto ad usare XBMC per gli .mkv …fino ad ora.
Grazie davvero!
grazie mille
fantastico!
la mia cpu ringrazia 😀
Grazie Paolo,
come al solito è sempre un piacere leggere gli articoli nel tuo blog, davvero stimolanti.
Peccato che la mia vecchia Fx 5700 non possa sfruttare queste funzionalità dei nuovi driver, il mio Athlon64 3000+ ringrazierebbe. 🙁