diff ppc/dsputil_ppc.c @ 9711:d563821462b4 libavcodec

Altivec VP3 IDCT
author conrad
date Mon, 25 May 2009 22:19:35 +0000
parents 5b68d22e5ec9
children d6d7e8d4a04d
line wrap: on
line diff
--- a/ppc/dsputil_ppc.c	Mon May 25 19:02:35 2009 +0000
+++ b/ppc/dsputil_ppc.c	Mon May 25 22:19:35 2009 +0000
@@ -32,6 +32,10 @@
 void idct_put_altivec(uint8_t *dest, int line_size, int16_t *block);
 void idct_add_altivec(uint8_t *dest, int line_size, int16_t *block);
 
+void ff_vp3_idct_altivec(DCTELEM *block);
+void ff_vp3_idct_put_altivec(uint8_t *dest, int line_size, DCTELEM *block);
+void ff_vp3_idct_add_altivec(uint8_t *dest, int line_size, DCTELEM *block);
+
 void dsputil_h264_init_ppc(DSPContext* c, AVCodecContext *avctx);
 
 void dsputil_init_altivec(DSPContext* c, AVCodecContext *avctx);
@@ -283,6 +287,12 @@
                 c->idct_put = idct_put_altivec;
                 c->idct_add = idct_add_altivec;
                 c->idct_permutation_type = FF_TRANSPOSE_IDCT_PERM;
+            }else if((CONFIG_VP3_DECODER || CONFIG_VP5_DECODER || CONFIG_VP6_DECODER || CONFIG_THEORA_DECODER) &&
+                     avctx->idct_algo==FF_IDCT_VP3){
+                c->idct_put = ff_vp3_idct_put_altivec;
+                c->idct_add = ff_vp3_idct_add_altivec;
+                c->idct     = ff_vp3_idct_altivec;
+                c->idct_permutation_type = FF_TRANSPOSE_IDCT_PERM;
             }
         }