1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-08-04 22:03:09 +02:00

x86/hevcdec: refact, remove duplicate code in HEVC_SAO_{BAND, EDGE}_FILTER

This is a part of Google Summer of Code 2023

Co-authored-by: Nuo Mi <nuomi2021@gmail.com>
This commit is contained in:
Shaun Loo
2024-12-21 11:29:35 +08:00
committed by Nuo Mi
parent dbd859a186
commit 69f63c6210

View File

@ -28,18 +28,17 @@
H2656_SAO_BAND_FILTER hevc, %1, %2, %3 H2656_SAO_BAND_FILTER hevc, %1, %2, %3
%endmacro %endmacro
%macro HEVC_SAO_BAND_FILTER_FUNCS 0 %macro HEVC_SAO_BAND_FILTER_FUNCS 1
HEVC_SAO_BAND_FILTER 10, 8, 1 HEVC_SAO_BAND_FILTER %1, 8, 1
HEVC_SAO_BAND_FILTER 10, 16, 2 HEVC_SAO_BAND_FILTER %1, 16, 2
HEVC_SAO_BAND_FILTER 10, 32, 4 HEVC_SAO_BAND_FILTER %1, 32, 4
HEVC_SAO_BAND_FILTER 10, 48, 6 HEVC_SAO_BAND_FILTER %1, 48, 6
HEVC_SAO_BAND_FILTER 10, 64, 8 HEVC_SAO_BAND_FILTER %1, 64, 8
%endmacro
HEVC_SAO_BAND_FILTER 12, 8, 1 %macro HEVC_SAO_BAND_FILTER_FUNCS 0
HEVC_SAO_BAND_FILTER 12, 16, 2 HEVC_SAO_BAND_FILTER_FUNCS 10
HEVC_SAO_BAND_FILTER 12, 32, 4 HEVC_SAO_BAND_FILTER_FUNCS 12
HEVC_SAO_BAND_FILTER 12, 48, 6
HEVC_SAO_BAND_FILTER 12, 64, 8
%endmacro %endmacro
INIT_XMM sse2 INIT_XMM sse2
@ -48,54 +47,51 @@ INIT_XMM avx
HEVC_SAO_BAND_FILTER_FUNCS HEVC_SAO_BAND_FILTER_FUNCS
%if HAVE_AVX2_EXTERNAL %if HAVE_AVX2_EXTERNAL
INIT_XMM avx2
HEVC_SAO_BAND_FILTER 10, 8, 1
INIT_YMM avx2
HEVC_SAO_BAND_FILTER 10, 16, 1
HEVC_SAO_BAND_FILTER 10, 32, 2
HEVC_SAO_BAND_FILTER 10, 48, 3
HEVC_SAO_BAND_FILTER 10, 64, 4
%macro HEVC_SAO_BAND_FILTER_FUNCS_AVX2 1
INIT_XMM avx2 INIT_XMM avx2
HEVC_SAO_BAND_FILTER 12, 8, 1 HEVC_SAO_BAND_FILTER %1, 8, 1
INIT_YMM avx2 INIT_YMM avx2
HEVC_SAO_BAND_FILTER 12, 16, 1 HEVC_SAO_BAND_FILTER %1, 16, 1
HEVC_SAO_BAND_FILTER 12, 32, 2 HEVC_SAO_BAND_FILTER %1, 32, 2
HEVC_SAO_BAND_FILTER 12, 48, 3 HEVC_SAO_BAND_FILTER %1, 48, 3
HEVC_SAO_BAND_FILTER 12, 64, 4 HEVC_SAO_BAND_FILTER %1, 64, 4
%endmacro
HEVC_SAO_BAND_FILTER_FUNCS_AVX2 10
HEVC_SAO_BAND_FILTER_FUNCS_AVX2 12
%endif %endif
%macro HEVC_SAO_EDGE_FILTER 3 %macro HEVC_SAO_EDGE_FILTER 3
H2656_SAO_EDGE_FILTER hevc, %1, %2, %3 H2656_SAO_EDGE_FILTER hevc, %1, %2, %3
%endmacro %endmacro
INIT_XMM sse2 %macro HEVC_SAO_EDGE_FILTER_FUNCS 1
HEVC_SAO_EDGE_FILTER 10, 8, 1 HEVC_SAO_EDGE_FILTER %1, 8, 1
HEVC_SAO_EDGE_FILTER 10, 16, 2 HEVC_SAO_EDGE_FILTER %1, 16, 2
HEVC_SAO_EDGE_FILTER 10, 32, 4 HEVC_SAO_EDGE_FILTER %1, 32, 4
HEVC_SAO_EDGE_FILTER 10, 48, 6 HEVC_SAO_EDGE_FILTER %1, 48, 6
HEVC_SAO_EDGE_FILTER 10, 64, 8 HEVC_SAO_EDGE_FILTER %1, 64, 8
%endmacro
HEVC_SAO_EDGE_FILTER 12, 8, 1 INIT_XMM sse2
HEVC_SAO_EDGE_FILTER 12, 16, 2 HEVC_SAO_EDGE_FILTER_FUNCS 10
HEVC_SAO_EDGE_FILTER 12, 32, 4 HEVC_SAO_EDGE_FILTER_FUNCS 12
HEVC_SAO_EDGE_FILTER 12, 48, 6
HEVC_SAO_EDGE_FILTER 12, 64, 8
%if HAVE_AVX2_EXTERNAL %if HAVE_AVX2_EXTERNAL
INIT_XMM avx2
HEVC_SAO_EDGE_FILTER 10, 8, 1
INIT_YMM avx2
HEVC_SAO_EDGE_FILTER 10, 16, 1
HEVC_SAO_EDGE_FILTER 10, 32, 2
HEVC_SAO_EDGE_FILTER 10, 48, 3
HEVC_SAO_EDGE_FILTER 10, 64, 4
%macro HEVC_SAO_EDGE_FILTER_FUNCS_AVX2 1
INIT_XMM avx2 INIT_XMM avx2
HEVC_SAO_EDGE_FILTER 12, 8, 1 HEVC_SAO_EDGE_FILTER %1, 8, 1
INIT_YMM avx2 INIT_YMM avx2
HEVC_SAO_EDGE_FILTER 12, 16, 1 HEVC_SAO_EDGE_FILTER %1, 16, 1
HEVC_SAO_EDGE_FILTER 12, 32, 2 HEVC_SAO_EDGE_FILTER %1, 32, 2
HEVC_SAO_EDGE_FILTER 12, 48, 3 HEVC_SAO_EDGE_FILTER %1, 48, 3
HEVC_SAO_EDGE_FILTER 12, 64, 4 HEVC_SAO_EDGE_FILTER %1, 64, 4
%endmacro
HEVC_SAO_EDGE_FILTER_FUNCS_AVX2 10
HEVC_SAO_EDGE_FILTER_FUNCS_AVX2 12
%endif %endif