• Home
  • Raw
  • Download

Lines Matching refs:pstr_api_struct

148 static WORD32 iusace_calc_pers_buf_sizes(ixheaace_api_struct *pstr_api_struct) {  in iusace_calc_pers_buf_sizes()  argument
150 ia_usac_encoder_config_struct *pstr_config = &pstr_api_struct->config[0].usac_config; in iusace_calc_pers_buf_sizes()
395 ixheaace_api_struct *pstr_api_struct, WORD32 *bitrate, WORD32 inp_bitrate) { in ia_enhaacplus_enc_allocate_bitrate_between_channels() argument
399 for (ele_idx = 0; ele_idx < pstr_api_struct->config[0].num_bs_elements; ele_idx++) { in ia_enhaacplus_enc_allocate_bitrate_between_channels()
400 switch (pstr_api_struct->config[ele_idx].element_type) { in ia_enhaacplus_enc_allocate_bitrate_between_channels()
417 for (ele_idx = 0; ele_idx < pstr_api_struct->config[0].num_bs_elements; ele_idx++) { in ia_enhaacplus_enc_allocate_bitrate_between_channels()
418 switch (pstr_api_struct->config[ele_idx].element_type) { in ia_enhaacplus_enc_allocate_bitrate_between_channels()
493 static VOID ixheaace_set_default_config(ixheaace_api_struct *pstr_api_struct, in ixheaace_set_default_config() argument
495 ia_usac_encoder_config_struct *pstr_usac_config = &pstr_api_struct->config[0].usac_config; in ixheaace_set_default_config()
499 ia_enhaacplus_enc_aac_init_default_config(&pstr_api_struct->config[i].aac_config, in ixheaace_set_default_config()
502 pstr_api_struct->config[i].i_channels = NUM_CHANNELS_CONFIG_PARAM_DEFAULT_VALUE; in ixheaace_set_default_config()
503 pstr_api_struct->config[i].sample_rate = AAC_SAMP_FREQ_CONFIG_PARAM_DEFAULT_VALUE; in ixheaace_set_default_config()
504 pstr_api_struct->config[i].native_sample_rate = AAC_SAMP_FREQ_CONFIG_PARAM_DEFAULT_VALUE; in ixheaace_set_default_config()
505 pstr_api_struct->config[i].i_n_memtabs = NUM_MEMTABS_CONFIG_PARAM_DEFAULT_VALUE; in ixheaace_set_default_config()
506 pstr_api_struct->config[i].aac_classic = AAC_CLASSIC_CONFIG_PARAM_DEFAULT_VALUE; in ixheaace_set_default_config()
507 pstr_api_struct->config[i].use_parametric_stereo = USE_PS_CONFIG_PARAM_DEFAULT_VALUE; in ixheaace_set_default_config()
508 pstr_api_struct->config[i].chmode_nchannels = CHMODE_NUM_CHANNELS_CONFIG_PARAM_DEFAULT_VALUE; in ixheaace_set_default_config()
509 pstr_api_struct->config[i].chmode = CHMODE_CONFIG_PARAM_DEFAULT_VALUE; /*stereo*/ in ixheaace_set_default_config()
510 pstr_api_struct->config[i].adts_flag = ADTS_FLAG_CONFIG_PARAM_DEFAULT_VALUE; in ixheaace_set_default_config()
511 pstr_api_struct->config[i].num_bs_elements = NUM_BS_ELEMENTS_CONFIG_PARAM_DEFAULT_VALUE; in ixheaace_set_default_config()
512 pstr_api_struct->config[i].i_channels_mask = CHANNEL_MASK_CONFIG_PARAM_DEFAULT_VALUE; in ixheaace_set_default_config()
513 pstr_api_struct->config[i].i_num_coupling_chan = in ixheaace_set_default_config()
515 pstr_api_struct->config[i].element_type = ELEMENT_TYPE_CONFIG_PARAM_DEFAULT_VALUE; in ixheaace_set_default_config()
516 pstr_api_struct->config[i].element_slot = ELEMENT_SLOT_CONFIG_PARAM_DEFAULT_VALUE; in ixheaace_set_default_config()
517 pstr_api_struct->config[i].num_bs_elements = NUM_BS_ELEMENTS_CONFIG_PARAM_DEFAULT_VALUE; in ixheaace_set_default_config()
518 pstr_api_struct->config[i].element_instance_tag = in ixheaace_set_default_config()
520 pstr_api_struct->config[i].aac_config.calc_crc = AAC_CFG_CALC_CRC_CONFIG_PARAM_DEFAULT_VALUE; in ixheaace_set_default_config()
521 pstr_api_struct->config[i].aac_config.full_bandwidth = in ixheaace_set_default_config()
523 pstr_api_struct->config[i].eldsbr_found = ELDSBR_FOUND_CONFIG_PARAM_DEFAULT_VALUE; in ixheaace_set_default_config()
524 pstr_api_struct->config[i].use_mps = USE_MPS_PARAM_DEFAULT_VALUE; in ixheaace_set_default_config()
525 pstr_api_struct->config[i].mps_tree_config = USE_MPS_TREE_CONFIG_PARAM_DEFAULT_VALUE; in ixheaace_set_default_config()
549 ia_enhaacplus_enc_init_aac_tabs(&(pstr_api_struct->pstr_aac_tabs)); in ixheaace_set_default_config()
550 ia_enhaacplus_enc_init_sbr_tabs(&(pstr_api_struct->spectral_band_replication_tabs)); in ixheaace_set_default_config()
551 pstr_api_struct->common_tabs.pstr_common_tab = in ixheaace_set_default_config()
824 static IA_ERRORCODE ixheaace_set_config_params(ixheaace_api_struct *pstr_api_struct, in ixheaace_set_config_params() argument
828 ia_usac_encoder_config_struct *pstr_usac_config = &pstr_api_struct->config[0].usac_config; in ixheaace_set_config_params()
860 pstr_api_struct->config[ele_idx].aac_classic = 1; in ixheaace_set_config_params()
861 pstr_api_struct->config[ele_idx].firstframe = 1; in ixheaace_set_config_params()
862 pstr_api_struct->config[ele_idx].aot = pstr_input_config->aot; in ixheaace_set_config_params()
863 pstr_api_struct->config[ele_idx].adts_flag = pstr_input_config->i_use_adts; in ixheaace_set_config_params()
864 pstr_api_struct->config[ele_idx].sample_rate = pstr_input_config->i_samp_freq; in ixheaace_set_config_params()
865 pstr_api_struct->config[ele_idx].native_sample_rate = pstr_input_config->i_native_samp_freq; in ixheaace_set_config_params()
867 pstr_api_struct->config[ele_idx].i_channels = pstr_input_config->i_channels; in ixheaace_set_config_params()
868 pstr_api_struct->config[ele_idx].i_native_channels = pstr_input_config->i_channels; in ixheaace_set_config_params()
869 pstr_api_struct->config[ele_idx].i_channels_mode = pstr_input_config->i_channels; in ixheaace_set_config_params()
870 pstr_api_struct->config[ele_idx].aac_config.bit_rate = pstr_input_config->i_bitrate; in ixheaace_set_config_params()
871 pstr_api_struct->config[ele_idx].esbr_flag = pstr_input_config->esbr_flag; in ixheaace_set_config_params()
872 pstr_api_struct->config[ele_idx].use_mps = pstr_input_config->i_use_mps; in ixheaace_set_config_params()
873 pstr_api_struct->config[ele_idx].mps_tree_config = pstr_input_config->i_mps_tree_config; in ixheaace_set_config_params()
874 pstr_api_struct->config[ele_idx].i_num_coupling_chan = pstr_input_config->i_num_coupling_chan; in ixheaace_set_config_params()
875 pstr_api_struct->config[ele_idx].ui_pcm_wd_sz = pstr_input_config->ui_pcm_wd_sz; in ixheaace_set_config_params()
876 pstr_api_struct->config[ele_idx].write_program_config_element = in ixheaace_set_config_params()
878 pstr_api_struct->config[ele_idx].frame_length = pstr_input_config->frame_length; in ixheaace_set_config_params()
879 pstr_api_struct->config[ele_idx].aac_config.num_stereo_preprocessing = in ixheaace_set_config_params()
882 pstr_api_struct->config[ele_idx].aac_config.use_tns = pstr_input_config->aac_config.use_tns; in ixheaace_set_config_params()
884 pstr_api_struct->config[ele_idx].aac_config.inv_quant = in ixheaace_set_config_params()
887 pstr_api_struct->config[ele_idx].aac_config.flag_framelength_small = 0; in ixheaace_set_config_params()
889 pstr_api_struct->config[ele_idx].aac_config.flag_framelength_small = 1; in ixheaace_set_config_params()
893 pstr_api_struct->config[ele_idx].aac_config.inv_quant = 0; in ixheaace_set_config_params()
895 pstr_api_struct->config[ele_idx].aac_config.flag_framelength_small = 0; in ixheaace_set_config_params()
897 pstr_api_struct->config[ele_idx].aac_config.flag_framelength_small = 1; in ixheaace_set_config_params()
902 pstr_api_struct->config[ele_idx].aac_classic = 0; in ixheaace_set_config_params()
904 if (pstr_api_struct->config[ele_idx].sample_rate < 32000) { in ixheaace_set_config_params()
905 if (pstr_api_struct->config[ele_idx].aac_classic == 0) { in ixheaace_set_config_params()
906 pstr_api_struct->config[ele_idx].aac_classic = 1; in ixheaace_set_config_params()
915 pstr_api_struct->config[ele_idx].eldsbr_found = in ixheaace_set_config_params()
916 !(pstr_api_struct->config[ele_idx].aac_classic); in ixheaace_set_config_params()
925 pstr_api_struct->usac_en = 1; in ixheaace_set_config_params()
945 pstr_api_struct->config[0].chmode_nchannels = pstr_api_struct->config[0].i_channels; in ixheaace_set_config_params()
1009 pstr_api_struct->config[0].ccfl_idx = NO_SBR_CCFL_1024; // default value in ixheaace_set_config_params()
1011 pstr_api_struct->config[0].ccfl_idx = pstr_input_config->ccfl_idx; in ixheaace_set_config_params()
1013 if (pstr_api_struct->config[0].ccfl_idx == SBR_8_3) { in ixheaace_set_config_params()
1014 pstr_api_struct->spectral_band_replication_tabs.ptr_sos_upsamp_tab = in ixheaace_set_config_params()
1017 pstr_api_struct->spectral_band_replication_tabs.ptr_sos_downsamp_tab = in ixheaace_set_config_params()
1019 } else if (pstr_api_struct->config[0].ccfl_idx == SBR_2_1) { in ixheaace_set_config_params()
1020 pstr_api_struct->spectral_band_replication_tabs.ptr_resamp_tab = in ixheaace_set_config_params()
1022 } else if (pstr_api_struct->config[0].ccfl_idx == SBR_4_1) { in ixheaace_set_config_params()
1023 pstr_api_struct->spectral_band_replication_tabs.ptr_resamp_tab = in ixheaace_set_config_params()
1086 pstr_api_struct->config[0].num_bs_elements = 1; in ixheaace_set_config_params()
1087 pstr_api_struct->config[0].i_channels = pstr_input_config->i_channels; in ixheaace_set_config_params()
1088 pstr_api_struct->config[0].i_native_channels = pstr_input_config->i_channels; in ixheaace_set_config_params()
1089 pstr_api_struct->config[0].chmode_nchannels = pstr_input_config->i_channels; in ixheaace_set_config_params()
1090 pstr_api_struct->config[0].element_type = ID_SCE; in ixheaace_set_config_params()
1091 if (pstr_api_struct->config[0].mps_tree_config == TREE_525) { in ixheaace_set_config_params()
1092 pstr_api_struct->config[0].element_type = ID_CPE; in ixheaace_set_config_params()
1094 pstr_api_struct->config[0].element_slot = 0; in ixheaace_set_config_params()
1095 pstr_api_struct->config[0].element_instance_tag = 0; in ixheaace_set_config_params()
1096 pstr_api_struct->config[0].aac_config.bit_rate = pstr_input_config->i_bitrate; in ixheaace_set_config_params()
1097 pstr_api_struct->config[0].use_parametric_stereo = 0; in ixheaace_set_config_params()
1103 if (pstr_api_struct->config[0].aac_config.dual_mono != 1) { in ixheaace_set_config_params()
1116 pstr_api_struct->config[ele_idx].i_channels_mask = pstr_input_config->i_channels_mask; in ixheaace_set_config_params()
1120 pstr_api_struct->config[0].i_num_coupling_chan, pstr_input_config->i_channels_mask); in ixheaace_set_config_params()
1122 pstr_api_struct->config[ele_idx].i_channels = chan_config[ele_idx]; in ixheaace_set_config_params()
1123 pstr_api_struct->config[ele_idx].i_native_channels = chan_config[ele_idx]; in ixheaace_set_config_params()
1124 pstr_api_struct->config[ele_idx].chmode_nchannels = chan_config[ele_idx]; in ixheaace_set_config_params()
1125 pstr_api_struct->config[ele_idx].element_type = element_type[ele_idx]; in ixheaace_set_config_params()
1126 pstr_api_struct->config[ele_idx].element_slot = element_slot[ele_idx]; in ixheaace_set_config_params()
1127 pstr_api_struct->config[ele_idx].num_bs_elements = num_bs_elements; in ixheaace_set_config_params()
1128 pstr_api_struct->config[ele_idx].element_instance_tag = element_instance_tag[ele_idx]; in ixheaace_set_config_params()
1131 if (pstr_api_struct->config[0].num_bs_elements > 1) { in ixheaace_set_config_params()
1132 ia_enhaacplus_enc_allocate_bitrate_between_channels(pstr_api_struct, bitrate, in ixheaace_set_config_params()
1135 for (ele_idx = 0; ele_idx < pstr_api_struct->config[0].num_bs_elements; ele_idx++) { in ixheaace_set_config_params()
1136 pstr_api_struct->config[ele_idx].aac_config.bit_rate = bitrate[ele_idx]; in ixheaace_set_config_params()
1140 pstr_api_struct->config[ele_idx].use_parametric_stereo = 0; in ixheaace_set_config_params()
1150 pstr_api_struct->config[0].i_channels = 1; in ixheaace_set_config_params()
1151 pstr_api_struct->config[0].chmode_nchannels = 1; in ixheaace_set_config_params()
1152 pstr_api_struct->config[0].element_type = ID_SCE; in ixheaace_set_config_params()
1153 pstr_api_struct->config[0].element_slot = 0; in ixheaace_set_config_params()
1154 pstr_api_struct->config[0].num_bs_elements = num_bs_elements; in ixheaace_set_config_params()
1155 pstr_api_struct->config[0].element_instance_tag = 0; in ixheaace_set_config_params()
1157 pstr_api_struct->config[1].i_channels = 1; in ixheaace_set_config_params()
1158 pstr_api_struct->config[1].chmode_nchannels = 1; in ixheaace_set_config_params()
1159 pstr_api_struct->config[1].element_type = ID_SCE; in ixheaace_set_config_params()
1160 pstr_api_struct->config[1].element_slot = 1; in ixheaace_set_config_params()
1161 pstr_api_struct->config[1].num_bs_elements = num_bs_elements; in ixheaace_set_config_params()
1162 pstr_api_struct->config[1].element_instance_tag = 1; in ixheaace_set_config_params()
1164 if (pstr_api_struct->config[0].num_bs_elements > 1) { in ixheaace_set_config_params()
1166 pstr_api_struct, bitrate, pstr_api_struct->config[0].aac_config.bit_rate); in ixheaace_set_config_params()
1168 for (ele_idx = 0; ele_idx < pstr_api_struct->config[0].num_bs_elements; ele_idx++) { in ixheaace_set_config_params()
1169 pstr_api_struct->config[ele_idx].aac_config.bit_rate = bitrate[ele_idx]; in ixheaace_set_config_params()
1173 pstr_api_struct->config[ele_idx].use_parametric_stereo = 0; in ixheaace_set_config_params()
1179 pstr_api_struct->config[0].use_parametric_stereo = 1; in ixheaace_set_config_params()
1180 pstr_api_struct->config[0].chmode_nchannels = 2; in ixheaace_set_config_params()
1182 for (ele_idx = 0; ele_idx < pstr_api_struct->config[0].num_bs_elements; ele_idx++) { in ixheaace_set_config_params()
1183 pstr_api_struct->config[ele_idx].chmode_nchannels = in ixheaace_set_config_params()
1184 pstr_api_struct->config[ele_idx].i_channels; in ixheaace_set_config_params()
1189 WORD32 max_channel_bits = (pstr_api_struct->config[0].aac_config.flag_framelength_small in ixheaace_set_config_params()
1197 pstr_api_struct->config[0].aac_config.bitreservoir_size = in ixheaace_set_config_params()
1202 WORD32 max_channel_bits = (pstr_api_struct->config[0].aac_config.flag_framelength_small in ixheaace_set_config_params()
1211 pstr_api_struct->config[0].aac_config.bitreservoir_size = in ixheaace_set_config_params()
1214 pstr_api_struct->config[0].aac_config.full_bandwidth = in ixheaace_set_config_params()
1221 static VOID ixheaace_fill_mem_tabs(ixheaace_api_struct *pstr_api_struct, WORD32 aot) { in ixheaace_fill_mem_tabs() argument
1226 frame_length = pstr_api_struct->config[0].frame_length; in ixheaace_fill_mem_tabs()
1228 if (pstr_api_struct->usac_en) { in ixheaace_fill_mem_tabs()
1230 if (pstr_api_struct->config[0].ccfl_idx > NO_SBR_CCFL_1024) { in ixheaace_fill_mem_tabs()
1231 fac_downsample = pstr_api_struct->config[0].ccfl_idx >> 1; in ixheaace_fill_mem_tabs()
1237 pstr_mem_info = &pstr_api_struct->pstr_mem_info[IA_ENHAACPLUSENC_PERSIST_IDX]; in ixheaace_fill_mem_tabs()
1241 iusace_calc_pers_buf_sizes(pstr_api_struct); in ixheaace_fill_mem_tabs()
1242 if (pstr_api_struct->config[0].usac_config.sbr_enable) { in ixheaace_fill_mem_tabs()
1244 2, 0, pstr_api_struct->config[0].usac_config.sbr_harmonic); in ixheaace_fill_mem_tabs()
1248 0, AOT_USAC, pstr_api_struct->config[0].ccfl_idx, in ixheaace_fill_mem_tabs()
1249 sizeof(pstr_api_struct->pstr_state->inp_delay[0]), in ixheaace_fill_mem_tabs()
1250 pstr_api_struct->config[0].use_mps) * in ixheaace_fill_mem_tabs()
1251 pstr_api_struct->config[0].num_bs_elements; in ixheaace_fill_mem_tabs()
1254 if (pstr_api_struct->config[0].use_mps) { in ixheaace_fill_mem_tabs()
1256 (MAX_INPUT_SAMPLES) * sizeof(pstr_api_struct->pstr_state->time_signal_mps[0]); in ixheaace_fill_mem_tabs()
1260 (MAX_MPS_BS_PAYLOAD_SIZE) * sizeof(pstr_api_struct->pstr_state->mps_bs[0]); in ixheaace_fill_mem_tabs()
1266 if (1 == pstr_api_struct->config[0].usac_config.sbr_enable) { in ixheaace_fill_mem_tabs()
1272 if ((2 != pstr_api_struct->config[0].usac_config.channels) && in ixheaace_fill_mem_tabs()
1273 (1 == pstr_api_struct->config[0].usac_config.sbr_enable)) { in ixheaace_fill_mem_tabs()
1274 offset_size = (MAX_INPUT_SAMPLES) * sizeof(pstr_api_struct->pstr_state->time_signal[0]); in ixheaace_fill_mem_tabs()
1290 pstr_mem_info = &pstr_api_struct->pstr_mem_info[IA_ENHAACPLUSENC_SCRATCH_IDX]; in ixheaace_fill_mem_tabs()
1292 if (pstr_api_struct->config[0].usac_config.sbr_enable) { in ixheaace_fill_mem_tabs()
1310 pstr_mem_info = &pstr_api_struct->pstr_mem_info[IA_ENHAACPLUSENC_INPUT_IDX]; in ixheaace_fill_mem_tabs()
1312 num_channel = pstr_api_struct->config[0].i_channels; in ixheaace_fill_mem_tabs()
1313 pcm_wd_sz = pstr_api_struct->config[0].usac_config.ui_pcm_wd_sz; in ixheaace_fill_mem_tabs()
1315 if (1 == pstr_api_struct->config[0].usac_config.sbr_enable) { in ixheaace_fill_mem_tabs()
1316 switch (pstr_api_struct->config[0].ccfl_idx) { in ixheaace_fill_mem_tabs()
1344 pstr_mem_info = &pstr_api_struct->pstr_mem_info[IA_ENHAACPLUSENC_OUTPUT_IDX]; in ixheaace_fill_mem_tabs()
1359 pstr_mem_info = &pstr_api_struct->pstr_mem_info[IA_ENHAACPLUSENC_PERSIST_IDX]; in ixheaace_fill_mem_tabs()
1361 if (pstr_api_struct->config[0].num_bs_elements == 1) { in ixheaace_fill_mem_tabs()
1362 num_channel = pstr_api_struct->config[0].aac_classic in ixheaace_fill_mem_tabs()
1363 ? pstr_api_struct->config[0].chmode_nchannels in ixheaace_fill_mem_tabs()
1364 : (pstr_api_struct->config[0].use_parametric_stereo in ixheaace_fill_mem_tabs()
1366 : pstr_api_struct->config[0].chmode_nchannels); in ixheaace_fill_mem_tabs()
1370 if (pstr_api_struct->config[0].aot != AOT_AAC_LC && in ixheaace_fill_mem_tabs()
1371 pstr_api_struct->config[0].aot != AOT_AAC_LD) { in ixheaace_fill_mem_tabs()
1373 num_channel, pstr_api_struct->config[0].use_parametric_stereo, 0); in ixheaace_fill_mem_tabs()
1376 pstr_api_struct->config[0].aac_config.flag_framelength_small, aot, 3, in ixheaace_fill_mem_tabs()
1377 sizeof(pstr_api_struct->pstr_state->inp_delay[0]), in ixheaace_fill_mem_tabs()
1378 pstr_api_struct->config[0].use_mps) * in ixheaace_fill_mem_tabs()
1379 pstr_api_struct->config[0].num_bs_elements; in ixheaace_fill_mem_tabs()
1382 if (pstr_api_struct->config[0].num_bs_elements > 1) { in ixheaace_fill_mem_tabs()
1385 pstr_api_struct->config[0].aac_config.flag_framelength_small, aot, 3, in ixheaace_fill_mem_tabs()
1386 sizeof(pstr_api_struct->pstr_state->inp_delay[0]), in ixheaace_fill_mem_tabs()
1387 pstr_api_struct->config[0].use_mps) * in ixheaace_fill_mem_tabs()
1388 pstr_api_struct->config[0].num_bs_elements; in ixheaace_fill_mem_tabs()
1390 for (ele_idx = 0; ele_idx < pstr_api_struct->config[0].num_bs_elements; ele_idx++) { in ixheaace_fill_mem_tabs()
1391 num_channel = pstr_api_struct->config[ele_idx].i_channels; in ixheaace_fill_mem_tabs()
1392 if (pstr_api_struct->config[ele_idx].element_type != ID_LFE) in ixheaace_fill_mem_tabs()
1398 if (pstr_api_struct->config[0].use_mps) { in ixheaace_fill_mem_tabs()
1399 if (pstr_api_struct->config[0].aac_config.flag_framelength_small) { in ixheaace_fill_mem_tabs()
1402 sizeof(pstr_api_struct->pstr_state->time_signal_mps[0]); in ixheaace_fill_mem_tabs()
1406 sizeof(pstr_api_struct->pstr_state->time_signal_mps[0]); in ixheaace_fill_mem_tabs()
1409 if (pstr_api_struct->config[0].mps_tree_config == TREE_212) { in ixheaace_fill_mem_tabs()
1417 (MAX_MPS_BS_PAYLOAD_SIZE) * sizeof(pstr_api_struct->pstr_state->mps_bs[0]), in ixheaace_fill_mem_tabs()
1421 offset_size = IXHEAACE_MAX_PAYLOAD_SIZE * pstr_api_struct->config[0].num_bs_elements; in ixheaace_fill_mem_tabs()
1439 pstr_mem_info = &pstr_api_struct->pstr_mem_info[IA_ENHAACPLUSENC_SCRATCH_IDX]; in ixheaace_fill_mem_tabs()
1444 if (pstr_api_struct->config[0].use_mps) { in ixheaace_fill_mem_tabs()
1445 if (pstr_api_struct->config[0].mps_tree_config != TREE_212) { in ixheaace_fill_mem_tabs()
1462 pstr_mem_info = &pstr_api_struct->pstr_mem_info[IA_ENHAACPLUSENC_INPUT_IDX]; in ixheaace_fill_mem_tabs()
1465 pcm_wd_sz = pstr_api_struct->config[0].ui_pcm_wd_sz; in ixheaace_fill_mem_tabs()
1467 for (ele_idx = 0; ele_idx < pstr_api_struct->config[0].num_bs_elements; ele_idx++) { in ixheaace_fill_mem_tabs()
1468 num_channel += pstr_api_struct->config[ele_idx].i_channels; in ixheaace_fill_mem_tabs()
1471 if (pstr_api_struct->config[0].aac_classic) { in ixheaace_fill_mem_tabs()
1489 pstr_mem_info = &pstr_api_struct->pstr_mem_info[IA_ENHAACPLUSENC_OUTPUT_IDX]; in ixheaace_fill_mem_tabs()
1509 static WORD32 get_drc_config_size(ixheaace_api_struct *pstr_api_struct, in get_drc_config_size() argument
1515 &pstr_api_struct->pstr_state->str_usac_enc_data.str_drc_state; in get_drc_config_size()
1526 pstr_api_struct->pstr_state->str_usac_enc_data.str_scratch.ptr_scratch_buf; in get_drc_config_size()
1541 static IA_ERRORCODE ixheaace_alloc_and_assign_mem(ixheaace_api_struct *pstr_api_struct, in ixheaace_alloc_and_assign_mem() argument
1549 pstr_api_struct->config[0].usac_config.use_drc_element) { in ixheaace_alloc_and_assign_mem()
1551 get_drc_config_size(pstr_api_struct, ptr_in_cfg); in ixheaace_alloc_and_assign_mem()
1555 pstr_api_struct->pstr_mem_info[i_idx].ui_size += drc_config_size_expected; in ixheaace_alloc_and_assign_mem()
1557 ptr_out_cfg->mem_info_table[i_idx].ui_size = pstr_api_struct->pstr_mem_info[i_idx].ui_size; in ixheaace_alloc_and_assign_mem()
1559 pstr_api_struct->pstr_mem_info[i_idx].ui_alignment; in ixheaace_alloc_and_assign_mem()
1560 ptr_out_cfg->mem_info_table[i_idx].ui_type = pstr_api_struct->pstr_mem_info[i_idx].ui_type; in ixheaace_alloc_and_assign_mem()
1585 pstr_api_struct->pp_mem[i_idx] = ptr_out_cfg->mem_info_table[i_idx].mem_ptr; in ixheaace_alloc_and_assign_mem()
1586 memset(pstr_api_struct->pp_mem[i_idx], 0, pstr_api_struct->pstr_mem_info[i_idx].ui_size); in ixheaace_alloc_and_assign_mem()
1588 pstr_api_struct->pp_mem[i_idx] = pv_value; in ixheaace_alloc_and_assign_mem()
1595 pstr_api_struct->pstr_state = (ixheaace_state_struct *)pv_value; in ixheaace_alloc_and_assign_mem()
1598 if (pstr_api_struct->usac_en) { in ixheaace_alloc_and_assign_mem()
1599 memset(pstr_api_struct->pstr_state, 0, sizeof(*(pstr_api_struct->pstr_state))); in ixheaace_alloc_and_assign_mem()
1600 ia_usac_encoder_config_struct *pstr_usac_config = &pstr_api_struct->config[0].usac_config; in ixheaace_alloc_and_assign_mem()
1601 ixheaace_state_struct *pstr_state = pstr_api_struct->pstr_state; in ixheaace_alloc_and_assign_mem()
1615 0, AOT_USAC, pstr_api_struct->config[0].ccfl_idx, in ixheaace_alloc_and_assign_mem()
1616 sizeof(pstr_state->inp_delay[0]), pstr_api_struct->config[0].use_mps) * in ixheaace_alloc_and_assign_mem()
1617 pstr_api_struct->config[0].num_bs_elements; in ixheaace_alloc_and_assign_mem()
1622 pstr_api_struct->pstr_state->time_signal = (FLOAT32 *)(p_offset); in ixheaace_alloc_and_assign_mem()
1624 memset(pstr_api_struct->pstr_state->time_signal, 0, in ixheaace_alloc_and_assign_mem()
1625 (MAX_INPUT_SAMPLES) * sizeof(pstr_api_struct->pstr_state->time_signal[0])); in ixheaace_alloc_and_assign_mem()
1627 (MAX_INPUT_SAMPLES) * sizeof(pstr_api_struct->pstr_state->time_signal[0]); in ixheaace_alloc_and_assign_mem()
1631 pstr_api_struct->pstr_state->spectral_band_replication_enc_pers_mem[0] = in ixheaace_alloc_and_assign_mem()
1636 if (1 == pstr_api_struct->config[0].use_mps) { in ixheaace_alloc_and_assign_mem()
1637 pstr_api_struct->pstr_state->time_signal_mps = (FLOAT32 *)(p_offset); in ixheaace_alloc_and_assign_mem()
1639 memset(pstr_api_struct->pstr_state->time_signal_mps, 0, in ixheaace_alloc_and_assign_mem()
1640 (MAX_INPUT_SAMPLES) * sizeof(pstr_api_struct->pstr_state->time_signal_mps[0])); in ixheaace_alloc_and_assign_mem()
1642 (MAX_INPUT_SAMPLES) * sizeof(pstr_api_struct->pstr_state->time_signal_mps[0]); in ixheaace_alloc_and_assign_mem()
1644 pstr_api_struct->pstr_state->mps_bs = (UWORD8 *)(p_offset); in ixheaace_alloc_and_assign_mem()
1646 memset(pstr_api_struct->pstr_state->mps_bs, 0, in ixheaace_alloc_and_assign_mem()
1647 (MAX_MPS_BS_PAYLOAD_SIZE) * sizeof(pstr_api_struct->pstr_state->mps_bs[0])); in ixheaace_alloc_and_assign_mem()
1650 (MAX_MPS_BS_PAYLOAD_SIZE) * sizeof(pstr_api_struct->pstr_state->mps_bs[0]); in ixheaace_alloc_and_assign_mem()
1653 pstr_api_struct->pstr_state->mps_pers_mem = (ixheaace_mps_212_memory_struct *)p_offset; in ixheaace_alloc_and_assign_mem()
1657 pstr_api_struct->pstr_state->mps_bs = NULL; in ixheaace_alloc_and_assign_mem()
1737 ixheaace_state_struct *pstr_state = pstr_api_struct->pstr_state; in ixheaace_alloc_and_assign_mem()
1738 memset(pstr_api_struct->pstr_state, 0, sizeof(*(pstr_api_struct->pstr_state))); in ixheaace_alloc_and_assign_mem()
1740 pstr_api_struct->pstr_state->inp_delay = (FLOAT32 *)((WORD8 *)pstr_state + offset_size); in ixheaace_alloc_and_assign_mem()
1742 pstr_api_struct->config[0].aac_config.flag_framelength_small, in ixheaace_alloc_and_assign_mem()
1743 pstr_api_struct->config[0].aot, 3, in ixheaace_alloc_and_assign_mem()
1744 sizeof(pstr_api_struct->pstr_state->inp_delay[0]), in ixheaace_alloc_and_assign_mem()
1745 pstr_api_struct->config[0].use_mps) * in ixheaace_alloc_and_assign_mem()
1746 pstr_api_struct->config[0].num_bs_elements; in ixheaace_alloc_and_assign_mem()
1747 p_offset = (WORD8 *)pstr_api_struct->pstr_state->inp_delay + in ixheaace_alloc_and_assign_mem()
1750 if (pstr_api_struct->config[0].use_mps) { in ixheaace_alloc_and_assign_mem()
1751 pstr_api_struct->pstr_state->time_signal_mps = (FLOAT32 *)(p_offset); in ixheaace_alloc_and_assign_mem()
1753 memset(pstr_api_struct->pstr_state->time_signal_mps, 0, in ixheaace_alloc_and_assign_mem()
1755 sizeof(pstr_api_struct->pstr_state->time_signal_mps[0])); in ixheaace_alloc_and_assign_mem()
1758 sizeof(pstr_api_struct->pstr_state->time_signal_mps[0]); in ixheaace_alloc_and_assign_mem()
1761 pstr_api_struct->pstr_state->mps_bs = (UWORD8 *)(p_offset); in ixheaace_alloc_and_assign_mem()
1762 memset(pstr_api_struct->pstr_state->mps_bs, 0, in ixheaace_alloc_and_assign_mem()
1763 (MAX_MPS_BS_PAYLOAD_SIZE) * sizeof(pstr_api_struct->pstr_state->mps_bs[0])); in ixheaace_alloc_and_assign_mem()
1765 (MAX_MPS_BS_PAYLOAD_SIZE) * sizeof(pstr_api_struct->pstr_state->mps_bs[0]); in ixheaace_alloc_and_assign_mem()
1768 if (pstr_api_struct->config[0].mps_tree_config == TREE_212) { in ixheaace_alloc_and_assign_mem()
1769 pstr_api_struct->pstr_state->mps_pers_mem = in ixheaace_alloc_and_assign_mem()
1774 pstr_api_struct->pstr_state->mps_515_pers_mem = in ixheaace_alloc_and_assign_mem()
1780 pstr_api_struct->pstr_state->mps_bs = NULL; in ixheaace_alloc_and_assign_mem()
1783 for (WORD32 ele_idx = 0; ele_idx < pstr_api_struct->config[0].num_bs_elements; in ixheaace_alloc_and_assign_mem()
1785 num_aac_chan = pstr_api_struct->config[ele_idx].aac_classic in ixheaace_alloc_and_assign_mem()
1786 ? pstr_api_struct->config[ele_idx].chmode_nchannels in ixheaace_alloc_and_assign_mem()
1787 : (pstr_api_struct->config[ele_idx].use_parametric_stereo in ixheaace_alloc_and_assign_mem()
1789 : pstr_api_struct->config[ele_idx].chmode_nchannels); in ixheaace_alloc_and_assign_mem()
1792 pstr_api_struct->pstr_state->aac_enc_pers_mem[ele_idx] = in ixheaace_alloc_and_assign_mem()
1795 num_aac_chan, pstr_api_struct->config[ele_idx].aot); in ixheaace_alloc_and_assign_mem()
1797 if (pstr_api_struct->config[ele_idx].aot != AOT_AAC_LC && in ixheaace_alloc_and_assign_mem()
1798 pstr_api_struct->config[ele_idx].aot != AOT_AAC_LD) { in ixheaace_alloc_and_assign_mem()
1799 if (pstr_api_struct->config[ele_idx].element_type != ID_LFE) { in ixheaace_alloc_and_assign_mem()
1801 pstr_api_struct->pstr_state->spectral_band_replication_enc_pers_mem[ele_idx] = in ixheaace_alloc_and_assign_mem()
1807 num_aac_chan, pstr_api_struct->config[ele_idx].use_parametric_stereo, 0); in ixheaace_alloc_and_assign_mem()
1814 if ((i_idx == IA_MEMTYPE_SCRATCH) && pstr_api_struct->usac_en) { in ixheaace_alloc_and_assign_mem()
1815 pstr_api_struct->pstr_state->str_usac_enc_data.str_scratch.ptr_scratch_buf = in ixheaace_alloc_and_assign_mem()
1816 (UWORD8 *)pstr_api_struct->pp_mem[IA_MEMTYPE_SCRATCH]; in ixheaace_alloc_and_assign_mem()
1817 memset(pstr_api_struct->pp_mem[IA_MEMTYPE_SCRATCH], 0, in ixheaace_alloc_and_assign_mem()
1818 pstr_api_struct->pstr_mem_info[i_idx].ui_size); in ixheaace_alloc_and_assign_mem()
1828 static VOID ixheaace_write_audio_preroll_data(ixheaace_api_struct *pstr_api_struct, in ixheaace_write_audio_preroll_data() argument
1830 ixheaace_config_struct *pstr_config = &pstr_api_struct->config[0]; in ixheaace_write_audio_preroll_data()
1831 ixheaace_state_struct *pstr_enc_state = pstr_api_struct->pstr_state; in ixheaace_write_audio_preroll_data()
1840 UWORD8 *ptr_out = (UWORD8 *)pstr_api_struct->pp_mem[IA_MEMTYPE_OUTPUT]; in ixheaace_write_audio_preroll_data()
1939 UWORD8 *ptr_out = (UWORD8 *)pstr_api_struct->pp_mem[IA_MEMTYPE_OUTPUT]; in ixheaace_write_audio_preroll_data()
1959 static IA_ERRORCODE ia_usac_enc_init(ixheaace_api_struct *pstr_api_struct, WORD32 ccfl_idx) { in ia_usac_enc_init() argument
1962 ixheaace_config_struct *pstr_config = &pstr_api_struct->config[0]; in ia_usac_enc_init()
1963 ixheaace_state_struct *pstr_enc_state = pstr_api_struct->pstr_state; in ia_usac_enc_init()
1967 pstr_usac_config->bit_rate = pstr_api_struct->config[0].aac_config.bit_rate; in ia_usac_enc_init()
1995 iaace_config *pstr_sbr_config = &(pstr_api_struct->config[0].aac_config); in ia_usac_enc_init()
1999 pstr_api_struct->pstr_state->temp_buff_sbr = in ia_usac_enc_init()
2001 pstr_api_struct->pstr_state->ptr_temp_buff_resamp = in ia_usac_enc_init()
2038 if (pstr_api_struct->pstr_state->mps_enable) { in ia_usac_enc_init()
2040 pstr_mps_memory = pstr_api_struct->pstr_state->mps_pers_mem; in ia_usac_enc_init()
2041 ixheaace_mps_212_open(&pstr_api_struct->pstr_mps_212_enc, pstr_mps_memory); in ia_usac_enc_init()
2045 pstr_api_struct->pstr_mps_212_enc, AOT_USAC, pstr_usac_config->sample_rate, in ia_usac_enc_init()
2047 (WORD8 *)pstr_api_struct->pstr_state->ptr_temp_buff_resamp); in ia_usac_enc_init()
2053 pstr_api_struct->pstr_mps_212_enc, (WORD8 *)pstr_asc->str_aac_config.sac_cfg_data, in ia_usac_enc_init()
2058 (pstr_api_struct->pstr_state->mps_enable != 1) ? pstr_config->i_channels : 1, in ia_usac_enc_init()
2060 pstr_api_struct->spectral_band_replication_tabs.ptr_qmf_tab, in ia_usac_enc_init()
2061 pstr_api_struct->pstr_state->aot, (pstr_api_struct->config[0].ccfl_idx == SBR_4_1)); in ia_usac_enc_init()
2064 &pstr_api_struct->pstr_state->spectral_band_replication_enc_pers_mem[0], in ia_usac_enc_init()
2066 &(pstr_api_struct->spectral_band_replication_tabs), &pstr_asc->str_aac_config.sbr_config); in ia_usac_enc_init()
2071 if (pstr_api_struct->config[0].ccfl_idx >= 2) { in ia_usac_enc_init()
2072 pstr_api_struct->pstr_state->downsample[0] = 1; in ia_usac_enc_init()
2074 pstr_api_struct->pstr_state->downsample[0] = 0; in ia_usac_enc_init()
2077 if (pstr_api_struct->pstr_state->downsample[0]) { in ia_usac_enc_init()
2082 if (pstr_api_struct->config[0].ccfl_idx == SBR_8_3) { in ia_usac_enc_init()
2086 } else if (pstr_api_struct->config[0].ccfl_idx == SBR_2_1) { in ia_usac_enc_init()
2089 } else if (pstr_api_struct->config[0].ccfl_idx == SBR_4_1) { in ia_usac_enc_init()
2094 if (pstr_api_struct->config[0].ccfl_idx == SBR_8_3) { in ia_usac_enc_init()
2103 if (pstr_api_struct->config[0].ccfl_idx == SBR_8_3) { // Upsampler initialization in ia_usac_enc_init()
2105 &(pstr_api_struct->pstr_state->up_sampler[ele_idx][ch_idx]), upsamp_fac, in ia_usac_enc_init()
2106 pstr_api_struct->spectral_band_replication_tabs.ptr_sos_upsamp_tab); in ia_usac_enc_init()
2110 if (pstr_api_struct->config[0].i_channels > 1) { in ia_usac_enc_init()
2112 &(pstr_api_struct->pstr_state->up_sampler[ele_idx][ch_idx + 1]), upsamp_fac, in ia_usac_enc_init()
2113 pstr_api_struct->spectral_band_replication_tabs.ptr_sos_upsamp_tab); in ia_usac_enc_init()
2120 &(pstr_api_struct->pstr_state->hbe_up_sampler[ele_idx][ch_idx]), upsamp_fac, in ia_usac_enc_init()
2121 pstr_api_struct->spectral_band_replication_tabs.ptr_sos_upsamp_tab); in ia_usac_enc_init()
2125 if (pstr_api_struct->config[0].i_channels > 1) { in ia_usac_enc_init()
2127 &(pstr_api_struct->pstr_state->hbe_up_sampler[ele_idx][ch_idx + 1]), upsamp_fac, in ia_usac_enc_init()
2128 pstr_api_struct->spectral_band_replication_tabs.ptr_sos_upsamp_tab); in ia_usac_enc_init()
2136 &(pstr_api_struct->pstr_state->down_samp_sos[ele_idx][ch_idx]), downsamp_fac, in ia_usac_enc_init()
2137 pstr_api_struct->spectral_band_replication_tabs.ptr_sos_downsamp_tab); in ia_usac_enc_init()
2141 if (pstr_api_struct->config[0].i_channels > 1) { in ia_usac_enc_init()
2143 &(pstr_api_struct->pstr_state->down_samp_sos[ele_idx][ch_idx + 1]), downsamp_fac, in ia_usac_enc_init()
2144 pstr_api_struct->spectral_band_replication_tabs.ptr_sos_downsamp_tab); in ia_usac_enc_init()
2151 &(pstr_api_struct->pstr_state->hbe_down_samp_sos[ele_idx][ch_idx]), downsamp_fac, in ia_usac_enc_init()
2152 pstr_api_struct->spectral_band_replication_tabs.ptr_sos_downsamp_tab); in ia_usac_enc_init()
2156 if (pstr_api_struct->config[0].i_channels > 1) { in ia_usac_enc_init()
2158 &(pstr_api_struct->pstr_state->hbe_down_samp_sos[ele_idx][ch_idx + 1]), in ia_usac_enc_init()
2160 pstr_api_struct->spectral_band_replication_tabs.ptr_sos_downsamp_tab); in ia_usac_enc_init()
2166 } else if (pstr_api_struct->config[0].ccfl_idx == SBR_2_1 || in ia_usac_enc_init()
2167 pstr_api_struct->config[0].ccfl_idx == SBR_4_1) { in ia_usac_enc_init()
2169 &(pstr_api_struct->pstr_state->down_sampler[ele_idx][ch_idx]), resamp_ratio, in ia_usac_enc_init()
2170 pstr_api_struct->spectral_band_replication_tabs.ptr_resamp_tab); in ia_usac_enc_init()
2174 if (pstr_api_struct->config[0].i_channels > 1) { in ia_usac_enc_init()
2176 &(pstr_api_struct->pstr_state->down_sampler[ele_idx][ch_idx + 1]), resamp_ratio, in ia_usac_enc_init()
2177 pstr_api_struct->spectral_band_replication_tabs.ptr_resamp_tab); in ia_usac_enc_init()
2184 &(pstr_api_struct->pstr_state->hbe_down_sampler[ele_idx][ch_idx]), resamp_ratio, in ia_usac_enc_init()
2185 pstr_api_struct->spectral_band_replication_tabs.ptr_resamp_tab); in ia_usac_enc_init()
2189 if (pstr_api_struct->config[0].i_channels > 1) { in ia_usac_enc_init()
2191 &(pstr_api_struct->pstr_state->hbe_down_sampler[ele_idx][ch_idx + 1]), in ia_usac_enc_init()
2192 resamp_ratio, pstr_api_struct->spectral_band_replication_tabs.ptr_resamp_tab); in ia_usac_enc_init()
2202 error = iusace_enc_init(pstr_usac_config, &pstr_api_struct->pstr_state->audio_specific_config, in ia_usac_enc_init()
2203 &pstr_api_struct->pstr_state->str_usac_enc_data); in ia_usac_enc_init()
2207 pstr_api_struct->pstr_state->str_usac_enc_data.frame_count = 0; in ia_usac_enc_init()
2212 &(pstr_api_struct->pstr_state->str_bit_buf), pstr_api_struct->pp_mem[IA_MEMTYPE_OUTPUT], in ia_usac_enc_init()
2213 pstr_api_struct->pstr_mem_info[IA_MEMTYPE_OUTPUT].ui_size, 1); in ia_usac_enc_init()
2243 &pstr_api_struct->pstr_state->audio_specific_config, in ia_usac_enc_init()
2245 pstr_api_struct->pstr_state->i_out_bytes = (pstr_ia_asc_bit_buf->cnt_bits + 7) >> 3; in ia_usac_enc_init()
2250 static IA_ERRORCODE ia_enhaacplus_enc_init(ixheaace_api_struct *pstr_api_struct, WORD32 ele_idx) { in ia_enhaacplus_enc_init() argument
2261 ixheaace_state_struct *pstr_enc_state = pstr_api_struct->pstr_state; in ia_enhaacplus_enc_init()
2264 iaace_config *pstr_aac_config = &(pstr_api_struct->config[ele_idx].aac_config); in ia_enhaacplus_enc_init()
2266 ixheaace_config_ancillary *pstr_ancillary = &(pstr_api_struct->config[ele_idx].pstr_ancillary); in ia_enhaacplus_enc_init()
2267 pstr_aac_scratch = (iaace_scratch *)pstr_api_struct->pp_mem[IA_ENHAACPLUSENC_SCRATCH_IDX]; in ia_enhaacplus_enc_init()
2277 pstr_api_struct->pstr_state->temp_buff_aac = in ia_enhaacplus_enc_init()
2278 (void *)pstr_api_struct->pp_mem[IA_ENHAACPLUSENC_SCRATCH_IDX]; in ia_enhaacplus_enc_init()
2279 pstr_api_struct->pstr_state->temp_buff_sbr = in ia_enhaacplus_enc_init()
2280 (void *)((WORD8 *)pstr_api_struct->pp_mem[IA_ENHAACPLUSENC_SCRATCH_IDX] + in ia_enhaacplus_enc_init()
2283 if (pstr_api_struct->config[ele_idx].use_mps && in ia_enhaacplus_enc_init()
2284 pstr_api_struct->config[ele_idx].mps_tree_config != TREE_212) { in ia_enhaacplus_enc_init()
2285 pstr_api_struct->pstr_state->mps_scratch = in ia_enhaacplus_enc_init()
2286 (FLOAT32 *)((WORD8 *)pstr_api_struct->pp_mem[IA_ENHAACPLUSENC_SCRATCH_IDX] + in ia_enhaacplus_enc_init()
2289 pstr_api_struct->pstr_state->ptr_temp_buff_resamp = in ia_enhaacplus_enc_init()
2290 (void *)((WORD8 *)pstr_api_struct->pp_mem[IA_ENHAACPLUSENC_SCRATCH_IDX] + in ia_enhaacplus_enc_init()
2293 pstr_api_struct->pstr_state->ptr_temp_buff_resamp = in ia_enhaacplus_enc_init()
2294 (void *)((WORD8 *)pstr_api_struct->pp_mem[IA_ENHAACPLUSENC_SCRATCH_IDX] + in ia_enhaacplus_enc_init()
2298 if (pstr_api_struct->config[ele_idx].chmode_nchannels == 2) { in ia_enhaacplus_enc_init()
2301 pstr_api_struct->config[ele_idx].chmode_nchannels = in ia_enhaacplus_enc_init()
2302 pstr_api_struct->config[ele_idx].i_channels; in ia_enhaacplus_enc_init()
2305 switch (pstr_api_struct->pstr_state->aot) { in ia_enhaacplus_enc_init()
2309 pstr_api_struct->pstr_state->buffer_offset = INPUT_DELAY_LC; in ia_enhaacplus_enc_init()
2314 pstr_api_struct->pstr_state->buffer_offset = INPUT_DELAY_LD_480; in ia_enhaacplus_enc_init()
2316 pstr_api_struct->pstr_state->buffer_offset = INPUT_DELAY_LD_512; in ia_enhaacplus_enc_init()
2322 pstr_api_struct->pstr_state->buffer_offset = INPUT_DELAY_ELD_480; in ia_enhaacplus_enc_init()
2324 pstr_api_struct->pstr_state->buffer_offset = INPUT_DELAY_ELD_512; in ia_enhaacplus_enc_init()
2328 pstr_api_struct->pstr_state->downsample[ele_idx] = 0; in ia_enhaacplus_enc_init()
2329 pstr_api_struct->config->frame_count = 0; in ia_enhaacplus_enc_init()
2330 core_ch = pstr_api_struct->config[ele_idx].chmode_nchannels; in ia_enhaacplus_enc_init()
2331 pstr_aac_config->sample_rate = pstr_api_struct->config[ele_idx].sample_rate; in ia_enhaacplus_enc_init()
2332 pstr_aac_config->core_sample_rate = pstr_api_struct->config[ele_idx].sample_rate; in ia_enhaacplus_enc_init()
2333 pstr_aac_config->native_sample_rate = pstr_api_struct->config[ele_idx].native_sample_rate; in ia_enhaacplus_enc_init()
2334 pstr_aac_config->num_in_channels = pstr_api_struct->config[ele_idx].i_channels; in ia_enhaacplus_enc_init()
2335 pstr_aac_config->num_out_channels = pstr_api_struct->config[ele_idx].chmode_nchannels; in ia_enhaacplus_enc_init()
2336 if (pstr_api_struct->config[ele_idx].aac_classic == 0) { in ia_enhaacplus_enc_init()
2339 if (pstr_api_struct->pstr_state->mps_enable) { in ia_enhaacplus_enc_init()
2340 switch (pstr_api_struct->pstr_state->mps_tree_config) { in ia_enhaacplus_enc_init()
2355 if (pstr_api_struct->config[ele_idx].use_parametric_stereo) { in ia_enhaacplus_enc_init()
2356 pstr_api_struct->config[ele_idx].chmode_nchannels = 2; in ia_enhaacplus_enc_init()
2359 pstr_api_struct->config[ele_idx].element_type = ID_SCE; in ia_enhaacplus_enc_init()
2361 if ((pstr_api_struct->config[ele_idx].i_channels == 2) && in ia_enhaacplus_enc_init()
2362 (pstr_api_struct->config[ele_idx].chmode == 0)) { in ia_enhaacplus_enc_init()
2363 pstr_api_struct->config[ele_idx].chmode_nchannels = 1; in ia_enhaacplus_enc_init()
2366 if ((pstr_api_struct->config[ele_idx].use_parametric_stereo) && in ia_enhaacplus_enc_init()
2367 (pstr_api_struct->config[ele_idx].aac_classic)) { in ia_enhaacplus_enc_init()
2371 if (!(pstr_api_struct->config[ele_idx].adts_flag) && in ia_enhaacplus_enc_init()
2372 (pstr_api_struct->config[0].aac_config.calc_crc)) { in ia_enhaacplus_enc_init()
2374 pstr_api_struct->config[0].aac_config.calc_crc = 0; in ia_enhaacplus_enc_init()
2378 if ((pstr_api_struct->config[0].chmode == 3) && in ia_enhaacplus_enc_init()
2379 (pstr_api_struct->config[0].aac_config.calc_crc == 1)) { in ia_enhaacplus_enc_init()
2381 pstr_api_struct->config[0].aac_config.calc_crc = 0; in ia_enhaacplus_enc_init()
2387 switch (pstr_api_struct->pstr_state->aot) { in ia_enhaacplus_enc_init()
2405 if (pstr_api_struct->config[ele_idx].eldsbr_found == 1) { in ia_enhaacplus_enc_init()
2416 for (e = 0; e < pstr_api_struct->config[ele_idx].num_bs_elements; e++) { in ia_enhaacplus_enc_init()
2422 pstr_api_struct->spectral_band_replication_tabs.ptr_qmf_tab, in ia_enhaacplus_enc_init()
2423 pstr_api_struct->pstr_state->aot); in ia_enhaacplus_enc_init()
2454 (num_iter <= pstr_api_struct->config[ele_idx].num_bs_elements)); in ia_enhaacplus_enc_init()
2461 pstr_asc->sampling_frequency = pstr_api_struct->config[0].native_sample_rate; in ia_enhaacplus_enc_init()
2462 asc_channels = pstr_api_struct->config[ele_idx].i_channels_mode; in ia_enhaacplus_enc_init()
2464 (pstr_api_struct->pstr_state->mps_enable ? core_ch : asc_channels); in ia_enhaacplus_enc_init()
2466 pstr_api_struct->config[ele_idx].use_parametric_stereo in ia_enhaacplus_enc_init()
2468 : (pstr_api_struct->pstr_state->mps_enable in ia_enhaacplus_enc_init()
2470 : pstr_api_struct->config[ele_idx].i_channels_mode); in ia_enhaacplus_enc_init()
2472 if (!(pstr_api_struct->config[ele_idx].aac_classic) && in ia_enhaacplus_enc_init()
2475 (pstr_api_struct->pstr_state->mps_enable in ia_enhaacplus_enc_init()
2477 : pstr_api_struct->config[ele_idx].chmode_nchannels), in ia_enhaacplus_enc_init()
2479 pstr_api_struct->spectral_band_replication_tabs.ptr_qmf_tab, in ia_enhaacplus_enc_init()
2480 pstr_api_struct->pstr_state->aot)) { in ia_enhaacplus_enc_init()
2485 pstr_api_struct->config[ele_idx].use_parametric_stereo; in ia_enhaacplus_enc_init()
2488 spectral_band_replication_config.is_esbr = pstr_api_struct->config[0].esbr_flag; in ia_enhaacplus_enc_init()
2489 if (pstr_api_struct->pstr_state->aot == AOT_AAC_ELD) { in ia_enhaacplus_enc_init()
2493 } else if (pstr_api_struct->pstr_state->aot == AOT_SBR || in ia_enhaacplus_enc_init()
2494 pstr_api_struct->pstr_state->aot == AOT_PS) { in ia_enhaacplus_enc_init()
2499 if (pstr_api_struct->config[ele_idx].aac_classic == 0) { in ia_enhaacplus_enc_init()
2500 pstr_api_struct->pstr_state->downsample[ele_idx] = 1; in ia_enhaacplus_enc_init()
2503 if (pstr_api_struct->pstr_state->mps_enable) { in ia_enhaacplus_enc_init()
2504 if (pstr_api_struct->pstr_state->mps_tree_config == TREE_212) { in ia_enhaacplus_enc_init()
2510 pstr_mps_memory = pstr_api_struct->pstr_state->mps_pers_mem; in ia_enhaacplus_enc_init()
2511 ixheaace_mps_212_open(&pstr_api_struct->pstr_mps_212_enc, pstr_mps_memory); in ia_enhaacplus_enc_init()
2516 pstr_api_struct->pstr_mps_212_enc, AOT_AAC_ELD, pstr_aac_config->sample_rate, in ia_enhaacplus_enc_init()
2518 pstr_api_struct->config[ele_idx].eldsbr_found ? 2 /*hAacConfig->sbrRatio*/ : 0, in ia_enhaacplus_enc_init()
2524 delay, (WORD8 *)pstr_api_struct->pstr_state->ptr_temp_buff_resamp); in ia_enhaacplus_enc_init()
2530 pstr_api_struct->pstr_mps_212_enc, (WORD8 *)pstr_asc->str_aac_config.sac_cfg_data, in ia_enhaacplus_enc_init()
2541 if (pstr_api_struct->pstr_state->mps_tree_config == TREE_525) { in ia_enhaacplus_enc_init()
2543 } else if (pstr_api_struct->pstr_state->mps_tree_config == TREE_5152) { in ia_enhaacplus_enc_init()
2548 pstr_mps_memory = pstr_api_struct->pstr_state->mps_515_pers_mem; in ia_enhaacplus_enc_init()
2554 &pstr_api_struct->pstr_mps_515_enc, pstr_aac_config->sample_rate, tree_config, in ia_enhaacplus_enc_init()
2568 pstr_api_struct->spectral_band_replication_tabs.ptr_qmf_tab, in ia_enhaacplus_enc_init()
2569 pstr_api_struct->pstr_state->aot, (pstr_api_struct->config[0].ccfl_idx == SBR_4_1)); in ia_enhaacplus_enc_init()
2571 if (pstr_api_struct->config[ele_idx].element_type != ID_LFE) { in ia_enhaacplus_enc_init()
2574 &pstr_api_struct->pstr_state->spectral_band_replication_enc_pers_mem[ele_idx], in ia_enhaacplus_enc_init()
2577 &(pstr_api_struct->spectral_band_replication_tabs), in ia_enhaacplus_enc_init()
2580 pstr_api_struct->config[ele_idx].eldsbr_found; in ia_enhaacplus_enc_init()
2592 if (!pstr_api_struct->config[ele_idx].use_parametric_stereo) { in ia_enhaacplus_enc_init()
2597 &(pstr_api_struct->pstr_state->down_sampler[ele_idx][ch_idx]), 2, in ia_enhaacplus_enc_init()
2598 pstr_api_struct->spectral_band_replication_tabs.ptr_resamp_tab); in ia_enhaacplus_enc_init()
2602 if (pstr_api_struct->config[ele_idx].i_channels > 1) { in ia_enhaacplus_enc_init()
2604 &(pstr_api_struct->pstr_state->down_sampler[ele_idx][ch_idx + 1]), 2, in ia_enhaacplus_enc_init()
2605 pstr_api_struct->spectral_band_replication_tabs.ptr_resamp_tab); in ia_enhaacplus_enc_init()
2612 if (!(pstr_api_struct->config[ele_idx].aac_classic && in ia_enhaacplus_enc_init()
2613 !(pstr_api_struct->config[ele_idx].eldsbr_found))) { in ia_enhaacplus_enc_init()
2614 if (pstr_api_struct->config[ele_idx].aac_classic == 0) { in ia_enhaacplus_enc_init()
2621 pstr_api_struct->pstr_state->buffer_offset = 0; in ia_enhaacplus_enc_init()
2622 pstr_api_struct->config[ele_idx].aac_classic = 1; in ia_enhaacplus_enc_init()
2628 switch (pstr_api_struct->pstr_state->aot) { in ia_enhaacplus_enc_init()
2651 &(pstr_api_struct->pstr_state->aac_enc_pers_mem[ele_idx]), in ia_enhaacplus_enc_init()
2653 &(pstr_api_struct->pstr_aac_tabs), pstr_api_struct->config[ele_idx].element_type, in ia_enhaacplus_enc_init()
2654 pstr_api_struct->config[ele_idx].element_instance_tag, pstr_api_struct->pstr_state->aot); in ia_enhaacplus_enc_init()
2659 if (pstr_api_struct->pstr_mps_212_enc && pstr_api_struct->pstr_state->mps_enable) { in ia_enhaacplus_enc_init()
2660 ixheaace_mps_212_close(&(pstr_api_struct->pstr_mps_212_enc)); in ia_enhaacplus_enc_init()
2662 if (pstr_api_struct->pstr_mps_515_enc && pstr_api_struct->pstr_state->mps_enable) { in ia_enhaacplus_enc_init()
2663 ixheaace_mps_515_close(pstr_api_struct->pstr_mps_212_enc); in ia_enhaacplus_enc_init()
2673 static IA_ERRORCODE ia_enhaacplus_enc_execute(ixheaace_api_struct *pstr_api_struct, in ia_enhaacplus_enc_execute() argument
2700 WORD32 *pstr_aac_scratch = (pWORD32)pstr_api_struct->pp_mem[IA_ENHAACPLUSENC_SCRATCH_IDX]; in ia_enhaacplus_enc_execute()
2703 WORD32 *total_fill_bits = &(pstr_api_struct->pstr_state->total_fill_bits); in ia_enhaacplus_enc_execute()
2705 &(pstr_api_struct->config[0].write_program_config_element); in ia_enhaacplus_enc_execute()
2707 aot = pstr_api_struct->pstr_state->aot; in ia_enhaacplus_enc_execute()
2708 num_bs_elements = pstr_api_struct->config[0].num_bs_elements; in ia_enhaacplus_enc_execute()
2710 i_num_coup_channels = pstr_api_struct->config[0].i_num_coupling_chan; in ia_enhaacplus_enc_execute()
2711 i_channels_mask = pstr_api_struct->config[0].i_channels_mask; in ia_enhaacplus_enc_execute()
2712 aacenc_blocksize = pstr_api_struct->config[0].frame_length; in ia_enhaacplus_enc_execute()
2713 downsample = pstr_api_struct->pstr_state->downsample[ele_idx]; in ia_enhaacplus_enc_execute()
2715 aacenc_blocksize * pstr_api_struct->config[ele_idx].i_native_channels * (1 << downsample); in ia_enhaacplus_enc_execute()
2717 total_channels += pstr_api_struct->config[ele].i_native_channels; in ia_enhaacplus_enc_execute()
2719 pstr_aac_config = &(pstr_api_struct->config[ele_idx].aac_config); in ia_enhaacplus_enc_execute()
2720 if ((pstr_api_struct->config[ele_idx].aac_classic == 0) && in ia_enhaacplus_enc_execute()
2721 pstr_api_struct->config[ele_idx].use_parametric_stereo) { in ia_enhaacplus_enc_execute()
2723 } else if ((pstr_api_struct->config[ele_idx].aac_classic == 1) && in ia_enhaacplus_enc_execute()
2724 (pstr_api_struct->config[ele_idx].num_bs_elements == 1)) { in ia_enhaacplus_enc_execute()
2729 pstr_aac_enc = pstr_api_struct->pstr_state->aac_enc_pers_mem; in ia_enhaacplus_enc_execute()
2731 pw_inp_buf = (pWORD16)pstr_api_struct->pp_mem[IA_ENHAACPLUSENC_INPUT_IDX]; in ia_enhaacplus_enc_execute()
2733 pstr_api_struct->pstr_state->i_out_bytes = 0; in ia_enhaacplus_enc_execute()
2734 pub_out_buf = ((pUWORD8)pstr_api_struct->pp_mem[IA_ENHAACPLUSENC_OUTPUT_IDX]); in ia_enhaacplus_enc_execute()
2738 if (pstr_api_struct->config->adts_flag) { in ia_enhaacplus_enc_execute()
2743 pstr_api_struct->pstr_state->num_anc_data_bytes[ele_idx][ch] = 0; in ia_enhaacplus_enc_execute()
2747 } else if (aot == AOT_AAC_ELD && pstr_api_struct->pstr_state->mps_enable != 1) { in ia_enhaacplus_enc_execute()
2748 if (pstr_api_struct->config[0].aac_config.flag_framelength_small) in ia_enhaacplus_enc_execute()
2752 } else if (aot == AOT_AAC_ELD && pstr_api_struct->pstr_state->mps_enable == 1 && in ia_enhaacplus_enc_execute()
2753 pstr_api_struct->pstr_state->mps_tree_config == TREE_212) { in ia_enhaacplus_enc_execute()
2754 if (pstr_api_struct->config[0].aac_config.flag_framelength_small) in ia_enhaacplus_enc_execute()
2758 } else if (aot == AOT_AAC_ELD && pstr_api_struct->pstr_state->mps_enable == 1 && in ia_enhaacplus_enc_execute()
2759 pstr_api_struct->pstr_state->mps_tree_config != TREE_212) { in ia_enhaacplus_enc_execute()
2762 if (pstr_api_struct->config[ele_idx].aac_classic == 1) { in ia_enhaacplus_enc_execute()
2765 if (aot == AOT_AAC_ELD && pstr_api_struct->pstr_state->mps_enable == 1) { in ia_enhaacplus_enc_execute()
2766 if (pstr_api_struct->pstr_state->mps_tree_config == TREE_212) { in ia_enhaacplus_enc_execute()
2772 if (pstr_api_struct->pstr_state->downsample[ele_idx]) { in ia_enhaacplus_enc_execute()
2773 if (!pstr_api_struct->config[ele_idx].use_parametric_stereo) { in ia_enhaacplus_enc_execute()
2774 if (aot == AOT_AAC_ELD && pstr_api_struct->pstr_state->mps_enable != 1) { in ia_enhaacplus_enc_execute()
2778 write_off_set += (pstr_api_struct->pstr_state->down_sampler[ele_idx][0].delay) * in ia_enhaacplus_enc_execute()
2782 if (pstr_api_struct->config[ele_idx].use_parametric_stereo) { in ia_enhaacplus_enc_execute()
2789 ptr_input_buffer = pstr_api_struct->pstr_state->inp_delay + in ia_enhaacplus_enc_execute()
2793 if (pstr_api_struct->config[0].aac_config.flag_framelength_small) { in ia_enhaacplus_enc_execute()
2794 ptr_input_buffer = pstr_api_struct->pstr_state->inp_delay + in ia_enhaacplus_enc_execute()
2798 ptr_input_buffer = pstr_api_struct->pstr_state->inp_delay + in ia_enhaacplus_enc_execute()
2803 if (pstr_api_struct->config[0].aac_config.flag_framelength_small) { in ia_enhaacplus_enc_execute()
2804 if (pstr_api_struct->pstr_state->mps_enable == 1) { in ia_enhaacplus_enc_execute()
2806 pstr_api_struct->pstr_state->inp_delay + in ia_enhaacplus_enc_execute()
2811 pstr_api_struct->pstr_state->inp_delay + in ia_enhaacplus_enc_execute()
2816 if (pstr_api_struct->pstr_state->mps_enable == 1) { in ia_enhaacplus_enc_execute()
2818 pstr_api_struct->pstr_state->inp_delay + in ia_enhaacplus_enc_execute()
2823 pstr_api_struct->pstr_state->inp_delay + in ia_enhaacplus_enc_execute()
2834 pstr_api_struct->pstr_state->spectral_band_replication_enc_pers_mem[ele_idx]; in ia_enhaacplus_enc_execute()
2835 if (pstr_api_struct->config[ele_idx].element_type != ID_LFE) { in ia_enhaacplus_enc_execute()
2842 UWORD8 *mps_bs = pstr_api_struct->pstr_state->mps_bs; in ia_enhaacplus_enc_execute()
2846 if ((pstr_api_struct->config[ele_idx].num_bs_elements == 1) && in ia_enhaacplus_enc_execute()
2847 (pstr_api_struct->config[ele_idx].i_channels <= 2)) { in ia_enhaacplus_enc_execute()
2848 if (pstr_api_struct->config[ele_idx].aac_classic != 1) { in ia_enhaacplus_enc_execute()
2849 if ((pstr_api_struct->config[ele_idx].i_channels == 2 && in ia_enhaacplus_enc_execute()
2850 pstr_api_struct->config[ele_idx].chmode_nchannels == 2) && in ia_enhaacplus_enc_execute()
2851 (!((pstr_api_struct->pstr_mps_212_enc != NULL) && in ia_enhaacplus_enc_execute()
2852 pstr_api_struct->pstr_state->mps_enable))) { in ia_enhaacplus_enc_execute()
2856 } else if (pstr_api_struct->config[ele_idx].i_channels == 1) { in ia_enhaacplus_enc_execute()
2861 } else if ((pstr_api_struct->pstr_mps_212_enc != NULL) && in ia_enhaacplus_enc_execute()
2862 pstr_api_struct->pstr_state->mps_enable) { in ia_enhaacplus_enc_execute()
2863 ptr_input_buffer_mps = pstr_api_struct->pstr_state->time_signal_mps; in ia_enhaacplus_enc_execute()
2876 if (pstr_api_struct->config[ele_idx].i_channels == 2) { in ia_enhaacplus_enc_execute()
2877 slot = pstr_api_struct->config[ele_idx].element_slot; in ia_enhaacplus_enc_execute()
2886 if (pstr_api_struct->config[ele_idx].i_channels == 1) { in ia_enhaacplus_enc_execute()
2887 slot = pstr_api_struct->config[ele_idx].element_slot; in ia_enhaacplus_enc_execute()
2894 if (pstr_api_struct->config[ele_idx].i_channels == 6) { in ia_enhaacplus_enc_execute()
2895 ptr_input_buffer_mps = pstr_api_struct->pstr_state->time_signal_mps; in ia_enhaacplus_enc_execute()
2902 if ((pstr_api_struct->pstr_mps_212_enc != NULL) && pstr_api_struct->pstr_state->mps_enable) { in ia_enhaacplus_enc_execute()
2903 ptr_input_buffer_mps = pstr_api_struct->pstr_state->time_signal_mps; in ia_enhaacplus_enc_execute()
2904 error = ixheaace_mps_212_process(pstr_api_struct->pstr_mps_212_enc, ptr_input_buffer_mps, in ia_enhaacplus_enc_execute()
2915 if ((pstr_api_struct->pstr_mps_515_enc != NULL) && pstr_api_struct->pstr_state->mps_enable) { in ia_enhaacplus_enc_execute()
2918 FLOAT32 *ptr_downmix_buffer_mps = pstr_api_struct->pstr_state->mps_scratch; in ia_enhaacplus_enc_execute()
2919 VOID *ptr_scratch_515_mps = (VOID *)(pstr_api_struct->pstr_state->mps_scratch + in ia_enhaacplus_enc_execute()
2925 ixheaace_mps_515_apply(pstr_api_struct->pstr_mps_515_enc, &ptr_input_buffer_mps[0], in ia_enhaacplus_enc_execute()
2934 if (pstr_api_struct->pstr_state->mps_tree_config == TREE_5151 || in ia_enhaacplus_enc_execute()
2935 pstr_api_struct->pstr_state->mps_tree_config == TREE_5152) { in ia_enhaacplus_enc_execute()
2949 if (pstr_api_struct->pstr_state->downsample[ele_idx]) { in ia_enhaacplus_enc_execute()
2951 (ixheaace_resampler_scratch *)pstr_api_struct->pstr_state->ptr_temp_buff_resamp; in ia_enhaacplus_enc_execute()
2953 if (pstr_api_struct->config[ele_idx].element_type != ID_LFE) { in ia_enhaacplus_enc_execute()
2957 &(pstr_api_struct->pstr_state->num_anc_data_bytes[ele_idx][0]), in ia_enhaacplus_enc_execute()
2958 pstr_api_struct->pstr_state->anc_data_bytes[ele_idx], in ia_enhaacplus_enc_execute()
2959 &(pstr_api_struct->spectral_band_replication_tabs), &(pstr_api_struct->common_tabs), in ia_enhaacplus_enc_execute()
2961 pstr_api_struct->config[0].aac_config.flag_framelength_small, NULL); in ia_enhaacplus_enc_execute()
2968 if (!pstr_api_struct->config[ele_idx].use_parametric_stereo) { in ia_enhaacplus_enc_execute()
2970 ia_enhaacplus_enc_get_scratch_bufs(pstr_api_struct->pstr_state->temp_buff_sbr, in ia_enhaacplus_enc_execute()
2974 &(pstr_api_struct->pstr_state->down_sampler[ele_idx][ch]), in ia_enhaacplus_enc_execute()
2986 pstr_api_struct->pstr_state->anc_data_bytes[ele_idx], in ia_enhaacplus_enc_execute()
2987 pstr_api_struct->pstr_state->num_anc_data_bytes[ele_idx], pub_out_buf, in ia_enhaacplus_enc_execute()
2988 &(pstr_api_struct->pstr_state->i_out_bytes), &(pstr_api_struct->pstr_aac_tabs), in ia_enhaacplus_enc_execute()
2989 pstr_api_struct->pstr_state->pstr_bit_stream_handle, in ia_enhaacplus_enc_execute()
2990 &(pstr_api_struct->pstr_state->bit_stream), flag_last_element, in ia_enhaacplus_enc_execute()
2992 total_fill_bits, total_channels, aot, pstr_api_struct->config->adts_flag, in ia_enhaacplus_enc_execute()
2993 num_bs_elements, &pstr_api_struct->pstr_state->is_quant_spec_zero, in ia_enhaacplus_enc_execute()
2994 &pstr_api_struct->pstr_state->is_gain_limited); in ia_enhaacplus_enc_execute()
2998 if (pstr_sbr_encoder && !(pstr_api_struct->config[ele_idx].use_parametric_stereo)) { in ia_enhaacplus_enc_execute()
3008 if (pstr_api_struct->config->adts_flag) { in ia_enhaacplus_enc_execute()
3009 pub_out_buf = ((pUWORD8)pstr_api_struct->pp_mem[IA_ENHAACPLUSENC_OUTPUT_IDX]); in ia_enhaacplus_enc_execute()
3013 for (ele = 0; ele < pstr_api_struct->config[0].num_bs_elements; ele++) { in ia_enhaacplus_enc_execute()
3014 num_channels += pstr_api_struct->config[ele].i_channels; in ia_enhaacplus_enc_execute()
3018 pub_out_buf, pstr_api_struct->pstr_state->i_out_bytes, in ia_enhaacplus_enc_execute()
3019 pstr_api_struct->config->aac_config.core_sample_rate, in ia_enhaacplus_enc_execute()
3020 (pstr_api_struct->config[0].num_bs_elements > 1) in ia_enhaacplus_enc_execute()
3022 : pstr_api_struct->config[0].aac_config.num_out_channels); in ia_enhaacplus_enc_execute()
3026 pstr_api_struct->pstr_state->i_out_bytes += header_bytes; in ia_enhaacplus_enc_execute()
3031 static IA_ERRORCODE iusace_process(ixheaace_api_struct *pstr_api_struct) { in iusace_process() argument
3048 ixheaace_state_struct *pstr_state = pstr_api_struct->pstr_state; in iusace_process()
3050 ia_usac_encoder_config_struct *pstr_config = &pstr_api_struct->config[0].usac_config; in iusace_process()
3051 ia_usac_data_struct *pstr_usac_data = &pstr_api_struct->pstr_state->str_usac_enc_data; in iusace_process()
3060 ps_inp_buf = (WORD16 *)pstr_api_struct->pp_mem[IA_MEMTYPE_INPUT]; in iusace_process()
3061 ps_out_buf = (WORD8 *)pstr_api_struct->pp_mem[IA_MEMTYPE_OUTPUT]; in iusace_process()
3068 pstr_api_struct->pstr_state->pp_drc_in_buf[idx % num_ch][idx / num_ch] = in iusace_process()
3069 pstr_api_struct->pstr_state in iusace_process()
3074 ptr_drc_inp_buf[idx] = pstr_api_struct->pstr_state->pp_drc_in_buf[idx]; in iusace_process()
3079 pstr_api_struct->pstr_state->spectral_band_replication_enc_pers_mem[0]; in iusace_process()
3082 UWORD8 *mps_bs = pstr_api_struct->pstr_state->mps_bs; in iusace_process()
3083 FLOAT32 *time_signal_mps = pstr_api_struct->pstr_state->time_signal_mps; in iusace_process()
3090 ia_enhaacplus_enc_compute_resampling_ratio(pstr_api_struct->config[0].ccfl_idx); in iusace_process()
3113 if (pstr_api_struct->config[0].ccfl_idx == SBR_4_1) { in iusace_process()
3115 } else if (pstr_api_struct->config[0].ccfl_idx == SBR_2_1) { in iusace_process()
3122 if (pstr_api_struct->config[0].ccfl_idx == SBR_4_1) { in iusace_process()
3126 if (pstr_api_struct->pstr_state->downsample[0]) { in iusace_process()
3127 if (pstr_api_struct->config[0].ccfl_idx == SBR_8_3) { in iusace_process()
3129 (pstr_api_struct->pstr_state->down_samp_sos[0][0].delay) * IXHEAACE_MAX_CH_IN_BS_ELE; in iusace_process()
3132 (pstr_api_struct->pstr_state->up_sampler[0][0].delay) * IXHEAACE_MAX_CH_IN_BS_ELE; in iusace_process()
3133 } else if (pstr_api_struct->config[0].ccfl_idx == SBR_2_1 || in iusace_process()
3134 pstr_api_struct->config[0].ccfl_idx == SBR_4_1) { in iusace_process()
3136 (pstr_api_struct->pstr_state->down_sampler[0][0].delay) * IXHEAACE_MAX_CH_IN_BS_ELE; in iusace_process()
3140 ptr_input_buffer = pstr_api_struct->pstr_state->inp_delay; in iusace_process()
3141 ccfl_size = pstr_api_struct->config[0].usac_config.ccfl; in iusace_process()
3142 num_samples_read = ccfl_size * pstr_api_struct->config[0].i_channels; in iusace_process()
3143 switch (pstr_api_struct->config[0].ccfl_idx) { in iusace_process()
3161 if ((pstr_api_struct->pstr_mps_212_enc != NULL) && pstr_api_struct->pstr_state->mps_enable) { in iusace_process()
3167 (ixheaace_mps_pstr_struct)pstr_api_struct->pstr_mps_212_enc; in iusace_process()
3170 error = ixheaace_mps_212_process(pstr_api_struct->pstr_mps_212_enc, time_signal_mps, in iusace_process()
3175 if (pstr_api_struct->pstr_state->mps_enable == 1) { in iusace_process()
3182 } else if (pstr_api_struct->config[0].i_channels == 2 && in iusace_process()
3183 pstr_api_struct->config[0].chmode_nchannels == 2) { in iusace_process()
3187 } else if (pstr_api_struct->config[0].i_channels == 1) { in iusace_process()
3213 ixheaace_get_input_scratch_buf(pstr_api_struct->pstr_state->ptr_temp_buff_resamp, in iusace_process()
3216 if (pstr_api_struct->config[0].ccfl_idx == SBR_8_3) { in iusace_process()
3217 WORD32 input_tot = num_samples_read / pstr_api_struct->config[0].i_channels; in iusace_process()
3227 pstr_api_struct->pstr_state->ptr_temp_buff_resamp; in iusace_process()
3229 ia_enhaacplus_enc_get_scratch_bufs(pstr_api_struct->pstr_state->temp_buff_sbr, in iusace_process()
3232 if (pstr_api_struct->config[0].ccfl_idx == SBR_8_3) { in iusace_process()
3235 &(pstr_api_struct->pstr_state->hbe_up_sampler[0][ch]), in_buffer_temp + ch, in iusace_process()
3236 num_samples_read / pstr_api_struct->config[0].i_channels, in iusace_process()
3242 &(pstr_api_struct->pstr_state->hbe_down_samp_sos[0][ch]), in_buffer_temp + ch, in iusace_process()
3249 &(pstr_api_struct->pstr_state->hbe_down_sampler[0][ch]), ptr_input_buffer + ch, in iusace_process()
3250 num_samples_read / pstr_api_struct->config[0].i_channels, in iusace_process()
3260 pstr_api_struct->config[0].i_channels, in iusace_process()
3261 &(pstr_api_struct->pstr_state->num_anc_data_bytes[0][0]), in iusace_process()
3262 pstr_api_struct->pstr_state->anc_data_bytes[0], in iusace_process()
3263 &(pstr_api_struct->spectral_band_replication_tabs), &(pstr_api_struct->common_tabs), in iusace_process()
3265 &pstr_api_struct->pstr_state->str_usac_enc_data.num_sbr_bits); in iusace_process()
3279 ixheaace_get_input_scratch_buf(pstr_api_struct->pstr_state->ptr_temp_buff_resamp, in iusace_process()
3282 if (pstr_api_struct->config[0].ccfl_idx == SBR_8_3) { in iusace_process()
3283 WORD32 input_tot = num_samples_read / pstr_api_struct->config[0].i_channels; in iusace_process()
3293 pstr_api_struct->pstr_state->ptr_temp_buff_resamp; in iusace_process()
3295 ia_enhaacplus_enc_get_scratch_bufs(pstr_api_struct->pstr_state->temp_buff_sbr, in iusace_process()
3298 if (pstr_api_struct->config[0].ccfl_idx == SBR_8_3) { in iusace_process()
3301 &(pstr_api_struct->pstr_state->hbe_up_sampler[0][ch]), in_buffer_temp + ch, in iusace_process()
3302 num_samples_read / pstr_api_struct->config[0].i_channels, in iusace_process()
3308 &(pstr_api_struct->pstr_state->hbe_down_samp_sos[0][ch]), in_buffer_temp + ch, in iusace_process()
3315 &(pstr_api_struct->pstr_state->hbe_down_sampler[0][ch]), in iusace_process()
3317 num_samples_read / pstr_api_struct->config[0].i_channels, in iusace_process()
3324 FLOAT32 *time_signal = pstr_api_struct->pstr_state->time_signal; in iusace_process()
3337 pstr_sbr_encoder, time_signal, time_signal, pstr_api_struct->config[0].i_channels, in iusace_process()
3338 &(pstr_api_struct->pstr_state->num_anc_data_bytes[0][0]), in iusace_process()
3339 pstr_api_struct->pstr_state->anc_data_bytes[0], in iusace_process()
3340 &(pstr_api_struct->spectral_band_replication_tabs), &(pstr_api_struct->common_tabs), in iusace_process()
3342 &pstr_api_struct->pstr_state->str_usac_enc_data.num_sbr_bits); in iusace_process()
3351 ixheaace_get_input_scratch_buf(pstr_api_struct->pstr_state->ptr_temp_buff_resamp, in iusace_process()
3353 if (pstr_api_struct->config[0].ccfl_idx == SBR_8_3) { in iusace_process()
3357 WORD32 input_tot = num_samples_read / pstr_api_struct->config[0].i_channels; in iusace_process()
3365 (ixheaace_resampler_scratch *)pstr_api_struct->pstr_state->ptr_temp_buff_resamp; in iusace_process()
3367 ia_enhaacplus_enc_get_scratch_bufs(pstr_api_struct->pstr_state->temp_buff_sbr, in iusace_process()
3370 if (pstr_api_struct->config[0].ccfl_idx == SBR_8_3) { in iusace_process()
3373 &(pstr_api_struct->pstr_state->up_sampler[0][ch]), in_buffer_temp + ch, in iusace_process()
3374 num_samples_read / pstr_api_struct->config[0].i_channels, IXHEAACE_MAX_CH_IN_BS_ELE, in iusace_process()
3380 &(pstr_api_struct->pstr_state->down_samp_sos[0][ch]), in_buffer_temp + ch, in iusace_process()
3386 if (pstr_api_struct->config[0].ccfl_idx == SBR_2_1) { in iusace_process()
3393 &(pstr_api_struct->pstr_state->down_sampler[0][ch]), in iusace_process()
3395 num_samples_read / pstr_api_struct->config[0].i_channels, IXHEAACE_MAX_CH_IN_BS_ELE, in iusace_process()
3404 ptr_inp_buf[idx] = pstr_api_struct->pstr_state->ptr_in_buf[idx]; in iusace_process()
3423 ptr_inp_buf[idx] = pstr_api_struct->pstr_state->ptr_in_buf[idx]; in iusace_process()
3442 pstr_api_struct->pstr_state->ptr_in_buf[0][idx]; in iusace_process()
3449 iusace_create_bit_buffer(pstr_it_bit_buff, pstr_api_struct->pp_mem[IA_MEMTYPE_OUTPUT], in iusace_process()
3450 pstr_api_struct->pstr_mem_info[IA_MEMTYPE_OUTPUT].ui_size, 1); in iusace_process()
3455 ixheaace_usac_encode(pstr_api_struct->pstr_state->ptr_in_buf, pstr_config, in iusace_process()
3456 &pstr_api_struct->pstr_state->str_usac_enc_data, in iusace_process()
3457 &pstr_api_struct->pstr_state->audio_specific_config, pstr_it_bit_buff, in iusace_process()
3458 pstr_sbr_encoder, pstr_api_struct->pstr_state->pp_drc_in_buf, in iusace_process()
3459 &pstr_api_struct->pstr_state->is_quant_spec_zero, in iusace_process()
3460 &pstr_api_struct->pstr_state->is_gain_limited); in iusace_process()
3468 pstr_api_struct->pstr_state->i_out_bytes = in iusace_process()
3471 pstr_api_struct->pstr_state->i_out_bits = pstr_it_bit_buff->cnt_bits; in iusace_process()
3472 ixheaace_write_audio_preroll_data(pstr_api_struct, pstr_it_bit_buff); in iusace_process()
3479 WORD32 num_samples = pstr_api_struct->config[0].usac_config.ccfl * IXHEAACE_MAX_CH_IN_BS_ELE; in iusace_process()
3480 switch (pstr_api_struct->config[0].ccfl_idx) { in iusace_process()
3517 static void ixheaace_config_drc_parameters(ixheaace_api_struct *pstr_api_struct, in ixheaace_config_drc_parameters() argument
3523 &pstr_api_struct->config[0].usac_config.str_internal_drc_cfg; in ixheaace_config_drc_parameters()
3550 static void ixheaace_get_measured_loudness_info(ixheaace_api_struct *pstr_api_struct, in ixheaace_get_measured_loudness_info() argument
3555 (ia_drc_input_config *)&pstr_api_struct->config[0].usac_config.str_internal_drc_cfg; in ixheaace_get_measured_loudness_info()
3557 pstr_internal_drc_cfg = &pstr_api_struct->config[0].usac_config.str_drc_cfg; in ixheaace_get_measured_loudness_info()
3603 ixheaace_api_struct *pstr_api_struct; in ixheaace_allocate() local
3629 pstr_api_struct = (ixheaace_api_struct *)pstr_output_config->pv_ia_process_api_obj; in ixheaace_allocate()
3630 memset(pstr_api_struct, 0, sizeof(*pstr_api_struct)); in ixheaace_allocate()
3638 ixheaace_get_measured_loudness_info(pstr_api_struct, pstr_input_config); in ixheaace_allocate()
3641 ixheaace_config_drc_parameters(pstr_api_struct, pstr_input_config); in ixheaace_allocate()
3644 memcpy(pstr_input_config->pv_drc_cfg, &pstr_api_struct->config[0].usac_config.str_drc_cfg, in ixheaace_allocate()
3649 ixheaace_set_default_config(pstr_api_struct, pstr_input_config); in ixheaace_allocate()
3651 err_code = ixheaace_set_config_params(pstr_api_struct, pstr_input_config); in ixheaace_allocate()
3679 pstr_api_struct->pstr_mem_info = (ixheaace_mem_info_struct *)pv_value; in ixheaace_allocate()
3680 pstr_api_struct->pp_mem = (pVOID *)((WORD8 *)pv_value + sizeof(ixheaace_mem_info_struct) * 4); in ixheaace_allocate()
3686 pstr_api_struct->config[0].usac_config.use_measured_loudness = 1; in ixheaace_allocate()
3690 ixheaace_fill_mem_tabs(pstr_api_struct, pstr_input_config->aot); in ixheaace_allocate()
3693 ixheaace_alloc_and_assign_mem(pstr_api_struct, pstr_output_config, pstr_input_config); in ixheaace_allocate()
3704 ixheaace_api_struct *pstr_api_struct = (ixheaace_api_struct *)pstr_obj_ixheaace; in ixheaace_init() local
3710 for (ele_idx = 0; ele_idx < pstr_api_struct->config[0].num_bs_elements; ele_idx++) { in ixheaace_init()
3711 channels += pstr_api_struct->config[ele_idx].i_channels; in ixheaace_init()
3713 pstr_api_struct->pstr_state->aot = pstr_input_config->aot; in ixheaace_init()
3715 if ((pstr_api_struct->config[0].use_mps == 1) && in ixheaace_init()
3716 (0 == pstr_api_struct->config->aac_classic || in ixheaace_init()
3717 pstr_api_struct->pstr_state->aot == AOT_USAC)) { in ixheaace_init()
3718 pstr_api_struct->pstr_state->mps_enable = pstr_api_struct->config[0].use_mps; in ixheaace_init()
3719 pstr_api_struct->pstr_state->mps_tree_config = pstr_api_struct->config[0].mps_tree_config; in ixheaace_init()
3721 if (pstr_api_struct->config[0].num_bs_elements == 1) { in ixheaace_init()
3722 pstr_api_struct->config[ele_idx].write_program_config_element = 0; in ixheaace_init()
3725 if (pstr_api_struct->pstr_state->aot != AOT_USAC) { in ixheaace_init()
3726 for (ele_idx = 0; ele_idx < pstr_api_struct->config[0].num_bs_elements; ele_idx++) { in ixheaace_init()
3728 pstr_api_struct->pstr_state->pstr_config[ele_idx] = &pstr_api_struct->config[ele_idx]; in ixheaace_init()
3730 error = ia_enhaacplus_enc_init(pstr_api_struct, ele_idx); in ixheaace_init()
3735 pstr_api_struct->pstr_state->ui_init_done = 1; in ixheaace_init()
3736 total_bitrate_used += pstr_api_struct->config[ele_idx].aac_config.bit_rate; in ixheaace_init()
3741 if (pstr_api_struct->config[0].aac_config.bitreservoir_size != -1) { in ixheaace_init()
3742 WORD32 avg_bytes_per_frame_per_ch = pstr_api_struct->config[0].aac_config.bitreservoir_size; in ixheaace_init()
3743 if (pstr_api_struct->config[0].aac_config.flag_framelength_small) { in ixheaace_init()
3744 if (pstr_api_struct->config[0].aot == AOT_AAC_LC || in ixheaace_init()
3745 pstr_api_struct->config[0].aot == AOT_PS || in ixheaace_init()
3746 pstr_api_struct->config[0].aot == AOT_SBR) { in ixheaace_init()
3747 avg_bytes_per_frame_per_ch = (pstr_api_struct->config[0].aac_config.bit_rate) * in ixheaace_init()
3749 (pstr_api_struct->config[0].aac_config.core_sample_rate * in ixheaace_init()
3750 pstr_api_struct->config[0].i_channels * 8); in ixheaace_init()
3753 avg_bytes_per_frame_per_ch = (pstr_api_struct->config[0].aac_config.bit_rate) * in ixheaace_init()
3755 (pstr_api_struct->config[0].aac_config.core_sample_rate * in ixheaace_init()
3756 pstr_api_struct->config[0].i_channels * 8); in ixheaace_init()
3759 if (pstr_api_struct->config[0].aot == AOT_AAC_LC || in ixheaace_init()
3760 pstr_api_struct->config[0].aot == AOT_PS || in ixheaace_init()
3761 pstr_api_struct->config[0].aot == AOT_SBR) { in ixheaace_init()
3762 avg_bytes_per_frame_per_ch = (pstr_api_struct->config[0].aac_config.bit_rate) * in ixheaace_init()
3764 (pstr_api_struct->config[0].aac_config.core_sample_rate * in ixheaace_init()
3765 pstr_api_struct->config[0].i_channels * 8); in ixheaace_init()
3768 avg_bytes_per_frame_per_ch = (pstr_api_struct->config[0].aac_config.bit_rate) * in ixheaace_init()
3770 (pstr_api_struct->config[0].aac_config.core_sample_rate * in ixheaace_init()
3771 pstr_api_struct->config[0].i_channels * 8); in ixheaace_init()
3775 if (pstr_api_struct->config[0].aac_config.bitreservoir_size < avg_bytes_per_frame_per_ch) { in ixheaace_init()
3783 &(pstr_api_struct->pstr_state->str_bit_buf), pstr_api_struct->pp_mem[IA_MEMTYPE_OUTPUT], in ixheaace_init()
3784 pstr_api_struct->pstr_mem_info[IA_MEMTYPE_OUTPUT].ui_size, 1); in ixheaace_init()
3787 &pstr_api_struct->pstr_state->audio_specific_config, in ixheaace_init()
3788 pstr_api_struct->pstr_state->aot, in ixheaace_init()
3791 pstr_api_struct->pstr_state->i_out_bytes = (pstr_ia_asc_bit_buf->cnt_bits + 7) >> 3; in ixheaace_init()
3793 if (pstr_api_struct->config->aac_classic) { in ixheaace_init()
3795 frame_length * channels * pstr_api_struct->config[0].ui_pcm_wd_sz / 8; in ixheaace_init()
3798 2 * frame_length * channels * pstr_api_struct->config[0].ui_pcm_wd_sz / 8; in ixheaace_init()
3800 pstr_output_config->samp_freq = pstr_api_struct->config[0].native_sample_rate; in ixheaace_init()
3801 pstr_output_config->header_samp_freq = pstr_api_struct->config[0].aac_config.core_sample_rate; in ixheaace_init()
3803 pstr_api_struct->config->aac_classic == 0 ? 2.0f : 1.0f; in ixheaace_init()
3804 switch (pstr_api_struct->config->aot) { in ixheaace_init()
3818 if (pstr_api_struct->config[0].use_mps) { in ixheaace_init()
3819 if (pstr_api_struct->config[0].mps_tree_config == TREE_212) { in ixheaace_init()
3835 pstr_api_struct->pstr_state->pstr_config[0] = &pstr_api_struct->config[0]; in ixheaace_init()
3836 error = ia_usac_enc_init(pstr_api_struct, pstr_input_config->ccfl_idx); in ixheaace_init()
3842 frame_length * channels * (pstr_api_struct->config[0].usac_config.ui_pcm_wd_sz >> 3); in ixheaace_init()
3844 if (pstr_api_struct->config[0].usac_config.use_drc_element) { in ixheaace_init()
3846 memcpy(pstr_drc_cfg, &pstr_api_struct->config[0].usac_config.str_drc_cfg, in ixheaace_init()
3851 if (pstr_api_struct->config[0].usac_config.sbr_enable == 1) { in ixheaace_init()
3852 switch (pstr_api_struct->config[0].ccfl_idx) { in ixheaace_init()
3870 pstr_output_config->samp_freq = pstr_api_struct->config[0].usac_config.native_sample_rate; in ixheaace_init()
3872 pstr_api_struct->config[0].usac_config.native_sample_rate; in ixheaace_init()
3875 pstr_api_struct->config[0].usac_config.use_drc_element) { in ixheaace_init()
3878 pstr_input_config->use_drc_element = pstr_api_struct->config[0].usac_config.use_drc_element; in ixheaace_init()
3881 pstr_api_struct->pstr_state->ui_init_done = 1; in ixheaace_init()
3882 pstr_output_config->i_out_bytes = pstr_api_struct->pstr_state->i_out_bytes; in ixheaace_init()
3887 if (pstr_api_struct->config[0].usac_config.use_delay_adjustment == 1) { in ixheaace_init()
3889 pstr_api_struct->config[0].usac_config.num_preroll_frames; in ixheaace_init()
3913 ixheaace_api_struct *pstr_api_struct = (ixheaace_api_struct *)pstr_obj_ixheaace; in ixheaace_process() local
3915 pstr_api_struct->pstr_state->is_quant_spec_zero = 0; in ixheaace_process()
3916 pstr_api_struct->pstr_state->is_gain_limited = 0; in ixheaace_process()
3917 if (!pstr_api_struct->usac_en) { in ixheaace_process()
3918 for (ele_idx = 0; ele_idx < pstr_api_struct->config[0].num_bs_elements; ele_idx++) { in ixheaace_process()
3919 error = ia_enhaacplus_enc_execute(pstr_api_struct, ele_idx); in ixheaace_process()
3924 if ((error == IA_NO_ERROR) && (pstr_api_struct->pstr_state->is_quant_spec_zero)) { in ixheaace_process()
3927 if ((error == IA_NO_ERROR) && (pstr_api_struct->pstr_state->is_gain_limited)) { in ixheaace_process()
3931 ia_usac_encoder_config_struct *usac_config = &pstr_api_struct->config[0].usac_config; in ixheaace_process()
3933 pstr_api_struct->pstr_state->str_usac_enc_data.usac_independency_flag = 1; in ixheaace_process()
3939 pstr_api_struct->pstr_state->str_usac_enc_data.usac_independency_flag = 0; in ixheaace_process()
3941 if (pstr_api_struct->pstr_state->str_usac_enc_data.frame_count > in ixheaace_process()
3944 pstr_api_struct->pstr_state->str_usac_enc_data.usac_independency_flag = 1; in ixheaace_process()
3946 pstr_api_struct->pstr_state->str_usac_enc_data.usac_independency_flag = 0; in ixheaace_process()
3951 error = iusace_process(pstr_api_struct); in ixheaace_process()
3956 if ((error == IA_NO_ERROR) && (pstr_api_struct->pstr_state->is_quant_spec_zero)) { in ixheaace_process()
3959 if ((error == IA_NO_ERROR) && (pstr_api_struct->pstr_state->is_gain_limited)) { in ixheaace_process()
3970 pstr_output_config->i_out_bytes = pstr_api_struct->pstr_state->i_out_bytes; in ixheaace_process()