[FFmpeg-cvslog] x86/hevcdec: refact, remove duplicate code in HEVC_SAO_{BAND, EDGE}_FILTER
Shaun Loo
git at videolan.org
Wed May 14 15:59:17 EEST 2025
ffmpeg | branch: master | Shaun Loo <shaunloo10 at gmail.com> | Sat Dec 21 11:29:35 2024 +0800| [69f63c6210f57b02c2aa608bfc96e08683e10d8d] | committer: Nuo Mi
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 at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=69f63c6210f57b02c2aa608bfc96e08683e10d8d
---
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
More information about the ffmpeg-cvslog
mailing list