Commit 84cf8734 authored by Christophe Massiot's avatar Christophe Massiot

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

du parseur).
parent 5b22bedf
...@@ -1863,7 +1863,9 @@ static __inline__ void PictureData( vpar_thread_t * p_vpar, int i_mb_base, ...@@ -1863,7 +1863,9 @@ static __inline__ void PictureData( vpar_thread_t * p_vpar, int i_mb_base,
u32 i_dummy; u32 i_dummy;
NextStartCode( p_vpar ); 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 ) && !p_vpar->b_die )
{ {
if( ((i_dummy = ShowBits( &p_vpar->bit_stream, 32 )) 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, ...@@ -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 /* Try to recover from error. If we missed less than half the
* number of macroblocks of the picture, mark the missed ones * number of macroblocks of the picture, mark the missed ones
* as skipped. */ * 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_mb_address-i_mb_base) > (p_vpar->sequence.i_mb_size >> 1)
|| (i_structure != FRAME_STRUCTURE || (i_structure != FRAME_STRUCTURE
&& (i_mb_address-i_mb_base) > (p_vpar->sequence.i_mb_size >> 2) ) ) ) && (i_mb_address-i_mb_base) > (p_vpar->sequence.i_mb_size >> 2) ) ) )
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment