diff dsputil.c @ 174:ac5075a55488 libavcodec

new IDCT code by Michael Niedermayer (michaelni@gmx.at) - #define SIMPLE_IDCT to enable
author arpi_esp
date Sun, 09 Dec 2001 12:04:09 +0000
parents 06f63b58d2a8
children 9e0e56869d05
line wrap: on
line diff
--- a/dsputil.c	Wed Nov 28 01:26:03 2001 +0000
+++ b/dsputil.c	Sun Dec 09 12:04:09 2001 +0000
@@ -20,6 +20,7 @@
 #include <stdio.h>
 #include "avcodec.h"
 #include "dsputil.h"
+#include "simple_idct.h"
 
 void (*ff_idct)(DCTELEM *block);
 void (*get_pixels)(DCTELEM *block, const UINT8 *pixels, int line_size);
@@ -388,6 +389,27 @@
 
 /* permute block according so that it corresponds to the MMX idct
    order */
+#ifdef SIMPLE_IDCT
+void block_permute(INT16 *block)
+{
+	int i;
+	INT16 temp[64];
+
+//	for(i=0; i<64; i++) temp[i] = block[ block_permute_op(i) ];
+	for(i=0; i<64; i++) temp[ block_permute_op(i) ] = block[i];
+
+	for(i=0; i<64; i++) block[i] = temp[i];
+/*
+	for(i=0; i<64; i++)
+	{
+		if((i&7)==0) printf("\n");
+		printf("%2d ", block[i]);
+	}
+*/
+}
+
+#else
+
 void block_permute(INT16 *block)
 {
     int tmp1, tmp2, tmp3, tmp4, tmp5, tmp6;
@@ -409,6 +431,7 @@
         block += 8;
     }
 }
+#endif
 
 void dsputil_init(void)
 {
@@ -425,7 +448,11 @@
         squareTbl[i] = (i - 256) * (i - 256);
     }
 
+#ifdef SIMPLE_IDCT
+    ff_idct = simple_idct;
+#else
     ff_idct = j_rev_dct;
+#endif
     get_pixels = get_pixels_c;
     put_pixels_clamped = put_pixels_clamped_c;
     add_pixels_clamped = add_pixels_clamped_c;
@@ -449,6 +476,10 @@
     use_permuted_idct = 0;
 #endif
 
+#ifdef SIMPLE_IDCT
+    if(ff_idct == simple_idct) use_permuted_idct=0;
+#endif
+
     if (use_permuted_idct) {
         /* permute for IDCT */
         for(i=0;i<64;i++) {