[FFmpeg-cvslog] avcodec/pixblockdsp: Pass bits_per_raw_sample directly

Andreas Rheinhardt git at videolan.org
Sat May 31 02:52:56 EEST 2025


ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at outlook.com> | Tue May 27 19:13:45 2025 +0200| [17d5f30dd58d1a573707eda2f4b1b6d8b409b604] | committer: Andreas Rheinhardt

avcodec/pixblockdsp: Pass bits_per_raw_sample directly

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

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

 libavcodec/asvenc.c          | 2 +-
 libavcodec/avdct.c           | 2 +-
 libavcodec/dnxhdenc.c        | 2 +-
 libavcodec/dvenc.c           | 2 +-
 libavcodec/mpegvideo_enc.c   | 2 +-
 libavcodec/pixblockdsp.c     | 7 +++----
 libavcodec/pixblockdsp.h     | 5 ++---
 tests/checkasm/pixblockdsp.c | 5 +----
 8 files changed, 11 insertions(+), 16 deletions(-)

diff --git a/libavcodec/asvenc.c b/libavcodec/asvenc.c
index ba48aa8f08..159b070821 100644
--- a/libavcodec/asvenc.c
+++ b/libavcodec/asvenc.c
@@ -378,7 +378,7 @@ static av_cold int encode_init(AVCodecContext *avctx)
 
     ff_asv_common_init(avctx);
     ff_fdctdsp_init(&a->fdsp, avctx);
-    ff_pixblockdsp_init(&a->pdsp, avctx);
+    ff_pixblockdsp_init(&a->pdsp, 8);
 
     if (avctx->global_quality <= 0)
         avctx->global_quality = 4 * FF_QUALITY_SCALE;
diff --git a/libavcodec/avdct.c b/libavcodec/avdct.c
index f995e73eab..5322b181bc 100644
--- a/libavcodec/avdct.c
+++ b/libavcodec/avdct.c
@@ -119,7 +119,7 @@ int avcodec_dct_init(AVDCT *dsp)
 #if CONFIG_PIXBLOCKDSP
     {
         PixblockDSPContext pdsp;
-        ff_pixblockdsp_init(&pdsp, avctx);
+        ff_pixblockdsp_init(&pdsp, dsp->bits_per_sample);
         COPY(pdsp, get_pixels);
         COPY(pdsp, get_pixels_unaligned);
     }
diff --git a/libavcodec/dnxhdenc.c b/libavcodec/dnxhdenc.c
index a8f8ab3cd9..7a5978c137 100644
--- a/libavcodec/dnxhdenc.c
+++ b/libavcodec/dnxhdenc.c
@@ -423,7 +423,7 @@ static av_cold int dnxhd_encode_init(AVCodecContext *avctx)
     ff_fdctdsp_init(&ctx->m.fdsp, avctx);
     ff_mpv_idct_init(&ctx->m.c);
     ff_mpegvideoencdsp_init(&ctx->m.mpvencdsp, avctx);
-    ff_pixblockdsp_init(&ctx->m.pdsp, avctx);
+    ff_pixblockdsp_init(&ctx->m.pdsp, ctx->bit_depth);
     ff_dct_encode_init(&ctx->m);
 
     if (ctx->profile != AV_PROFILE_DNXHD)
diff --git a/libavcodec/dvenc.c b/libavcodec/dvenc.c
index 5ff114da9f..b6764e9c2c 100644
--- a/libavcodec/dvenc.c
+++ b/libavcodec/dvenc.c
@@ -112,7 +112,7 @@ static av_cold int dvvideo_encode_init(AVCodecContext *avctx)
     ff_fdctdsp_init(&fdsp, avctx);
     s->fdct[0]    = fdsp.fdct;
     s->fdct[1]    = fdsp.fdct248;
-    ff_pixblockdsp_init(&s->pdsp, avctx);
+    ff_pixblockdsp_init(&s->pdsp, 8);
 
 #if !CONFIG_HARDCODED_TABLES
     {
diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c
index 233d729008..46901fc506 100644
--- a/libavcodec/mpegvideo_enc.c
+++ b/libavcodec/mpegvideo_enc.c
@@ -1031,7 +1031,7 @@ av_cold int ff_mpv_encode_init(AVCodecContext *avctx)
     init_unquantize(s, avctx);
     ff_fdctdsp_init(&s->fdsp, avctx);
     ff_mpegvideoencdsp_init(&s->mpvencdsp, avctx);
-    ff_pixblockdsp_init(&s->pdsp, avctx);
+    ff_pixblockdsp_init(&s->pdsp, 8);
     ret = me_cmp_init(m, avctx);
     if (ret < 0)
         return ret;
diff --git a/libavcodec/pixblockdsp.c b/libavcodec/pixblockdsp.c
index 78f1f9b5c7..110a374260 100644
--- a/libavcodec/pixblockdsp.c
+++ b/libavcodec/pixblockdsp.c
@@ -21,7 +21,6 @@
 #include "config.h"
 #include "libavutil/attributes.h"
 #include "libavutil/intreadwrite.h"
-#include "avcodec.h"
 #include "pixblockdsp.h"
 
 static void get_pixels_16_c(int16_t *restrict block, const uint8_t *pixels,
@@ -85,10 +84,10 @@ static void diff_pixels_c(int16_t *restrict block, const uint8_t *s1,
     }
 }
 
-av_cold void ff_pixblockdsp_init(PixblockDSPContext *c, AVCodecContext *avctx)
+av_cold void ff_pixblockdsp_init(PixblockDSPContext *c, int bits_per_raw_sample)
 {
-    const unsigned high_bit_depth = avctx->bits_per_raw_sample > 8 &&
-                                    avctx->bits_per_raw_sample <= 16;
+    const unsigned high_bit_depth = bits_per_raw_sample > 8 &&
+                                    bits_per_raw_sample <= 16;
 
     c->diff_pixels_unaligned =
     c->diff_pixels = diff_pixels_c;
diff --git a/libavcodec/pixblockdsp.h b/libavcodec/pixblockdsp.h
index 999aa8a926..487a39244d 100644
--- a/libavcodec/pixblockdsp.h
+++ b/libavcodec/pixblockdsp.h
@@ -19,10 +19,9 @@
 #ifndef AVCODEC_PIXBLOCKDSP_H
 #define AVCODEC_PIXBLOCKDSP_H
 
+#include <stddef.h>
 #include <stdint.h>
 
-#include "avcodec.h"
-
 typedef struct PixblockDSPContext {
     void (*get_pixels)(int16_t *restrict block /* align 16 */,
                        const uint8_t *pixels /* align 8 */,
@@ -41,7 +40,7 @@ typedef struct PixblockDSPContext {
 
 } PixblockDSPContext;
 
-void ff_pixblockdsp_init(PixblockDSPContext *c, AVCodecContext *avctx);
+void ff_pixblockdsp_init(PixblockDSPContext *c, int bits_per_raw_sample);
 void ff_pixblockdsp_init_aarch64(PixblockDSPContext *c,
                                  unsigned high_bit_depth);
 void ff_pixblockdsp_init_arm(PixblockDSPContext *c,
diff --git a/tests/checkasm/pixblockdsp.c b/tests/checkasm/pixblockdsp.c
index 26a697a346..79763de1ea 100644
--- a/tests/checkasm/pixblockdsp.c
+++ b/tests/checkasm/pixblockdsp.c
@@ -90,11 +90,8 @@ void checkasm_check_pixblockdsp(void)
     uint16_t *dst0 = (uint16_t *)dst0_;
     uint16_t *dst1 = (uint16_t *)dst1_;
     PixblockDSPContext h;
-    AVCodecContext avctx = {
-        .bits_per_raw_sample = 8,
-    };
 
-    ff_pixblockdsp_init(&h, &avctx);
+    ff_pixblockdsp_init(&h, 8);
 
     if (check_func(h.get_pixels, "get_pixels"))
         check_get_pixels(uint8_t, 1);



More information about the ffmpeg-cvslog mailing list