From 5c0d6d9bb8b7ac4a983d34e7a2e5c3737e93f49e Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Tue, 27 May 2025 19:13:45 +0200 Subject: [PATCH 4/7] avcodec/pixblockdsp: Pass bits_per_raw_sample directly Signed-off-by: Andreas Rheinhardt --- 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 #include -#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); -- 2.45.2