Commit 115e8ae5 authored by Michael Niedermayer's avatar Michael Niedermayer

support seeking in RenderAvi.avi (audio stream == single huge chunk)

Originally committed as revision 5087 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 8223bca5
......@@ -147,6 +147,31 @@ static int read_braindead_odml_indx(AVFormatContext *s, int frame_num){
return 0;
}
static void clean_index(AVFormatContext *s){
int i, j;
for(i=0; i<s->nb_streams; i++){
AVStream *st = s->streams[i];
AVIStream *ast = st->priv_data;
int n= st->nb_index_entries;
int max= ast->sample_size;
int64_t pos, size, ts;
if(n != 1 || ast->sample_size==0)
continue;
while(max < 1024) max+=max;
pos= st->index_entries[0].pos;
size= st->index_entries[0].size;
ts= st->index_entries[0].timestamp;
for(j=0; j<size; j+=max){
av_add_index_entry(st, pos+j, ts + j/ast->sample_size, FFMIN(max, size-j), 0, AVINDEX_KEYFRAME);
}
}
}
static int avi_read_header(AVFormatContext *s, AVFormatParameters *ap)
{
AVIContext *avi = s->priv_data;
......@@ -419,6 +444,8 @@ static int avi_read_header(AVFormatContext *s, AVFormatParameters *ap)
avi_load_index(s);
avi->index_loaded = 1;
avi->non_interleaved |= guess_ni_flag(s);
if(avi->non_interleaved)
clean_index(s);
return 0;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment