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