aboutsummaryrefslogtreecommitdiffstats
path: root/fftools/ffmpeg_sched.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2023-12-13 20:22:00 +0100
committerAnton Khirnov <anton@khirnov.net>2023-12-14 20:16:54 +0100
commit5c5140ded2c1bb74c79bed68f2c8d1b091d3e39b (patch)
tree1f35fd87fa8a7eeee1f15f3623bb2eacf8d44b55 /fftools/ffmpeg_sched.c
parent2305091a3a7b3b48a044b975880a6375de4baecc (diff)
downloadffmpeg-5c5140ded2c1bb74c79bed68f2c8d1b091d3e39b.tar.gz
fftools/ffmpeg_sched: track dts+duration as last_dts
This should be slightly (probably negligibly) more accurate for scheduling, but mainly it improves the final reported time. Reported-by: Paul B Mahol
Diffstat (limited to 'fftools/ffmpeg_sched.c')
-rw-r--r--fftools/ffmpeg_sched.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/fftools/ffmpeg_sched.c b/fftools/ffmpeg_sched.c
index ca440035e2..4fc5a33941 100644
--- a/fftools/ffmpeg_sched.c
+++ b/fftools/ffmpeg_sched.c
@@ -192,7 +192,7 @@ typedef struct SchMuxStream {
////////////////////////////////////////////////////////////
// The following are protected by Scheduler.schedule_lock //
- /* dts of the last packet sent to this stream
+ /* dts+duration of the last packet sent to this stream
in AV_TIME_BASE_Q */
int64_t last_dts;
// this stream no longer accepts input
@@ -1625,8 +1625,8 @@ static int send_to_mux(Scheduler *sch, SchMux *mux, unsigned stream_idx,
AVPacket *pkt)
{
SchMuxStream *ms = &mux->streams[stream_idx];
- int64_t dts = (pkt && pkt->dts != AV_NOPTS_VALUE) ?
- av_rescale_q(pkt->dts, pkt->time_base, AV_TIME_BASE_Q) :
+ int64_t dts = (pkt && pkt->dts != AV_NOPTS_VALUE) ?
+ av_rescale_q(pkt->dts + pkt->duration, pkt->time_base, AV_TIME_BASE_Q) :
AV_NOPTS_VALUE;
// queue the packet if the muxer cannot be started yet