summaryrefslogtreecommitdiffstats
path: root/aviheader.c
diff options
context:
space:
mode:
authorarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-07-27 01:16:54 +0000
committerarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-07-27 01:16:54 +0000
commit748cbb6290171dccc57146cfd3a23c81d839a0dd (patch)
tree3c85cd786156ba4d1b40165b90849f9ad13fbb40 /aviheader.c
parent4fe2b9ed4dc5e09efa9f47708a762d88ca4b1c7f (diff)
downloadmpv-748cbb6290171dccc57146cfd3a23c81d839a0dd.tar.bz2
mpv-748cbb6290171dccc57146cfd3a23c81d839a0dd.tar.xz
trying to fix -idx problem
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@1393 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'aviheader.c')
-rw-r--r--aviheader.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/aviheader.c b/aviheader.c
index f93b312d4e..72484b34fe 100644
--- a/aviheader.c
+++ b/aviheader.c
@@ -158,6 +158,7 @@ if(index_mode>=2 || (demuxer->idx_size==0 && index_mode==1)){
stream_seek(demuxer->stream,demuxer->movi_start);
demuxer->idx_pos=0;
+ demuxer->idx_size=0;
demuxer->idx=NULL;
while(1){
@@ -173,8 +174,11 @@ if(index_mode>=2 || (demuxer->idx_size==0 && index_mode==1)){
continue;
}
if(stream_eof(demuxer->stream)) break;
+ if(!id || avi_stream_id(id)==100) goto skip_chunk; // bad ID (or padding?)
+
if(demuxer->idx_pos<=demuxer->idx_size){
- demuxer->idx_size+=32;
+// demuxer->idx_size+=32;
+ demuxer->idx_size+=1024; // +16kB
demuxer->idx=realloc(demuxer->idx,demuxer->idx_size*sizeof(AVIINDEXENTRY));
if(!demuxer->idx){demuxer->idx_pos=0; break;} // error!
}
@@ -202,6 +206,7 @@ if(index_mode>=2 || (demuxer->idx_size==0 && index_mode==1)){
printf("\n");
}
#endif
+skip_chunk:
skip=(len+1)&(~1); // total bytes in this chunk
stream_seek(demuxer->stream,8+demuxer->filepos+skip);
}