[FFmpeg-devel] [PATCH v2 3/7] x86/hevcdec: refact, remove duplicate code in HEVC_SAO_{BAND, EDGE}_FILTER
Nuo Mi
nuomi2021 at gmail.com
Sat May 3 12:13:15 EEST 2025
From: Shaun Loo <shaunloo10 at gmail.com>
This is a part of Google Summer of Code 2023
Co-authored-by: Nuo Mi <nuomi2021 at gmail.com>
---
libavcodec/x86/hevc/sao_10bit.asm | 100 ++++++++++++++----------------
1 file changed, 48 insertions(+), 52 deletions(-)
diff --git a/libavcodec/x86/hevc/sao_10bit.asm b/libavcodec/x86/hevc/sao_10bit.asm
index eeb2b2fe59..0320efd758 100644
--- a/libavcodec/x86/hevc/sao_10bit.asm
+++ b/libavcodec/x86/hevc/sao_10bit.asm
@@ -28,18 +28,17 @@
H2656_SAO_BAND_FILTER hevc, %1, %2, %3
%endmacro
+%macro HEVC_SAO_BAND_FILTER_FUNCS 1
+ HEVC_SAO_BAND_FILTER %1, 8, 1
+ HEVC_SAO_BAND_FILTER %1, 16, 2
+ HEVC_SAO_BAND_FILTER %1, 32, 4
+ HEVC_SAO_BAND_FILTER %1, 48, 6
+ HEVC_SAO_BAND_FILTER %1, 64, 8
+%endmacro
+
%macro HEVC_SAO_BAND_FILTER_FUNCS 0
-HEVC_SAO_BAND_FILTER 10, 8, 1
-HEVC_SAO_BAND_FILTER 10, 16, 2
-HEVC_SAO_BAND_FILTER 10, 32, 4
-HEVC_SAO_BAND_FILTER 10, 48, 6
-HEVC_SAO_BAND_FILTER 10, 64, 8
-
-HEVC_SAO_BAND_FILTER 12, 8, 1
-HEVC_SAO_BAND_FILTER 12, 16, 2
-HEVC_SAO_BAND_FILTER 12, 32, 4
-HEVC_SAO_BAND_FILTER 12, 48, 6
-HEVC_SAO_BAND_FILTER 12, 64, 8
+ HEVC_SAO_BAND_FILTER_FUNCS 10
+ HEVC_SAO_BAND_FILTER_FUNCS 12
%endmacro
INIT_XMM sse2
@@ -48,54 +47,51 @@ INIT_XMM avx
HEVC_SAO_BAND_FILTER_FUNCS
%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
-
-INIT_XMM avx2
-HEVC_SAO_BAND_FILTER 12, 8, 1
-INIT_YMM avx2
-HEVC_SAO_BAND_FILTER 12, 16, 1
-HEVC_SAO_BAND_FILTER 12, 32, 2
-HEVC_SAO_BAND_FILTER 12, 48, 3
-HEVC_SAO_BAND_FILTER 12, 64, 4
+
+%macro HEVC_SAO_BAND_FILTER_FUNCS_AVX2 1
+ INIT_XMM avx2
+ HEVC_SAO_BAND_FILTER %1, 8, 1
+ INIT_YMM avx2
+ HEVC_SAO_BAND_FILTER %1, 16, 1
+ HEVC_SAO_BAND_FILTER %1, 32, 2
+ HEVC_SAO_BAND_FILTER %1, 48, 3
+ HEVC_SAO_BAND_FILTER %1, 64, 4
+%endmacro
+
+ HEVC_SAO_BAND_FILTER_FUNCS_AVX2 10
+ HEVC_SAO_BAND_FILTER_FUNCS_AVX2 12
+
%endif
%macro HEVC_SAO_EDGE_FILTER 3
H2656_SAO_EDGE_FILTER hevc, %1, %2, %3
%endmacro
+%macro HEVC_SAO_EDGE_FILTER_FUNCS 1
+ HEVC_SAO_EDGE_FILTER %1, 8, 1
+ HEVC_SAO_EDGE_FILTER %1, 16, 2
+ HEVC_SAO_EDGE_FILTER %1, 32, 4
+ HEVC_SAO_EDGE_FILTER %1, 48, 6
+ HEVC_SAO_EDGE_FILTER %1, 64, 8
+%endmacro
+
INIT_XMM sse2
-HEVC_SAO_EDGE_FILTER 10, 8, 1
-HEVC_SAO_EDGE_FILTER 10, 16, 2
-HEVC_SAO_EDGE_FILTER 10, 32, 4
-HEVC_SAO_EDGE_FILTER 10, 48, 6
-HEVC_SAO_EDGE_FILTER 10, 64, 8
-
-HEVC_SAO_EDGE_FILTER 12, 8, 1
-HEVC_SAO_EDGE_FILTER 12, 16, 2
-HEVC_SAO_EDGE_FILTER 12, 32, 4
-HEVC_SAO_EDGE_FILTER 12, 48, 6
-HEVC_SAO_EDGE_FILTER 12, 64, 8
+HEVC_SAO_EDGE_FILTER_FUNCS 10
+HEVC_SAO_EDGE_FILTER_FUNCS 12
%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
-
-INIT_XMM avx2
-HEVC_SAO_EDGE_FILTER 12, 8, 1
-INIT_YMM avx2
-HEVC_SAO_EDGE_FILTER 12, 16, 1
-HEVC_SAO_EDGE_FILTER 12, 32, 2
-HEVC_SAO_EDGE_FILTER 12, 48, 3
-HEVC_SAO_EDGE_FILTER 12, 64, 4
+
+%macro HEVC_SAO_EDGE_FILTER_FUNCS_AVX2 1
+ INIT_XMM avx2
+ HEVC_SAO_EDGE_FILTER %1, 8, 1
+ INIT_YMM avx2
+ HEVC_SAO_EDGE_FILTER %1, 16, 1
+ HEVC_SAO_EDGE_FILTER %1, 32, 2
+ HEVC_SAO_EDGE_FILTER %1, 48, 3
+ HEVC_SAO_EDGE_FILTER %1, 64, 4
+%endmacro
+
+HEVC_SAO_EDGE_FILTER_FUNCS_AVX2 10
+HEVC_SAO_EDGE_FILTER_FUNCS_AVX2 12
+
%endif
--
2.34.1
More information about the ffmpeg-devel
mailing list