@ -33,13 +33,13 @@ static int64_t get_utf8(GetBitContext *gb)
}
int ff_flac_decode_frame_header ( AVCodecContext * avctx , GetBitContext * gb ,
FLACFrameInfo * fi )
FLACFrameInfo * fi , int log_level_offset )
{
int bs_code , sr_code , bps_code ;
/* frame sync code */
if ( ( get_bits ( gb , 15 ) & 0x7FFF ) ! = 0x7FFC ) {
av_log ( avctx , AV_LOG_ERROR , " invalid sync code \n " ) ;
av_log ( avctx , AV_LOG_ERROR + log_level_offset , " invalid sync code \n " ) ;
return - 1 ;
}
@ -58,14 +58,14 @@ int ff_flac_decode_frame_header(AVCodecContext *avctx, GetBitContext *gb,
} else if ( fi - > ch_mode < = FLAC_CHMODE_MID_SIDE ) {
fi - > channels = 2 ;
} else {
av_log ( avctx , AV_LOG_ERROR , " invalid channel mode: %d \n " , fi - > ch_mode ) ;
av_log ( avctx , AV_LOG_ERROR + log_level_offset , " invalid channel mode: %d \n " , fi - > ch_mode ) ;
return - 1 ;
}
/* bits per sample */
bps_code = get_bits ( gb , 3 ) ;
if ( bps_code = = 3 | | bps_code = = 7 ) {
av_log ( avctx , AV_LOG_ERROR , " invalid sample size code (%d) \n " ,
av_log ( avctx , AV_LOG_ERROR + log_level_offset , " invalid sample size code (%d) \n " ,
bps_code ) ;
return - 1 ;
}
@ -73,20 +73,20 @@ int ff_flac_decode_frame_header(AVCodecContext *avctx, GetBitContext *gb,
/* reserved bit */
if ( get_bits1 ( gb ) ) {
av_log ( avctx , AV_LOG_ERROR , " broken stream, invalid padding \n " ) ;
av_log ( avctx , AV_LOG_ERROR + log_level_offset , " broken stream, invalid padding \n " ) ;
return - 1 ;
}
/* sample or frame count */
fi - > frame_or_sample_num = get_utf8 ( gb ) ;
if ( fi - > frame_or_sample_num < 0 ) {
av_log ( avctx , AV_LOG_ERROR , " sample/frame number invalid; utf8 fscked \n " ) ;
av_log ( avctx , AV_LOG_ERROR + log_level_offset , " sample/frame number invalid; utf8 fscked \n " ) ;
return - 1 ;
}
/* blocksize */
if ( bs_code = = 0 ) {
av_log ( avctx , AV_LOG_ERROR , " reserved blocksize code: 0 \n " ) ;
av_log ( avctx , AV_LOG_ERROR + log_level_offset , " reserved blocksize code: 0 \n " ) ;
return - 1 ;
} else if ( bs_code = = 6 ) {
fi - > blocksize = get_bits ( gb , 8 ) + 1 ;
@ -106,7 +106,7 @@ int ff_flac_decode_frame_header(AVCodecContext *avctx, GetBitContext *gb,
} else if ( sr_code = = 14 ) {
fi - > samplerate = get_bits ( gb , 16 ) * 10 ;
} else {
av_log ( avctx , AV_LOG_ERROR , " illegal sample rate code %d \n " ,
av_log ( avctx , AV_LOG_ERROR + log_level_offset , " illegal sample rate code %d \n " ,
sr_code ) ;
return - 1 ;
}
@ -115,7 +115,7 @@ int ff_flac_decode_frame_header(AVCodecContext *avctx, GetBitContext *gb,
skip_bits ( gb , 8 ) ;
if ( av_crc ( av_crc_get_table ( AV_CRC_8_ATM ) , 0 , gb - > buffer ,
get_bits_count ( gb ) / 8 ) ) {
av_log ( avctx , AV_LOG_ERROR , " header crc mismatch \n " ) ;
av_log ( avctx , AV_LOG_ERROR + log_level_offset , " header crc mismatch \n " ) ;
return - 1 ;
}