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