summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorDerek Buitenhuis <derek.buitenhuis@gmail.com>2021-03-15 14:20:17 +0000
committerDerek Buitenhuis <derek.buitenhuis@gmail.com>2021-03-17 14:46:48 +0000
commit8f1580c31a3cfb9994bda7b3914a97e09b9f1d48 (patch)
tree674d191df43bd594de225399cf7c5304bbb11019 /libavformat
parent434b626b7a3d236b19d1c649e0399df157d4273f (diff)
avformat/mov: Handle when we have an mfra box but have not read the full sidx for a fragment
Use the tfra timestamp if it is available and sidx timestamp is not. Fixes reading the entire file after seeking in a live-style DASH FMP4 with an MFRA. This specifically fixes when use_mfra_for is set. Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/mov.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/libavformat/mov.c b/libavformat/mov.c
index 23b0ead01e..97857789f4 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -1279,6 +1279,10 @@ static int64_t get_frag_time(MOVFragmentIndex *frag_index,
if (track_id >= 0) {
frag_stream_info = get_frag_stream_info(frag_index, index, track_id);
+ if (frag_stream_info->sidx_pts != AV_NOPTS_VALUE)
+ return frag_stream_info->sidx_pts;
+ if (frag_stream_info->first_tfra_pts != AV_NOPTS_VALUE)
+ return frag_stream_info->first_tfra_pts;
return frag_stream_info->sidx_pts;
}