mirror of
https://github.com/videolan/vlc.git
synced 2024-11-24 18:33:38 +08:00
* modules/demux/avi/avi.c: Fixed infinite loop in the AVI demux on broken/incomplete files
This commit is contained in:
parent
6f2c07b9f4
commit
76e67e8c53
1
NEWS
1
NEWS
@ -29,6 +29,7 @@ Input:
|
||||
Demux:
|
||||
* Annodex (http://www.annodex.net) support.
|
||||
* mmsh streaming fixes.
|
||||
* Fixed infinite loop in the AVI demux on broken/incomplete files.
|
||||
|
||||
Subtitles:
|
||||
* Subviewer and subviewer v2 subtitles support.
|
||||
|
@ -693,6 +693,8 @@ static int Demux_Seekable( demux_t *p_demux )
|
||||
|
||||
if( i_pos == -1 )
|
||||
{
|
||||
int i_loop_count = 0;
|
||||
|
||||
/* no valid index, we will parse directly the stream
|
||||
* in case we fail we will disable all finished stream */
|
||||
if( p_sys->i_movi_lastchunk_pos >= p_sys->i_movi_begin + 12 )
|
||||
@ -727,6 +729,19 @@ static int Demux_Seekable( demux_t *p_demux )
|
||||
"cannot skip packet, track disabled" );
|
||||
return( AVI_TrackStopFinishedStreams( p_demux ) ? 0 : 1 );
|
||||
}
|
||||
|
||||
/* Prevents from eating all the CPU with broken files.
|
||||
* This value should be low enough so that it doesn't
|
||||
* affect the reading speed too much. */
|
||||
if( !(++i_loop_count % 1024) )
|
||||
{
|
||||
if( p_demux->b_die ) return -1;
|
||||
msleep( 10000 );
|
||||
|
||||
if( !(i_loop_count % (1024 * 10)) )
|
||||
msg_Warn( p_demux,
|
||||
"doesn't seem to find any data..." );
|
||||
}
|
||||
continue;
|
||||
}
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user