@ -2263,6 +2263,7 @@ static int decode_frame(AVCodecContext * avctx,
MPADecodeContext * s = avctx - > priv_data ;
MPADecodeContext * s = avctx - > priv_data ;
uint32_t header ;
uint32_t header ;
int out_size ;
int out_size ;
int skipped = 0 ;
OUT_INT * out_samples = data ;
OUT_INT * out_samples = data ;
retry :
retry :
@ -2272,7 +2273,8 @@ retry:
header = AV_RB32 ( buf ) ;
header = AV_RB32 ( buf ) ;
if ( ff_mpa_check_header ( header ) < 0 ) {
if ( ff_mpa_check_header ( header ) < 0 ) {
buf + + ;
buf + + ;
// buf_size--;
buf_size - - ;
skipped + + ;
av_log ( avctx , AV_LOG_ERROR , " Header missing skipping one byte. \n " ) ;
av_log ( avctx , AV_LOG_ERROR , " Header missing skipping one byte. \n " ) ;
goto retry ;
goto retry ;
}
}
@ -2303,7 +2305,7 @@ retry:
} else
} else
av_log ( avctx , AV_LOG_DEBUG , " Error while decoding MPEG audio frame. \n " ) ; //FIXME return -1 / but also return the number of bytes consumed
av_log ( avctx , AV_LOG_DEBUG , " Error while decoding MPEG audio frame. \n " ) ; //FIXME return -1 / but also return the number of bytes consumed
s - > frame_size = 0 ;
s - > frame_size = 0 ;
return buf_size ;
return buf_size + skipped ;
}
}
static void flush ( AVCodecContext * avctx ) {
static void flush ( AVCodecContext * avctx ) {