You are on page 1of 3

6/3/2014

Oblivion Software: How to use VLC with hardware acceleration on a Raspberrypi

How to use VLC with hardware acceleration on a


Raspberrypi

When using Raspbian, a Debian derivative, VLC is readily available from the repositories,
alas the binary does not make use of Raspberrypi's hardware acceleration. Watching videos
is no fun with that version of VLC. The only alternative is omxplayer which comes with the
distribution. Fortunately, VLC now does support hardware acceleration, only you have to
compile it yourself, which is not for the fainthearted.
Here's how to do it.
There is a guide on the web at
http://intensecode.blogspot.de/2013/10/tutorial-vlc-with-hardware-acceleration.html
that is the base of this document, but it is missing some details which will be provided here.

VLC on Raspbian

Step 1: System Update


It is always wise to have the operating system up-to-date.
# sudo apt-get update
# sudo apt-get upgrade

Step 2: Update gcc


There is a bug in gcc 4.6 which causes the compile to fail (when trying to build the current version). Therefore we have to update to gcc 4.7
or later in the first place. That won't hurt anyway.
With gcc 4.6 you are very likely going to run into this:
demux/oggseek.c: In function 'Oggseek_GranuleToAbsTimestamp':
ERROR : demux/oggseek.c:805: 1: unrecognizable insn:
(insn 266 265 267 6 (set (subreg:SI (reg:DI 213 [ p_stream_4(D)->i_keyframe_offset ]) 0)
(sign_extend:SI (mem/s:QI (plus:SI (reg/v/f:SI 178 [ p_stream ])
(const_int 1080 [0x438])) [0 p_stream_4(D)->i_keyframe_offset+0 S1 A64]))) demux/oggseek.c:786 -1
(nil))
demux/oggseek.c:805:1: internal compiler error: in extract_insn, at recog.c:2109
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.6/README.Bugs> for instructions.
Preprocessed source stored into /tmp/ccMrDMIU.out file, please attach this to your bugreport.
make: *** [all] Error 2

Update C++ compiler


It would be possible to remove gcc 4.6, but this is not recommended as it might break a lot of dependencies. It is better to install the new
version in parallel, and switch to it:
# sudo apt-get install gcc-4.7 g++-4.7
Then remove all update alternatives (this may cause some warnings and errors to be reported, but that is no problem and can be ignored):
# sudo update-alternatives --remove-all gcc
# sudo update-alternatives --remove-all g++
Now add gcc 4.6 and gcc 4.7 as alternatives, make g++ a slave configuration of gcc. That switches g++ always together with gcc 4.6:
# sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.6
# sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7
The command update-alternatives will now allow to switch between the versions. Simply use it to go to gcc 4.7 now:
# sudo update-alternatives --config gcc
This will show a list of alternatives from which you can select the new version, just follow the instructions.
http://www.oblivion-software.de/index.php?id=56&type=98

1/3

6/3/2014

Oblivion Software: How to use VLC with hardware acceleration on a Raspberrypi

Step 3: environment preparation - build tools installation


# sudo apt-get install git libtool build-essential pkg-config autoconf

Step 4: get VLC sources from git


# git clone git://git.videolan.org/vlc.git
# cd vlc
# ./bootstrap

Step 5: configure enabling the important modules for hardware acceleration on


raspberry
This is a list of modules that are required, according to the base article:
# sudo apt-get install liba52-0.7.4-dev libdirac-dev libdvdread-dev libkate-dev libass-dev libbluray-dev libcddb2-dev libdca-dev
libfaad-dev libflac-dev libmad0-dev libmodplug-dev libmpcdec-dev libmpeg2-4-dev libogg-dev libopencv-dev libpostproc-dev
libshout3-dev libspeex-dev libspeexdsp-dev libssh2-1-dev liblua5.1-0-dev libopus-dev libschroedinger-dev libsmbclient-dev
libtwolame-dev libx264-dev libxcb-composite0-dev libxcb-randr0-dev libxcb-xv0-dev libzvbi-dev
The following modules should also be installed to avoid problems:
No sound (bad...)
No XML support (cannot read playlists)
No SDL support (cannot switch to full screen, brings dbus support along)
No short keys (very bad, cannot pause/exit when in full screen)
And quite a few more
# sudo apt-get install libdvbpsi-dev libasound2-dev libxml2-dev libxpm-dev libsdl1.2-dev sdl-image1.2 libxcb-keysyms1-dev
libxinerama-dev libxext-dev qt4-dev-tools
Maybe you want QtCreator as well if you have the Qt libraries anyway, but if you don't want to write software with Qt, you don't need that one:
# sudo apt-get qtcreator

Step 6: compile
Now do configure and build:
# ./configure --enable-rpi-omxil --enable-dvbpsi --enable-x264
# make clean all
Now go and watch TV, go to bed, whatever: That'll take some six hours now.
As last step, start the installation:
# sudo make install

Step 7: The installed version of VLC will not find some libs
Some libs cannot be found after make install, so let's help VLC out:
# sudo ln -s /usr/local/lib/libvlc* /usr/lib/
# sudo ln -s /usr/local/lib/libx264.a /usr/lib/
# sudo ln -s /usr/local/lib/vlc /usr/lib/vlc

Step 8: Start VLC


# vlc --vout omxil_vout <other_params_you_might_need>

Change VLC properties


To make sure that VLC starts with hardware acceleration, the command line parameter should
be added to the properties.

Step x: after recompiles


http://www.oblivion-software.de/index.php?id=56&type=98

2/3

6/3/2014

Oblivion Software: How to use VLC with hardware acceleration on a Raspberrypi

If you happen to recompile VLC (e.g. if you decide to change some configure option),
remember to reset it after make install:
# vlc --reset-config reset-plugins-cache

Change VLC properties

Resume
Now that VLC works with hardware acceleration I can say this is nice, but not as expected: With acceleration on I hoped that the videos
would run inside the VLC window as usual. But they don't - an overlay opens that shows the video that cannot be resized, just as with
omxplayer.
Also, some videos that do run smoothly with omxplayer (like a full HD 1920x1080 Bluray Video by Nightwish) stops every 2 or 3 seconds for
some 5 seconds. No good.
Seems to me I'll have to put some extra work in it, still...

Bluray Full HD playback with Bluray Full HD playback with


omxplayer
omxplayer

http://www.oblivion-software.de/index.php?id=56&type=98

3/3

You might also like