EOMA68 Computing Devices

An Earth-friendly way to easily upgrade and fix your own computer

Aug 04, 2016

Project update 25 of 75

Cedrus GPL Video Encode/Decode

by Luke Kenneth Casson Leighton

I am delighted to be able to announce that the Cedrus fully-GPL-compliant accelerated video encode/decode libraries work out-of-the-box on the EOMA68-A20 Libre Tea Computer Card: 1920x1080 at 60fps (1080p60) works great, full-screen. As the CEDAR Reverse-engineering is an FSF High Priority Project this is a big deal.

The main developers, including Jens Kuske, Manuel Braga, and Andreas Baierl, have been working on Cedrus, reverse-engineering the Allwinner CEDAR Encode and Decode hardware, for some time. The original libraries from Allwinner (libcedarx) that went out as an illegal and copyright-violating binary-only component were written by a team of engineers that did not understand the GPL (none of them had even read it): they included parts of ffmpeg without comprehending the consequences of doing so. Efforts to have Allwinner honour their legal obligations have not succeeded. So several people have been forced to carry out reverse-engineering.

The history behind libcedarx is that it’s actually not very good. It forces developers to either do encode or decode, but not both. The possibility of using the library on FreeBSD or a RTOS (Real-Time OS) is non-existent. Jens and Andreas’s work, which includes a VDPAU sunxi library is therefore highly significant and has even inspired someone to write a JPEG hardware-accelerated decoder library.

To test this library out, libcedrus and libvdpau-sunxi instructions were followed verbatim on the Libre Tea Computer Card, with "pacman -S vdpau mpv mplayer" being the only additional prerequisites. After a little investigation, the various exports (VDPAU_DRIVER=sunxi, VDPAU_OSD=1) were found to be essential, and a symbolic link needed to be added in /usr/lib to the libvdpau sunxi library: perhaps adding entries in /etc/ld.so.conf.d would have been better, but it worked.

The recommended command-line was run: pixbuf had not been installed, it was preferred to use the already-installed G2D xorg-video-fbturbo driver, and amazingly it just worked. The video is hilariously of a video: many people who have been through this install process will recognise the freely-licensed "Big Bucks Bunny" video.

What I cannot quite get over is: just as with the xf86-video-fbturbo G2D accelerated driver, when contacting the Parabola team on their IRC channel, Emulatorman agreed straight away to simply add the two libraries to the parabola package manager so that they can be made available by default. Last time, this happened without needing to be asked, within two days. Having been used to the huge delays (months to years in some cases) in other GNU/Linux distributions to package software, this is a really amazing surprise. After speaking to people who know a bit more about Arch and Parabola, apparently these two distros are known as "rolling releases" so it is not uncommon for unstable or even broken packages to be included, hence why the package manager has a "rollback" system built-in.

Overall though, to have proper accelerated video playback at full HD on such a low-power processor, when there’s been absolutely no assistance whatsoever from the manufacturer of the SoC, is a huge and welcome achievement. So, thank you to everybody who’s been involved. We will be distributing vdpau-sunxi by default on the Libre Tea as it is entire Libre-licensed. Also in case anyone has not seen it, the Parabola team I think might be a bit excited about the possibility of 150 (and climbing) new users coming to their distribution: news here

Sign up to receive future updates for EOMA68 Computing Devices.

Subscribe to the Crowd Supply newsletter, highlighting the latest creators and projects