1
0
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:
Vladimir Pantelic 2011-05-12 10:25:54 +02:00 committed by Reinhard Tartler
parent 4bac1bbc3b
commit c7bd5edae4

View File

@ -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;
} }