[FFmpeg-devel] [PATCH] libavformat/demux: fix sti->first_dts can not been update when excuting avformat_find_stream_info

Shiqi Zhu hiccupzhu at gmail.com
Wed May 15 14:35:22 EEST 2024


Signed-off-by: Shiqi Zhu <hiccupzhu at gmail.com>
---
 libavformat/demux.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/libavformat/demux.c b/libavformat/demux.c
index e19b8b6473..74be509c8b 100644
--- a/libavformat/demux.c
+++ b/libavformat/demux.c
@@ -856,15 +856,16 @@ static void update_initial_timestamps(AVFormatContext *s, int stream_index,
 
     uint64_t shift;
 
-    if (sti->first_dts != AV_NOPTS_VALUE ||
-        dts           == AV_NOPTS_VALUE ||
+    if (sti->first_dts == AV_NOPTS_VALUE)
+        sti->first_dts = dts - (sti->cur_dts - RELATIVE_TS_BASE);
+
+    if (dts           == AV_NOPTS_VALUE ||
         sti->cur_dts   == AV_NOPTS_VALUE ||
         sti->cur_dts < INT_MIN + RELATIVE_TS_BASE ||
         dts  < INT_MIN + (sti->cur_dts - RELATIVE_TS_BASE) ||
         is_relative(dts))
         return;
 
-    sti->first_dts = dts - (sti->cur_dts - RELATIVE_TS_BASE);
     sti->cur_dts   = dts;
     shift          = (uint64_t)sti->first_dts - RELATIVE_TS_BASE;
 
-- 
2.34.1



More information about the ffmpeg-devel mailing list