summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2023-04-25 23:11:25 +0200
committerAnton Khirnov <anton@khirnov.net>2023-05-02 10:59:24 +0200
commitef69f6a9d24e5508294f4009b1011289c683284e (patch)
tree776206c0cdefa735c679549f3400a5c3805ac366
parentd85c6aba0cf27db2a6c4dfa3452cfb9c248d1b4a (diff)
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.
-rw-r--r--fftools/ffmpeg.c7
1 files 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);