Most of our VP56 optimizations are VP6-only and will stay that way. So avoid compiling them for VP5-only builds.tags/n2.1
@@ -25,8 +25,7 @@ OBJS-$(CONFIG_MPEGAUDIODSP) += arm/mpegaudiodsp_init_arm.o | |||||
OBJS-$(CONFIG_MPEGVIDEO) += arm/mpegvideo_arm.o | OBJS-$(CONFIG_MPEGVIDEO) += arm/mpegvideo_arm.o | ||||
OBJS-$(CONFIG_VORBIS_DECODER) += arm/vorbisdsp_init_arm.o | OBJS-$(CONFIG_VORBIS_DECODER) += arm/vorbisdsp_init_arm.o | ||||
OBJS-$(CONFIG_VP3DSP) += arm/vp3dsp_init_arm.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_VP6_DECODER) += arm/vp6dsp_init_arm.o | |||||
OBJS-$(CONFIG_VP8_DECODER) += arm/vp8dsp_init_arm.o | OBJS-$(CONFIG_VP8_DECODER) += arm/vp8dsp_init_arm.o | ||||
OBJS-$(CONFIG_RV30_DECODER) += arm/rv34dsp_init_arm.o | OBJS-$(CONFIG_RV30_DECODER) += arm/rv34dsp_init_arm.o | ||||
OBJS-$(CONFIG_RV40_DECODER) += arm/rv34dsp_init_arm.o \ | OBJS-$(CONFIG_RV40_DECODER) += arm/rv34dsp_init_arm.o \ | ||||
@@ -89,7 +88,6 @@ NEON-OBJS-$(CONFIG_RV40_DECODER) += arm/rv34dsp_neon.o \ | |||||
arm/rv40dsp_neon.o | arm/rv40dsp_neon.o | ||||
NEON-OBJS-$(CONFIG_VORBIS_DECODER) += arm/vorbisdsp_neon.o | NEON-OBJS-$(CONFIG_VORBIS_DECODER) += arm/vorbisdsp_neon.o | ||||
NEON-OBJS-$(CONFIG_VP3DSP) += arm/vp3dsp_neon.o | NEON-OBJS-$(CONFIG_VP3DSP) += arm/vp3dsp_neon.o | ||||
NEON-OBJS-$(CONFIG_VP5_DECODER) += arm/vp56dsp_neon.o | |||||
NEON-OBJS-$(CONFIG_VP6_DECODER) += arm/vp56dsp_neon.o | |||||
NEON-OBJS-$(CONFIG_VP6_DECODER) += arm/vp6dsp_neon.o | |||||
NEON-OBJS-$(CONFIG_VP8_DECODER) += arm/vp8dsp_init_neon.o \ | NEON-OBJS-$(CONFIG_VP8_DECODER) += arm/vp8dsp_init_neon.o \ | ||||
arm/vp8dsp_neon.o | arm/vp8dsp_neon.o |
@@ -28,11 +28,11 @@ | |||||
void ff_vp6_edge_filter_hor_neon(uint8_t *yuv, int stride, int t); | void ff_vp6_edge_filter_hor_neon(uint8_t *yuv, int stride, int t); | ||||
void ff_vp6_edge_filter_ver_neon(uint8_t *yuv, int stride, int t); | void ff_vp6_edge_filter_ver_neon(uint8_t *yuv, int stride, int t); | ||||
av_cold void ff_vp56dsp_init_arm(VP56DSPContext *s, enum AVCodecID codec) | |||||
av_cold void ff_vp6dsp_init_arm(VP56DSPContext *s, enum AVCodecID codec) | |||||
{ | { | ||||
int cpu_flags = av_get_cpu_flags(); | int cpu_flags = av_get_cpu_flags(); | ||||
if (codec != AV_CODEC_ID_VP5 && have_neon(cpu_flags)) { | |||||
if (have_neon(cpu_flags)) { | |||||
s->edge_filter_hor = ff_vp6_edge_filter_hor_neon; | s->edge_filter_hor = ff_vp6_edge_filter_hor_neon; | ||||
s->edge_filter_ver = ff_vp6_edge_filter_ver_neon; | s->edge_filter_ver = ff_vp6_edge_filter_ver_neon; | ||||
} | } |
@@ -88,9 +88,11 @@ av_cold void ff_vp56dsp_init(VP56DSPContext *s, enum AVCodecID codec) | |||||
if (CONFIG_VP6_DECODER) { | if (CONFIG_VP6_DECODER) { | ||||
s->vp6_filter_diag4 = ff_vp6_filter_diag4_c; | s->vp6_filter_diag4 = ff_vp6_filter_diag4_c; | ||||
if (ARCH_ARM) | |||||
ff_vp6dsp_init_arm(s, codec); | |||||
if (ARCH_X86) | |||||
ff_vp6dsp_init_x86(s, codec); | |||||
} | } | ||||
} | } | ||||
if (ARCH_ARM) ff_vp56dsp_init_arm(s, codec); | |||||
if (ARCH_X86) ff_vp56dsp_init_x86(s, codec); | |||||
} | } |
@@ -36,7 +36,7 @@ void ff_vp6_filter_diag4_c(uint8_t *dst, uint8_t *src, int stride, | |||||
const int16_t *h_weights, const int16_t *v_weights); | const int16_t *h_weights, const int16_t *v_weights); | ||||
void ff_vp56dsp_init(VP56DSPContext *s, enum AVCodecID codec); | void ff_vp56dsp_init(VP56DSPContext *s, enum AVCodecID codec); | ||||
void ff_vp56dsp_init_arm(VP56DSPContext *s, enum AVCodecID codec); | |||||
void ff_vp56dsp_init_x86(VP56DSPContext* c, enum AVCodecID codec); | |||||
void ff_vp6dsp_init_arm(VP56DSPContext *s, enum AVCodecID codec); | |||||
void ff_vp6dsp_init_x86(VP56DSPContext* c, enum AVCodecID codec); | |||||
#endif /* AVCODEC_VP56DSP_H */ | #endif /* AVCODEC_VP56DSP_H */ |
@@ -27,8 +27,7 @@ OBJS-$(CONFIG_VC1_DECODER) += x86/vc1dsp_init.o | |||||
OBJS-$(CONFIG_VIDEODSP) += x86/videodsp_init.o | OBJS-$(CONFIG_VIDEODSP) += x86/videodsp_init.o | ||||
OBJS-$(CONFIG_VORBIS_DECODER) += x86/vorbisdsp_init.o | OBJS-$(CONFIG_VORBIS_DECODER) += x86/vorbisdsp_init.o | ||||
OBJS-$(CONFIG_VP3DSP) += x86/vp3dsp_init.o | OBJS-$(CONFIG_VP3DSP) += x86/vp3dsp_init.o | ||||
OBJS-$(CONFIG_VP5_DECODER) += x86/vp56dsp_init.o | |||||
OBJS-$(CONFIG_VP6_DECODER) += x86/vp56dsp_init.o | |||||
OBJS-$(CONFIG_VP6_DECODER) += x86/vp6dsp_init.o | |||||
OBJS-$(CONFIG_VP8_DECODER) += x86/vp8dsp_init.o | OBJS-$(CONFIG_VP8_DECODER) += x86/vp8dsp_init.o | ||||
OBJS-$(CONFIG_XMM_CLOBBER_TEST) += x86/w64xmmtest.o | OBJS-$(CONFIG_XMM_CLOBBER_TEST) += x86/w64xmmtest.o | ||||
@@ -88,5 +87,5 @@ YASM-OBJS-$(CONFIG_VC1_DECODER) += x86/vc1dsp.o | |||||
YASM-OBJS-$(CONFIG_VIDEODSP) += x86/videodsp.o | YASM-OBJS-$(CONFIG_VIDEODSP) += x86/videodsp.o | ||||
YASM-OBJS-$(CONFIG_VORBIS_DECODER) += x86/vorbisdsp.o | YASM-OBJS-$(CONFIG_VORBIS_DECODER) += x86/vorbisdsp.o | ||||
YASM-OBJS-$(CONFIG_VP3DSP) += x86/vp3dsp.o | YASM-OBJS-$(CONFIG_VP3DSP) += x86/vp3dsp.o | ||||
YASM-OBJS-$(CONFIG_VP6_DECODER) += x86/vp56dsp.o | |||||
YASM-OBJS-$(CONFIG_VP6_DECODER) += x86/vp6dsp.o | |||||
YASM-OBJS-$(CONFIG_VP8_DECODER) += x86/vp8dsp.o | YASM-OBJS-$(CONFIG_VP8_DECODER) += x86/vp8dsp.o |
@@ -30,19 +30,16 @@ void ff_vp6_filter_diag4_mmx(uint8_t *dst, uint8_t *src, int stride, | |||||
void ff_vp6_filter_diag4_sse2(uint8_t *dst, uint8_t *src, int stride, | void ff_vp6_filter_diag4_sse2(uint8_t *dst, uint8_t *src, int stride, | ||||
const int16_t *h_weights,const int16_t *v_weights); | const int16_t *h_weights,const int16_t *v_weights); | ||||
av_cold void ff_vp56dsp_init_x86(VP56DSPContext* c, enum AVCodecID codec) | |||||
av_cold void ff_vp6dsp_init_x86(VP56DSPContext* c, enum AVCodecID codec) | |||||
{ | { | ||||
int cpu_flags = av_get_cpu_flags(); | int cpu_flags = av_get_cpu_flags(); | ||||
if (CONFIG_VP6_DECODER && codec == AV_CODEC_ID_VP6) { | |||||
#if ARCH_X86_32 | #if ARCH_X86_32 | ||||
if (EXTERNAL_MMX(cpu_flags)) { | |||||
c->vp6_filter_diag4 = ff_vp6_filter_diag4_mmx; | |||||
} | |||||
if (EXTERNAL_MMX(cpu_flags)) { | |||||
c->vp6_filter_diag4 = ff_vp6_filter_diag4_mmx; | |||||
} | |||||
#endif | #endif | ||||
if (EXTERNAL_SSE2(cpu_flags)) { | |||||
c->vp6_filter_diag4 = ff_vp6_filter_diag4_sse2; | |||||
} | |||||
if (EXTERNAL_SSE2(cpu_flags)) { | |||||
c->vp6_filter_diag4 = ff_vp6_filter_diag4_sse2; | |||||
} | } | ||||
} | } |