Mercurial > libavcodec.hg
comparison dct-test.c @ 635:3e0f62e5eed6 libavcodec
dct cleanup
more accurate mmx dct (dont discard bits for fun)
fixing mmx quantizer bug for qscale%2==1 (bias was slightly wrong)
author | michaelni |
---|---|
date | Sun, 01 Sep 2002 16:52:33 +0000 |
parents | e7b72c1dfa1b |
children | 9abb13c21fbe |
comparison
equal
deleted
inserted
replaced
634:be1cb0e1f276 | 635:3e0f62e5eed6 |
---|---|
99 block1[i] = 0; | 99 block1[i] = 0; |
100 switch(test){ | 100 switch(test){ |
101 case 0: | 101 case 0: |
102 for(i=0;i<64;i++) | 102 for(i=0;i<64;i++) |
103 block1[i] = (random() % 512) -256; | 103 block1[i] = (random() % 512) -256; |
104 if (is_idct) | 104 if (is_idct){ |
105 fdct(block1); | 105 fdct(block1); |
106 | |
107 for(i=0;i<64;i++) | |
108 block1[i]>>=3; | |
109 } | |
106 break; | 110 break; |
107 case 1:{ | 111 case 1:{ |
108 int num= (random()%10)+1; | 112 int num= (random()%10)+1; |
109 for(i=0;i<num;i++) | 113 for(i=0;i<num;i++) |
110 block1[random()%64] = (random() % 512) -256; | 114 block1[random()%64] = (random() % 512) -256; |
151 fdct_func(block); | 155 fdct_func(block); |
152 emms(); /* for ff_mmx_idct */ | 156 emms(); /* for ff_mmx_idct */ |
153 | 157 |
154 if (fdct_func == fdct_ifast) { | 158 if (fdct_func == fdct_ifast) { |
155 for(i=0; i<64; i++) { | 159 for(i=0; i<64; i++) { |
156 scale = (1 << (AANSCALE_BITS + 11)) / aanscales[i]; | 160 scale = 8*(1 << (AANSCALE_BITS + 11)) / aanscales[i]; |
157 block[i] = (block[i] * scale /*+ (1<<(AANSCALE_BITS-1))*/) >> AANSCALE_BITS; | 161 block[i] = (block[i] * scale /*+ (1<<(AANSCALE_BITS-1))*/) >> AANSCALE_BITS; |
158 } | |
159 } | |
160 | |
161 if (fdct_func == ff_jpeg_fdct_islow) { | |
162 for(i=0; i<64; i++) { | |
163 block[i] = (block[i]+3)>>3; | |
164 } | 162 } |
165 } | 163 } |
166 | 164 |
167 fdct_ref(block1); | 165 fdct_ref(block1); |
168 | 166 |
210 block1[i] = 0; | 208 block1[i] = 0; |
211 switch(test){ | 209 switch(test){ |
212 case 0: | 210 case 0: |
213 for(i=0;i<64;i++) | 211 for(i=0;i<64;i++) |
214 block1[i] = (random() % 512) -256; | 212 block1[i] = (random() % 512) -256; |
215 if (is_idct) | 213 if (is_idct){ |
216 fdct(block1); | 214 fdct(block1); |
215 | |
216 for(i=0;i<64;i++) | |
217 block1[i]>>=3; | |
218 } | |
217 break; | 219 break; |
218 case 1:{ | 220 case 1:{ |
219 case 2: | 221 case 2: |
220 block1[0] = (random() % 512) -256; | 222 block1[0] = (random() % 512) -256; |
221 block1[1] = (random() % 512) -256; | 223 block1[1] = (random() % 512) -256; |