From b22631aa5ab9712f1ec207ca1e2b1ffc2c74e5df Mon Sep 17 00:00:00 2001 From: Martin Pulec Date: Thu, 5 Mar 2026 13:53:22 +0100 Subject: [PATCH] vcomp/jpegxs: print used bitrate + bpp --- src/video_compress/jpegxs.cpp | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/video_compress/jpegxs.cpp b/src/video_compress/jpegxs.cpp index c3ffbe6cf..fc9b02a66 100644 --- a/src/video_compress/jpegxs.cpp +++ b/src/video_compress/jpegxs.cpp @@ -89,7 +89,7 @@ struct state_video_compress_jpegxs { svt_jpeg_xs_frame_pool_t *frame_pool{}; int pool_size = DEFAULT_POOL_SIZE; - long long req_bitrate = -1; + long long req_bitrate = -1; ///< if set to != -1, compute bpp from it bool configured = 0; bool reconfiguring = 0; @@ -229,10 +229,27 @@ ColourFormat subsampling_to_jpegxs(int ug_subs) { } } +static void +print_bitrate(long long bitrate, const svt_jpeg_xs_encoder_api_t *encoder) +{ + char buf[FORMAT_NUM_MAX_SZ]; + MSG(INFO, + "using bitrate %s bps (%" PRIu32 "/%" PRIu32 " bits per pixel)\n", + format_number_with_delim(bitrate, buf, sizeof buf), + encoder->bpp_numerator, encoder->bpp_denominator); +} + static void set_bitrate(svt_jpeg_xs_encoder_api_t *encoder, long long req_bitrate, const struct video_desc *desc) { + if (req_bitrate == -1) { // bpp set, just print bitrate + auto bitrate = (long long) (encoder->bpp_numerator * desc->fps * + desc->width * desc->height / + encoder->bpp_denominator); + print_bitrate(bitrate, encoder); + return; + } long long numerator = req_bitrate; long long denominator = desc->width * desc->height * desc->fps; // reduce numbers to fit uint32_t if num or den is larger @@ -244,6 +261,7 @@ set_bitrate(svt_jpeg_xs_encoder_api_t *encoder, long long req_bitrate, assert(denominator > 0); encoder->bpp_numerator = numerator; encoder->bpp_denominator = denominator; + print_bitrate(req_bitrate, encoder); } static bool configure_with(struct state_video_compress_jpegxs *s, struct video_desc desc) @@ -275,9 +293,7 @@ static bool configure_with(struct state_video_compress_jpegxs *s, struct video_d return false; } - if (s->req_bitrate != -1) { - set_bitrate(&s->encoder, s->req_bitrate, &desc); - } + set_bitrate(&s->encoder, s->req_bitrate, &desc); err = svt_jpeg_xs_encoder_init(SVT_JPEGXS_API_VER_MAJOR, SVT_JPEGXS_API_VER_MINOR, &s->encoder); if (err != SvtJxsErrorNone) {