[FFmpeg-cvslog] fftools/ffmpeg: stop using InputStream.pts for generating video timestamps

Anton Khirnov git at videolan.org
Tue May 2 12:31:27 EEST 2023


ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Tue Apr 25 23:11:25 2023 +0200| [ef69f6a9d24e5508294f4009b1011289c683284e] | committer: Anton Khirnov

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.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=ef69f6a9d24e5508294f4009b1011289c683284e
---

 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);



More information about the ffmpeg-cvslog mailing list