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. |