[theora-dev] FPGA encode stages flow diagram

Benjamin M. Schwartz bmschwar at fas.harvard.edu
Sat Mar 26 07:50:15 PDT 2011


On 03/26/2011 10:31 AM, digital design wrote:
> How i understand we use only 8 bit values in coder (for quantized coefficient of block), but in table 7.38 is (for example token value = 22) i see tokenization of values more than 255?

The values being tokenized are the values after DCT and quantization.  The
DCT is not normalized.  Its output values are often much larger than its
input values, which is why its output values are stored in 16 bits.  If a
quantizer is also very small (i.e. high quality), this can lead to a very
large value being tokenized.

> How it's possible? Extrabits for token value=22 is 10 bits. This mean we can present -512..+512 magnitude values for coeffs.....

No.  As the specification says, you can represent 69..580 magnitude values
with this token.

> How it's possible? May be this is why when DCTed our 8-bits values we at result have 16-bits
value out.

We are tokenizing large values because the DCT (and subsequent
quantization) can result in large values.

> Ok this is understand, but why realy thear are tokens  fo 10-bits value? (Is it  because we use quantization ?)

Values larger than 8 bits after quantization can occur, especially in the
DC coefficient at very high quality (i.e. small quantizer).  DC prediction
can make the values even larger if the predictor is inaccurate.  Storing
more than 8 bits of precision is necessary for maximum quality because
rounding in the DCT domain is not the same as rounding in the pixel domain.

--Ben

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: OpenPGP digital signature
Url : http://lists.xiph.org/pipermail/theora-dev/attachments/20110326/a30f2fad/attachment.pgp 


More information about the theora-dev mailing list