[theora-dev] resolution issues

Timothy B. Terriberry tterribe at vt.edu
Mon May 26 07:46:00 PDT 2003

> I've heard that mirrored data works well when DCT is taken into
> consideration. 

It works "well", but one can do better. One can choose values for the 
padding so that exactly as many high-frequency coefficients of the DCT 
as there are padding pixels in a block are forced to 0.

This is actually relatively easy to do with the following iterative process:

1) Choose arbitrary values for the padding (e.g., mirroring)
2) Perform a DCT on the block
3) Replace the last N DCT coefficients with 0's (where N is the number 
of padding pixels)
4) Perform an iDCT on the coefficients
5) Replace the non-padding pixels with their original values
6) Go back to 2 until convergence

Obviously, this is much slower than simple mirroring, and real-time 
encoders may not wish to spend this time for the minor benefits it 
gives. It is for this reason that padding values should be 
non-normative. Encoders should be able to choose anything they want. 
Decoders should never render them.

Also, the above algorithm assumes that the transform is linear. Since 
Theora uses an integer approximation, the rounding and truncation in it 
introduces small non-linearities. In practice, it should be enough to 
get the values below the quantization threshold.

--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'theora-dev-request at xiph.org'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.

More information about the Theora-dev mailing list