[FFmpeg-devel] [PATCH 2/4] avfilter/f_loop: fix length of aloop leftover buffer

James Almer jamrial at gmail.com
Mon Nov 4 23:27:33 EET 2024


On 11/4/2024 5:30 PM, Marton Balint wrote:
> If the audio loop stops inside an audio frame, the leftover buffer contains the
> end of the frame, which is not looped. The length supposed to be the part which
> was not written to the loop buffer, so we need to drain exactly that number of
> bytes from the leftover buffer.
> 
> Signed-off-by: Marton Balint <cus at passwd.hu>
> ---
>   libavfilter/f_loop.c | 5 ++---
>   1 file changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/libavfilter/f_loop.c b/libavfilter/f_loop.c
> index 9b01a85405..3372c77fee 100644
> --- a/libavfilter/f_loop.c
> +++ b/libavfilter/f_loop.c
> @@ -170,14 +170,13 @@ static int afilter_frame(AVFilterLink *inlink, AVFrame *frame)
>                   s->pts += av_rescale_q(s->start - s->ignored_samples, (AVRational){1, outlink->sample_rate}, outlink->time_base);
>               }
>               s->nb_samples += ret - drain;
> -            drain = frame->nb_samples - written;
> -            if (s->nb_samples == s->size && drain > 0) {
> +            if (s->nb_samples == s->size && frame->nb_samples > written) {
>                   int ret2;
>   
>                   ret2 = av_audio_fifo_write(s->left, (void **)frame->extended_data, frame->nb_samples);
>                   if (ret2 < 0)
>                      return ret2;
> -                av_audio_fifo_drain(s->left, drain);
> +                av_audio_fifo_drain(s->left, written);
>               }
>               frame->nb_samples = ret;
>               s->pts += av_rescale_q(ret, (AVRational){1, outlink->sample_rate}, outlink->time_base);

Does this fix ticket #11283?

-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 495 bytes
Desc: OpenPGP digital signature
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20241104/fd3841ba/attachment.sig>


More information about the ffmpeg-devel mailing list