diff 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
line wrap: on
line diff
--- a/dct-test.c	Sun Sep 01 14:30:55 2002 +0000
+++ b/dct-test.c	Sun Sep 01 16:52:33 2002 +0000
@@ -101,8 +101,12 @@
         case 0: 
             for(i=0;i<64;i++)
                 block1[i] = (random() % 512) -256;
-            if (is_idct)
+            if (is_idct){
                 fdct(block1);
+
+                for(i=0;i<64;i++)
+                    block1[i]>>=3;
+            }
         break;
         case 1:{
             int num= (random()%10)+1;
@@ -153,17 +157,11 @@
 
         if (fdct_func == fdct_ifast) {
             for(i=0; i<64; i++) {
-                scale = (1 << (AANSCALE_BITS + 11)) / aanscales[i];
+                scale = 8*(1 << (AANSCALE_BITS + 11)) / aanscales[i];
                 block[i] = (block[i] * scale /*+ (1<<(AANSCALE_BITS-1))*/) >> AANSCALE_BITS;
             }
         }
 
-        if (fdct_func == ff_jpeg_fdct_islow) {
-            for(i=0; i<64; i++) {
-                block[i] = (block[i]+3)>>3;
-            }
-        }
-
         fdct_ref(block1);
 
         blockSumErr=0;
@@ -212,8 +210,12 @@
     case 0: 
         for(i=0;i<64;i++)
             block1[i] = (random() % 512) -256;
-        if (is_idct)
+        if (is_idct){
             fdct(block1);
+
+            for(i=0;i<64;i++)
+                block1[i]>>=3;
+        }
     break;
     case 1:{
     case 2: