Thursday, May 23, 2013

VA API backend for VDPAU

Video acceleration on Linux

There are multiple hardware video acceleration API's available in Linux world. VDPAU by NVIDIA is the most popular (at least by the number of projects using it). VDPAU is available on all modern NVIDIA graphics with proprietary blob driver. Intel has developed its own VA API. Currently, VDPAU is available on NVIDIA and some AMD graphics, while VA API on Intel.

The great thing about those two is that they are not hardware bound and can support multiple drivers. For a long time, there have been a VDPAU backend for VA API. But only recently, the same have been implemented in opposite direction.

VA API in applications

VA API is available in number of video applications (VLC, XBMC, MythTV, GStreamer-vaapi, mplayer-vaapi, ...), but its concrete usage in some of them is far from ideal.
Enabling hw acceleration in VLC leads to even more CPU usage than with mplayer with software video decoding.
mplayer-vaapi is not officially part of mplayer and also have its pitfalls. It cannot scale ssa/ass subtitles with video, subtitles are "embedded" in video, leaving them in the same resolution as video (this means ugly subtitles for SD videos). It isn't also available for mplayer2, which contains some improvements over mplayer.

Video acceleration in Flash

Situation in Adobe's Flash is very simple. Only VDPAU is, and ever be supported. There is only one solution, actually use VDPAU even on Intel cards.


This quite new project finally provides VA API backend for VDPAU. I have discovered it only recently, but so far everything works just fine.
You may find it in your distribution's repository (eg. Arch users). If you don't, follow this simple howto.

Building from source

The code is available on github (i-rinat/libvdpau-va-gl), so let's clone the repo first:
git clone git://
Now install build dependencies (command is for Debian based distributions):
sudo apt-get install libvdpau-dev libva-dev libglib2.0-dev libswscale-dev libgl1-mesa-dev libglu1-mesa-dev
And start compiling:
mkdir build && cd build
sudo make install
You can of course skip make install and create a package instead.

Post-build configuration

You now have the library installed, let's use it! You need to specify which VDPAU backend should be used, it is done with VDPAU_DRIVER variable.
Put this into your .profile (or .zprofile if you are using zsh :)
export VDPAU_DRIVER=va_gl
There are also some tweaks for this backend, but you can find it in the README file at git (and they are not needed for Intel cards).

Configure applications

I myself am using mplayer as my preferred media player.
mplayer -vo vdpau -vc ffh264vdpau,ffmpeg12vdpau,ffvc1vdpau, ...
# That comma at the end of -vc list is important. It tells mplayer to fallback 
# to other video codecs if those cannot play the video

# Those are all codecs that VA API supports, however your card may 
# not support them all. Tune the list according to output of `vainfo`
And also a little tweak to force Flash to accelerate video decoding:
echo "echo EnableLinuxHWVideoDecode=1 > /etc/adobe/mms.cfg" | sudo sh
# Little trick to run the whole command as root ;)
You should now see "accelerated video rendering, accelerated video decoding" after right click -> show video info on a video at YouTube.

Accelerated YouTube Flash video on Sandy Bridge HD 3000


  1. This is a wonderful work we wish you success and excellence and thank you 스포츠토토티비

  2. Impressive web site, 토토
    Distinguished feedback that I can tackle. Im moving forward and may apply to my current job as a pet sitter, which is very enjoyable, but I need to additional expand. Regards.

  3. Pretty portion of content. I just stumbled upon your weblog and in accession capital to claim 바카라사이트

    that I acquire actually loved account your blog posts.
    Anyway I’ll be subscribing in your augment and even I fulfillment you get admission to consistently fast.

  4. amazing website, this is really some good quality content. loved the way you explained through words keep writing the best article
    Columbia Star Wars Jacket

  5. Thanks for sharing a great piece of information. Keep it up and keep sharing such posts.
    Assessment is an important part of student's academic degree that helps teachers and students to know whether the education goals are being met or not. Many counssellor says that students should not take extreme pressure of their studies because it causes losing their focus and this is the result they get lesser grades. Therefore most of the students seek assignment or assessment help. Many different subjects where students mostly seek online assignment help are BSBWOR203 assessment answers Help, Management Assignment Help, bsbdiv501 assessment answers, etc.