PR #21193 opened by James Almer (jamrial) URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21193 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21193.patch
Better than failing with an impossibly low bitrate. >From 5486773347deb61deb12ff62308a083bf716b9b8 Mon Sep 17 00:00:00 2001 From: James Almer <[email protected]> Date: Sun, 14 Dec 2025 12:48:07 -0300 Subject: [PATCH] avcodec/libsvtjpegxsenc: set bitrate to a sane default if unset Better than failing with an impossibly low bitrate. Signed-off-by: James Almer <[email protected]> --- libavcodec/libsvtjpegxsenc.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/libavcodec/libsvtjpegxsenc.c b/libavcodec/libsvtjpegxsenc.c index 2f7ec095df..3afb25c507 100644 --- a/libavcodec/libsvtjpegxsenc.c +++ b/libavcodec/libsvtjpegxsenc.c @@ -196,14 +196,17 @@ static av_cold int svt_jpegxs_enc_init(AVCodecContext* avctx) { else svt_enc->encoder.verbose = VERBOSE_WARNINGS; - if (avctx->bit_rate <= 0) { - av_log(avctx, AV_LOG_ERROR, "bitrate can't be 0\n"); - return AVERROR(EINVAL); - } if (avctx->framerate.num <= 0 || avctx->framerate.den <= 0) { av_log(avctx, AV_LOG_ERROR, "framerate must be set\n"); return AVERROR(EINVAL); } + if (avctx->bit_rate == 0) { + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(avctx->pix_fmt); + // default to a 1.5 compression ratio + avctx->bit_rate = (int64_t)avctx->width * avctx->height * + (av_get_bits_per_pixel(desc) * 2 / 3) * av_q2d(avctx->framerate); + av_log(avctx, AV_LOG_WARNING, "No bitrate set, defaulting to %"PRId64"\n", avctx->bit_rate); + } av_reduce(&bpp.num, &bpp.den, avctx->bit_rate, (int64_t)avctx->width * avctx->height, INT_MAX); bpp = av_div_q(bpp, avctx->framerate); @@ -253,6 +256,11 @@ static const enum AVPixelFormat pix_fmts[] = { AV_PIX_FMT_NONE }; +static const FFCodecDefault svt_jpegxs_defaults[] = { + { "b", "0" }, + { NULL }, +}; + #define OFFSET(x) offsetof(SvtJpegXsEncodeContext, x) #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM static const AVOption svtjpegxs_enc_options[] = { @@ -288,6 +296,7 @@ const FFCodec ff_libsvtjpegxs_encoder = { .priv_data_size = sizeof(SvtJpegXsEncodeContext), .init = svt_jpegxs_enc_init, .close = svt_jpegxs_enc_free, + .defaults = svt_jpegxs_defaults, FF_CODEC_ENCODE_CB(svt_jpegxs_enc_encode), .p.capabilities = AV_CODEC_CAP_OTHER_THREADS | AV_CODEC_CAP_DR1, .caps_internal = FF_CODEC_CAP_NOT_INIT_THREADSAFE | -- 2.49.1 _______________________________________________ ffmpeg-devel mailing list -- [email protected] To unsubscribe send an email to [email protected]
