[FFmpeg-cvslog] dct-test: Skip indirection for MMX IDCT permutation

Diego Biurrun git at videolan.org
Fri Jul 18 22:45:43 CEST 2014


ffmpeg | branch: master | Diego Biurrun <diego at biurrun.de> | Tue Feb 18 12:02:34 2014 +0100| [913fa85a2c1fcd71802f7decdef5f355e0d9c757] | committer: Diego Biurrun

dct-test: Skip indirection for MMX IDCT permutation

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=913fa85a2c1fcd71802f7decdef5f355e0d9c757
---

 libavcodec/dct-test.c |   15 +--------------
 1 file changed, 1 insertion(+), 14 deletions(-)

diff --git a/libavcodec/dct-test.c b/libavcodec/dct-test.c
index 4c64a86..f83f5e7 100644
--- a/libavcodec/dct-test.c
+++ b/libavcodec/dct-test.c
@@ -128,8 +128,6 @@ static const struct algo idct_tab[] = {
 #define NB_ITS 20000
 #define NB_ITS_SPEED 50000
 
-static short idct_mmx_perm[64];
-
 static short idct_simple_mmx_perm[64] = {
     0x00, 0x08, 0x04, 0x09, 0x01, 0x0C, 0x05, 0x0D,
     0x10, 0x18, 0x14, 0x19, 0x11, 0x1C, 0x15, 0x1D,
@@ -143,16 +141,6 @@ static short idct_simple_mmx_perm[64] = {
 
 static const uint8_t idct_sse2_row_perm[8] = { 0, 4, 1, 5, 2, 6, 3, 7 };
 
-static void idct_mmx_init(void)
-{
-    int i;
-
-    /* the mmx/mmxext idct uses a reordered input, so we patch scan tables */
-    for (i = 0; i < 64; i++) {
-        idct_mmx_perm[i] = (i & 0x38) | ((i & 6) >> 1) | ((i & 1) << 2);
-    }
-}
-
 DECLARE_ALIGNED(16, static int16_t, block)[64];
 DECLARE_ALIGNED(8,  static int16_t, block1)[64];
 
@@ -190,7 +178,7 @@ static void permute(int16_t dst[64], const int16_t src[64], int perm)
 
     if (perm == MMX_PERM) {
         for (i = 0; i < 64; i++)
-            dst[idct_mmx_perm[i]] = src[i];
+            dst[(i & 0x38) | ((i & 6) >> 1) | ((i & 1) << 2)] = src[i];
     } else if (perm == MMX_SIMPLE_PERM) {
         for (i = 0; i < 64; i++)
             dst[idct_simple_mmx_perm[i]] = src[i];
@@ -469,7 +457,6 @@ int main(int argc, char **argv)
     int err = 0;
 
     ff_ref_dct_init();
-    idct_mmx_init();
 
     for (;;) {
         c = getopt(argc, argv, "ih4t");



More information about the ffmpeg-cvslog mailing list