[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