diff options
author | Clément Bœsch <u@pkh.me> | 2014-01-05 21:00:40 +0100 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2016-10-04 10:54:08 +0200 |
commit | a692724c587859c8157d1aefcae9fbdb23328c61 (patch) | |
tree | acc0bb88d35b6f980ea8447da9094dad4622cf34 /libavcodec/x86/vp9dsp_init.c | |
parent | c935b54bd6a12714fc08d88791dadee2ba07176a (diff) | |
download | ffmpeg-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.c | 15 |
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)) { |