[libav-devel] [PATCH v2] vp3: move idct and loop filter pointers to new vp3dsp context

2012-07-17 Thread Mans Rullgard
This moves all VP3-specific function pointers from dsputil to a
new vp3dsp context.  There is no reason to ever use the VP3 IDCT
where an MPEG2 IDCT is expected or vice versa.

Signed-off-by: Mans Rullgard m...@mansr.com
---
Now with some av_cold I forgot the first time.
---
 libavcodec/arm/Makefile|  1 +
 libavcodec/arm/dsputil_init_neon.c | 21 
 libavcodec/arm/vp3dsp_init_arm.c   | 45 ++
 libavcodec/arm/vp3dsp_neon.S   | 26 ---
 libavcodec/dsputil.c   | 12 ---
 libavcodec/dsputil.h   | 13 
 libavcodec/ppc/Makefile|  5 ++-
 libavcodec/ppc/dsputil_altivec.h   |  4 ---
 libavcodec/ppc/dsputil_ppc.c   |  6 
 libavcodec/ppc/vp3dsp_altivec.c| 40 +++
 libavcodec/vp3.c   | 22 ++---
 libavcodec/vp3dsp.c| 37 --
 libavcodec/vp3dsp.h| 40 +++
 libavcodec/vp56.c  | 10 +++---
 libavcodec/vp56.h  |  2 ++
 libavcodec/x86/Makefile|  1 +
 libavcodec/x86/dsputil_mmx.c   | 35 
 libavcodec/x86/vp3dsp.asm  |  4 ---
 libavcodec/x86/vp3dsp_init.c   | 65 ++
 19 files changed, 220 insertions(+), 169 deletions(-)
 create mode 100644 libavcodec/arm/vp3dsp_init_arm.c
 create mode 100644 libavcodec/vp3dsp.h
 create mode 100644 libavcodec/x86/vp3dsp_init.c

diff --git a/libavcodec/arm/Makefile b/libavcodec/arm/Makefile
index 0b78600..745a5bd 100644
--- a/libavcodec/arm/Makefile
+++ b/libavcodec/arm/Makefile
@@ -14,6 +14,7 @@ OBJS-$(CONFIG_FLAC_DECODER)+= 
arm/flacdsp_init_arm.o\
 OBJS-$(CONFIG_MPEGAUDIODSP)+= arm/mpegaudiodsp_init_arm.o
 ARMV6-OBJS-$(CONFIG_MPEGAUDIODSP)  += arm/mpegaudiodsp_fixed_armv6.o
 
+OBJS-$(CONFIG_VP3DSP)  += arm/vp3dsp_init_arm.o
 OBJS-$(CONFIG_VP5_DECODER) += arm/vp56dsp_init_arm.o
 OBJS-$(CONFIG_VP6_DECODER) += arm/vp56dsp_init_arm.o
 OBJS-$(CONFIG_VP8_DECODER) += arm/vp8dsp_init_arm.o
diff --git a/libavcodec/arm/dsputil_init_neon.c 
b/libavcodec/arm/dsputil_init_neon.c
index 65db20d..a132f6f 100644
--- a/libavcodec/arm/dsputil_init_neon.c
+++ b/libavcodec/arm/dsputil_init_neon.c
@@ -29,11 +29,6 @@ void ff_simple_idct_neon(DCTELEM *data);
 void ff_simple_idct_put_neon(uint8_t *dest, int line_size, DCTELEM *data);
 void ff_simple_idct_add_neon(uint8_t *dest, int line_size, DCTELEM *data);
 
-void ff_vp3_idct_neon(DCTELEM *data);
-void ff_vp3_idct_put_neon(uint8_t *dest, int line_size, DCTELEM *data);
-void ff_vp3_idct_add_neon(uint8_t *dest, int line_size, DCTELEM *data);
-void ff_vp3_idct_dc_add_neon(uint8_t *dest, int line_size, const DCTELEM 
*data);
-
 void ff_clear_block_neon(DCTELEM *block);
 void ff_clear_blocks_neon(DCTELEM *blocks);
 
@@ -147,9 +142,6 @@ void ff_avg_h264_chroma_mc8_neon(uint8_t *, uint8_t *, int, 
int, int, int);
 void ff_avg_h264_chroma_mc4_neon(uint8_t *, uint8_t *, int, int, int, int);
 void ff_avg_h264_chroma_mc2_neon(uint8_t *, uint8_t *, int, int, int, int);
 
-void ff_vp3_v_loop_filter_neon(uint8_t *, int, int *);
-void ff_vp3_h_loop_filter_neon(uint8_t *, int, int *);
-
 void ff_vector_fmul_window_neon(float *dst, const float *src0,
 const float *src1, const float *win, int len);
 void ff_vector_fmul_scalar_neon(float *dst, const float *src, float mul,
@@ -186,13 +178,6 @@ void ff_dsputil_init_neon(DSPContext *c, AVCodecContext 
*avctx)
 c-idct_add  = ff_simple_idct_add_neon;
 c-idct  = ff_simple_idct_neon;
 c-idct_permutation_type = FF_PARTTRANS_IDCT_PERM;
-} else if ((CONFIG_VP3_DECODER || CONFIG_VP5_DECODER ||
-CONFIG_VP6_DECODER) 
-   avctx-idct_algo == FF_IDCT_VP3) {
-c-idct_put  = ff_vp3_idct_put_neon;
-c-idct_add  = ff_vp3_idct_add_neon;
-c-idct  = ff_vp3_idct_neon;
-c-idct_permutation_type = FF_TRANSPOSE_IDCT_PERM;
 }
 }
 
@@ -319,12 +304,6 @@ void ff_dsputil_init_neon(DSPContext *c, AVCodecContext 
*avctx)
 c-avg_h264_qpel_pixels_tab[1][15] = ff_avg_h264_qpel8_mc33_neon;
 }
 
-if (CONFIG_VP3_DECODER) {
-c-vp3_v_loop_filter = ff_vp3_v_loop_filter_neon;
-c-vp3_h_loop_filter = ff_vp3_h_loop_filter_neon;
-c-vp3_idct_dc_add   = ff_vp3_idct_dc_add_neon;
-}
-
 c-vector_fmul_window = ff_vector_fmul_window_neon;
 c-vector_fmul_scalar = ff_vector_fmul_scalar_neon;
 c-butterflies_float  = ff_butterflies_float_neon;
diff --git a/libavcodec/arm/vp3dsp_init_arm.c b/libavcodec/arm/vp3dsp_init_arm.c
new file mode 100644
index 000..ea99bfd
--- /dev/null
+++ b/libavcodec/arm/vp3dsp_init_arm.c
@@ -0,0 +1,45 @@
+/*
+ * This file is 

Re: [libav-devel] [PATCH v2] vp3: move idct and loop filter pointers to new vp3dsp context

2012-07-17 Thread Diego Biurrun
On Wed, Jul 18, 2012 at 01:25:08AM +0100, Mans Rullgard wrote:
 This moves all VP3-specific function pointers from dsputil to a
 new vp3dsp context.  There is no reason to ever use the VP3 IDCT
 where an MPEG2 IDCT is expected or vice versa.

OK

Diego
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel