mirror of
https://github.com/nyanmisaka/ffmpeg-rockchip.git
synced 2025-10-30 12:06:40 +08:00
vp9lpf/x86: add ff_vp9_loop_filter_h_{48,84}_16_{sse2,ssse3,avx}().
Signed-off-by: Anton Khirnov <anton@khirnov.net>
This commit is contained in:
committed by
Anton Khirnov
parent
92d47550ea
commit
f2e3d706a1
@@ -226,6 +226,12 @@ void ff_vp9_loop_filter_h_##size1##_##size2##_##opt(uint8_t *dst, ptrdiff_t stri
|
||||
lpf_funcs(16, 16, sse2);
|
||||
lpf_funcs(16, 16, ssse3);
|
||||
lpf_funcs(16, 16, avx);
|
||||
lpf_funcs(84, 16, sse2);
|
||||
lpf_funcs(84, 16, ssse3);
|
||||
lpf_funcs(84, 16, avx);
|
||||
lpf_funcs(48, 16, sse2);
|
||||
lpf_funcs(48, 16, ssse3);
|
||||
lpf_funcs(48, 16, avx);
|
||||
lpf_funcs(88, 16, sse2);
|
||||
lpf_funcs(88, 16, ssse3);
|
||||
lpf_funcs(88, 16, avx);
|
||||
@@ -269,6 +275,19 @@ av_cold void ff_vp9dsp_init_x86(VP9DSPContext *dsp)
|
||||
init_subpel3_8to64(idx, type, opt); \
|
||||
init_subpel2(4, idx, 4, type, opt)
|
||||
|
||||
#define init_lpf(opt) do { \
|
||||
if (ARCH_X86_64) { \
|
||||
dsp->loop_filter_16[0] = ff_vp9_loop_filter_h_16_16_##opt; \
|
||||
dsp->loop_filter_16[1] = ff_vp9_loop_filter_v_16_16_##opt; \
|
||||
dsp->loop_filter_mix2[0][1][0] = ff_vp9_loop_filter_h_48_16_##opt; \
|
||||
dsp->loop_filter_mix2[0][1][1] = ff_vp9_loop_filter_v_48_16_##opt; \
|
||||
dsp->loop_filter_mix2[1][0][0] = ff_vp9_loop_filter_h_84_16_##opt; \
|
||||
dsp->loop_filter_mix2[1][0][1] = ff_vp9_loop_filter_v_84_16_##opt; \
|
||||
dsp->loop_filter_mix2[1][1][0] = ff_vp9_loop_filter_h_88_16_##opt; \
|
||||
dsp->loop_filter_mix2[1][1][1] = ff_vp9_loop_filter_v_88_16_##opt; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
if (EXTERNAL_MMX(cpu_flags)) {
|
||||
init_fpel(4, 0, 4, put, mmx);
|
||||
init_fpel(3, 0, 8, put, mmx);
|
||||
@@ -293,36 +312,19 @@ 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_mix2[1][1][0] = ff_vp9_loop_filter_h_88_16_sse2;
|
||||
dsp->loop_filter_mix2[1][1][1] = ff_vp9_loop_filter_v_88_16_sse2;
|
||||
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;
|
||||
}
|
||||
init_lpf(sse2);
|
||||
}
|
||||
|
||||
if (EXTERNAL_SSSE3(cpu_flags)) {
|
||||
init_subpel3(0, put, ssse3);
|
||||
init_subpel3(1, avg, ssse3);
|
||||
|
||||
if (ARCH_X86_64) {
|
||||
dsp->loop_filter_mix2[1][1][0] = ff_vp9_loop_filter_h_88_16_ssse3;
|
||||
dsp->loop_filter_mix2[1][1][1] = ff_vp9_loop_filter_v_88_16_ssse3;
|
||||
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;
|
||||
}
|
||||
init_lpf(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_mix2[1][1][0] = ff_vp9_loop_filter_h_88_16_avx;
|
||||
dsp->loop_filter_mix2[1][1][1] = ff_vp9_loop_filter_v_88_16_avx;
|
||||
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;
|
||||
}
|
||||
init_lpf(avx);
|
||||
}
|
||||
|
||||
if (EXTERNAL_AVX2(cpu_flags)) {
|
||||
|
||||
Reference in New Issue
Block a user