BBC HomeExplore the BBC

16 July 2009
Accessibility help
Text only
Dirac project

BBC Homepage
BBC Research

BBC Research Projects
Dirac Home
Intro
Uses
The Technology
Implementations
Open Licensing
Dirac Pro
Press
Contacts

Contact Us

Like this page?
Send it to a friend!

 

 

Implementation behind Dirac

The BBC and Open Technology

The BBC has a long-standing commitment to open standards. The BBC has a legal obligation to "pay particular attention to the desirability of supporting actively in national and international forums the development of open standards." Participating in and instigating Open Source projects is a valuable means of fulfilling this obligation, and also allows the BBC to make its technology freely available as a contribution to the wider community. This allows our audiences to obtain greater value from the research they fund. It also allows the community to make their own contributions to the project, which helps the technology to develop from experimental projects to usable products.

Software

Dirac can be fully implemented in software. Dirac has been tested on GNU/Linux, BSD, Microsoft Windows 2000/XP Solaris, IRIX, and Darwin.

Use of ISO C++ (GCC, GNU Build, Microsoft Visual C++) allows object oriented development on all common operating systems. A simple API has been written in C to allow integration into media players, video processing tools and streaming software. Dirac is released under the Mozilla triple licence; it can therefore be used in both free and proprietary products and relicensed under the GPL or LGPL.

The Schrödinger project is implementing portable libraries for Dirac. This work has now produced optimised software which will, for example, decode standard definition video on an average laptop computer.

There is also a Java decoder. Java is naturally slower than conventional C-based systems. It is typically capable of decoding quarter picture size images at around ten frames per second in today's implementation.

Hardware

Now that the specification is becoming more stable we can begin to think about hardware. Hardware applications will always be able to provide faster performance than the equivalent software.

We have already released open source descriptions of the arithmetic coding modules in VHDL.

NuMedia Technology Ltd have produced hardware to meet some of the emerging requirements of the new high definition production houses.

Open Source Implementations

Several Open Source implementations of Dirac have been released. Each has been produced with a particular set of applications in mind. As Open Source is a development technique as well as a licensing regime, these are in different stages of development. Participation is welcomed from all interested parties.

Reference C++ Implementation
This is the original development implementation of Dirac. It is currently in version 0.6.0, which embodies the current version of the specification. The C++ code compiles to produce libraries for common functions, motion estimation, encoding and decoding, which have an interface which allows them to be called from C. Mechanisms for integrating Dirac into various multimedia players are available. This implementation is intended to act as a reference encoder and decoder to accompany the specification, and also presents the Dirac algorithm in a modular, object oriented form which is useful as a toolkit for video coding research.

This implementation is available from http://dirac.sourceforge.net/

Schrödinger C Implementation
Schrödinger is an implementation of Dirac in ANSI C, developed in collaboration between the BBC and Fluendo (www.fluendo.com). It is designed to be highly portable, and suitable for real-time decoding. Schrödinger is being developed from the Dirac specification, which provides a means of testing the specification for completeness and consistency. The project is also developing a mapping for embedding Dirac in the Ogg container format. This is a popular Open Source format for streaming multimedia, and its use is complementary to streaming Dirac in MPEG transport stream, MXF or similar formats. It is also creating mechanisms for calling the Dirac codec from GStreamer, an Open Source library for creating multimedia applications. Schrödinger is currently in version 0.2.0.

This implementation is available from http://schrodinger.sourceforge.net/

As well as the MPL, GPL and LGPL, Schrödinger can also be licensed under the MIT licence, which allows unrestricted rights to deal in the software, subject to simple license conditions.

VHDL Implementation
The BBC is keen to encourage the development of hardware implementations of Dirac, as we believe this will help to make Dirac useful for the widest possible range of applications. We are therefore developing and publishing VHDL modules for parts of the algorithm. Currently, modules for arithmetic coding and decoding, and exp-golomb coding and decoding have been released, and further work is in progress.

This implementation is available from
www.opencores.org/projects.cgi/web/dirac/overview

Google Summer of Code Java Implementations
As part of Google Summer of Code 2006, the BBC mentored two students who were working on Java implementations of Dirac. One of these is an almost complete port of Dirac 0.6.0, decoding CIF at 12-15 fps on a 1.66 GHz Pentium. Their work can be examined in the CVS repository on the main Dirac site.

 



About the BBC | Help | Terms of Use | Privacy & Cookies Policy