[theora-dev] Examples of matrices before FDCT
Alexander Lubyagin
lubyagin at yandex.ru
Thu Mar 31 02:29:30 PDT 2011
Why do we need a function x86/mmxencfrag:oc_enc_frag_sub_128_mmx()?
^ 28 28 28 28 28 28 28 28
^ 28 28 28 28 28 28 28 28
^ 28 28 28 29 29 29 28 28
^ 28 29 28 29 29 29 28 28
^ 28 29 28 28 28 28 28 28
^ 29 28 29 28 28 28 28 28
^ 29 28 29 29 29 29 28 28
^ 29 29 29 29 29 29 29 29
After _sub_128_mmx:
^ -100 -100 -100 -100 -100 -100 -100 -100
^ -100 -100 -100 -100 -100 -100 -100 -100
^ -100 -100 -100 -99 -99 -99 -100 -100
^ -100 -99 -100 -99 -99 -99 -100 -100
^ -100 -99 -100 -100 -100 -100 -100 -100
^ -99 -100 -99 -100 -100 -100 -100 -100
^ -99 -100 -99 -99 -99 -99 -100 -100
^ -99 -99 -99 -99 -99 -99 -99 -99
After FDCT, x86/sse2fdct:oc_enc_fdct8x8_x86_64sse2(), it is:
* -3187 3 -3 2 0 -1 1 -1
* -5 -1 0 1 0 -1 -1 -1
* 4 0 3 0 1 2 2 2
* -4 4 5 -1 -1 1 1 2
* 2 0 2 0 -1 -2 -3 -2
* 2 1 -4 3 2 0 2 -1
* 2 1 2 0 1 1 1 1
* -1 0 0 1 0 0 0 -1
It is right?
So, we need 13 bits for storing DCT coefficients (for 8-bit pixels)?
See formulas - http://www.cs.cf.ac.uk/Dave/Multimedia/node231.html
F(i,j) = 64*255*2/8 = 4080 = 12 bits; + Sign = 13 bits (-4096...+4095)?
More information about the theora-dev
mailing list