aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/x86/vp9dsp_init.c
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2014-01-17 03:55:44 -0300
committerClément Bœsch <clement@stupeflix.com>2014-01-17 14:16:38 +0100
commitd2a7314f1e0d8404eb82316ad7f12665c24d48e7 (patch)
tree6ab77feebff979961809c70ee2dc49b0e03e9eed /libavcodec/x86/vp9dsp_init.c
parent3ca7085ae2f7734746174762e76a9b2b1c6e8626 (diff)
downloadffmpeg-d2a7314f1e0d8404eb82316ad7f12665c24d48e7.tar.gz
vp9/x86: add ff_vp9_loop_filter_[vh]_16_16_sse2().
Similar gains in performance as the SSSE3 version Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavcodec/x86/vp9dsp_init.c')
-rw-r--r--libavcodec/x86/vp9dsp_init.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/libavcodec/x86/vp9dsp_init.c b/libavcodec/x86/vp9dsp_init.c
index 900efb3a0b..ab3396e098 100644
--- a/libavcodec/x86/vp9dsp_init.c
+++ b/libavcodec/x86/vp9dsp_init.c
@@ -177,10 +177,17 @@ itxfm_func(idct, idct, 32, avx);
#undef itxfm_func
#undef itxfm_funcs
-void ff_vp9_loop_filter_v_16_16_ssse3(uint8_t *dst, ptrdiff_t stride, int E, int I, int H);
-void ff_vp9_loop_filter_v_16_16_avx (uint8_t *dst, ptrdiff_t stride, int E, int I, int H);
-void ff_vp9_loop_filter_h_16_16_ssse3(uint8_t *dst, ptrdiff_t stride, int E, int I, int H);
-void ff_vp9_loop_filter_h_16_16_avx (uint8_t *dst, ptrdiff_t stride, int E, int I, int H);
+#define lpf_funcs(size1, size2, opt) \
+void ff_vp9_loop_filter_v_##size1##_##size2##_##opt(uint8_t *dst, ptrdiff_t stride, \
+ int E, int I, int H); \
+void ff_vp9_loop_filter_h_##size1##_##size2##_##opt(uint8_t *dst, ptrdiff_t stride, \
+ int E, int I, int H)
+
+lpf_funcs(16, 16, sse2);
+lpf_funcs(16, 16, ssse3);
+lpf_funcs(16, 16, avx);
+
+#undef lpf_funcs
#endif /* HAVE_YASM */
@@ -230,6 +237,10 @@ av_cold void ff_vp9dsp_init_x86(VP9DSPContext *dsp)
init_fpel(2, 1, 16, avg, sse2);
init_fpel(1, 1, 32, avg, sse2);
init_fpel(0, 1, 64, avg, sse2);
+ if (ARCH_X86_64) {
+ dsp->loop_filter_16[0] = ff_vp9_loop_filter_h_16_16_sse2;
+ dsp->loop_filter_16[1] = ff_vp9_loop_filter_v_16_16_sse2;
+ }
}
if (EXTERNAL_SSSE3(cpu_flags)) {