[Theora-dev] Encoding paramaters...

Timothy B. Terriberry tterribe
Sun Jul 4 05:28:34 PDT 2004

<002101c460ea$39fef340$0100000a at tiger> <40E6E0D4.4010208 at vt.edu>
<00b201c46120$2158c510$0100000a at tiger>
Message-ID: <40E7F7F2.2020707 at vt.edu>

>>It uses a hierarchical motion vector search instead of full search... it
>>still falls back to full search if the vector returned by the
>>hieararchical one is particularly bad. This should almost certainly be
>>enabled by default.
> That means nothing to me ! :) Is it safe to summarise that with this option
> on, the encode will be faster but possibly of lower quality, ie it's a "near
> enough is good enough" approach rather than a "find the absolute best"
> approach ?

Full search is very slow, and doesn't necessarily result in good motion
vectors, because the resulting motion field can contain lots of noise
and thus be hard to compress, even if the residual error is smaller.
Theora doesn't have terribly smart motion vector encoding, so this may
not be as much of a problem as in some codecs, but it's still very slow.

>>keyframe_frequency_force will ALWAYS use a keyframe after N frames
>>without one. keyframe_frequency is, however, the EXPECTED frequency of
>>keyframes (e.g., the encoder tries to average one in N frames). They
>>don't have to be equal, but it doesn't make any sense for the latter to
>>be smaller than the former.
> What is the maximum possible value for these two values ? And are they
> required to be powers of two ?

The maximum value is 2^31, but I believe libtheora limits them to 2^15.
They do not need to be powers of two (the keyframe granule shift will be
determined by rounding up keyframe_frequency_force to the next power of

More information about the Theora-dev mailing list