diff ppc/dsputil_ppc.c @ 1092:f59c3f66363b libavcodec

MpegEncContext.(i)dct_* -> DspContext.(i)dct_* bitexact cleanup
author michaelni
date Mon, 03 Mar 2003 14:54:00 +0000
parents b4172ff70d27
children 80c46c310a91
line wrap: on
line diff
--- a/ppc/dsputil_ppc.c	Sat Mar 01 00:16:00 2003 +0000
+++ b/ppc/dsputil_ppc.c	Mon Mar 03 14:54:00 2003 +0000
@@ -25,6 +25,9 @@
 #include "dsputil_altivec.h"
 #endif
 
+extern void idct_put_altivec(uint8_t *dest, int line_size, int16_t *block);
+extern void idct_add_altivec(uint8_t *dest, int line_size, int16_t *block);
+
 int mm_flags = 0;
 
 int mm_support(void)
@@ -169,7 +172,7 @@
   return count;
 }
 
-void dsputil_init_ppc(DSPContext* c, unsigned mask)
+void dsputil_init_ppc(DSPContext* c, AVCodecContext *avctx)
 {
     // Common optimisations whether Altivec or not
 
@@ -215,6 +218,18 @@
         c->put_no_rnd_pixels_tab[0][3] = put_no_rnd_pixels16_xy2_altivec;
         
 	c->gmc1 = gmc1_altivec;
+
+        if ((avctx->idct_algo == FF_IDCT_AUTO) ||
+                (avctx->idct_algo == FF_IDCT_ALTIVEC))
+        {
+            c->idct_put = idct_put_altivec;
+            c->idct_add = idct_add_altivec;
+#ifndef ALTIVEC_USE_REFERENCE_C_CODE
+            c->idct_permutation_type = FF_TRANSPOSE_IDCT_PERM;
+#else /* ALTIVEC_USE_REFERENCE_C_CODE */
+            c->idct_permutation_type = FF_NO_IDCT_PERM;
+#endif /* ALTIVEC_USE_REFERENCE_C_CODE */
+        }
         
 #ifdef POWERPC_TBL_PERFORMANCE_REPORT
         {