avformat/dhav: check if timestamp matches when seeking
authorPaul B Mahol <onemda@gmail.com>
Wed, 13 Oct 2021 09:46:15 +0000 (11:46 +0200)
committerPaul B Mahol <onemda@gmail.com>
Wed, 13 Oct 2021 10:14:39 +0000 (12:14 +0200)
libavformat/dhav.c

index f67b0b8..4d45a25 100644 (file)
@@ -439,11 +439,12 @@ static int dhav_read_seek(AVFormatContext *s, int stream_index,
 
     if (index < 0)
         return -1;
+    pts = sti->index_entries[index].timestamp;
+    if (pts < timestamp)
+        return AVERROR(EAGAIN);
     if (avio_seek(s->pb, sti->index_entries[index].pos, SEEK_SET) < 0)
         return -1;
 
-    pts = sti->index_entries[index].timestamp;
-
     for (int n = 0; n < s->nb_streams; n++) {
         AVStream *st = s->streams[n];
         DHAVStream *dst = st->priv_data;
@@ -465,5 +466,5 @@ const AVInputFormat ff_dhav_demuxer = {
     .read_packet    = dhav_read_packet,
     .read_seek      = dhav_read_seek,
     .extensions     = "dav",
-    .flags          = AVFMT_GENERIC_INDEX | AVFMT_NO_BYTE_SEEK | AVFMT_TS_DISCONT | AVFMT_TS_NONSTRICT,
+    .flags          = AVFMT_GENERIC_INDEX | AVFMT_NO_BYTE_SEEK | AVFMT_TS_DISCONT | AVFMT_TS_NONSTRICT | AVFMT_SEEK_TO_PTS,
 };