From ef69f6a9d24e5508294f4009b1011289c683284e Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Tue, 25 Apr 2023 23:11:25 +0200 Subject: [PATCH] fftools/ffmpeg: stop using InputStream.pts for generating video timestamps This was added in 380db569287ba99d903b7629f209b9adc7fd2723 as a temporary crutch that is not needed anymore. The only case where this code can be triggered is the very first frame, for which InputStream.pts is always equal to 0. --- fftools/ffmpeg.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c index 8dcc70e879..e9b083b05a 100644 --- a/fftools/ffmpeg.c +++ b/fftools/ffmpeg.c @@ -1122,12 +1122,9 @@ static int decode_video(InputStream *ist, AVPacket *pkt, int *got_output, int64_ best_effort_timestamp = ist->cfr_next_pts++; // no timestamp available - extrapolate from previous frame duration - if (best_effort_timestamp == AV_NOPTS_VALUE && - ist->last_frame_pts != AV_NOPTS_VALUE) - best_effort_timestamp = ist->last_frame_pts + ist->last_frame_duration_est; - if (best_effort_timestamp == AV_NOPTS_VALUE) - best_effort_timestamp = av_rescale_q(ist->pts, AV_TIME_BASE_Q, ist->st->time_base); + best_effort_timestamp = ist->last_frame_pts == AV_NOPTS_VALUE ? 0 : + ist->last_frame_pts + ist->last_frame_duration_est; if(best_effort_timestamp != AV_NOPTS_VALUE) { int64_t ts = av_rescale_q(decoded_frame->pts = best_effort_timestamp, ist->st->time_base, AV_TIME_BASE_Q);