From 42118815ee2742cda505b1be4821c847e80719e9 Mon Sep 17 00:00:00 2001 From: arpi Date: Sun, 2 Feb 2003 21:32:05 +0000 Subject: - ignore movi_end if reading from stdin - assume I-only stream if no index (buggy seekable avi is still better than non-seekable) git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@9229 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demux_avi.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'libmpdemux/demux_avi.c') diff --git a/libmpdemux/demux_avi.c b/libmpdemux/demux_avi.c index ccd6dd992a..4e4efee79d 100644 --- a/libmpdemux/demux_avi.c +++ b/libmpdemux/demux_avi.c @@ -182,7 +182,7 @@ int ret=0; demux_stream_t *ds; do{ - int flags=0; + int flags=1; AVIINDEXENTRY *idx=NULL; #if 0 demux->filepos=stream_tell(demux->stream); @@ -214,7 +214,7 @@ do{ } pos = priv->idx_offset + (unsigned long)idx->dwChunkOffset; - if((posmovi_start || pos>=demux->movi_end) && (demux->movi_end>demux->movi_start)){ + if((posmovi_start || pos>=demux->movi_end) && (demux->movi_end>demux->movi_start) && (demux->stream->type!=STREAMTYPE_STREAM)){ mp_msg(MSGT_DEMUX,MSGL_V,"ChunkOffset out of range! idx=0x%X \n",pos); continue; } @@ -243,10 +243,10 @@ do{ if(len>0x200000 && idx->dwChunkLength>0x200000) continue; // both values bad :( len=choose_chunk_len(idx->dwChunkLength,len); } - if(idx->dwFlags&AVIIF_KEYFRAME) flags=1; + if(!(idx->dwFlags&AVIIF_KEYFRAME)) flags=0; } else { demux->filepos=stream_tell(demux->stream); - if(demux->filepos>=demux->movi_end && demux->movi_end>demux->movi_start){ + if(demux->filepos>=demux->movi_end && demux->movi_end>demux->movi_start && (demux->stream->type!=STREAMTYPE_STREAM)){ demux->stream->eof=1; return 0; } @@ -302,7 +302,7 @@ unsigned int len; int ret=0; do{ - int flags=0; + int flags=1; AVIINDEXENTRY *idx=NULL; int idx_pos=0; demux->filepos=stream_tell(demux->stream); @@ -354,7 +354,7 @@ do{ if(len>0x200000 && idx->dwChunkLength>0x200000) continue; // both values bad :( len=choose_chunk_len(idx->dwChunkLength,len); } - if(idx->dwFlags&AVIIF_KEYFRAME) flags=1; + if(!(idx->dwFlags&AVIIF_KEYFRAME)) flags=0; } else return 0; ret=demux_avi_read_packet(demux,demux_avi_select_stream(demux,id),id,len,idx_pos,flags); // if(!ret && priv->skip_video_frames<=0) -- cgit v1.2.3