From 7d37d8b835e13d6ba5b1b1473947306aa989a3bd Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Tue, 26 Aug 2025 15:43:18 -0400 Subject: [PATCH] MT#55283 set frame size after avcodec_open2 The frame size might not be set before avcodec_open2 is called. Move setting it to below the call. Fixes MP3 recording output. Change-Id: Ie81528e64c2497f769d19a5c54228bf0f5cd138d --- lib/codeclib.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/codeclib.c b/lib/codeclib.c index 1b6898417..3e776b838 100644 --- a/lib/codeclib.c +++ b/lib/codeclib.c @@ -1869,11 +1869,6 @@ static const char *avc_encoder_init(encoder_t *enc, const str *extra_opts) { enc->avc.avcctx->time_base = (AVRational){1,enc->actual_format.clockrate}; enc->avc.avcctx->bit_rate = enc->bitrate; - enc->samples_per_frame = enc->actual_format.clockrate * enc->ptime / 1000; - if (enc->avc.avcctx->frame_size) - enc->samples_per_frame = enc->avc.avcctx->frame_size; - enc->samples_per_packet = enc->samples_per_frame; - if (enc->def->set_enc_options) enc->def->set_enc_options(enc, extra_opts); @@ -1883,6 +1878,13 @@ static const char *avc_encoder_init(encoder_t *enc, const str *extra_opts) { return "failed to open output context"; } + if (enc->avc.avcctx->frame_size) + enc->samples_per_frame = enc->avc.avcctx->frame_size; + else + enc->samples_per_frame = enc->actual_format.clockrate * enc->ptime / 1000; + + enc->samples_per_packet = enc->samples_per_frame; + return NULL; }