avcodec/libopusenc: rescale packet duration when calculating discarded samples

Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
James Almer
2026-02-13 13:02:07 -03:00
parent 5863cab885
commit 84bb5b0748

View File

@@ -511,7 +511,7 @@ static int libopus_encode(AVCodecContext *avctx, AVPacket *avpkt,
ff_af_queue_remove(&opus->afq, opus->opts.packet_size,
&avpkt->pts, &avpkt->duration);
discard_padding = opus->opts.packet_size - avpkt->duration;
discard_padding = opus->opts.packet_size - ff_samples_from_time_base(avctx, avpkt->duration);
// Check if subtraction resulted in an overflow
if ((discard_padding < opus->opts.packet_size) != (avpkt->duration > 0))
return AVERROR(EINVAL);