mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
asfdec: fallback to binary search internally
lavf will do that anyway in case seek by index fails
This commit is contained in:
parent
4bac1bbc3b
commit
c7bd5edae4
@ -1269,21 +1269,22 @@ static int asf_read_seek(AVFormatContext *s, int stream_index, int64_t pts, int
|
|||||||
if (!asf->index_read)
|
if (!asf->index_read)
|
||||||
asf_build_simple_index(s, stream_index);
|
asf_build_simple_index(s, stream_index);
|
||||||
|
|
||||||
if(!(asf->index_read && st->index_entries)){
|
if((asf->index_read && st->index_entries)){
|
||||||
if(av_seek_frame_binary(s, stream_index, pts, flags)<0)
|
|
||||||
return -1;
|
|
||||||
}else{
|
|
||||||
index= av_index_search_timestamp(st, pts, flags);
|
index= av_index_search_timestamp(st, pts, flags);
|
||||||
if(index<0)
|
if(index >= 0) {
|
||||||
return -1;
|
|
||||||
|
|
||||||
/* find the position */
|
/* find the position */
|
||||||
pos = st->index_entries[index].pos;
|
pos = st->index_entries[index].pos;
|
||||||
|
|
||||||
/* do the seek */
|
/* do the seek */
|
||||||
av_log(s, AV_LOG_DEBUG, "SEEKTO: %"PRId64"\n", pos);
|
av_log(s, AV_LOG_DEBUG, "SEEKTO: %"PRId64"\n", pos);
|
||||||
avio_seek(s->pb, pos, SEEK_SET);
|
avio_seek(s->pb, pos, SEEK_SET);
|
||||||
|
asf_reset_header(s);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
/* no index or seeking by index failed */
|
||||||
|
if(av_seek_frame_binary(s, stream_index, pts, flags)<0)
|
||||||
|
return -1;
|
||||||
asf_reset_header(s);
|
asf_reset_header(s);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user