libavg is a German project to ease the building of multimedia applications – this can be anything from a movie / touch interface installation in a museum to a quick demo of a future application you throw together yourself, before (if needed) delving into “hardcore” programming.
libavg supports a variety of text, graphics, audio and video output, and a variety of input possibilities (e.g. multitouch). Have a look at their showcase to see some of the possibilites.
Luckily for us, libavg has been ported and optimized for the Pi, and they provide a pre-compiled package.
Follow the instructions on https://www.libavg.de/site/projects/libavg/wiki/RPI for installing the tarball (see link at the bottom of the page, which you can “wget”.
There are also instructions for compiling from source, using QEMU, on that page.
After installation, you can test libavg with the classic “hello world” program.
Please refer to this page https://www.libavg.de/site/projects/libavg/wiki/HelloWorld for the source.
One gotcha: X Windows needs to be running in order for the program to execute. (“startx”). Else the software will complain:
RuntimeError: No available video device
Video playback is NOT hardware accelerated on the Pi currently with libavg. In my test a H.264 encoded low-res movie was played at normal speed, but seemed quite choppy. Audio was OK. Decoding and rendering happens via the CPU (as per the “node” idea – combining multiple videos / other nodes for output), which maxes it out. The same video works fine using omxplayer, though.
In this blog article the team announces intentions to work on OpenMax IL integration. In the same article, a comment states that as per January of 2014 there has been no work done in this area, lacking necessary manpower & knowledge resources for the development.
libavg has an extensive documentation, for instance this page for area nodes (including the video node).
It also has a blog, with some interesting entries, for example:
Video decoding using libav and ffmpeg – detailing some of the problems behind video decoding in general, and libav/ffmpeg in particular.