[theora] A big 'Thank you' to the developpers

Gregory Maxwell gmaxwell at gmail.com
Wed Jul 29 13:03:59 PDT 2009

On Wed, Jul 29, 2009 at 2:40 PM, Zik Zak<zikzakfr at gmail.com> wrote:
> Thanks a lot for the new encoder_example and the two pass encoding.
> I was not yet able to compare the gain of it against my previously encoded
> video (HD content takes a lot of time to encode).
> Why it can not be used with -v ? Could it be possible in the future ?
> I had better result with -v than with -V before.
> Congratulations again.

Video encoders can select the 'quality' used to encode each frame.
Think of it like measuring the heights of blades of grass with a
micrometer, ruler, or yardstick.  The micrometer gives you very
precise results, but it take a lot of bitrate, while the yardstick is
very coarse.   Theora has 64 levels (called QIs or quantizers)

When you use "-v" the number you provide is just mapped onto the range
of 0-63 and used for all frames.

A single quantizer level will produce different bitrates for different
videos depending on how predictable the content is... For example,
things with low motion will be small while high motion clips will be

If you want to achieve a specific overall or instantaneous bitrate the
encoder will have to adjust the quantizer to get that result.  This
can cause a reduction in quality because the encoder may use too much
precision on easy parts because it is unaware of hard parts coming in
the future and thus be forced to starve the hard parts.

Two-pass makes the process more intelligent because the encoder will
know about the difficulty of future frames.

So, right now two-pass is (currently) just a refinement of the rate
control process which doesn't exist in "-v" mode.

On Wed, Jul 29, 2009 at 3:50 PM, Ralph Giles<giles at xiph.org> wrote:
> On Wed, Jul 29, 2009 at 11:57 AM, Christopher
> Blizzard<blizzard at mozilla.com> wrote:
>> Do we have a sense of how much of a difference that makes in terms of
>> hitting a random bitrate?
> The 1.1 encoder was already much better at hitting a random bitrate
> with -v. What --two-pass does is hit a target file size with more even
> quality.

Also recently added to 1.1SVN is frame dropping. One case where the
1.1 rate control would fail to deliver the requested bitrate is where
even the lowest quality quantizer wasn't enough to fit the current
frame in the budget. Previously the encoder would come out higher than
the requested rate, now it is able to drop frames. (Replaces them with
an exact duplicate of the prior frame, which is very cheap to signal).
 Though if you were running into that you will probably get better
results from encoding a lower resolution.

If you're intending on streaming keep in mind the default two-pass
behaviour does not regulate the instantaneous bitrate: Two-pass can
periodically spike to enormous rates.  If you're streaming you'll want
to use the --buf-delay parameter to however much pre-roll buffering
you intend on doing. (It's specified in frames)

More information about the theora mailing list