summaryrefslogtreecommitdiffstats
path: root/demux_avi.c
diff options
context:
space:
mode:
authorarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-07-29 21:07:34 +0000
committerarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-07-29 21:07:34 +0000
commitde654f5bfea1f7d48e02444b8c456c37cca81e48 (patch)
treec4b776b7d5346dfd22c679675dbfd30d5b41a112 /demux_avi.c
parent921d736240f87ff2a4eb1276039b1dac050f94bb (diff)
downloadmpv-de654f5bfea1f7d48e02444b8c456c37cca81e48.tar.bz2
mpv-de654f5bfea1f7d48e02444b8c456c37cca81e48.tar.xz
nosound avi seeking fixed
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@1422 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'demux_avi.c')
-rw-r--r--demux_avi.c14
1 files changed, 13 insertions, 1 deletions
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_pos<demux->idx_size){
unsigned int pos;
@@ -155,7 +157,7 @@ do{
pos=idx->dwChunkOffset+demux->idx_offset;
if(pos<demux->movi_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;