[theora] Theora 1.1 rate controller

xiphmont at xiph.org xiphmont at xiph.org
Mon Jul 13 21:56:12 PDT 2009

On Wed, Jul 8, 2009 at 12:40 PM, Thomas de Buman<tdbuman at gmail.com> wrote:
> Hello everyone,
> I'm currently developing an adaptive videoconferencing application based on
> Ekiga which uses TFRC as a congestion control mechanism to adapt the video
> encoding rate according to the quality of the network experienced. My goal
> was to use the open-source Theora codec for video transmission.
> Unfortunately, it seemed that Theora 1.0 did not properly implement any
> correct CBR mode.

Mostly correct.  The bitrate management in 1.0 was very fragile.
There were a narrow set of constraints in which it worked, however it
would silently fail and head off into the weeds if it got outside its
working zone.

> I also tested Theora 1.1  Thusnelda but no considerable improvement coud be
> noticed, though I found contradictory information:

That's quite surprising.  I use the bitrate management in Thusnelda
(FTR, 1.1 hasn't been released yet, these are alphas) and have found
it to be robust and correct.  That's not to say bugs don't remain.

Perhaps what you're really running into is a long target rate window?
The Thusnelda alphas, as shipped, constrain bitrate over the period of
a buffering window that is equal to the max keyframe spacing.  This
window will be independently configurable in the final 1.1.

> What is the exact behavior of rate controller in Theora and is or will be
> CBR possible to use? At least, adaptive quantization is implemented
> (http://wiki.xiph.org/Theora)

I think adaptive quant is something different than what you expect
(it's the use of multiple quantization matricies within a frame to
properly handle lower-contrast details, not a change in quantization
between frames to meet a rate target) and as yet Thusnelda does not
have intra-frame AQ.

> Having a constant bitrate that does not adapt to variations in the image
> content is really a crucial feature for my application.

I suspect the issue you're having is just a setup issue.  If not, it's
a bug and then I'm even more interested.  Do you have code anywhere I
could see it?


More information about the theora mailing list