Leonora

Leonora is a project funded by Mozilla Corp to port a Theora decoder to the C64x+ DSP coprocessor on the OMAP3 SoC manufactured by Texas Instruments. This series of SoCs is used in a variety of mobile devices including the Palm Pre, Motorola Droid, and Nokia’s N series of phones. It has gained a following in the open source community because of the Beagle Board, which is an inexpensive introduction to embedded devices.  More information about Leonora is on the Leonora project page.

Source Code

View online

The Leonora code base is a fork of libtheora from Xiph.org, replacing the decode API calls with message passing from the host CPU to the DSP coprocessor, instructing the DSP to do the decoding.  This allows Leonora to be API and ABI compatible with libtheora, and makes the libtheora.so binary drop-in compatible with the one created by libtheora.  Leonora also includes the DSP-side code that receives the messages and converts them back into API calls to be handled by a DSP version of libtheora.

It is unclear at this time if the Leonora changes will be merged entirely into libtheora, or even if this is desirable.  It is hoped that portions of Leonora will be merged, and the remainder stripped down to the essentials needed to reproduce the libtheora API/ABI, thus making it less of a fork and more of an add-on.

Build Process

The build process requires both an ARM compile and a C64x+ compiler.  The latter is available from TI.  As part of the build process, Leonora checks out copies of the theora-c64x and ogg-c64x git trees and builds them for the DSP.

For more information on build requirement and build process, see the Leonora Beagle Board Demo.

License

Various parts of Leonora have different licenses.  The original libtheora code and any new code is under a BSD-style license.  The DSP bridge library code is under the LGPL.