Browse Source

Tentative de fix pour le segfault du d�codeur (qui est en fait une erreur

du parseur).
pull/2/head
Christophe Massiot 27 years ago
parent
commit
84cf8734a1
  1. 7
      src/video_parser/vpar_blocks.c

7
src/video_parser/vpar_blocks.c

@ -1863,7 +1863,9 @@ static __inline__ void PictureData( vpar_thread_t * p_vpar, int i_mb_base,
u32 i_dummy;
NextStartCode( p_vpar );
while( i_mb_address+i_mb_base < p_vpar->sequence.i_mb_size
while( (i_coding_type != I_CODING_TYPE || i_coding_type != D_CODING_TYPE
|| !p_vpar->picture.b_error)
&& i_mb_address+i_mb_base < p_vpar->sequence.i_mb_size
&& !p_vpar->b_die )
{
if( ((i_dummy = ShowBits( &p_vpar->bit_stream, 32 ))
@ -1885,7 +1887,8 @@ static __inline__ void PictureData( vpar_thread_t * p_vpar, int i_mb_base,
/* Try to recover from error. If we missed less than half the
* number of macroblocks of the picture, mark the missed ones
* as skipped. */
if( p_vpar->picture.b_error &&
if( (i_coding_type == P_CODING_TYPE || i_coding_type == B_CODING_TYPE)
&& p_vpar->picture.b_error &&
( (i_mb_address-i_mb_base) > (p_vpar->sequence.i_mb_size >> 1)
|| (i_structure != FRAME_STRUCTURE
&& (i_mb_address-i_mb_base) > (p_vpar->sequence.i_mb_size >> 2) ) ) )

Loading…
Cancel
Save