From 45dc668aea0edac34969b5a1ff76cf9ad3a09be1 Mon Sep 17 00:00:00 2001 From: Paul B Mahol Date: Sun, 7 Nov 2021 20:44:22 +0100 Subject: [PATCH] avfilter/f_reverse: readjust frame timestamps for areverse --- libavfilter/f_reverse.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libavfilter/f_reverse.c b/libavfilter/f_reverse.c index 586d95c063..f7a7e716fa 100644 --- a/libavfilter/f_reverse.c +++ b/libavfilter/f_reverse.c @@ -33,6 +33,7 @@ typedef struct ReverseContext { unsigned int pts_size; int64_t *pts; int flush_idx; + int64_t nb_samples; } ReverseContext; static av_cold int init(AVFilterContext *ctx) @@ -249,7 +250,8 @@ static int areverse_request_frame(AVFilterLink *outlink) if (ret == AVERROR_EOF && s->nb_frames > 0) { AVFrame *out = s->frames[s->nb_frames - 1]; - out->pts = s->pts[s->flush_idx++]; + out->pts = s->pts[s->flush_idx++] - s->nb_samples; + s->nb_samples += s->pts[s->flush_idx] - s->pts[s->flush_idx - 1] - out->nb_samples; if (av_sample_fmt_is_planar(out->format)) reverse_samples_planar(out);