avformat/dhav: check if timestamp matches when seeking

This commit is contained in:
Paul B Mahol 2021-10-13 11:46:15 +02:00
parent f14adb0516
commit 6384175d8c
1 changed files with 4 additions and 3 deletions

View 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,
};