# HG changeset patch # User michael # Date 1156364698 0 # Node ID 5b9729f5145c4ae0fe6114ba303891859c1100a2 # Parent 613fdf995af0a283f82905b96b1634208fdacf4b fix fallback if theres no index fix index less seeking diff -r 613fdf995af0 -r 5b9729f5145c asf.c --- a/asf.c Wed Aug 23 17:07:01 2006 +0000 +++ b/asf.c Wed Aug 23 20:24:58 2006 +0000 @@ -823,7 +823,7 @@ assert((asf_st->packet_pos - s->data_offset) % asf->packet_size == 0); pos= asf_st->packet_pos; - av_add_index_entry(s->streams[i], pos, pkt->size, pts, pos - start_pos[i] + 1, AVINDEX_KEYFRAME); + av_add_index_entry(s->streams[i], pos, pts, pkt->size, pos - start_pos[i] + 1, AVINDEX_KEYFRAME); start_pos[i]= asf_st->packet_pos + 1; if(pkt->stream_index == stream_index) @@ -868,6 +868,7 @@ av_add_index_entry(s->streams[stream_index], pos, index_pts, asf->packet_size, 0, AVINDEX_KEYFRAME); } + asf->index_read= 1; } url_fseek(&s->pb, current_pos, SEEK_SET); } @@ -882,10 +883,10 @@ if (asf->packet_size <= 0) return -1; - if (!st->index_entries) + if (!asf->index_read) asf_build_simple_index(s, stream_index); - if(!st->index_entries){ + if(!(asf->index_read && st->index_entries)){ if(av_seek_frame_binary(s, stream_index, pts, flags)<0) return -1; }else{ diff -r 613fdf995af0 -r 5b9729f5145c asf.h --- a/asf.h Wed Aug 23 17:07:01 2006 +0000 +++ b/asf.h Wed Aug 23 20:24:58 2006 +0000 @@ -100,6 +100,7 @@ uint64_t data_offset; /* begining of the first data packet */ uint64_t data_object_offset; /* data object offset (excl. GUID & size)*/ uint64_t data_object_size; /* size of the data object */ + int index_read; ASFMainHeader hdr;