[theora-dev] libtheora 1.1 (Thusnelda) stable release

Ralph Giles giles at xiph.org
Thu Sep 24 23:02:45 PDT 2009

We are pleased to announce a new stable release of libtheora, the
Xiph.org Foundation's reference implementation of the royalty-free
Theora video format. This new release, version 1.1, codenamed
Thusnelda, incorporates all of the recent encoder improvements we have
been making over the past year, though some of the code had its
genesis all the way
back in 2003. It also brings substantial speed and robustness
improvements to the 1.0 decoder.

Rate-control has been substantially overhauled from the 1.0 release.
The new rate control module hits its target much more accurately and
obeys strict buffer constraints, including dropping frames if
necessary. The latter is needed to enable live streaming without
disconnecting users or pausing to buffer during sudden motion. Obeying
these constraints can yield substantially worse quality than the 1.0
encoder, whose rate control did not obey any such constraints, and
often landed only in the vague neighborhood of the desired rate
target. The new --soft-target option can relax a few of these
constraints, but the new two-pass rate control mode gives quality
approaching full "constant quality" mode with a predictable output
size. This should be the preferred encoding method when not doing live
streaming. Two-pass may also be used with finite buffer constraints,
for non-live streaming.

Source packages:

* http://downloads.xiph.org/releases/theora/libtheora-1.1.0.tar.gz
* http://downloads.xiph.org/releases/theora/libtheora-1.1.0.zip
* http://downloads.xiph.org/releases/theora/libtheora-1.1.0.tar.xz
* http://downloads.xiph.org/releases/theora/libtheora-1.1.0.tar.bz2

MD5 checksums:

  303c782de0f943bfceac1f0bdea7a22e  libtheora-1.1.0.tar.gz
  9ffb36e80bfd46b6eb6848fcf526efcf  libtheora-1.1.0.zip
  76931beb93d1cb0c4c7fdfef3f7c4cb0  libtheora-1.1.0.tar.xz
  d0f83cf7f13e2b3bd068a858ca1398ad  libtheora-1.1.0.tar.bz2

Here is a list of some of the technical improvements in the 1.1 encoder.
If you have been following Monty's demo pages, many of these will be
familiar to you:

1. Rate-distortion optimization, which leads to
  a. Better mode decision
  b. Better quantization decisions
  Most coding decisions only use an approximation of the full RDO
process for speed reasons, but casting this in a proper RDO framework
eliminates vast swaths of heuristics and fragile thresholds from the 1.0

2. Better motion search
  The new motion search generates better results in less time, and
does not suffer from CPU spikes under heavy motion like the 1.0
encoder's did.

3. Better fDCT
  The 1.0 encoder's forward transform was not well-matched to the
inverse DCT used in the decoder, and was as a result responsible for
substantial loss of detail and texture at high rates. It has been
replaced with a forward DCT that gives much smaller round-trip error.
The inverse DCT in the decoder remains unchanged, for compatibility.

4. Adaptive quantization
  The bitstream specification has supported changing the quantizer on a
block-by-block basis since it was first published in 2004, however only
an unreleased proof-of-concept encoder made use of this facility. The
1.1 encoder now uses it to allocate bits more effectively within a
frame, giving improved quality at higher rates.

5. Better quantization matrices
  The new matrices give much less ringing and mosquito noise at low
rates, substantially improving the appearance of high-contrast edges
(e.g., text).

6. A real rate-control module
  As mentioned above, the new rate control actually meets its targets,
can enforce hard buffer constraints, and has a two-pass mode to allow it
to plan allocation decisions in advance.

7. Expanded rate-control API
  It is now possible to change the target quality, bitrate, buffer
delay, and keyframe interval in the while encoding. This gives an
application using libtheora much more control over the final output.

8. Explicit variable frame rate support in the encoder
  A new API allows an application to cheaply insert duplicate frames
to maintain A-V sync during live streaming or for hybrid 24/30 fps
content. The decoder still operates at a fixed frame rate, but can
report these duplicates to the application, allowing it to skip
expensive processing.

9. Support for 4:2:2 and 4:4:4 video
  As with adaptive quantization, the specification has always
supported the less common 4:2:2 and 4:4:4 chroma subsamplings, useful
for high quality intermediate work in video production. The 1.0
decoder supported these subsamplings properly. However, the 1.0
encoder couldn't produce streams in these formats. They are now
supported in the 1.1 encoder.

There are many other improvements in this release. The codebase is
substantially smaller, the examples have all been ported to the new API,
the MSVC assembly is now in sync with the gcc assembly, and much more.
We strongly encourage all our users to upgrade.

This is not the end of the story, however. We are continuing to work
on encoder improvements, and have made significant progress on
optimizing the decoder on ARM and TI C64x DSP processors, important
for Theora playback on mobile devices.

Thanks to everyone who contributed to this release, and to the Mozilla
Foundation, the Wikimedia Foundation, and Red Hat, Inc. who supported this work.

- Xiph.org Foundation for Open Media and the Theora development team.

More information about the theora-dev mailing list