diff dsputil.c @ 6600:c3213c91124c libavcodec

Add a new IDCT permutation, used in xvid_sse2 and possibly future similar IDCTs.
author astrange
date Wed, 16 Apr 2008 01:34:55 +0000
parents c32be43b52b2
children e88e719b5e77
line wrap: on
line diff
--- a/dsputil.c	Tue Apr 15 13:51:41 2008 +0000
+++ b/dsputil.c	Wed Apr 16 01:34:55 2008 +0000
@@ -151,6 +151,8 @@
         0x32, 0x3A, 0x36, 0x3B, 0x33, 0x3E, 0x37, 0x3F,
 };
 
+static const uint8_t idct_sse2_row_perm[8] = {0, 4, 1, 5, 2, 6, 3, 7};
+
 void ff_init_scantable(uint8_t *permutation, ScanTable *st, const uint8_t *src_scantable){
     int i;
     int end;
@@ -4476,6 +4478,10 @@
         for(i=0; i<64; i++)
             c->idct_permutation[i]= (i&0x24) | ((i&3)<<3) | ((i>>3)&3);
         break;
+    case FF_SSE2_IDCT_PERM:
+        for(i=0; i<64; i++)
+            c->idct_permutation[i]= (i&0x38) | idct_sse2_row_perm[i&7];
+        break;
     default:
         av_log(avctx, AV_LOG_ERROR, "Internal error, IDCT permutation not set\n");
     }