From de654f5bfea1f7d48e02444b8c456c37cca81e48 Mon Sep 17 00:00:00 2001 From: arpi Date: Sun, 29 Jul 2001 21:07:34 +0000 Subject: nosound avi seeking fixed git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@1422 b3059339-0415-0410-9bf9-f77b7e298cf2 --- demux_avi.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'demux_avi.c') diff --git a/demux_avi.c b/demux_avi.c index 8e678bb751..8120e97098 100644 --- a/demux_avi.c +++ b/demux_avi.c @@ -126,12 +126,14 @@ int ret=0; do{ int flags=0; AVIINDEXENTRY *idx=NULL; +#if 0 demux->filepos=stream_tell(demux->stream); if(demux->filepos>=demux->movi_end){ demux->stream->eof=1; return 0; } if(stream_eof(demux->stream)) return 0; +#endif if(demux->idx_size>0 && demux->idx_posidx_size){ unsigned int pos; @@ -155,7 +157,7 @@ do{ pos=idx->dwChunkOffset+demux->idx_offset; if(posmovi_start || pos>=demux->movi_end){ - printf("ChunkOffset out of range! current=0x%X idx=0x%X \n",demux->filepos,pos); + printf("ChunkOffset out of range! idx=0x%X \n",pos); continue; } #if 0 @@ -164,7 +166,10 @@ do{ } #endif stream_seek(demux->stream,pos); + demux->filepos=stream_tell(demux->stream); id=stream_read_dword_le(demux->stream); + if(stream_eof(demux->stream)) return 0; // EOF! + if(id!=idx->ckid){ printf("ChunkID mismatch! raw=%.4s idx=%.4s \n",(char *)&id,(char *)&idx->ckid); continue; @@ -178,8 +183,15 @@ do{ } if(idx->dwFlags&AVIIF_KEYFRAME) flags=1; } else { + demux->filepos=stream_tell(demux->stream); + if(demux->filepos>=demux->movi_end){ + demux->stream->eof=1; + return 0; + } id=stream_read_dword_le(demux->stream); len=stream_read_dword_le(demux->stream); + if(stream_eof(demux->stream)) return 0; // EOF! + if(id==mmioFOURCC('L','I','S','T')){ id=stream_read_dword_le(demux->stream); // list type continue; -- cgit v1.2.3