@ -578,12 +578,6 @@ static av_cold int aac_decode_init(AVCodecContext *avctx)
ac - > random_state = 0x1f2e3d4c ;
// -1024 - Compensate wrong IMDCT method.
// 60 - Required to scale values to the correct range [-32768,32767]
// for float to int16 conversion. (1 << (60 / 4)) == 32768
ac - > sf_scale = 1. / - 1024. ;
ac - > sf_offset = 60 ;
ff_aac_tableinit ( ) ;
INIT_VLC_STATIC ( & vlc_scalefactors , 7 , FF_ARRAY_ELEMS ( ff_aac_scalefactor_code ) ,
@ -591,9 +585,9 @@ static av_cold int aac_decode_init(AVCodecContext *avctx)
ff_aac_scalefactor_code , sizeof ( ff_aac_scalefactor_code [ 0 ] ) , sizeof ( ff_aac_scalefactor_code [ 0 ] ) ,
352 ) ;
ff_mdct_init ( & ac - > mdct , 11 , 1 , 1.0 ) ;
ff_mdct_init ( & ac - > mdct_small , 8 , 1 , 1.0 ) ;
ff_mdct_init ( & ac - > mdct_ltp , 11 , 0 , 2.0 ) ;
ff_mdct_init ( & ac - > mdct , 11 , 1 , 1.0 / 1024.0 ) ;
ff_mdct_init ( & ac - > mdct_small , 8 , 1 , 1.0 / 128.0 ) ;
ff_mdct_init ( & ac - > mdct_ltp , 11 , 0 , - 2.0 ) ;
// window initialization
ff_kbd_window_init ( ff_aac_kbd_long_1024 , 4.0 , 1024 ) ;
ff_kbd_window_init ( ff_aac_kbd_short_128 , 6.0 , 128 ) ;
@ -651,7 +645,7 @@ static void decode_ltp(AACContext *ac, LongTermPrediction *ltp,
int sfb ;
ltp - > lag = get_bits ( gb , 11 ) ;
ltp - > coef = ltp_coef [ get_bits ( gb , 3 ) ] * ac - > sf_scale ;
ltp - > coef = ltp_coef [ get_bits ( gb , 3 ) ] ;
for ( sfb = 0 ; sfb < FFMIN ( max_sfb , MAX_LTP_LONG_SFB ) ; sfb + + )
ltp - > used [ sfb ] = get_bits1 ( gb ) ;
}
@ -789,7 +783,6 @@ static int decode_scalefactors(AACContext *ac, float sf[120], GetBitContext *gb,
enum BandType band_type [ 120 ] ,
int band_type_run_end [ 120 ] )
{
const int sf_offset = ac - > sf_offset + ( ics - > window_sequence [ 0 ] = = EIGHT_SHORT_SEQUENCE ? 12 : 0 ) ;
int g , i , idx = 0 ;
int offset [ 3 ] = { global_gain , global_gain - 90 , 0 } ;
int clipped_offset ;
@ -826,7 +819,7 @@ static int decode_scalefactors(AACContext *ac, float sf[120], GetBitContext *gb,
" artifact, there may be a bug in the decoder. " ,
offset [ 1 ] , clipped_offset ) ;
}
sf [ idx ] = - ff_aac_pow2sf_tab [ clipped_offset + sf_offset - 100 + POW_SF2_ZERO ] ;
sf [ idx ] = - ff_aac_pow2sf_tab [ clipped_offset + POW_SF2_ZERO ] ;
}
} else {
for ( ; i < run_end ; i + + , idx + + ) {
@ -836,7 +829,7 @@ static int decode_scalefactors(AACContext *ac, float sf[120], GetBitContext *gb,
" %s (%d) out of range. \n " , sf_str [ 0 ] , offset [ 0 ] ) ;
return - 1 ;
}
sf [ idx ] = - ff_aac_pow2sf_tab [ offset [ 0 ] + sf_offset - 2 00 + POW_SF2_ZERO ] ;
sf [ idx ] = - ff_aac_pow2sf_tab [ offset [ 0 ] - 1 00 + POW_SF2_ZERO ] ;
}
}
}
@ -1247,7 +1240,6 @@ static av_always_inline float flt16_trunc(float pf)
}
static av_always_inline void predict ( PredictorState * ps , float * coef ,
float sf_scale , float inv_sf_scale ,
int output_enable )
{
const float a = 0.953125 ; // 61.0 / 64
@ -1264,9 +1256,9 @@ static av_always_inline void predict(PredictorState *ps, float *coef,
pv = flt16_round ( k1 * r0 + k2 * r1 ) ;
if ( output_enable )
* coef + = pv * sf_scale ;
* coef + = pv ;
e0 = * coef * inv_sf_scale ;
e0 = * coef ;
e1 = e0 - k1 * r0 ;
ps - > cor1 = flt16_trunc ( alpha * cor1 + r1 * e1 ) ;
@ -1284,7 +1276,6 @@ static av_always_inline void predict(PredictorState *ps, float *coef,
static void apply_prediction ( AACContext * ac , SingleChannelElement * sce )
{
int sfb , k ;
float sf_scale = ac - > sf_scale , inv_sf_scale = 1 / ac - > sf_scale ;
if ( ! sce - > ics . predictor_initialized ) {
reset_all_predictors ( sce - > predictor_state ) ;
@ -1295,7 +1286,6 @@ static void apply_prediction(AACContext *ac, SingleChannelElement *sce)
for ( sfb = 0 ; sfb < ff_aac_pred_sfb_max [ ac - > m4ac . sampling_index ] ; sfb + + ) {
for ( k = sce - > ics . swb_offset [ sfb ] ; k < sce - > ics . swb_offset [ sfb + 1 ] ; k + + ) {
predict ( & sce - > predictor_state [ k ] , & sce - > coeffs [ k ] ,
sf_scale , inv_sf_scale ,
sce - > ics . predictor_present & & sce - > ics . prediction_used [ sfb ] ) ;
}
}