[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