aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/x86/vp9dsp_init.c
diff options
context:
space:
mode:
authorClément Bœsch <u@pkh.me>2014-01-05 21:00:40 +0100
committerAnton Khirnov <anton@khirnov.net>2016-10-04 10:54:08 +0200
commita692724c587859c8157d1aefcae9fbdb23328c61 (patch)
treeacc0bb88d35b6f980ea8447da9094dad4622cf34 /libavcodec/x86/vp9dsp_init.c
parentc935b54bd6a12714fc08d88791dadee2ba07176a (diff)
downloadffmpeg-a692724c587859c8157d1aefcae9fbdb23328c61.tar.gz
vp9lpf/x86: add x86 SSSE3/AVX SIMD for vp9_loop_filter_[vh]_16_16.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
Diffstat (limited to 'libavcodec/x86/vp9dsp_init.c')
-rw-r--r--libavcodec/x86/vp9dsp_init.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/libavcodec/x86/vp9dsp_init.c b/libavcodec/x86/vp9dsp_init.c
index 41fa35a4c3..93453b83e3 100644
--- a/libavcodec/x86/vp9dsp_init.c
+++ b/libavcodec/x86/vp9dsp_init.c
@@ -217,6 +217,11 @@ filters_8tap_1d_fn2(avg, 32, avx2, ssse3)
#undef filters_8tap_1d_fn3
#undef filter_8tap_1d_fn
+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);
+
#endif /* HAVE_YASM */
av_cold void ff_vp9dsp_init_x86(VP9DSPContext *dsp)
@@ -283,11 +288,21 @@ av_cold void ff_vp9dsp_init_x86(VP9DSPContext *dsp)
if (EXTERNAL_SSSE3(cpu_flags)) {
init_subpel3(0, put, ssse3);
init_subpel3(1, avg, ssse3);
+
+ if (ARCH_X86_64) {
+ dsp->loop_filter_16[0] = ff_vp9_loop_filter_h_16_16_ssse3;
+ dsp->loop_filter_16[1] = ff_vp9_loop_filter_v_16_16_ssse3;
+ }
}
if (EXTERNAL_AVX(cpu_flags)) {
init_fpel(1, 0, 32, put, avx);
init_fpel(0, 0, 64, put, avx);
+
+ if (ARCH_X86_64) {
+ dsp->loop_filter_16[0] = ff_vp9_loop_filter_h_16_16_avx;
+ dsp->loop_filter_16[1] = ff_vp9_loop_filter_v_16_16_avx;
+ }
}
if (EXTERNAL_AVX2(cpu_flags)) {