diff options
Diffstat (limited to 'decoder/ixheaacd_mps_mdct_2_qmf.c')
-rw-r--r-- | decoder/ixheaacd_mps_mdct_2_qmf.c | 1848 |
1 files changed, 1848 insertions, 0 deletions
diff --git a/decoder/ixheaacd_mps_mdct_2_qmf.c b/decoder/ixheaacd_mps_mdct_2_qmf.c new file mode 100644 index 0000000..aa7a555 --- /dev/null +++ b/decoder/ixheaacd_mps_mdct_2_qmf.c @@ -0,0 +1,1848 @@ +/****************************************************************************** + * + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ***************************************************************************** + * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore +*/ +#include <string.h> +#include "ixheaacd_type_def.h" +#include "ixheaacd_mps_struct_def.h" +#include "ixheaacd_error_codes.h" +#include "ixheaacd_mps_res_rom.h" +#include "ixheaacd_mps_aac_struct.h" +#include "ixheaacd_constants.h" +#include "ixheaacd_basic_ops32.h" +#include "ixheaacd_basic_ops40.h" +#include "ixheaacd_bitbuffer.h" +#include "ixheaacd_cnst.h" +#include "ixheaacd_common_rom.h" +#include "ixheaacd_sbrdecsettings.h" +#include "ixheaacd_sbr_scale.h" +#include "ixheaacd_env_extr_part.h" +#include "ixheaacd_sbr_rom.h" +#include "ixheaacd_hybrid.h" +#include "ixheaacd_ps_dec.h" +#include "ixheaacd_error_standards.h" +#include "ixheaacd_mps_polyphase.h" +#include "ixheaacd_config.h" +#include "ixheaacd_qmf_dec.h" +#include "ixheaacd_mps_dec.h" +#include "ixheaacd_mps_mdct_2_qmf.h" +#include "ixheaacd_mps_macro_def.h" +#include "ixheaacd_mps_basic_op.h" + +IA_ERRORCODE ixheaacd_mdct2qmf_tables_init(ia_heaac_mps_state_struct *pstr_mps_state) { + WORD32 time_slots; + + time_slots = pstr_mps_state->upd_qmf; + + if (32 == time_slots) { + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[0] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_00; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[1] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_01; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[2] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_02; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[3] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_03; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[4] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_04; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[5] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_05; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[6] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_06; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[7] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_07; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[8] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_08; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[9] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_09; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[10] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_10; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[11] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_11; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[12] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_12; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[13] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_13; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[14] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_14; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[15] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_15; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[16] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_15; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[17] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_14; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[18] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_13; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[19] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_12; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[20] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_11; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[21] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_10; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[22] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_09; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[23] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_08; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[24] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_07; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[25] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_06; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[26] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_05; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[27] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_04; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[28] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_03; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[29] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_02; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[30] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_01; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[31] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_00; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[32] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_16; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[33] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_17; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[34] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_18; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[35] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_19; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[36] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_20; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[37] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_21; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[38] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_22; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[39] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_23; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[40] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_24; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[41] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_25; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[42] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_26; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[43] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_27; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[44] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_28; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[45] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_29; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[46] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_30; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[47] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_31; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[48] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_31; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[49] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_30; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[50] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_29; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[51] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_28; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[52] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_27; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[53] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_26; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[54] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_25; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[55] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_24; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[56] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_23; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[57] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_22; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[58] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_21; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[59] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_20; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[60] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_19; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[61] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_18; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[62] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_17; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[63] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_32_16; + + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_short[0] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_short_4_00; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_short[1] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_short_4_01; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_short[2] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_short_4_01; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_short[3] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_short_4_00; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_short[4] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_short_4_02; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_short[5] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_short_4_03; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_short[6] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_short_4_03; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_short[7] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_short_4_02; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_short[8] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_short[9] = NULL; + } else { + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_short[0] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_short_2_00; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_short[1] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_short_2_00; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_short[2] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_short_2_01; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_short[3] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_short_2_01; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_short[4] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_short[5] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_short[6] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_short[7] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_short[8] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_short[9] = NULL; + + if (30 == time_slots) { + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[0] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_00; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[1] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_01; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[2] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_02; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[3] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_03; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[4] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_04; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[5] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_05; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[6] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_06; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[7] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_07; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[8] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_08; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[9] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_09; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[10] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_10; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[11] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_11; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[12] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_12; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[13] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_13; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[14] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_14; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[15] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_14; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[16] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_13; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[17] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_12; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[18] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_11; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[19] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_10; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[20] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_09; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[21] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_08; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[22] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_07; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[23] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_06; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[24] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_05; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[25] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_04; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[26] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_03; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[27] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_02; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[28] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_01; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[29] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_00; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[30] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_15; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[31] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_16; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[32] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_17; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[33] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_18; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[34] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_19; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[35] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_20; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[36] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_21; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[37] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_22; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[38] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_23; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[39] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_24; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[40] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_25; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[41] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_26; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[42] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_27; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[43] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_28; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[44] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_29; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[45] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_29; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[46] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_28; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[47] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_27; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[48] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_26; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[49] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_25; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[50] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_24; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[51] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_23; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[52] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_22; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[53] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_21; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[54] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_20; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[55] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_19; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[56] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_18; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[57] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_17; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[58] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_16; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[59] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_30_15; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[60] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[61] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[62] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[63] = NULL; + } else if (24 == time_slots) { + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[0] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_00; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[1] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_01; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[2] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_02; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[3] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_03; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[4] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_04; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[5] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_05; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[6] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_06; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[7] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_07; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[8] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_08; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[9] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_09; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[10] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_10; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[11] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_11; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[12] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_11; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[13] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_10; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[14] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_09; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[15] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_08; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[16] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_07; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[17] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_06; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[18] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_05; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[19] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_04; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[20] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_03; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[21] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_02; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[22] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_01; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[23] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_00; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[24] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_12; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[25] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_13; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[26] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_14; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[27] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_15; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[28] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_16; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[29] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_17; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[30] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_18; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[31] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_19; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[32] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_20; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[33] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_21; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[34] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_22; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[35] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_23; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[36] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_23; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[37] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_22; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[38] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_21; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[39] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_20; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[40] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_19; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[41] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_18; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[42] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_17; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[43] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_16; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[44] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_15; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[45] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_14; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[46] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_13; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[47] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_24_12; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[48] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[49] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[50] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[51] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[52] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[53] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[54] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[55] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[56] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[57] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[58] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[59] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[60] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[61] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[62] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[63] = NULL; + } else if (18 == time_slots) { + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[0] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_00; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[1] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_01; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[2] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_02; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[3] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_03; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[4] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_04; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[5] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_05; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[6] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_06; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[7] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_07; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[8] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_08; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[9] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_08; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[10] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_07; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[11] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_06; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[12] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_05; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[13] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_04; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[14] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_03; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[15] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_02; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[16] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_01; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[17] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_00; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[18] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_09; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[19] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_10; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[20] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_11; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[21] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_12; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[22] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_13; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[23] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_14; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[24] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_15; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[25] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_16; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[26] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_17; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[27] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_17; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[28] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_16; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[29] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_15; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[30] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_14; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[31] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_13; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[32] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_12; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[33] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_11; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[34] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_10; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[35] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_18_09; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[36] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[37] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[38] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[39] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[40] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[41] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[42] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[43] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[44] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[45] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[46] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[47] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[48] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[49] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[50] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[51] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[52] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[53] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[54] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[55] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[56] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[57] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[58] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[59] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[60] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[61] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[62] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[63] = NULL; + } else if (16 == time_slots) { + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[0] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_00; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[1] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_01; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[2] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_02; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[3] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_03; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[4] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_04; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[5] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_05; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[6] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_06; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[7] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_07; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[8] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_07; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[9] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_06; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[10] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_05; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[11] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_04; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[12] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_03; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[13] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_02; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[14] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_01; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[15] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_00; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[16] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_08; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[17] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_09; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[18] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_10; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[19] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_11; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[20] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_12; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[21] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_13; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[22] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_14; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[23] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_15; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[24] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_15; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[25] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_14; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[26] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_13; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[27] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_12; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[28] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_11; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[29] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_10; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[30] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_09; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[31] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_16_08; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[32] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[33] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[34] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[35] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[36] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[37] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[38] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[39] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[40] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[41] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[42] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[43] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[44] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[45] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[46] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[47] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[48] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[49] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[50] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[51] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[52] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[53] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[54] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[55] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[56] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[57] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[58] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[59] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[60] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[61] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[62] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[63] = NULL; + } else if (15 == time_slots) { + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[0] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_00; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[1] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_01; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[2] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_02; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[3] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_03; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[4] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_04; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[5] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_05; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[6] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_06; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[7] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_06; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[8] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_05; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[9] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_04; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[10] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_03; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[11] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_02; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[12] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_01; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[13] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_00; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[14] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_07; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[15] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_08; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[16] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_09; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[17] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_10; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[18] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_11; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[19] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_12; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[20] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_13; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[21] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_14; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[22] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_14; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[23] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_13; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[24] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_12; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[25] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_11; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[26] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_10; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[27] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_09; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[28] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_08; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[29] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_long_15_07; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[30] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[31] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[32] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[33] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[34] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[35] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[36] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[37] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[38] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[39] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[40] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[41] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[42] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[43] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[44] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[45] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[46] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[47] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[48] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[49] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[50] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[51] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[52] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[53] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[54] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[55] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[56] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[57] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[58] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[59] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[60] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[61] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[62] = NULL; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_long[63] = NULL; + + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_short[4] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_short_3_00; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_short[5] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_short_3_00; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_short[6] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_short_3_01; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_short[7] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_short_3_02; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_short[8] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_short_3_02; + pstr_mps_state->ia_mps_dec_mdct2qmfcos_table.cos_table_short[9] = + pstr_mps_state->ia_mps_dec_mps_table.mdct2qmfcos_table_ptr->cos_table_short_3_01; + } else { + if (pstr_mps_state->residual_coding) return IA_XHEAAC_MPS_DEC_EXE_FATAL_INVALID_TIMESLOTS; + } + } + + return IA_NO_ERROR; +} + +IA_ERRORCODE ixheaacd_mdct2qmf_create(ia_heaac_mps_state_struct *pstr_mps_state) { + IA_ERRORCODE error_code = IA_NO_ERROR; + + WORD32 *qmf_residual_real = pstr_mps_state->array_struct->qmf_residual_real_pre; + WORD32 *qmf_residual_imag = pstr_mps_state->array_struct->qmf_residual_imag_pre; + + memset(qmf_residual_real, 0, RES_CHXQMFXTSX4); + memset(qmf_residual_imag, 0, RES_CHXQMFXTSX4); + + error_code = ixheaacd_mdct2qmf_tables_init(pstr_mps_state); + + return error_code; +} + +static VOID ixheaacd_local_zero(WORD32 const l, WORD32 *const b) { + WORD32 i; + + for (i = 0; i < l; i++) { + b[i] = 0; + } +} + +static VOID ixheaacd_local_fold_out(WORD32 *const s, WORD32 const lv, WORD32 *const w, + WORD32 const l_w, WORD32 *const v_main, + WORD32 *const v_slave) { + WORD32 n; + WORD32 i; + WORD32 j; + WORD32 k; + + WORD32 temp_1; + + WORD32 *w1; + WORD32 *w2; + WORD32 *w3; + WORD32 *w4; + WORD32 *ptr1, *ptr2, *ptr3; + + WORD32 m = l_w >> 1; + WORD32 l = lv / m; + WORD32 m2w = m >> 1; + WORD32 m2a = m - m2w; + + for (i = m; i < lv; i += l_w) { + for (n = i + l_w; i < n; i++) { + s[i] = -s[i]; + } + } + + w1 = &w[-m2a]; + w2 = &w[m2w]; + w3 = &w[m2w]; + w4 = &w[m + m2w]; + + for (n = 0, j = 0, k = m; n < l - 1; n++) { + for (i = 0; i < m2a; i++, j++, k++) { + v_main[k] = ixheaacd_mps_mult32_shr_30(w2[i], s[k]); + v_slave[j] = ixheaacd_mps_mult32_shr_30(w4[i], s[k]); + } + + for (; i < m; i++, j++, k++) { + v_main[j] = ixheaacd_mps_mult32_shr_30(w3[i], s[j]); + v_slave[k] = ixheaacd_mps_mult32_shr_30(w1[i], s[j]); + } + } + + ptr1 = v_main; + ptr2 = v_slave + m - 1; + ptr3 = s; + for (i = 0; i < m2a; i++) { + temp_1 = *ptr3++; + *ptr1++ = ixheaacd_mps_mult32_shr_30(*w2++, temp_1); + *ptr2-- = ixheaacd_mps_mult32_shr_30(*w4++, temp_1); + } + + j = l * m - m2w; + k = l * m - m2a - 1; + ptr3 = s + l * m - m; + ptr1 = v_main + j; + ptr2 = v_slave + k; + + w1 += m2a; + for (; i < m; i++, j++) { + temp_1 = *ptr3++; + *ptr1++ = ixheaacd_mps_mult32_shr_30(*w2++, temp_1); + *ptr2-- = ixheaacd_mps_mult32_shr_30(*w1++, temp_1); + } +} + +static VOID ixheaacd_local_imdet( + WORD32 *x1, WORD32 *x2, WORD32 *const scale1, WORD32 const val, WORD32 *z_real, + WORD32 *z_imag, const ia_mps_dec_mdct2qmf_cos_table_struct *ia_mps_dec_mdct2qmfcos_tab, + WORD32 is_long, VOID *scratch) { + WORD32 lw = val << 1; + WORD32 offset = val - (val >> 1); + + WORD32 temp_1, temp3, temp_2; + WORD32 *z_real_2, *z_imag_2; + WORD32 *px1, *px2, *px3, *px4; + const WORD16 *cp, *sp; + WORD32 *scale; + WORD32 cnt = val + (val >> 1); + + WORD32 k; + WORD32 n, j; + + WORD32 l; + + WORD32 *p_sum = scratch; + WORD32 *p_diff = (WORD32 *)scratch + SUM_SIZE; + + z_real_2 = z_real + lw; + z_imag_2 = z_imag + lw; + + for (l = 0; l < LOOP_COUNTER; l++) { + WORD32 *sum = p_sum; + WORD32 *diff = p_diff; + + px1 = x1; + px2 = x2 + val - 1; + px3 = x2 + val; + px4 = x1 + 2 * val - 1; + + for (n = 0; n < val; n++) { + *sum++ = *px1 + *px2; + *sum++ = *px3 + *px4; + *diff++ = *px1++ - *px2--; + *diff++ = *px3++ - *px4--; + } + + scale = scale1; + for (k = 0; k < cnt; k++) { + if (1 == is_long) { + cp = ia_mps_dec_mdct2qmfcos_tab->cos_table_long[k]; + sp = cp + val; + } else { + cp = ia_mps_dec_mdct2qmfcos_tab->cos_table_short[k + is_long]; + sp = cp + val; + } + + sum = p_sum; + diff = p_diff; + + temp_1 = *cp++; + temp_2 = ixheaacd_mps_mult32_shr_15(temp_1, *sum); + sum++; + *z_real = temp_2; + + temp_2 = ixheaacd_mps_mult32_shr_15(temp_1, *sum); + sum++; + *z_real_2 = temp_2; + + temp_1 = *--sp; + temp_2 = ixheaacd_mps_mult32_shr_15(temp_1, *diff); + diff++; + *z_imag = temp_2; + + temp_2 = ixheaacd_mps_mult32_shr_15(temp_1, *diff); + diff++; + *z_imag_2 = temp_2; + for (n = 1; n < val; n++) { + temp_1 = *cp++; + temp_2 = ixheaacd_mps_mult32_shr_15(temp_1, *sum); + sum++; + *z_real += temp_2; + + temp_2 = ixheaacd_mps_mult32_shr_15(temp_1, *sum); + sum++; + *z_real_2 += temp_2; + + temp_1 = *--sp; + temp_2 = ixheaacd_mps_mult32_shr_15(temp_1, *diff); + diff++; + *z_imag += temp_2; + + temp_2 = ixheaacd_mps_mult32_shr_15(temp_1, *diff); + diff++; + *z_imag_2 += temp_2; + } + z_real++; + z_imag++; + z_real_2++; + z_imag_2++; + } + z_real -= cnt; + z_real_2 -= cnt; + z_imag -= cnt; + z_imag_2 -= cnt; + + for (j = 0; j < (cnt); j++) { + *z_real = ixheaacd_mps_mult32_shr_15(*z_real, *scale); + z_real++; + *z_imag = ixheaacd_mps_mult32_shr_15(*z_imag, *scale); + z_imag++; + *z_real_2 = ixheaacd_mps_mult32_shr_15(*z_real_2, *scale); + z_real_2++; + *z_imag_2 = ixheaacd_mps_mult32_shr_15(*z_imag_2, *scale); + scale++; + z_imag_2++; + } + + for (; k < lw; k++) { + if (1 == is_long) { + cp = ia_mps_dec_mdct2qmfcos_tab->cos_table_long[k]; + sp = cp + val; + } else { + cp = ia_mps_dec_mdct2qmfcos_tab->cos_table_short[k + is_long]; + sp = cp + val; + } + + sum = p_sum; + diff = p_diff; + + temp_1 = *cp++; + + temp3 = ixheaacd_mps_mult32_shr_15(temp_1, *sum); + sum++; + *z_real = temp3; + + temp3 = ixheaacd_mps_mult32_shr_15(temp_1, *sum); + sum++; + *z_real_2 = temp3; + + temp_1 = *--sp; + temp3 = ixheaacd_mps_mult32_shr_15(temp_1, *diff); + diff++; + *z_imag = temp3; + + temp3 = ixheaacd_mps_mult32_shr_15(temp_1, *diff); + diff++; + *z_imag_2 = temp3; + + for (n = 1; n < val; n++) { + temp_1 = *cp++; + temp3 = ixheaacd_mps_mult32_shr_15(temp_1, *sum); + sum++; + *z_real += temp3; + + temp3 = ixheaacd_mps_mult32_shr_15(temp_1, *sum); + sum++; + *z_real_2 += temp3; + + temp_1 = *--sp; + temp3 = ixheaacd_mps_mult32_shr_15(temp_1, *diff); + diff++; + *z_imag += temp3; + + temp3 = ixheaacd_mps_mult32_shr_15(temp_1, *diff); + diff++; + *z_imag_2 += temp3; + } + + z_real++; + z_imag++; + z_real_2++; + z_imag_2++; + } + z_real -= offset; + z_real_2 -= offset; + z_imag -= offset; + z_imag_2 -= offset; + + for (j = 0; j < (offset); j++) { + temp_1 = (*scale++) * -1; + *z_real = ixheaacd_mps_mult32_shr_15(*z_real, temp_1); + z_real++; + *z_imag = ixheaacd_mps_mult32_shr_15(*z_imag, temp_1); + z_imag++; + *z_real_2 = ixheaacd_mps_mult32_shr_15(*z_real_2, temp_1); + z_real_2++; + *z_imag_2 = ixheaacd_mps_mult32_shr_15(*z_imag_2, temp_1); + z_imag_2++; + } + + x1 += lw; + x2 += lw; + + z_real += lw; + z_imag += lw; + z_imag_2 += lw; + z_real_2 += lw; + } +} + +static VOID ixheaacd_local_hybcmdct2qmf( + WORD32 *const v_main, WORD32 *const v_slave, WORD32 *const w, WORD32 const lw, WORD32 *z_real, + WORD32 *z_imag, const ia_mps_dec_mdct2qmf_cos_table_struct *ia_mps_dec_mdct2qmfcos_tab, + VOID *scratch, WORD32 is_long) { + WORD32 i, start = 0; + WORD32 m = lw >> 1; + + switch (lw) { + case TSX2_4: + case TSX2_6: + case TSX2_30: + case TSX2_36: + case TSX2_60: + start = 1; + break; + + case TSX2_8: + case TSX2_32: + case TSX2_48: + case TSX2_64: + start = 0; + break; + + default: + break; + } + + ixheaacd_local_imdet(v_slave, v_main, w, m, z_real, z_imag, ia_mps_dec_mdct2qmfcos_tab, is_long, + scratch); + + for (i = start; i < (m << 7); i += 2) { + z_imag[i] = -(z_imag[i]); + } + + return; +} + +static VOID ixheaacd_local_p_zero_ts15(WORD32 *const b, WORD32 *src, WORD32 l) { + WORD32 i; + + for (i = 0; i < 15; i++) { + b[i] = *src++; + } + if (l != 15) { + src--; + for (; i < l; i++) { + b[i] = *--src; + } + } +} + +static VOID ixheaacd_local_p_nonzero(WORD32 *const b, WORD32 *src, WORD32 l) { + WORD32 i; + + for (i = 0; i < l; i++) { + b[i] = *src--; + } +} + +static VOID ixheaacd_local_p_zero(WORD32 *const b, WORD32 *src, WORD32 l, WORD32 upd_qmf) { + WORD32 i; + + for (i = 0; i < upd_qmf; i++) { + b[i] = *src++; + } + if (l != upd_qmf) { + for (; i < l; i++) { + b[i] = *--src; + } + } +} + +static VOID ixheaacd_local_sin(WORD32 const t, WORD32 const p, WORD32 const l, WORD32 *const b, + ia_mps_dec_mdct2qmf_table_struct *mdct2qmf_tab) { + WORD32 *sin_ptr; + + switch (t) { + case TS_2: + switch (p) { + case ZERO: + b[0] = 12540; + b[1] = 30274; + if (l == TSX2_4) { + b[2] = b[1]; + b[3] = b[0]; + } + break; + case TS_2: + b[0] = 30274; + b[1] = 12540; + break; + default: + break; + } + break; + case TS_4: + switch (p) { + case ZERO: + sin_ptr = mdct2qmf_tab->local_sin_4; + b[0] = *sin_ptr++; + b[1] = *sin_ptr++; + b[2] = *sin_ptr++; + b[3] = *sin_ptr; + if (l == TSX2_8) { + b[4] = *sin_ptr--; + b[5] = *sin_ptr--; + b[6] = *sin_ptr--; + b[7] = *sin_ptr; + } + break; + case TS_4: + sin_ptr = &(mdct2qmf_tab->local_sin_4[TS_MINUS_ONE_4]); + b[0] = *sin_ptr--; + b[1] = *sin_ptr--; + b[2] = *sin_ptr--; + b[3] = *sin_ptr; + break; + default: + break; + } + break; + case UPD_QMF_15: + switch (p) { + case ZERO: + sin_ptr = &(mdct2qmf_tab->local_sin_15[1]); + ixheaacd_local_p_zero_ts15(b, sin_ptr, l); + break; + case UPD_QMF_15: + sin_ptr = &(mdct2qmf_tab->local_sin_15[TS_MINUS_ONE_15]); + ixheaacd_local_p_nonzero(b, sin_ptr, l); + break; + default: + break; + } + break; + case UPD_QMF_16: + switch (p) { + case ZERO: + sin_ptr = mdct2qmf_tab->local_sin_16; + ixheaacd_local_p_zero(b, sin_ptr, l, UPD_QMF_16); + break; + case UPD_QMF_16: + sin_ptr = &(mdct2qmf_tab->local_sin_16[TS_MINUS_ONE_16]); + ixheaacd_local_p_nonzero(b, sin_ptr, l); + break; + default: + break; + } + break; + case UPD_QMF_18: + switch (p) { + case ZERO: + sin_ptr = mdct2qmf_tab->local_sin_18; + ixheaacd_local_p_zero(b, sin_ptr, l, UPD_QMF_18); + break; + case UPD_QMF_18: + sin_ptr = &(mdct2qmf_tab->local_sin_18[TS_MINUS_ONE_18]); + ixheaacd_local_p_nonzero(b, sin_ptr, l); + break; + default: + break; + } + break; + case UPD_QMF_24: + switch (p) { + case ZERO: + sin_ptr = mdct2qmf_tab->local_sin_24; + ixheaacd_local_p_zero(b, sin_ptr, l, UPD_QMF_24); + break; + case UPD_QMF_24: + sin_ptr = &(mdct2qmf_tab->local_sin_24[TS_MINUS_ONE_24]); + ixheaacd_local_p_nonzero(b, sin_ptr, l); + break; + default: + break; + } + break; + case UPD_QMF_30: + switch (p) { + case ZERO: + sin_ptr = mdct2qmf_tab->local_sin_30; + ixheaacd_local_p_zero(b, sin_ptr, l, UPD_QMF_30); + break; + case UPD_QMF_30: + sin_ptr = &(mdct2qmf_tab->local_sin_30[TS_MINUS_ONE_30]); + ixheaacd_local_p_nonzero(b, sin_ptr, l); + break; + default: + break; + } + break; + case UPD_QMF_32: + switch (p) { + case ZERO: + sin_ptr = mdct2qmf_tab->local_sin_32; + ixheaacd_local_p_zero(b, sin_ptr, l, UPD_QMF_32); + break; + case UPD_QMF_32: + sin_ptr = &(mdct2qmf_tab->local_sin_32[TS_MINUS_ONE_32]); + ixheaacd_local_p_nonzero(b, sin_ptr, l); + + break; + default: + break; + } + break; + default: + break; + } + return; +} + +static VOID ixheaacd_local_one(WORD32 const l, WORD32 *const b) { + WORD32 i; + + for (i = 0; i < l; i++) { + b[i] = ONE_IN_Q15; + } +} + +static VOID ixheaacd_local_freq_win(WORD32 const l, WORD32 *const b, const WORD32 **wf) { + WORD32 i; + WORD32 odd_length = (l & ONE_BIT_MASK); + WORD32 temp_1; + WORD32 *b_start, *b_end; + b_start = b; + b_end = b + 2 * l - 1 - odd_length; + + for (i = 0; i < l - odd_length; i++) { + temp_1 = wf[l - 1][i]; + *b_start++ = temp_1; + *b_end-- = temp_1; + } + + if (odd_length == 1) { + *b_start = wf[l - 1][l - 1]; + *(b_start + l) = 0; + } +} + +static VOID ixheaacd_local_mdct_win(WORD32 upd_qmf, WORD32 const window_type, WORD32 *const wf, + WORD32 const **wf_tab, WORD32 *const wt, + ia_mps_dec_mdct2qmf_table_struct *mdct2qmf_tab) { + WORD32 length = 0; + WORD32 length_right = 0; + WORD32 length_left = 0; + WORD32 length_const1 = 0; + WORD32 length_const2 = 0; + + switch (window_type) { + case ONLY_LONG_SEQUENCE: + length = upd_qmf; + ixheaacd_local_sin(upd_qmf, 0, (length << 1), &wt[0], mdct2qmf_tab); + break; + case LONG_START_SEQUENCE: + switch (upd_qmf) { + case UPD_QMF_15: + length_const1 = 6; + length_const2 = 7; + length_right = 2; + break; + case UPD_QMF_16: + case UPD_QMF_32: + length_const1 = 7 * (upd_qmf >> 4); + length_const2 = length_const1; + length_right = upd_qmf >> 3; + break; + case UPD_QMF_18: + length_const1 = 8; + length_const2 = length_const1; + length_right = 2; + break; + case UPD_QMF_24: + length_const1 = 11; + length_const2 = length_const1; + length_right = 2; + break; + case UPD_QMF_30: + length_const1 = 14; + length_const2 = length_const1; + length_right = 2; + break; + default: + length_const1 = 6; + length_const2 = 7; + length_right = 2; + break; + } + + ixheaacd_local_sin(upd_qmf, 0, upd_qmf, &wt[0], mdct2qmf_tab); + ixheaacd_local_one(length_const1, &wt[upd_qmf]); + ixheaacd_local_sin(length_right, length_right, length_right, &wt[upd_qmf + length_const1], + mdct2qmf_tab); + + ixheaacd_local_zero(length_const2, &wt[upd_qmf + length_const1 + length_right]); + length = upd_qmf; + break; + case EIGHT_SHORT_SEQUENCE: + switch (upd_qmf) { + case UPD_QMF_16: + case UPD_QMF_32: + length = upd_qmf >> 3; + break; + case UPD_QMF_15: + case UPD_QMF_18: + case UPD_QMF_30: + case UPD_QMF_24: + length = 2; + break; + default: + break; + } + ixheaacd_local_sin(length, 0, 2 * length, &wt[0], mdct2qmf_tab); + break; + case LONG_STOP_SEQUENCE: + switch (upd_qmf) { + case UPD_QMF_15: + length_const1 = 6; + length_const2 = 7; + length_left = 2; + break; + case UPD_QMF_16: + case UPD_QMF_32: + length_const1 = 7 * (upd_qmf >> 4); + length_const2 = length_const1; + length_left = upd_qmf >> 3; + break; + case UPD_QMF_18: + length_const1 = 8; + length_const2 = length_const1; + length_left = 2; + break; + case UPD_QMF_24: + length_const1 = 11; + length_const2 = length_const1; + length_left = 2; + break; + case UPD_QMF_30: + length_const1 = 14; + length_const2 = length_const1; + length_left = 2; + break; + default: + break; + } + + ixheaacd_local_zero(length_const1, &wt[0]); + ixheaacd_local_sin(length_left, 0, length_left, &wt[length_const1], mdct2qmf_tab); + ixheaacd_local_one(length_const2, &wt[length_const1 + length_left]); + ixheaacd_local_sin(upd_qmf, upd_qmf, upd_qmf, + &wt[length_const1 + length_left + length_const2], mdct2qmf_tab); + length = upd_qmf; + break; + default: + break; + } + + ixheaacd_local_freq_win(length, &wf[0], wf_tab); + + if ((upd_qmf == UPD_QMF_15) && (window_type == EIGHT_SHORT_SEQUENCE)) { + WORD32 length2 = 3; + + ixheaacd_local_sin(length, 0, length, &wt[(length << 1)], mdct2qmf_tab); + ixheaacd_local_one(1, &wt[3 * length]); + ixheaacd_local_sin(length, length, length, &wt[3 * length + 1], mdct2qmf_tab); + ixheaacd_local_zero(1, &wt[(length << 2) + 1]); + + ixheaacd_local_freq_win(length2, &wf[(length << 1)], wf_tab); + } + return; +} + +static VOID ixheaacd_get_gain(WORD32 l, WORD32 *gain) { + switch (l) { + case TSX2_4: + *gain = 16384; + break; + + case TSX2_6: + *gain = 13377; + break; + + case TSX2_8: + *gain = 11585; + break; + + case TSX2_30: + *gain = 5982; + break; + + case TSX2_32: + *gain = 5792; + break; + + case TSX2_36: + *gain = 5461; + break; + + case TSX2_48: + *gain = 4729; + break; + + case TSX2_60: + *gain = 4230; + break; + + case TSX2_64: + *gain = 4096; + break; + + default: + break; + } + + return; +} + +VOID ixheaacd_mdct2qmf_process(WORD32 upd_qmf, WORD32 *const mdct_in, WORD32 *qmf_real_pre, + WORD32 *qmf_real_post, WORD32 *qmf_imag_pre, WORD32 *qmf_imag_post, + WORD32 const window_type, WORD32 qmf_global_offset, + ia_mps_dec_mps_tables_struct *ia_mps_dec_mps_table_ptr, + VOID *scratch, WORD32 time_slots) { + WORD32 i; + WORD32 j; + WORD32 k; + + WORD32 l = (upd_qmf << 1); + + WORD32 n = 0; + WORD32 *wf; + WORD32 *wt; + + WORD32 *v1; + WORD32 *v2; + + WORD32 *z1_real; + WORD32 *z1_imag; + + WORD32 *twipost_real; + WORD32 *twipost_imag; + + WORD32 *mdct_sf, *mdct_sf_ptr; + WORD32 *mdct_p, *mdct_p2; + + WORD32 temp_2, temp3, temp4; + + WORD32 *p_qmf_real_pre = qmf_real_pre; + WORD32 *p_qmf_real_post = qmf_real_post; + WORD32 *p_qmf_imag_pre = qmf_imag_pre; + WORD32 *p_qmf_imag_post = qmf_imag_post; + + VOID *free_scratch; + + WORD32 const **wf_tab = ia_mps_dec_mps_table_ptr->wf_tab_ptr->wf; + + WORD32 window_offset = 0; + + WORD32 mdct_offset = 0; + WORD32 mdct_shift = AAC_SHORT_FRAME_LENGTH; + + WORD32 qmf_offset = 0; + WORD32 qmf_shift = 0; + + WORD32 n_windows = 0; + + WORD32 mdct_length = MDCT_LENGTH_LO; + + WORD32 qmf_bands = 64; + const WORD32 *ptr1, *ptr2; + WORD32 is_long; + WORD32 *zr, *zi; + + WORD32 *a, *scale; + WORD32 gain = 0; + WORD32 *wp; + + wf = scratch; + wt = wf + MAX_TIMESLOTSX2; + v1 = wt + MAX_TIMESLOTSX2; + v2 = v1 + MDCT_LENGTH_HI; + twipost_real = v2 + MDCT_LENGTH_HI; + twipost_imag = twipost_real + MAX_NUM_QMF_BANDS; + mdct_sf = twipost_imag + MAX_NUM_QMF_BANDS; + z1_real = mdct_sf + MDCT_LENGTH_SF; + z1_imag = z1_real + QBXTSX2; + a = z1_imag + QBXTSX2; + free_scratch = (VOID *)((WORD32 *)a + MAX_NUM_QMF_BANDS); + + scale = a; + + ixheaacd_local_mdct_win(upd_qmf, window_type, wf, wf_tab, wt, + ia_mps_dec_mps_table_ptr->mdct2qmf_table_ptr); + + switch (window_type) { + case ONLY_LONG_SEQUENCE: + case LONG_START_SEQUENCE: + case LONG_STOP_SEQUENCE: + + n = upd_qmf * qmf_bands - MDCT_LENGTH_LO; + + if (n > 0) { + ixheaacd_local_zero(n, &mdct_in[MDCT_LENGTH_LO]); + } + mdct_length += n; + + ixheaacd_local_fold_out(mdct_in, mdct_length, wf, l, v1, v2); + + wp = wt; + + ixheaacd_get_gain(l, &gain); + + for (k = 0; k < l; k++) { + *scale++ = ixheaacd_mps_mult32_shr_15(gain, *wp); + wp++; + } + ixheaacd_local_hybcmdct2qmf(v1, v2, a, l, z1_real, z1_imag, + ia_mps_dec_mps_table_ptr->mdct2qmfcos_tab_ptr, free_scratch, 1); + + ptr1 = ia_mps_dec_mps_table_ptr->mdct2qmf_table_ptr->twi_post_cos; + ptr2 = ia_mps_dec_mps_table_ptr->mdct2qmf_table_ptr->twi_post_sin; + + if (qmf_global_offset < time_slots) { + if (qmf_global_offset + l < time_slots) { + for (i = 0; i < qmf_bands; i++) { + WORD32 cos_twi = *ptr1++; + WORD32 sin_twi = *ptr2++; + for (j = 0; j < l; j++) { + temp3 = *z1_real++; + temp4 = *z1_imag++; + + temp_2 = j + qmf_global_offset; + p_qmf_real_pre[temp_2] += cos_twi * temp3; + p_qmf_real_pre[temp_2] -= sin_twi * temp4; + p_qmf_imag_pre[temp_2] += cos_twi * temp4; + p_qmf_imag_pre[temp_2] += sin_twi * temp3; + } + p_qmf_real_pre += MAX_TIME_SLOTS; + p_qmf_imag_pre += MAX_TIME_SLOTS; + } + } else { + for (i = 0; i < qmf_bands; i++) { + WORD32 cos_twi = *ptr1++; + WORD32 sin_twi = *ptr2++; + for (j = 0; j < l; j++) { + temp3 = *z1_real++; + temp4 = *z1_imag++; + + temp_2 = j + qmf_global_offset; + if (temp_2 < time_slots) { + p_qmf_real_pre[temp_2] += cos_twi * temp3; + p_qmf_real_pre[temp_2] -= sin_twi * temp4; + p_qmf_imag_pre[temp_2] += cos_twi * temp4; + p_qmf_imag_pre[temp_2] += sin_twi * temp3; + } else { + p_qmf_real_post[temp_2 - time_slots] += cos_twi * temp3; + p_qmf_real_post[temp_2 - time_slots] -= sin_twi * temp4; + p_qmf_imag_post[temp_2 - time_slots] += cos_twi * temp4; + p_qmf_imag_post[temp_2 - time_slots] += sin_twi * temp3; + } + } + p_qmf_real_pre += MAX_TIME_SLOTS; + p_qmf_real_post += MAX_TIME_SLOTS; + + p_qmf_imag_pre += MAX_TIME_SLOTS; + p_qmf_imag_post += MAX_TIME_SLOTS; + } + } + } else { + for (i = 0; i < qmf_bands; i++) { + WORD32 cos_twi = *ptr1++; + WORD32 sin_twi = *ptr2++; + for (j = 0; j < l; j++) { + temp3 = *z1_real++; + temp4 = *z1_imag++; + + temp_2 = j + qmf_global_offset; + + p_qmf_real_post[temp_2 - time_slots] += cos_twi * temp3; + p_qmf_real_post[temp_2 - time_slots] -= sin_twi * temp4; + p_qmf_imag_post[temp_2 - time_slots] += cos_twi * temp4; + p_qmf_imag_post[temp_2 - time_slots] += sin_twi * temp3; + } + p_qmf_real_post += MAX_TIME_SLOTS; + p_qmf_imag_post += MAX_TIME_SLOTS; + } + } + break; + case EIGHT_SHORT_SEQUENCE: + + switch (upd_qmf) { + case UPD_QMF_15: + l = 4; + mdct_length = AAC_SHORT_FRAME_LENGTH; + qmf_offset = 6; + qmf_shift = 2; + n_windows = 7; + break; + case UPD_QMF_16: + case UPD_QMF_32: + n = (upd_qmf - UPD_QMF_16) * 8; + mdct_length = AAC_SHORT_FRAME_LENGTH + n; + l = 2 * (upd_qmf >> 3); + qmf_offset = 7 * upd_qmf >> 4; + qmf_shift = upd_qmf >> 3; + n_windows = 8; + break; + case UPD_QMF_18: + l = 4; + mdct_length = AAC_SHORT_FRAME_LENGTH; + qmf_offset = 8; + qmf_shift = 2; + n_windows = 9; + break; + case UPD_QMF_24: + l = 4; + mdct_length = AAC_SHORT_FRAME_LENGTH; + qmf_offset = 11; + qmf_shift = 2; + n_windows = 12; + break; + case UPD_QMF_30: + l = 4; + mdct_length = AAC_SHORT_FRAME_LENGTH; + qmf_offset = 14; + qmf_shift = 2; + n_windows = 15; + break; + default: + l = 4; + mdct_length = AAC_SHORT_FRAME_LENGTH; + qmf_offset = 6; + qmf_shift = 2; + n_windows = 7; + break; + } + + wp = wt; + ixheaacd_get_gain(l, &gain); + + for (k = 0; k < l; k++) { + *scale++ = ixheaacd_mps_mult32_shr_15(gain, *wp); + wp++; + } + + for (k = 0; k < n_windows; k++) { + is_long = 0; + mdct_sf_ptr = mdct_sf; + switch (upd_qmf) { + case UPD_QMF_16: + case UPD_QMF_32: + mdct_p = mdct_in + mdct_offset; + for (i = 0; i < AAC_SHORT_FRAME_LENGTH; i++) { + *mdct_sf_ptr++ = *mdct_p++; + } + + ixheaacd_local_zero(n, &mdct_sf[AAC_SHORT_FRAME_LENGTH]); + break; + case UPD_QMF_15: + if (k < n_windows - 1) { + mdct_p = mdct_in + mdct_offset; + for (i = 0; i < AAC_SHORT_FRAME_LENGTH; i++) { + *mdct_sf_ptr++ = *mdct_p++; + } + } else { + window_offset = l; + l = 6; + mdct_length = 192; + is_long = 4; + gain = 13377; + scale = a; + wp = wt + window_offset; + + for (k = 0; k < l; k++) { + *scale++ = ixheaacd_mps_mult32_shr_15(gain, *wp); + wp++; + } + + mdct_p = mdct_in + mdct_offset; + mdct_p2 = mdct_in + mdct_offset + AAC_SHORT_FRAME_LENGTH; + + for (i = 0, j = 0; i < mdct_length / 2; i++) { + *mdct_sf_ptr++ = *mdct_p++; + *mdct_sf_ptr++ = *mdct_p2++; + } + } + break; + case UPD_QMF_18: + case UPD_QMF_24: + case UPD_QMF_30: + + mdct_p = mdct_in + mdct_offset; + for (i = 0; i < AAC_SHORT_FRAME_LENGTH; i++) { + *mdct_sf_ptr++ = *mdct_p++; + } + break; + default: + break; + } + ixheaacd_local_fold_out(mdct_sf, mdct_length, &wf[window_offset], l, v1, v2); + + ixheaacd_local_hybcmdct2qmf(v1, v2, a, l, z1_real, z1_imag, + ia_mps_dec_mps_table_ptr->mdct2qmfcos_tab_ptr, free_scratch, + is_long); + + zr = z1_real; + zi = z1_imag; + + ptr1 = ia_mps_dec_mps_table_ptr->mdct2qmf_table_ptr->twi_post_cos; + ptr2 = ia_mps_dec_mps_table_ptr->mdct2qmf_table_ptr->twi_post_sin; + temp_2 = qmf_offset + qmf_global_offset; + + if (temp_2 < time_slots) { + if ((temp_2 + l) < time_slots) { + p_qmf_real_pre = qmf_real_pre; + p_qmf_imag_pre = qmf_imag_pre; + + for (i = 0; i < qmf_bands; i++) { + WORD32 cos_twi = *ptr1++; + WORD32 sin_twi = *ptr2++; + + for (j = 0; j < l; j++) { + temp3 = *zr++; + temp4 = (*zi++); + + p_qmf_real_pre[temp_2 + j] += cos_twi * temp3; + p_qmf_real_pre[temp_2 + j] -= sin_twi * temp4; + p_qmf_imag_pre[temp_2 + j] += cos_twi * temp4; + p_qmf_imag_pre[temp_2 + j] += sin_twi * temp3; + } + p_qmf_real_pre += MAX_TIME_SLOTS; + p_qmf_imag_pre += MAX_TIME_SLOTS; + } + } else { + p_qmf_real_pre = qmf_real_pre; + p_qmf_real_post = qmf_real_post; + p_qmf_imag_pre = qmf_imag_pre; + p_qmf_imag_post = qmf_imag_post; + + for (i = 0; i < qmf_bands; i++) { + WORD32 cos_twi = *ptr1++; + WORD32 sin_twi = *ptr2++; + + for (j = 0; j < l; j++) { + temp3 = *zr++; + temp4 = (*zi++); + + if ((temp_2 + j) < time_slots) { + p_qmf_real_pre[temp_2 + j] += cos_twi * temp3; + p_qmf_real_pre[temp_2 + j] -= sin_twi * temp4; + p_qmf_imag_pre[temp_2 + j] += cos_twi * temp4; + p_qmf_imag_pre[temp_2 + j] += sin_twi * temp3; + } else { + p_qmf_real_post[temp_2 + j - time_slots] += cos_twi * temp3; + p_qmf_real_post[temp_2 + j - time_slots] -= sin_twi * temp4; + p_qmf_imag_post[temp_2 + j - time_slots] += cos_twi * temp4; + p_qmf_imag_post[temp_2 + j - time_slots] += sin_twi * temp3; + } + } + p_qmf_real_pre += MAX_TIME_SLOTS; + p_qmf_imag_pre += MAX_TIME_SLOTS; + + p_qmf_real_post += MAX_TIME_SLOTS; + p_qmf_imag_post += MAX_TIME_SLOTS; + } + } + } else { + p_qmf_real_post = qmf_real_post; + p_qmf_imag_post = qmf_imag_post; + + for (i = 0; i < qmf_bands; i++) { + WORD32 cos_twi = *ptr1++; + WORD32 sin_twi = *ptr2++; + + for (j = 0; j < l; j++) { + temp3 = *zr++; + temp4 = (*zi++); + { + p_qmf_real_post[temp_2 + j - time_slots] += cos_twi * temp3; + p_qmf_real_post[temp_2 + j - time_slots] -= sin_twi * temp4; + p_qmf_imag_post[temp_2 + j - time_slots] += cos_twi * temp4; + p_qmf_imag_post[temp_2 + j - time_slots] += sin_twi * temp3; + } + } + p_qmf_real_post += MAX_TIME_SLOTS; + p_qmf_imag_post += MAX_TIME_SLOTS; + } + } + + mdct_offset += mdct_shift; + qmf_offset += qmf_shift; + } + break; + default: + break; + } + return; +} |