[FFmpeg-cvslog] avcodec/idctdsp: Only try to initialize xvid idct if it is used

Andreas Rheinhardt git at videolan.org
Mon May 26 06:25:12 EEST 2025


ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at outlook.com> | Tue May 20 22:55:53 2025 +0200| [2e8a3e664504e44611fb018b1cf9d5b3cfa7a190] | committer: Andreas Rheinhardt

avcodec/idctdsp: Only try to initialize xvid idct if it is used

This allows to remove checks from ff_xvid_idct_init()
(and also the AVCodecContext* parameter).

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=2e8a3e664504e44611fb018b1cf9d5b3cfa7a190
---

 libavcodec/idctdsp.c  | 7 ++++---
 libavcodec/xvididct.c | 8 +-------
 libavcodec/xvididct.h | 3 +--
 3 files changed, 6 insertions(+), 12 deletions(-)

diff --git a/libavcodec/idctdsp.c b/libavcodec/idctdsp.c
index 4259a117dc..8a71c7ef77 100644
--- a/libavcodec/idctdsp.c
+++ b/libavcodec/idctdsp.c
@@ -276,6 +276,10 @@ av_cold void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx)
                 c->idct      = ff_faanidct;
                 c->perm_type = FF_IDCT_PERM_NONE;
 #endif /* CONFIG_FAANIDCT */
+#if CONFIG_MPEG4_DECODER
+            } else if (avctx->idct_algo == FF_IDCT_XVID) {
+                ff_xvid_idct_init(c);
+#endif
             } else { // accurate/default
                 c->idct_put  = ff_simple_idct_put_int16_8bit;
                 c->idct_add  = ff_simple_idct_add_int16_8bit;
@@ -289,9 +293,6 @@ av_cold void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx)
     c->put_signed_pixels_clamped = put_signed_pixels_clamped_c;
     c->add_pixels_clamped        = ff_add_pixels_clamped_c;
 
-    if (CONFIG_MPEG4_DECODER && avctx->idct_algo == FF_IDCT_XVID)
-        ff_xvid_idct_init(c, avctx);
-
 #if ARCH_AARCH64
     ff_idctdsp_init_aarch64(c, avctx, high_bit_depth);
 #elif ARCH_ARM
diff --git a/libavcodec/xvididct.c b/libavcodec/xvididct.c
index f50d8b7695..317e4e82cd 100644
--- a/libavcodec/xvididct.c
+++ b/libavcodec/xvididct.c
@@ -32,7 +32,6 @@
 
 #include "config.h"
 #include "libavutil/attributes.h"
-#include "avcodec.h"
 #include "idctdsp.h"
 #include "xvididct.h"
 
@@ -330,13 +329,8 @@ static void xvid_idct_add(uint8_t *dest, ptrdiff_t line_size, int16_t *block)
     ff_add_pixels_clamped_c(block, dest, line_size);
 }
 
-av_cold void ff_xvid_idct_init(IDCTDSPContext *c, AVCodecContext *avctx)
+av_cold void ff_xvid_idct_init(IDCTDSPContext *c)
 {
-    const unsigned high_bit_depth = avctx->bits_per_raw_sample > 8;
-
-    if (high_bit_depth || avctx->lowres)
-        return;
-
     c->idct_put  = xvid_idct_put;
     c->idct_add  = xvid_idct_add;
     c->idct      = ff_xvid_idct;
diff --git a/libavcodec/xvididct.h b/libavcodec/xvididct.h
index 1395cfd8e1..496071a034 100644
--- a/libavcodec/xvididct.h
+++ b/libavcodec/xvididct.h
@@ -21,12 +21,11 @@
 
 #include <stdint.h>
 
-#include "avcodec.h"
 #include "idctdsp.h"
 
 void ff_xvid_idct(int16_t *const in);
 
-void ff_xvid_idct_init(IDCTDSPContext *c, AVCodecContext *avctx);
+void ff_xvid_idct_init(IDCTDSPContext *c);
 
 void ff_xvid_idct_init_x86(IDCTDSPContext *c);
 void ff_xvid_idct_init_mips(IDCTDSPContext *c);



More information about the ffmpeg-cvslog mailing list