From: Thibaut M. <tma...@us...> - 2004-10-15 21:09:03
|
Update of /cvsroot/xine/xine-lib/src/demuxers In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29136 Modified Files: demux_avi.c Log Message: Check odml index validity. Should fix last odml problems. Index: demux_avi.c =================================================================== RCS file: /cvsroot/xine/xine-lib/src/demuxers/demux_avi.c,v retrieving revision 1.210 retrieving revision 1.211 diff -u -r1.210 -r1.211 --- demux_avi.c 13 Oct 2004 20:14:25 -0000 1.210 +++ demux_avi.c 15 Oct 2004 21:08:44 -0000 1.211 @@ -1222,16 +1222,6 @@ } } } - /* check index validity, there must be an index for each video/audio stream */ - if (AVI->video_idx.video_frames == 0) { - reset_idx(this, AVI); - } - for(n = 0; n < AVI->n_audio; n++) { - if (AVI->audio[n]->audio_idx.audio_chunks == 0) { - reset_idx(this, AVI); - } - } - } else if (AVI->is_opendml && !this->streaming) { uint64_t offset = 0; int hdrl_len = 4+4+2+1+1+4+4+8+4; @@ -1308,7 +1298,7 @@ } else { xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "demux_avi: Warning: the video super index is NULL\n"); - } + } /* ************************ */ @@ -1376,13 +1366,25 @@ free(chunk_start); } } + } + + if (this->has_index) { + /* check index validity, there must be an index for each video/audio stream */ + if (AVI->video_idx.video_frames == 0) { + reset_idx(this, AVI); + } + for(n = 0; n < AVI->n_audio; n++) { + if (AVI->audio[n]->audio_idx.audio_chunks == 0) { + reset_idx(this, AVI); + } + } } else { /* We'll just dynamically grow the index as needed. */ lprintf("no index\n"); this->idx_grow.nexttagoffset = AVI->movi_start; this->has_index = 0; } - + /* Reposition the file */ if (!this->streaming) this->input->seek(this->input, AVI->movi_start, SEEK_SET); |