/*=============================================================*/ void L3table_init ( int sr_index_arg, int h_id_arg, int band_limit_arg ) { int i; ARRAY8 *csa; /* save for band table generator */ sr_index = sr_index_arg; h_id = h_id_arg; band_limit = band_limit_arg; /*================ antialias ===============================*/ csa = xingenc_alias_init_addr ( ); for ( i = 0; i < 8; i++ ) { csa[0][i] = ( float ) ( 1.0 / sqrt ( 1.0 + Ci[i] * Ci[i] ) ); csa[1][i] = ( float ) ( Ci[i] / sqrt ( 1.0 + Ci[i] * Ci[i] ) ); } /*================ mdct ===============================*/ mdct_init ( ); /*--- hybrid windows ------------*/ hwin_init ( ); }
/*=============================================================*/ int L3table_init(MPEG *m) { int i; float *x; LS *ls; int scalefact_scale, preemp, scalefac; double tmp; PAIR *csa; /*================ quant ===============================*/ /* 8 bit plus 2 lookup x = pow(2.0, 0.25*(global_gain-210)) */ /* extra 2 for ms scaling by 1/sqrt(2) */ /* extra 4 for cvt to mono scaling by 1/2 */ x = quant_init_global_addr(m); for (i = 0; i < 256 + 2 + 4; i++) x[i] = (float) pow(2.0, 0.25 * ((i - (2 + 4)) - 210 + GLOBAL_GAIN_SCALE)); /* x = pow(2.0, -0.5*(1+scalefact_scale)*scalefac + preemp) */ ls = quant_init_scale_addr(m); for (scalefact_scale = 0; scalefact_scale < 2; scalefact_scale++) { for (preemp = 0; preemp < 4; preemp++) { for (scalefac = 0; scalefac < 32; scalefac++) { ls[scalefact_scale][preemp][scalefac] = (float) pow(2.0, -0.5 * (1 + scalefact_scale) * (scalefac + preemp)); } } } /*--- iSample**(4/3) lookup, -32<=i<=31 ---*/ x = quant_init_pow_addr(m); for (i = 0; i < 64; i++) { tmp = i - 32; x[i] = (float) (tmp * pow(fabs(tmp), (1.0 / 3.0))); } /*-- pow(2.0, -0.25*8.0*subblock_gain) 3 bits --*/ x = quant_init_subblock_addr(m); for (i = 0; i < 8; i++) { x[i] = (float) pow(2.0, 0.25 * -8.0 * i); } /*-------------------------*/ // quant_init_sf_band(sr_index); replaced by code in sup.c /*================ antialias ===============================*/ csa = alias_init_addr(m); for (i = 0; i < 8; i++) { csa[i][0] = (float) (1.0 / sqrt(1.0 + Ci[i] * Ci[i])); csa[i][1] = (float) (Ci[i] / sqrt(1.0 + Ci[i] * Ci[i])); } /*================ msis ===============================*/ msis_init(m); msis_init_MPEG2(m); /*================ imdct ===============================*/ imdct_init(m); /*--- hybrid windows ------------*/ hwin_init(m); return 0; }