Decoder Enhancements (#82)

Significance:
========
[x] Aligned buffer access for scratch memory and scratch memory optimization.

Testing:
=====
[x] MSVS Conformance and CTS are passing.
[x] All previous fuzzer crashes are tested. No crash observed.
[x] For platforms, Conformance tested with different combinations.
[x] Tested Conformance with gcc builds for x86, x86_64, armv7 and armv8.
[x] Tested Conformance with clang builds with address and memory sanitizer flags for x86_64 and armv8.
This commit is contained in:
ShashankPathmudi 2024-03-29 09:49:01 +05:30 committed by GitHub
parent 226c46decb
commit d880b2f9ee
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
24 changed files with 718 additions and 456 deletions

View file

@ -85,5 +85,7 @@
#define BYTE_ALIGN_8 (8)
#define IXHEAAC_GET_SIZE_ALIGNED(size, alignment) ((size + (alignment - 1)) & ~(alignment - 1))
#define IXHEAAC_GET_SIZE_ALIGNED_TYPE(num_ele, ele_size, alignment) \
((((num_ele * ele_size) + (alignment - 1)) & ~(alignment - 1)) / ele_size)
#endif /* IXHEAAC_CONSTANTS_H */

View file

@ -277,13 +277,15 @@ WORD32 ixheaacd_aacdec_decodeframe(
}
if ((object_type == AOT_ER_AAC_LD) || (object_type == AOT_AAC_LTP)) {
if (aac_dec_handle->samples_per_frame <= 512) {
aac_dec_handle->pstr_aac_dec_ch_info[ch]->str_ics_info.ltp2.lag =
aac_dec_handle->ptr_aac_dec_static_channel_info[ch]->ltp_lag_1;
aac_dec_handle->pstr_aac_dec_ch_info[ch]->str_ics_info.ltp.lag =
aac_dec_handle->ptr_aac_dec_static_channel_info[ch]->ltp_lag;
aac_dec_handle->ptr_aac_dec_static_channel_info[ch]->ltp_lag_2;
}
aac_dec_handle->pstr_aac_dec_ch_info[ch]->ltp_buf =
aac_dec_handle->ptr_aac_dec_static_channel_info[ch]->ltp_buf;
aac_dec_handle->pstr_aac_dec_ch_info[ch]->ltp_lag =
aac_dec_handle->ptr_aac_dec_static_channel_info[ch]->ltp_lag;
aac_dec_handle->ptr_aac_dec_static_channel_info[ch]->ltp_lag_1;
}
aac_dec_handle->pstr_aac_dec_ch_info[ch]->scratch_buf_ptr = work_buffer_2;
@ -897,7 +899,9 @@ WORD32 ixheaacd_aacdec_decodeframe(
if (object_type == AOT_ER_AAC_LD) {
for (ch = 0; ch < channel; ch++) {
aac_dec_handle->ptr_aac_dec_static_channel_info[ch]->ltp_lag =
aac_dec_handle->ptr_aac_dec_static_channel_info[ch]->ltp_lag_1 =
aac_dec_handle->pstr_aac_dec_ch_info[ch]->str_ics_info.ltp2.lag;
aac_dec_handle->ptr_aac_dec_static_channel_info[ch]->ltp_lag_2 =
aac_dec_handle->pstr_aac_dec_ch_info[ch]->str_ics_info.ltp.lag;
}
}

View file

@ -122,11 +122,50 @@
#define NUM_AAC_TABLES 8
#define IXHEAACD_CCE_DEC_INFO_MEM_SIZE (610)
#define IXHEAACD_CCE_DEC_INFO_MEM_SIZE_8 (IXHEAACD_CCE_DEC_INFO_MEM_SIZE + 8)
#define LD_OBJ -2
#define SCR_BASE_SCR_8K_SIZE \
(IXHEAAC_GET_SIZE_ALIGNED((2 * CHANNELS * MAX_BINS_LONG * sizeof(WORD32)), BYTE_ALIGN_8))
#define SCR_EXTRA_SCR_4K_0_SIZE \
(2 * IXHEAAC_GET_SIZE_ALIGNED(sizeof(ia_aac_dec_channel_info_struct), sizeof(WORD32)) + \
2 * IXHEAAC_GET_SIZE_ALIGNED(sizeof(ia_aac_sfb_code_book_struct), sizeof(WORD32)) + \
IXHEAAC_GET_SIZE_ALIGNED(sizeof(ia_pns_stereo_data_struct), sizeof(WORD32)))
#define SCR_EXTRA_SCR_4K_2_SIZE \
(IXHEAAC_GET_SIZE_ALIGNED((IA_ENHAACPLUS_DEC_SAMPLES_PER_FRAME * sizeof(WORD32)), BYTE_ALIGN_8))
#define SCR_EXTRA_SCR_4K_3_SIZE \
(IXHEAAC_GET_SIZE_ALIGNED((IA_ENHAACPLUS_DEC_SAMPLES_PER_FRAME * sizeof(WORD32)), BYTE_ALIGN_8))
#define SCR_OUT_DATA_SIZE \
(IXHEAAC_GET_SIZE_ALIGNED((IA_ENHAACPLUS_DEC_SAMPLES_PER_FRAME * sizeof(WORD32)), BYTE_ALIGN_8))
#define SCR_IN_DATA_SIZE \
(2 * IXHEAAC_GET_SIZE_ALIGNED((IA_ENHAACPLUS_DEC_SAMPLES_PER_FRAME * sizeof(WORD32)), \
BYTE_ALIGN_8))
#define SCR_INTER_SCR_SIZE \
(MAX_CHANNEL_COUNT * \
IXHEAAC_GET_SIZE_ALIGNED((IA_ENHAACPLUS_DEC_SAMPLES_PER_FRAME * sizeof(WORD16)), \
BYTE_ALIGN_8))
#define SCR_COUP_CH_OUT_SIZE \
(MAX_CHANNEL_COUNT * \
IXHEAAC_GET_SIZE_ALIGNED((IA_ENHAACPLUS_DEC_SAMPLES_PER_FRAME * sizeof(WORD16)), \
BYTE_ALIGN_8))
#define P_IND_CH_INFO_OFFSET \
(SCR_BASE_SCR_8K_SIZE + SCR_EXTRA_SCR_4K_0_SIZE + SCR_EXTRA_SCR_4K_2_SIZE)
#define HEAACV2_MAX_SIZE \
(max(SCR_BASE_SCR_8K_SIZE + SCR_EXTRA_SCR_4K_0_SIZE + SCR_EXTRA_SCR_4K_2_SIZE + \
SCR_INTER_SCR_SIZE + SCR_COUP_CH_OUT_SIZE, \
MPS_SCRATCH_MEM_SIZE))
#define ELDV2_MAX_SIZE \
(max(SCR_BASE_SCR_8K_SIZE + SCR_EXTRA_SCR_4K_0_SIZE + SCR_EXTRA_SCR_4K_2_SIZE + \
SCR_EXTRA_SCR_4K_3_SIZE + SCR_INTER_SCR_SIZE + SCR_COUP_CH_OUT_SIZE, \
MPS_SCRATCH_MEM_SIZE))
#define LD_MAX_SIZE \
(max(SCR_BASE_SCR_8K_SIZE + SCR_EXTRA_SCR_4K_0_SIZE + SCR_EXTRA_SCR_4K_2_SIZE + \
SCR_OUT_DATA_SIZE + SCR_IN_DATA_SIZE + SCR_INTER_SCR_SIZE + SCR_COUP_CH_OUT_SIZE, \
MPS_SCRATCH_MEM_SIZE))
#define MAX_SCR_SIZE (max(max(HEAACV2_MAX_SIZE, ELDV2_MAX_SIZE), LD_MAX_SIZE))
IA_ERRORCODE ixheaacd_dec_mem_api(ia_exhaacplus_dec_api_struct *p_obj_exhaacplus_dec,
WORD32 i_cmd, WORD32 i_idx, VOID *pv_value) {
pUWORD32 pui_value = pv_value;
@ -256,63 +295,50 @@ static VOID ixheaacd_allocate_aac_scr(
ia_aac_dec_scratch_struct *aac_scratch_struct, VOID *base_scratch_ptr,
VOID *output_ptr, WORD channel, WORD max_channel,
WORD32 audio_object_type) {
WORD32 scratch_used = 0;
aac_scratch_struct->base_scr_8k = base_scratch_ptr;
aac_scratch_struct->extra_scr_4k[1] = (WORD8 *)base_scratch_ptr;
scratch_used += SCR_BASE_SCR_8K_SIZE;
if (channel == 1) {
aac_scratch_struct->extra_scr_4k[0] =
(WORD8 *)base_scratch_ptr + (IXHEAACD_CCE_DEC_INFO_MEM_SIZE_8 * 1024) +
(4 * 1024);
aac_scratch_struct->extra_scr_4k[0] = (WORD8 *)base_scratch_ptr + scratch_used;
scratch_used += SCR_EXTRA_SCR_4K_0_SIZE;
aac_scratch_struct->extra_scr_4k[2] = (WORD8 *)base_scratch_ptr + scratch_used;
scratch_used += SCR_EXTRA_SCR_4K_2_SIZE;
} else {
aac_scratch_struct->extra_scr_4k[0] = output_ptr;
if (max_channel > 2) {
aac_scratch_struct->extra_scr_4k[0] =
(WORD8 *)base_scratch_ptr +
(IXHEAACD_CCE_DEC_INFO_MEM_SIZE_8 * 1024) + (8 * 1024);
aac_scratch_struct->extra_scr_4k[0] = (WORD8 *)base_scratch_ptr + scratch_used;
scratch_used += SCR_EXTRA_SCR_4K_0_SIZE;
}
aac_scratch_struct->extra_scr_4k[2] = (WORD8 *)base_scratch_ptr + scratch_used;
scratch_used += SCR_EXTRA_SCR_4K_2_SIZE;
}
aac_scratch_struct->extra_scr_4k[2] =
(WORD8 *)base_scratch_ptr + (IXHEAACD_CCE_DEC_INFO_MEM_SIZE_8 * 1024) +
(46 * 1024);
if (audio_object_type == AOT_ER_AAC_ELD || audio_object_type == AOT_ER_AAC_LD) {
aac_scratch_struct->extra_scr_4k[0] = (WORD8 *)base_scratch_ptr + scratch_used;
scratch_used += SCR_EXTRA_SCR_4K_0_SIZE;
if (audio_object_type == AOT_ER_AAC_ELD ||
audio_object_type == AOT_ER_AAC_LD) {
aac_scratch_struct->extra_scr_4k[0] =
(WORD8 *)base_scratch_ptr + (IXHEAACD_CCE_DEC_INFO_MEM_SIZE_8 * 1024) +
(4 * 1024);
aac_scratch_struct->extra_scr_4k[2] = (WORD8 *)base_scratch_ptr + scratch_used;
scratch_used += SCR_EXTRA_SCR_4K_2_SIZE;
aac_scratch_struct->extra_scr_4k[2] =
(WORD8 *)base_scratch_ptr + (IXHEAACD_CCE_DEC_INFO_MEM_SIZE_8 * 1024) +
(46 * 1024);
aac_scratch_struct->extra_scr_4k[3] =
(WORD8 *)base_scratch_ptr + (IXHEAACD_CCE_DEC_INFO_MEM_SIZE_8 * 1024) +
(54 * 1024);
aac_scratch_struct->extra_scr_4k[3] = (WORD8 *)base_scratch_ptr + scratch_used;
scratch_used += SCR_EXTRA_SCR_4K_3_SIZE;
}
if ((audio_object_type == AOT_ER_AAC_LD) ||
(audio_object_type == AOT_AAC_LTP)) {
aac_scratch_struct->in_data =
(WORD32 *)((WORD8 *)base_scratch_ptr +
(IXHEAACD_CCE_DEC_INFO_MEM_SIZE_8 * 1024) + (62 * 1024) +
(4 * 16));
aac_scratch_struct->out_data =
(WORD32 *)((WORD8 *)base_scratch_ptr +
(IXHEAACD_CCE_DEC_INFO_MEM_SIZE_8 * 1024) + (56 * 1024) +
(4 * 16));
if ((audio_object_type == AOT_ER_AAC_LD) || (audio_object_type == AOT_AAC_LTP)) {
aac_scratch_struct->out_data = (WORD32 *)((WORD8 *)base_scratch_ptr + scratch_used);
scratch_used += SCR_OUT_DATA_SIZE;
aac_scratch_struct->in_data = (WORD32 *)((WORD8 *)base_scratch_ptr + scratch_used);
scratch_used += SCR_IN_DATA_SIZE;
}
}
VOID ixheaacd_allocate_sbr_scr(ia_sbr_scr_struct *sbr_scratch_struct,
VOID *base_scratch_ptr, VOID *output_ptr,
WORD total_elements, WORD ch_fac,
WORD32 audio_object_type, WORD32 total_channels,
WORD8 *p_qshift_arr, UWORD8 slot_pos,
UWORD8 num_ch) {
WORD32 temp = 0;
VOID ixheaacd_allocate_sbr_scr(ia_sbr_scr_struct *sbr_scratch_struct, VOID *base_scratch_ptr,
VOID *output_ptr, WORD32 total_channels, WORD8 *p_qshift_arr,
UWORD8 slot_pos, UWORD8 num_ch) {
WORD32 j, i;
sbr_scratch_struct->ptr_work_buf_core = base_scratch_ptr;
sbr_scratch_struct->ptr_work_buf = (WORD8 *)base_scratch_ptr + (18 * 1024);
if (p_qshift_arr != NULL && *p_qshift_arr != LD_OBJ) {
WORD32 *tmp_buf = (WORD32 *)output_ptr;
@ -341,34 +367,6 @@ VOID ixheaacd_allocate_sbr_scr(ia_sbr_scr_struct *sbr_scratch_struct,
}
}
}
if (total_elements > 1) {
sbr_scratch_struct->extra_scr_1k[0] =
(WORD8 *)base_scratch_ptr + (18 * 1024);
sbr_scratch_struct->extra_scr_1k[1] =
(WORD8 *)base_scratch_ptr + (19 * 1024);
}
else {
if (ch_fac == 1) {
temp = 2;
} else {
temp = 4;
}
if (audio_object_type != AOT_ER_AAC_ELD) {
sbr_scratch_struct->extra_scr_1k[0] = (WORD8 *)output_ptr + (temp * 1024);
sbr_scratch_struct->extra_scr_1k[1] =
(WORD8 *)base_scratch_ptr + (18 * 1024);
} else {
sbr_scratch_struct->extra_scr_1k[0] =
(WORD8 *)base_scratch_ptr + (18 * 1024);
sbr_scratch_struct->extra_scr_1k[1] =
(WORD8 *)base_scratch_ptr + (19 * 1024);
}
}
}
VOID ixheaacd_get_lib_id_strings(pVOID pv_output) {
@ -1338,49 +1336,8 @@ VOID ixheaacd_fill_aac_mem_tables(
p_mem_info_aac =
&p_obj_exhaacplus_dec->p_mem_info_aac[IA_ENHAACPLUS_DEC_SCRATCH_IDX];
{
if (num_channels > 2) {
WORD32 other_scr1;
WORD32 other_scr2 = 0;
p_mem_info_aac->ui_size = MAX_SCR_SIZE;
p_mem_info_aac->ui_size =
2 * sizeof(WORD32) * IA_ENHAACPLUS_DEC_SAMPLES_PER_FRAME;
other_scr2 = 2 * sizeof(WORD32) * IA_ENHAACPLUS_DEC_SAMPLES_PER_FRAME;
other_scr1 = (4 * 1024);
if (MAX_CC_CHANNEL_NUM > 0) {
other_scr1 +=
sizeof(WORD16) * IA_ENHAACPLUS_DEC_SAMPLES_PER_FRAME * 2;
other_scr1 += (4 * 1024);
other_scr1 += 4 * 12;
}
p_mem_info_aac->ui_size += max(other_scr1, other_scr2);
} else {
p_mem_info_aac->ui_size =
2 * sizeof(WORD32) * IA_ENHAACPLUS_DEC_SAMPLES_PER_FRAME;
p_mem_info_aac->ui_size +=
2 * sizeof(WORD32) * IA_ENHAACPLUS_DEC_SAMPLES_PER_FRAME;
p_mem_info_aac->ui_size +=
sizeof(WORD32) * IA_ENHAACPLUS_DEC_SAMPLES_PER_FRAME;
p_mem_info_aac->ui_size += 4 * 12;
p_mem_info_aac->ui_size +=
((IA_ENHAACPLUS_DEC_SAMPLES_PER_FRAME << 1) * sizeof(WORD32));
p_mem_info_aac->ui_size +=
((IA_ENHAACPLUS_DEC_SAMPLES_PER_FRAME << 1) * sizeof(WORD32));
p_mem_info_aac->ui_size +=
2 * (sizeof(ia_sbr_frame_info_data_struct) + 232);
}
}
p_mem_info_aac->ui_size += 2200000 + 2048 + MPS_SCRATCH_MEM_SIZE;
p_mem_info_aac->ui_alignment = 8;
p_mem_info_aac->ui_type = IA_MEMTYPE_SCRATCH;
}
@ -2196,10 +2153,8 @@ IA_ERRORCODE ixheaacd_dec_init(
p_state_enhaacplus_dec->pstr_stream_sbr[0][0].no_elements) {
ia_sbr_scr_struct sbr_scratch_struct;
WORD16 num_channels_1_t = num_channels_1;
ixheaacd_allocate_sbr_scr(
&sbr_scratch_struct, p_state_enhaacplus_dec->aac_scratch_mem_v,
time_data, 1, 1, p_state_enhaacplus_dec->audio_object_type, 0, NULL,
0, 0);
ixheaacd_allocate_sbr_scr(&sbr_scratch_struct, p_state_enhaacplus_dec->aac_scratch_mem_v,
time_data, 0, NULL, 0, 0);
{
WORD32 audio_object_type = p_state_enhaacplus_dec->audio_object_type;
@ -2794,7 +2749,7 @@ IA_ERRORCODE ixheaacd_dec_execute(
if (p_obj_exhaacplus_dec->aac_config.ui_max_channels > 2) {
WORD32 scratch_pointer;
scratch_pointer = 12 * 1024;
scratch_pointer = (MAX_SCR_SIZE - SCR_INTER_SCR_SIZE);
p_state_enhaacplus_dec->coup_ch_output =
(WORD32 *)((WORD8 *)
@ -3054,9 +3009,8 @@ IA_ERRORCODE ixheaacd_dec_execute(
}
}
WORD16 *intermediate_scr =
(WORD16 *)(WORD8 *)p_state_enhaacplus_dec->aac_scratch_mem_v +
(128 * 1024);
WORD16 *intermediate_scr = (WORD16 *)(WORD8 *)p_state_enhaacplus_dec->aac_scratch_mem_v +
(MAX_SCR_SIZE - SCR_INTER_SCR_SIZE - SCR_COUP_CH_OUT_SIZE);
for (ch_idx1 = 0; ch_idx1 < total_elements; ch_idx1++) {
WORD32 skip_full_decode = 0;
@ -3174,9 +3128,8 @@ IA_ERRORCODE ixheaacd_dec_execute(
&p_state_enhaacplus_dec->ind_cc_info;
if (p_obj_exhaacplus_dec->aac_config.element_instance_order[ch_idx] !=
p_obj_exhaacplus_dec->aac_config.ui_coupling_channel) {
WORD32 pers_used = 0;
skip_full_decode = 1;
pers_used = ixheaacd_set_aac_persistent_buffers(
ixheaacd_set_aac_persistent_buffers(
p_state_enhaacplus_dec->pers_mem_ptr, channel);
{
@ -3212,8 +3165,7 @@ IA_ERRORCODE ixheaacd_dec_execute(
}
}
p_state_enhaacplus_dec->pstr_aac_dec_info[ch_idx]->p_ind_channel_info =
(WORD8 *)p_state_enhaacplus_dec->aac_scratch_mem_v + (8 * 1024) +
pers_used;
(WORD8 *)p_state_enhaacplus_dec->aac_scratch_mem_v + (P_IND_CH_INFO_OFFSET);
}
if (p_obj_exhaacplus_dec->aac_config.element_type[1] < 3 &&
p_obj_exhaacplus_dec->aac_config.element_type[1] > 0 &&
@ -3366,12 +3318,10 @@ IA_ERRORCODE ixheaacd_dec_execute(
if (p_state_enhaacplus_dec->str_sbr_dec_info[ch_idx] &&
p_state_enhaacplus_dec->pstr_stream_sbr[0][0].no_elements) {
ia_sbr_scr_struct sbr_scratch_struct;
ixheaacd_allocate_sbr_scr(
&sbr_scratch_struct, p_state_enhaacplus_dec->aac_scratch_mem_v,
time_data, total_elements, ch_fac,
p_state_enhaacplus_dec->audio_object_type, total_channels,
p_obj_exhaacplus_dec->p_state_aac->qshift_adj,
p_state_enhaacplus_dec->slot_pos, channel);
ixheaacd_allocate_sbr_scr(&sbr_scratch_struct, p_state_enhaacplus_dec->aac_scratch_mem_v,
time_data, total_channels,
p_obj_exhaacplus_dec->p_state_aac->qshift_adj,
p_state_enhaacplus_dec->slot_pos, channel);
p_state_enhaacplus_dec->sbr_present = 1;
p_state_enhaacplus_dec->peak_lim_init = 0;

View file

@ -292,7 +292,8 @@ typedef struct {
ia_aac_dec_ola_data overlap_add_data;
WORD16 *ltp_buf;
UWORD16 ltp_lag;
UWORD16 ltp_lag_1;
UWORD16 ltp_lag_2;
ia_ec_state_str str_ec_state;
} ia_aac_dec_channel_info;

View file

@ -72,9 +72,12 @@ VOID ixheaacd_mps_apply_m1(ia_heaac_mps_state_struct *pstr_mps_state) {
params[3] = hybrid_bands;
rout_real_ptr = pstr_mps_state->mps_scratch_mem_v;
rout_kernel_real_ptr = rout_real_ptr + TSXHB;
rout_imag_ptr = rout_kernel_real_ptr + TSXHB;
rout_kernel_imag_ptr = rout_imag_ptr + TSXHB;
rout_kernel_real_ptr = rout_real_ptr + IXHEAAC_GET_SIZE_ALIGNED_TYPE(
TSXHB, sizeof(*rout_kernel_real_ptr), BYTE_ALIGN_8);
rout_imag_ptr = rout_kernel_real_ptr +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(TSXHB, sizeof(*rout_imag_ptr), BYTE_ALIGN_8);
rout_kernel_imag_ptr = rout_imag_ptr + IXHEAAC_GET_SIZE_ALIGNED_TYPE(
TSXHB, sizeof(*rout_kernel_imag_ptr), BYTE_ALIGN_8);
p_buffer_real = p_array_struct->buf_real;
p_buffer_imag = p_array_struct->buf_imag;

View file

@ -89,7 +89,8 @@ VOID ixheaacd_apply_m2(ia_heaac_mps_state_struct *pstr_mps_state) {
params[3] = hybrid_bands;
rout_ptr = pstr_mps_state->mps_scratch_mem_v;
rout_kernel_ptr = rout_ptr + TSXHB;
rout_kernel_ptr =
rout_ptr + IXHEAAC_GET_SIZE_ALIGNED_TYPE(TSXHB, sizeof(*rout_kernel_ptr), BYTE_ALIGN_8);
p_hyb_out_dry_real = p_array_struct->hyb_output_real_dry;
p_hyb_out_dry_imag = p_array_struct->hyb_output_imag_dry;

View file

@ -699,17 +699,21 @@ static IA_ERRORCODE ixheaacd_parse_extension_frame(ia_heaac_mps_state_struct *ps
for (ch = 0; ch < 2; ch++) {
pstr_mps_state->p_aac_decoder_channel_info[ch] = free_scratch;
free_scratch = (WORD8 *)free_scratch + sizeof(ia_mps_dec_residual_channel_info_struct);
free_scratch =
(WORD8 *)free_scratch +
IXHEAAC_GET_SIZE_ALIGNED(sizeof(ia_mps_dec_residual_channel_info_struct), BYTE_ALIGN_8);
pstr_mps_state->p_aac_decoder_dynamic_data_init[ch] = free_scratch;
free_scratch = (WORD8 *)free_scratch + sizeof(ia_mps_dec_residual_dynamic_data_struct);
free_scratch =
(WORD8 *)free_scratch +
IXHEAAC_GET_SIZE_ALIGNED(sizeof(ia_mps_dec_residual_dynamic_data_struct), BYTE_ALIGN_8);
pstr_mps_state->p_aac_decoder_channel_info[ch]->p_scale_factor =
pstr_mps_state->p_aac_decoder_dynamic_data_init[ch]->a_scale_factor;
pstr_mps_state->p_aac_decoder_channel_info[ch]->p_code_book =
pstr_mps_state->p_aac_decoder_dynamic_data_init[ch]->a_code_book;
pstr_mps_state->p_aac_decoder_channel_info[ch]->p_spectral_coefficient = free_scratch;
free_scratch = (WORD8 *)free_scratch + 4096;
free_scratch = (WORD8 *)free_scratch + IXHEAAC_GET_SIZE_ALIGNED(4096, BYTE_ALIGN_8);
pstr_mps_state->p_aac_decoder_channel_info[ch]->p_tns_scratch = free_scratch;
free_scratch = (WORD8 *)free_scratch + 4096;
free_scratch = (WORD8 *)free_scratch + IXHEAAC_GET_SIZE_ALIGNED(4096, BYTE_ALIGN_8);
pstr_mps_state->p_aac_decoder_channel_info[ch]->ics_info.frame_length = AAC_FRAME_LENGTH;
pstr_mps_state->p_aac_decoder_channel_info[ch]->common_window = 0;
}
@ -1473,9 +1477,12 @@ static IA_ERRORCODE ixheaacd_map_index_data(
db_1 = ott_vs_tot_db_1;
db_2 = ott_vs_tot_db_2;
a_param_slots = scratch;
a_interpolate = a_param_slots + MAX_PARAMETER_SETS;
a_map = a_interpolate + MAX_PARAMETER_SETS;
free_scratch = a_map + MAX_PARAMETER_BANDS_PLUS_1;
a_interpolate = a_param_slots + IXHEAAC_GET_SIZE_ALIGNED_TYPE(
MAX_PARAMETER_SETS, sizeof(*a_interpolate), BYTE_ALIGN_8);
a_map = a_interpolate +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_SETS, sizeof(*a_map), BYTE_ALIGN_8);
free_scratch = a_map + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS_PLUS_1, sizeof(*a_map),
BYTE_ALIGN_8);
data_sets = 0;
for (i = 0; i < num_parameter_sets; i++) {
@ -1736,16 +1743,23 @@ static IA_ERRORCODE ixheaacd_decode_and_map_frame_ott(ia_heaac_mps_state_struct
WORD32 quant_mode = curr_state->quant_mode;
tot_db = pstr_mps_state->mps_scratch_mem_v;
ott_vs_tot_db_fc = tot_db + MAX_PSXPB;
ott_vs_tot_db_s = ott_vs_tot_db_fc + MAX_PSXPB;
ott_vs_tot_db_f = ott_vs_tot_db_s + MAX_PSXPB;
ott_vs_tot_db_c = ott_vs_tot_db_f + MAX_PSXPB;
ott_vs_tot_db_lr = ott_vs_tot_db_c + MAX_PSXPB;
ott_vs_tot_db_l = ott_vs_tot_db_lr + MAX_PSXPB;
ott_vs_tot_db_r = ott_vs_tot_db_l + MAX_PSXPB;
tmp1 = ott_vs_tot_db_r + MAX_PSXPB;
tmp2 = tmp1 + MAX_PSXPB;
free_scratch = tmp2 + MAX_PSXPB;
ott_vs_tot_db_fc =
tot_db + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PSXPB, sizeof(*ott_vs_tot_db_fc), BYTE_ALIGN_8);
ott_vs_tot_db_s = ott_vs_tot_db_fc + IXHEAAC_GET_SIZE_ALIGNED_TYPE(
MAX_PSXPB, sizeof(*ott_vs_tot_db_s), BYTE_ALIGN_8);
ott_vs_tot_db_f = ott_vs_tot_db_s + IXHEAAC_GET_SIZE_ALIGNED_TYPE(
MAX_PSXPB, sizeof(*ott_vs_tot_db_f), BYTE_ALIGN_8);
ott_vs_tot_db_c = ott_vs_tot_db_f + IXHEAAC_GET_SIZE_ALIGNED_TYPE(
MAX_PSXPB, sizeof(*ott_vs_tot_db_c), BYTE_ALIGN_8);
ott_vs_tot_db_lr = ott_vs_tot_db_c + IXHEAAC_GET_SIZE_ALIGNED_TYPE(
MAX_PSXPB, sizeof(*ott_vs_tot_db_lr), BYTE_ALIGN_8);
ott_vs_tot_db_l = ott_vs_tot_db_lr + IXHEAAC_GET_SIZE_ALIGNED_TYPE(
MAX_PSXPB, sizeof(*ott_vs_tot_db_l), BYTE_ALIGN_8);
ott_vs_tot_db_r = ott_vs_tot_db_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(
MAX_PSXPB, sizeof(*ott_vs_tot_db_r), BYTE_ALIGN_8);
tmp1 = ott_vs_tot_db_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PSXPB, sizeof(*tmp1), BYTE_ALIGN_8);
tmp2 = tmp1 + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PSXPB, sizeof(*tmp2), BYTE_ALIGN_8);
free_scratch = tmp2 + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PSXPB, sizeof(*tmp2), BYTE_ALIGN_8);
p_cur_bs = pstr_mps_state->bs_frame;
num_ott_boxes = curr_state->num_ott_boxes;
@ -2026,7 +2040,9 @@ static VOID ixheaacd_decode_and_map_frame_smg(ia_heaac_mps_state_struct *pstr_mp
ia_mps_dec_spatial_bs_frame_struct *frame = pstr_mps_state->bs_frame;
pstr_mps_state->smooth_control = frame->bs_smooth_control;
a_group_to_band = pstr_mps_state->mps_scratch_mem_v;
free_scratch = a_group_to_band + MAX_PARAMETER_BANDS_PLUS_1;
free_scratch =
a_group_to_band + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS_PLUS_1,
sizeof(*a_group_to_band), BYTE_ALIGN_8);
if (pstr_mps_state->smooth_control) {
for (ps = 0; ps < pstr_mps_state->num_parameter_sets; ps++) {

View file

@ -301,11 +301,17 @@ static VOID ixheaacd_update_down_mix_state(ia_heaac_mps_state_struct *pstr_mps_s
WORD32 num_parameter_bands = pstr_mps_state->num_parameter_bands;
WORD32 hybrid_bands = pstr_mps_state->hybrid_bands;
excitation_0 = pstr_mps_state->mps_scratch_mem_v;
q_excitation_0 = (WORD16 *)pstr_mps_state->mps_scratch_mem_v + PARAMETER_BANDSX2;
excitation_1 = excitation_0 + PARAMETER_BANDSX1_5;
q_excitation_1 = q_excitation_0 + PARAMETER_BANDSX3;
excitation_2 = excitation_1 + PARAMETER_BANDSX1_5;
q_excitation_2 = q_excitation_1 + PARAMETER_BANDSX3;
q_excitation_0 =
(WORD16 *)pstr_mps_state->mps_scratch_mem_v +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(PARAMETER_BANDSX2, sizeof(*q_excitation_0), BYTE_ALIGN_8);
excitation_1 = excitation_0 + IXHEAAC_GET_SIZE_ALIGNED_TYPE(
PARAMETER_BANDSX1_5, sizeof(*excitation_1), BYTE_ALIGN_8);
q_excitation_1 = q_excitation_0 + IXHEAAC_GET_SIZE_ALIGNED_TYPE(
PARAMETER_BANDSX3, sizeof(*q_excitation_1), BYTE_ALIGN_8);
excitation_2 = excitation_1 + IXHEAAC_GET_SIZE_ALIGNED_TYPE(
PARAMETER_BANDSX1_5, sizeof(*excitation_2), BYTE_ALIGN_8);
q_excitation_2 = q_excitation_1 + IXHEAAC_GET_SIZE_ALIGNED_TYPE(
PARAMETER_BANDSX3, sizeof(*q_excitation_2), BYTE_ALIGN_8);
p_x_real = &pstr_mps_state->array_struct->x_real[offset * MAX_HYBRID_BANDS];
p_x_imag = &pstr_mps_state->array_struct->x_imag[offset * MAX_HYBRID_BANDS];

View file

@ -56,14 +56,18 @@ VOID ixheaacd_calc_m1m2_emm(ia_heaac_mps_state_struct *pstr_mps_state) {
WORD16 *dummy3, *dummy4;
h11 = pstr_mps_state->mps_scratch_mem_v;
h12 = h11 + MAX_PARAMETER_BANDS;
h21 = h12 + MAX_PARAMETER_BANDS;
h22 = h21 + MAX_PARAMETER_BANDS;
dummy1 = h22 + MAX_PARAMETER_BANDS;
dummy2 = dummy1 + MAX_PARAMETER_BANDS;
h12 = h11 + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12), BYTE_ALIGN_8);
h21 = h12 + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h21), BYTE_ALIGN_8);
h22 = h21 + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22), BYTE_ALIGN_8);
dummy1 =
h22 + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*dummy1), BYTE_ALIGN_8);
dummy2 =
dummy1 + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*dummy2), BYTE_ALIGN_8);
dummy3 = (WORD16 *)pstr_mps_state->mps_scratch_mem_v + PARAMETER_BANDSX12;
dummy4 = dummy3 + MAX_PARAMETER_BANDS;
dummy3 = (WORD16 *)pstr_mps_state->mps_scratch_mem_v +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(PARAMETER_BANDSX12, sizeof(*dummy3), BYTE_ALIGN_8);
dummy4 =
dummy3 + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*dummy4), BYTE_ALIGN_8);
for (ps = 0; ps < pstr_mps_state->num_parameter_sets; ps++) {
ixheaacd_param_2_umx_ps(pstr_mps_state, h11, h12, h21, h22, dummy1, dummy2, dummy3, dummy4, 0,

View file

@ -74,40 +74,73 @@ VOID ixheaacd_calc_m1m2_5151(ia_heaac_mps_state_struct *pstr_mps_state) {
WORD32 *res_bands = pstr_mps_state->res_bands;
h11_fs = pstr_mps_state->mps_scratch_mem_v;
h11_c = h11_fs + MAX_PARAMETER_BANDS;
h12_fs = h11_c + MAX_PARAMETER_BANDS;
h12_c = h12_fs + MAX_PARAMETER_BANDS;
h21_fs = h12_c + MAX_PARAMETER_BANDS;
h21_c = h21_fs + MAX_PARAMETER_BANDS;
h22_fs = h21_c + MAX_PARAMETER_BANDS;
h22_c = h22_fs + MAX_PARAMETER_BANDS;
h12_res_fs = h22_c + MAX_PARAMETER_BANDS;
h12_res_c = h12_res_fs + MAX_PARAMETER_BANDS;
h22_res_fs = h12_res_c + MAX_PARAMETER_BANDS;
h22_res_c = h22_res_fs + MAX_PARAMETER_BANDS;
h11_f = h22_res_c + MAX_PARAMETER_BANDS;
h11_s = h11_f + MAX_PARAMETER_BANDS;
h12_f = h11_s + MAX_PARAMETER_BANDS;
h12_s = h12_f + MAX_PARAMETER_BANDS;
h21_f = h12_s + MAX_PARAMETER_BANDS;
h21_s = h21_f + MAX_PARAMETER_BANDS;
h22_f = h21_s + MAX_PARAMETER_BANDS;
h22_s = h22_f + MAX_PARAMETER_BANDS;
h12_res_f = h22_s + MAX_PARAMETER_BANDS;
h12_res_s = h12_res_f + MAX_PARAMETER_BANDS;
h22_res_f = h12_res_s + MAX_PARAMETER_BANDS;
h22_res_s = h22_res_f + MAX_PARAMETER_BANDS;
c_r_clfe = h22_res_s + MAX_PARAMETER_BANDS;
c_l_clfe = c_r_clfe + MAX_PARAMETER_BANDS;
h11_c =
h11_fs + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h11_c), BYTE_ALIGN_8);
h12_fs =
h11_c + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_fs), BYTE_ALIGN_8);
h12_c =
h12_fs + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_c), BYTE_ALIGN_8);
h21_fs =
h12_c + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h21_fs), BYTE_ALIGN_8);
h21_c =
h21_fs + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h21_c), BYTE_ALIGN_8);
h22_fs =
h21_c + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_fs), BYTE_ALIGN_8);
h22_c =
h22_fs + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_c), BYTE_ALIGN_8);
h12_res_fs = h22_c + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_res_fs),
BYTE_ALIGN_8);
h12_res_c = h12_res_fs + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_res_c),
BYTE_ALIGN_8);
h22_res_fs = h12_res_c + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_res_fs),
BYTE_ALIGN_8);
h22_res_c = h22_res_fs + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_res_c),
BYTE_ALIGN_8);
h11_f = h22_res_c +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h11_f), BYTE_ALIGN_8);
h11_s =
h11_f + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h11_s), BYTE_ALIGN_8);
h12_f =
h11_s + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_f), BYTE_ALIGN_8);
h12_s =
h12_f + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_s), BYTE_ALIGN_8);
h21_f =
h12_s + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h21_f), BYTE_ALIGN_8);
h21_s =
h21_f + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h21_s), BYTE_ALIGN_8);
h22_f =
h21_s + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_f), BYTE_ALIGN_8);
h22_s =
h22_f + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_s), BYTE_ALIGN_8);
h12_res_f = h22_s + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_res_f),
BYTE_ALIGN_8);
h12_res_s = h12_res_f + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_res_s),
BYTE_ALIGN_8);
h22_res_f = h12_res_s + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_res_f),
BYTE_ALIGN_8);
h22_res_s = h22_res_f + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_res_s),
BYTE_ALIGN_8);
c_r_clfe = h22_res_s +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_r_clfe), BYTE_ALIGN_8);
c_l_clfe = c_r_clfe +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_l_clfe), BYTE_ALIGN_8);
c_l_fs = (WORD16 *)pstr_mps_state->mps_scratch_mem_v + PARAMETER_BANDSX52;
c_l_c = c_l_fs + MAX_PARAMETER_BANDS;
c_r_fs = c_l_c + MAX_PARAMETER_BANDS;
c_r_c = c_r_fs + MAX_PARAMETER_BANDS;
c_l_f = c_r_c + MAX_PARAMETER_BANDS;
c_l_s = c_l_f + MAX_PARAMETER_BANDS;
c_r_f = c_l_s + MAX_PARAMETER_BANDS;
c_r_s = c_r_f + MAX_PARAMETER_BANDS;
c_l_fs = (WORD16 *)pstr_mps_state->mps_scratch_mem_v +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(PARAMETER_BANDSX52, sizeof(*c_l_fs), BYTE_ALIGN_8);
c_l_c =
c_l_fs + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_l_c), BYTE_ALIGN_8);
c_r_fs =
c_l_c + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_r_fs), BYTE_ALIGN_8);
c_r_c =
c_r_fs + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_r_c), BYTE_ALIGN_8);
c_l_f =
c_r_c + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_l_f), BYTE_ALIGN_8);
c_l_s =
c_l_f + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_l_s), BYTE_ALIGN_8);
c_r_f =
c_l_s + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_r_f), BYTE_ALIGN_8);
c_r_s =
c_r_f + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_r_s), BYTE_ALIGN_8);
for (ps = 0; ps < num_parameter_sets; ps++) {
ixheaacd_param_2_umx_ps(pstr_mps_state, h11_fs, h12_fs, h21_fs, h22_fs, h12_res_fs,
@ -277,40 +310,73 @@ VOID ixheaacd_calc_m1m2_5152(ia_heaac_mps_state_struct *pstr_mps_state) {
WORD32 *res_bands = pstr_mps_state->res_bands;
h11_lr = pstr_mps_state->mps_scratch_mem_v;
h11_c = h11_lr + MAX_PARAMETER_BANDS;
h12_lr = h11_c + MAX_PARAMETER_BANDS;
h12_c = h12_lr + MAX_PARAMETER_BANDS;
h21_lr = h12_c + MAX_PARAMETER_BANDS;
h21_c = h21_lr + MAX_PARAMETER_BANDS;
h22_lr = h21_c + MAX_PARAMETER_BANDS;
h22_c = h22_lr + MAX_PARAMETER_BANDS;
h12_res_lr = h22_c + MAX_PARAMETER_BANDS;
h12_res_c = h12_res_lr + MAX_PARAMETER_BANDS;
h22_res_lr = h12_res_c + MAX_PARAMETER_BANDS;
h22_res_c = h22_res_lr + MAX_PARAMETER_BANDS;
h11_l = h22_res_c + MAX_PARAMETER_BANDS;
h11_r = h11_l + MAX_PARAMETER_BANDS;
h12_l = h11_r + MAX_PARAMETER_BANDS;
h12_r = h12_l + MAX_PARAMETER_BANDS;
h21_l = h12_r + MAX_PARAMETER_BANDS;
h21_r = h21_l + MAX_PARAMETER_BANDS;
h22_l = h21_r + MAX_PARAMETER_BANDS;
h22_r = h22_l + MAX_PARAMETER_BANDS;
h12_res_l = h22_r + MAX_PARAMETER_BANDS;
h12_res_r = h12_res_l + MAX_PARAMETER_BANDS;
h22_res_l = h12_res_r + MAX_PARAMETER_BANDS;
h22_res_r = h22_res_l + MAX_PARAMETER_BANDS;
c_r_clfe = h22_res_r + MAX_PARAMETER_BANDS;
c_l_clfe = c_r_clfe + MAX_PARAMETER_BANDS;
h11_c =
h11_lr + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h11_c), BYTE_ALIGN_8);
h12_lr =
h11_c + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_lr), BYTE_ALIGN_8);
h12_c =
h12_lr + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_c), BYTE_ALIGN_8);
h21_lr =
h12_c + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h21_lr), BYTE_ALIGN_8);
h21_c =
h21_lr + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h21_c), BYTE_ALIGN_8);
h22_lr =
h21_c + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_lr), BYTE_ALIGN_8);
h22_c =
h22_lr + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_c), BYTE_ALIGN_8);
h12_res_lr = h22_c + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_res_lr),
BYTE_ALIGN_8);
h12_res_c = h12_res_lr + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_res_c),
BYTE_ALIGN_8);
h22_res_lr = h12_res_c + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_res_lr),
BYTE_ALIGN_8);
h22_res_c = h22_res_lr + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_res_c),
BYTE_ALIGN_8);
h11_l = h22_res_c +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h11_l), BYTE_ALIGN_8);
h11_r =
h11_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h11_r), BYTE_ALIGN_8);
h12_l =
h11_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_l), BYTE_ALIGN_8);
h12_r =
h12_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_r), BYTE_ALIGN_8);
h21_l =
h12_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h21_l), BYTE_ALIGN_8);
h21_r =
h21_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h21_r), BYTE_ALIGN_8);
h22_l =
h21_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_l), BYTE_ALIGN_8);
h22_r =
h22_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_r), BYTE_ALIGN_8);
h12_res_l = h22_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_res_l),
BYTE_ALIGN_8);
h12_res_r = h12_res_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_res_r),
BYTE_ALIGN_8);
h22_res_l = h12_res_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_res_l),
BYTE_ALIGN_8);
h22_res_r = h22_res_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_res_r),
BYTE_ALIGN_8);
c_r_clfe = h22_res_r +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_r_clfe), BYTE_ALIGN_8);
c_l_clfe = c_r_clfe +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_l_clfe), BYTE_ALIGN_8);
c_l_lr = (WORD16 *)pstr_mps_state->mps_scratch_mem_v + PARAMETER_BANDSX52;
c_l_c = c_l_lr + MAX_PARAMETER_BANDS;
c_r_lr = c_l_c + MAX_PARAMETER_BANDS;
c_r_c = c_r_lr + MAX_PARAMETER_BANDS;
c_l_l = c_r_c + MAX_PARAMETER_BANDS;
c_l_r = c_l_l + MAX_PARAMETER_BANDS;
c_r_l = c_l_r + MAX_PARAMETER_BANDS;
c_r_r = c_r_l + MAX_PARAMETER_BANDS;
c_l_lr = (WORD16 *)pstr_mps_state->mps_scratch_mem_v +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(PARAMETER_BANDSX52, sizeof(*c_l_lr), BYTE_ALIGN_8);
c_l_c =
c_l_lr + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_l_c), BYTE_ALIGN_8);
c_r_lr =
c_l_c + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_r_lr), BYTE_ALIGN_8);
c_r_c =
c_r_lr + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_r_c), BYTE_ALIGN_8);
c_l_l =
c_r_c + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_l_l), BYTE_ALIGN_8);
c_l_r =
c_l_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_l_r), BYTE_ALIGN_8);
c_r_l =
c_l_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_r_l), BYTE_ALIGN_8);
c_r_r =
c_r_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_r_r), BYTE_ALIGN_8);
for (ps = 0; ps < num_parameter_sets; ps++) {
ixheaacd_param_2_umx_ps(pstr_mps_state, h11_c, h12_c, h21_c, h22_c, h12_res_c, h22_res_c,

View file

@ -67,15 +67,18 @@ VOID ixheaacd_calc_m1m2_51s1(ia_heaac_mps_state_struct *pstr_mps_state) {
WORD32 num_parameter_sets = pstr_mps_state->num_parameter_sets;
WORD32 num_parameter_bands = pstr_mps_state->num_parameter_bands;
iid = pstr_mps_state->mps_scratch_mem_v;
icc = iid + MAX_PARAMETER_BANDS;
h11 = icc + MAX_PARAMETER_BANDS;
h12 = h11 + MAX_PARAMETER_BANDS;
h21 = h12 + MAX_PARAMETER_BANDS;
h22 = h21 + MAX_PARAMETER_BANDS;
h12_res = h22 + MAX_PARAMETER_BANDS;
h22_res = h12_res + MAX_PARAMETER_BANDS;
c_l = (WORD16 *)pstr_mps_state->mps_scratch_mem_v + PARAMETER_BANDSX16;
c_r = c_l + MAX_PARAMETER_BANDS;
icc = iid + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*icc), BYTE_ALIGN_8);
h11 = icc + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h11), BYTE_ALIGN_8);
h12 = h11 + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12), BYTE_ALIGN_8);
h21 = h12 + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h21), BYTE_ALIGN_8);
h22 = h21 + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22), BYTE_ALIGN_8);
h12_res =
h22 + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_res), BYTE_ALIGN_8);
h22_res = h12_res +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_res), BYTE_ALIGN_8);
c_l = (WORD16 *)pstr_mps_state->mps_scratch_mem_v +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(PARAMETER_BANDSX16, sizeof(*c_l), BYTE_ALIGN_8);
c_r = c_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_r), BYTE_ALIGN_8);
for (ps = 0; ps < num_parameter_sets; ps++) {
for (pb = 0; pb < num_parameter_bands; pb++) {
@ -200,16 +203,19 @@ VOID ixheaacd_calc_m1m2_51s2(ia_heaac_mps_state_struct *pstr_mps_state) {
WORD32 num_parameter_bands = pstr_mps_state->num_parameter_bands;
iid = pstr_mps_state->mps_scratch_mem_v;
icc = iid + MAX_PARAMETER_BANDS;
h11 = icc + MAX_PARAMETER_BANDS;
h12 = h11 + MAX_PARAMETER_BANDS;
h21 = h12 + MAX_PARAMETER_BANDS;
h22 = h21 + MAX_PARAMETER_BANDS;
h12_res = h22 + MAX_PARAMETER_BANDS;
h22_res = h12_res + MAX_PARAMETER_BANDS;
g_s = h22_res + MAX_PARAMETER_BANDS;
c_l = (WORD16 *)pstr_mps_state->mps_scratch_mem_v + PARAMETER_BANDSX18;
c_r = c_l + MAX_PARAMETER_BANDS;
icc = iid + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*icc), BYTE_ALIGN_8);
h11 = icc + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h11), BYTE_ALIGN_8);
h12 = h11 + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12), BYTE_ALIGN_8);
h21 = h12 + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h21), BYTE_ALIGN_8);
h22 = h21 + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22), BYTE_ALIGN_8);
h12_res =
h22 + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_res), BYTE_ALIGN_8);
h22_res = h12_res +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_res), BYTE_ALIGN_8);
g_s = h22_res + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*g_s), BYTE_ALIGN_8);
c_l = (WORD16 *)pstr_mps_state->mps_scratch_mem_v +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(PARAMETER_BANDSX18, sizeof(*c_l), BYTE_ALIGN_8);
c_r = c_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_r), BYTE_ALIGN_8);
for (ps = 0; ps < num_parameter_sets; ps++) {
for (pb = 0; pb < num_parameter_bands; pb++) {

View file

@ -70,15 +70,20 @@ VOID ixheaacd_calc_m1m2_5227(ia_heaac_mps_state_struct *pstr_mps_state) {
const WORD32 *cld_tab_1 = pstr_mps_state->ia_mps_dec_mps_table.m1_m2_table_ptr->cld_tab_1;
lf = pstr_mps_state->mps_scratch_mem_v;
ls = lf + MAX_PARAMETER_BANDS;
rf = ls + MAX_PARAMETER_BANDS;
rs = rf + MAX_PARAMETER_BANDS;
a_c1 = rs + MAX_PARAMETER_BANDS;
a_c2 = a_c1 + MAX_PARAMETER_BANDS;
a_icc_c = a_c2 + MAX_PARAMETER_BANDS;
a_prediction_mode = a_icc_c + MAX_PARAMETER_BANDS;
m_real = a_prediction_mode + MAX_PARAMETER_BANDS;
m_imag = m_real + PARAMETER_BANDSX15;
ls = lf + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*ls), BYTE_ALIGN_8);
rf = ls + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*rf), BYTE_ALIGN_8);
rs = rf + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*rs), BYTE_ALIGN_8);
a_c1 = rs + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*a_c1), BYTE_ALIGN_8);
a_c2 = a_c1 + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*a_c2), BYTE_ALIGN_8);
a_icc_c =
a_c2 + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*a_icc_c), BYTE_ALIGN_8);
a_prediction_mode =
a_icc_c + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*a_prediction_mode),
BYTE_ALIGN_8);
m_real = a_prediction_mode +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*m_real), BYTE_ALIGN_8);
m_imag =
m_real + IXHEAAC_GET_SIZE_ALIGNED_TYPE(PARAMETER_BANDSX15, sizeof(*m_imag), BYTE_ALIGN_8);
for (i = 0; i < PARAMETER_BANDSX15; i++) {
m_real[i] = 0;
@ -295,26 +300,44 @@ VOID ixheaacd_calc_m1m2_5251(ia_heaac_mps_state_struct *pstr_mps_state) {
WORD64 acc;
h11_l = pstr_mps_state->mps_scratch_mem_v;
h11_r = h11_l + MAX_PARAMETER_BANDS;
h12_l = h11_r + MAX_PARAMETER_BANDS;
h12_r = h12_l + MAX_PARAMETER_BANDS;
h21_l = h12_r + MAX_PARAMETER_BANDS;
h21_r = h21_l + MAX_PARAMETER_BANDS;
h22_l = h21_r + MAX_PARAMETER_BANDS;
h22_r = h22_l + MAX_PARAMETER_BANDS;
h12_res_l = h22_r + MAX_PARAMETER_BANDS;
h12_res_r = h12_res_l + MAX_PARAMETER_BANDS;
h22_res_l = h12_res_r + MAX_PARAMETER_BANDS;
h22_res_r = h22_res_l + MAX_PARAMETER_BANDS;
c_l_clfe = h22_res_r + MAX_PARAMETER_BANDS;
c_r_clfe = c_l_clfe + MAX_PARAMETER_BANDS;
kappa = c_r_clfe + MAX_PARAMETER_BANDS;
g_dd = kappa + MAX_PARAMETER_BANDS;
h11_r =
h11_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h11_r), BYTE_ALIGN_8);
h12_l =
h11_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_l), BYTE_ALIGN_8);
h12_r =
h12_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_r), BYTE_ALIGN_8);
h21_l =
h12_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h21_l), BYTE_ALIGN_8);
h21_r =
h21_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h21_r), BYTE_ALIGN_8);
h22_l =
h21_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_l), BYTE_ALIGN_8);
h22_r =
h22_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_r), BYTE_ALIGN_8);
h12_res_l = h22_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_res_l),
BYTE_ALIGN_8);
h12_res_r = h12_res_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_res_r),
BYTE_ALIGN_8);
h22_res_l = h12_res_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_res_l),
BYTE_ALIGN_8);
h22_res_r = h22_res_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_res_r),
BYTE_ALIGN_8);
c_l_clfe = h22_res_r +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_l_clfe), BYTE_ALIGN_8);
c_r_clfe = c_l_clfe +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_r_clfe), BYTE_ALIGN_8);
kappa =
c_r_clfe + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*kappa), BYTE_ALIGN_8);
g_dd = kappa + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*g_dd), BYTE_ALIGN_8);
c_f_l = (WORD16 *)pstr_mps_state->mps_scratch_mem_v + PARAMETER_BANDSX32;
c_f_r = c_f_l + MAX_PARAMETER_BANDS;
dummy1 = c_f_r + MAX_PARAMETER_BANDS;
dummy2 = dummy1 + MAX_PARAMETER_BANDS;
c_f_l = (WORD16 *)pstr_mps_state->mps_scratch_mem_v +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(PARAMETER_BANDSX32, sizeof(*c_f_l), BYTE_ALIGN_8);
c_f_r =
c_f_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_f_r), BYTE_ALIGN_8);
dummy1 =
c_f_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*dummy1), BYTE_ALIGN_8);
dummy2 =
dummy1 + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*dummy2), BYTE_ALIGN_8);
if (enable_additionals) {
if (mode_1 == 0 &&

View file

@ -81,40 +81,71 @@ VOID ixheaacd_calc_m1m2_7271(ia_heaac_mps_state_struct *pstr_mps_state) {
WORD32 pos_resid[5] = {0};
h11_l = pstr_mps_state->mps_scratch_mem_v;
h11_r = h11_l + MAX_PARAMETER_BANDS;
h12_l = h11_r + MAX_PARAMETER_BANDS;
h12_r = h12_l + MAX_PARAMETER_BANDS;
h21_l = h12_r + MAX_PARAMETER_BANDS;
h21_r = h21_l + MAX_PARAMETER_BANDS;
h22_l = h21_r + MAX_PARAMETER_BANDS;
h22_r = h22_l + MAX_PARAMETER_BANDS;
h12_res_l = h22_r + MAX_PARAMETER_BANDS;
h12_res_r = h12_res_l + MAX_PARAMETER_BANDS;
h22_res_l = h12_res_r + MAX_PARAMETER_BANDS;
h22_res_r = h22_res_l + MAX_PARAMETER_BANDS;
c_l_clfe = h22_res_r + MAX_PARAMETER_BANDS;
c_r_clfe = c_l_clfe + MAX_PARAMETER_BANDS;
kappa = c_r_clfe + MAX_PARAMETER_BANDS;
g_dd = kappa + MAX_PARAMETER_BANDS;
h11_r =
h11_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h11_r), BYTE_ALIGN_8);
h12_l =
h11_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_l), BYTE_ALIGN_8);
h12_r =
h12_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_r), BYTE_ALIGN_8);
h21_l =
h12_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h21_l), BYTE_ALIGN_8);
h21_r =
h21_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h21_r), BYTE_ALIGN_8);
h22_l =
h21_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_l), BYTE_ALIGN_8);
h22_r =
h22_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_r), BYTE_ALIGN_8);
h12_res_l = h22_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_res_l),
BYTE_ALIGN_8);
h12_res_r = h12_res_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_res_r),
BYTE_ALIGN_8);
h22_res_l = h12_res_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_res_l),
BYTE_ALIGN_8);
h22_res_r = h22_res_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_res_r),
BYTE_ALIGN_8);
c_l_clfe = h22_res_r +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_l_clfe), BYTE_ALIGN_8);
c_r_clfe = c_l_clfe +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_r_clfe), BYTE_ALIGN_8);
kappa =
c_r_clfe + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*kappa), BYTE_ALIGN_8);
g_dd = kappa + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*g_dd), BYTE_ALIGN_8);
h11_lc = g_dd + MAX_PARAMETER_BANDS;
h11_rc = h11_lc + MAX_PARAMETER_BANDS;
h12_lc = h11_rc + MAX_PARAMETER_BANDS;
h12_rc = h12_lc + MAX_PARAMETER_BANDS;
h21_lc = h12_rc + MAX_PARAMETER_BANDS;
h21_rc = h21_lc + MAX_PARAMETER_BANDS;
h22_lc = h21_rc + MAX_PARAMETER_BANDS;
h22_rc = h22_lc + MAX_PARAMETER_BANDS;
h12_res_lc = h22_rc + MAX_PARAMETER_BANDS;
h12_res_rc = h12_res_lc + MAX_PARAMETER_BANDS;
h22_res_lc = h12_res_rc + MAX_PARAMETER_BANDS;
h22_res_rc = h22_res_lc + MAX_PARAMETER_BANDS;
h11_lc =
g_dd + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h11_lc), BYTE_ALIGN_8);
h11_rc =
h11_lc + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h11_rc), BYTE_ALIGN_8);
h12_lc =
h11_rc + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_lc), BYTE_ALIGN_8);
h12_rc =
h12_lc + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_rc), BYTE_ALIGN_8);
h21_lc =
h12_rc + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h21_lc), BYTE_ALIGN_8);
h21_rc =
h21_lc + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h21_rc), BYTE_ALIGN_8);
h22_lc =
h21_rc + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_lc), BYTE_ALIGN_8);
h22_rc =
h22_lc + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_rc), BYTE_ALIGN_8);
h12_res_lc = h22_rc + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_res_lc),
BYTE_ALIGN_8);
h12_res_rc = h12_res_lc + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS,
sizeof(*h12_res_rc), BYTE_ALIGN_8);
h22_res_lc = h12_res_rc + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS,
sizeof(*h22_res_lc), BYTE_ALIGN_8);
h22_res_rc = h22_res_lc + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS,
sizeof(*h22_res_rc), BYTE_ALIGN_8);
c_f_l = (WORD16 *)pstr_mps_state->mps_scratch_mem_v + PARAMETER_BANDSX56;
c_f_r = c_f_l + MAX_PARAMETER_BANDS;
dummy = c_f_r + MAX_PARAMETER_BANDS;
c_f_lc = dummy + MAX_PARAMETER_BANDS;
c_f_rc = c_f_lc + MAX_PARAMETER_BANDS;
c_f_l = (WORD16 *)pstr_mps_state->mps_scratch_mem_v +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(PARAMETER_BANDSX56, sizeof(*c_f_l), BYTE_ALIGN_8);
c_f_r =
c_f_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_f_r), BYTE_ALIGN_8);
dummy =
c_f_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*dummy), BYTE_ALIGN_8);
c_f_lc =
dummy + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_f_lc), BYTE_ALIGN_8);
c_f_rc =
c_f_lc + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_f_rc), BYTE_ALIGN_8);
if (enable_additionals) {
if (mode_1 == 0 &&
@ -487,42 +518,75 @@ VOID ixheaacd_calc_m1m2_7272(ia_heaac_mps_state_struct *pstr_mps_state) {
WORD32 residual_coding = pstr_mps_state->residual_coding;
h11_l = pstr_mps_state->mps_scratch_mem_v;
h11_r = h11_l + MAX_PARAMETER_BANDS;
h12_l = h11_r + MAX_PARAMETER_BANDS;
h12_r = h12_l + MAX_PARAMETER_BANDS;
h21_l = h12_r + MAX_PARAMETER_BANDS;
h21_r = h21_l + MAX_PARAMETER_BANDS;
h22_l = h21_r + MAX_PARAMETER_BANDS;
h22_r = h22_l + MAX_PARAMETER_BANDS;
h12_res_l = h22_r + MAX_PARAMETER_BANDS;
h12_res_r = h12_res_l + MAX_PARAMETER_BANDS;
h22_res_l = h12_res_r + MAX_PARAMETER_BANDS;
h22_res_r = h22_res_l + MAX_PARAMETER_BANDS;
c_l_clfe = h22_res_r + MAX_PARAMETER_BANDS;
c_r_clfe = c_l_clfe + MAX_PARAMETER_BANDS;
kappa = c_r_clfe + MAX_PARAMETER_BANDS;
g_dd = kappa + MAX_PARAMETER_BANDS;
h11_r =
h11_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h11_r), BYTE_ALIGN_8);
h12_l =
h11_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_l), BYTE_ALIGN_8);
h12_r =
h12_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_r), BYTE_ALIGN_8);
h21_l =
h12_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h21_l), BYTE_ALIGN_8);
h21_r =
h21_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h21_r), BYTE_ALIGN_8);
h22_l =
h21_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_l), BYTE_ALIGN_8);
h22_r =
h22_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_r), BYTE_ALIGN_8);
h12_res_l = h22_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_res_l),
BYTE_ALIGN_8);
h12_res_r = h12_res_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_res_r),
BYTE_ALIGN_8);
h22_res_l = h12_res_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_res_l),
BYTE_ALIGN_8);
h22_res_r = h22_res_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_res_r),
BYTE_ALIGN_8);
c_l_clfe = h22_res_r +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_l_clfe), BYTE_ALIGN_8);
c_r_clfe = c_l_clfe +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_r_clfe), BYTE_ALIGN_8);
kappa =
c_r_clfe + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*kappa), BYTE_ALIGN_8);
g_dd = kappa + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*g_dd), BYTE_ALIGN_8);
h11_ls = g_dd + MAX_PARAMETER_BANDS;
h11_rs = h11_ls + MAX_PARAMETER_BANDS;
h12_ls = h11_rs + MAX_PARAMETER_BANDS;
h12_rs = h12_ls + MAX_PARAMETER_BANDS;
h21_ls = h12_rs + MAX_PARAMETER_BANDS;
h21_rs = h21_ls + MAX_PARAMETER_BANDS;
h22_ls = h21_rs + MAX_PARAMETER_BANDS;
h22_rs = h22_ls + MAX_PARAMETER_BANDS;
h12_res_ls = h22_rs + MAX_PARAMETER_BANDS;
h12_res_rs = h12_res_ls + MAX_PARAMETER_BANDS;
h22_res_ls = h12_res_rs + MAX_PARAMETER_BANDS;
h22_res_rs = h22_res_ls + MAX_PARAMETER_BANDS;
h11_ls =
g_dd + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h11_ls), BYTE_ALIGN_8);
h11_rs =
h11_ls + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h11_rs), BYTE_ALIGN_8);
h12_ls =
h11_rs + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_ls), BYTE_ALIGN_8);
h12_rs =
h12_ls + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_rs), BYTE_ALIGN_8);
h21_ls =
h12_rs + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h21_ls), BYTE_ALIGN_8);
h21_rs =
h21_ls + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h21_rs), BYTE_ALIGN_8);
h22_ls =
h21_rs + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_ls), BYTE_ALIGN_8);
h22_rs =
h22_ls + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_rs), BYTE_ALIGN_8);
h12_res_ls = h22_rs + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_res_ls),
BYTE_ALIGN_8);
h12_res_rs = h12_res_ls + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS,
sizeof(*h12_res_rs), BYTE_ALIGN_8);
h22_res_ls = h12_res_rs + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS,
sizeof(*h22_res_ls), BYTE_ALIGN_8);
h22_res_rs = h22_res_ls + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS,
sizeof(*h22_res_rs), BYTE_ALIGN_8);
c_1_L = (WORD16 *)pstr_mps_state->mps_scratch_mem_v + PARAMETER_BANDSX56;
c_1_R = c_1_L + MAX_PARAMETER_BANDS;
c_2_L = c_1_R + MAX_PARAMETER_BANDS;
c_2_R = c_2_L + MAX_PARAMETER_BANDS;
c_f_ls = c_2_R + MAX_PARAMETER_BANDS;
c_f_rs = c_f_ls + MAX_PARAMETER_BANDS;
dummy = c_f_rs + MAX_PARAMETER_BANDS;
c_1_L = (WORD16 *)pstr_mps_state->mps_scratch_mem_v +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(PARAMETER_BANDSX56, sizeof(*c_1_L), BYTE_ALIGN_8);
c_1_R =
c_1_L + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_1_R), BYTE_ALIGN_8);
c_2_L =
c_1_R + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_2_L), BYTE_ALIGN_8);
c_2_R =
c_2_L + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_2_R), BYTE_ALIGN_8);
c_f_ls =
c_2_R + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_f_ls), BYTE_ALIGN_8);
c_f_rs =
c_f_ls + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_f_rs), BYTE_ALIGN_8);
dummy =
c_f_rs + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*dummy), BYTE_ALIGN_8);
if (enable_additionals) {
if (mode_1 == 0 &&

View file

@ -58,21 +58,35 @@ VOID ixheaacd_calc_m1m2_7571(ia_heaac_mps_state_struct *pstr_mps_state) {
WORD32 num_parameter_bands = pstr_mps_state->num_parameter_bands;
h11_l = pstr_mps_state->mps_scratch_mem_v;
h11_r = h11_l + MAX_PARAMETER_BANDS;
h12_l = h11_r + MAX_PARAMETER_BANDS;
h12_r = h12_l + MAX_PARAMETER_BANDS;
h21_l = h12_r + MAX_PARAMETER_BANDS;
h21_r = h21_l + MAX_PARAMETER_BANDS;
h22_l = h21_r + MAX_PARAMETER_BANDS;
h22_r = h22_l + MAX_PARAMETER_BANDS;
h12_res_l = h22_r + MAX_PARAMETER_BANDS;
h12_res_r = h12_res_l + MAX_PARAMETER_BANDS;
h22_res_l = h12_res_r + MAX_PARAMETER_BANDS;
h22_res_r = h22_res_l + MAX_PARAMETER_BANDS;
h11_r =
h11_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h11_r), BYTE_ALIGN_8);
h12_l =
h11_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_l), BYTE_ALIGN_8);
h12_r =
h12_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_r), BYTE_ALIGN_8);
h21_l =
h12_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h21_l), BYTE_ALIGN_8);
h21_r =
h21_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h21_r), BYTE_ALIGN_8);
h22_l =
h21_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_l), BYTE_ALIGN_8);
h22_r =
h22_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_r), BYTE_ALIGN_8);
h12_res_l = h22_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_res_l),
BYTE_ALIGN_8);
h12_res_r = h12_res_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_res_r),
BYTE_ALIGN_8);
h22_res_l = h12_res_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_res_l),
BYTE_ALIGN_8);
h22_res_r = h22_res_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_res_r),
BYTE_ALIGN_8);
c_f_l = (WORD16 *)pstr_mps_state->mps_scratch_mem_v + PARAMETER_BANDSX24;
c_f_r = c_f_l + MAX_PARAMETER_BANDS;
dummy = c_f_r + MAX_PARAMETER_BANDS;
c_f_l = (WORD16 *)pstr_mps_state->mps_scratch_mem_v +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(PARAMETER_BANDSX24, sizeof(*c_f_l), BYTE_ALIGN_8);
c_f_r =
c_f_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_f_r), BYTE_ALIGN_8);
dummy =
c_f_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*dummy), BYTE_ALIGN_8);
for (ps = 0; ps < num_parameter_sets; ps++) {
ixheaacd_param_2_umx_ps(pstr_mps_state, h11_l, h12_l, h21_l, h22_l, h12_res_l, h22_res_l,
@ -142,21 +156,35 @@ VOID ixheaacd_calc_m1m2_7572(ia_heaac_mps_state_struct *pstr_mps_state) {
WORD32 num_parameter_bands = pstr_mps_state->num_parameter_bands;
h11_l = pstr_mps_state->mps_scratch_mem_v;
h11_r = h11_l + MAX_PARAMETER_BANDS;
h12_l = h11_r + MAX_PARAMETER_BANDS;
h12_r = h12_l + MAX_PARAMETER_BANDS;
h21_l = h12_r + MAX_PARAMETER_BANDS;
h21_r = h21_l + MAX_PARAMETER_BANDS;
h22_l = h21_r + MAX_PARAMETER_BANDS;
h22_r = h22_l + MAX_PARAMETER_BANDS;
h12_res_l = h22_r + MAX_PARAMETER_BANDS;
h12_res_r = h12_res_l + MAX_PARAMETER_BANDS;
h22_res_l = h12_res_r + MAX_PARAMETER_BANDS;
h22_res_r = h22_res_l + MAX_PARAMETER_BANDS;
h11_r =
h11_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h11_r), BYTE_ALIGN_8);
h12_l =
h11_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_l), BYTE_ALIGN_8);
h12_r =
h12_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_r), BYTE_ALIGN_8);
h21_l =
h12_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h21_l), BYTE_ALIGN_8);
h21_r =
h21_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h21_r), BYTE_ALIGN_8);
h22_l =
h21_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_l), BYTE_ALIGN_8);
h22_r =
h22_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_r), BYTE_ALIGN_8);
h12_res_l = h22_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_res_l),
BYTE_ALIGN_8);
h12_res_r = h12_res_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h12_res_r),
BYTE_ALIGN_8);
h22_res_l = h12_res_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_res_l),
BYTE_ALIGN_8);
h22_res_r = h22_res_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*h22_res_r),
BYTE_ALIGN_8);
c_f_l = (WORD16 *)pstr_mps_state->mps_scratch_mem_v + PARAMETER_BANDSX24;
c_f_r = c_f_l + MAX_PARAMETER_BANDS;
dummy = c_f_r + MAX_PARAMETER_BANDS;
c_f_l = (WORD16 *)pstr_mps_state->mps_scratch_mem_v +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(PARAMETER_BANDSX24, sizeof(*c_f_l), BYTE_ALIGN_8);
c_f_r =
c_f_l + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*c_f_r), BYTE_ALIGN_8);
dummy =
c_f_r + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*dummy), BYTE_ALIGN_8);
for (ps = 0; ps < num_parameter_sets; ps++) {
ixheaacd_param_2_umx_ps(pstr_mps_state, h11_l, h12_l, h21_l, h22_l, h12_res_l, h22_res_l,

View file

@ -93,7 +93,7 @@
#define BP_SIZE 25
#define MPS_SCRATCH_MEM_SIZE (235168)
#define MPS_SCRATCH_MEM_SIZE (194048)
typedef struct {
FLOAT32 re;
@ -1016,6 +1016,8 @@ VOID ixheaacd_set_mps_persistent_buffers(ia_heaac_mps_state_struct *pstr_mps_sta
WORD32 num_channel,
VOID *persistent_mem);
WORD32 ixheaacd_scratch_buffer_sizes();
VOID ixheaacd_set_scratch_buffers(ia_heaac_mps_state_struct *pstr_mps_state,
VOID *scratch_mem);

View file

@ -623,7 +623,8 @@ static VOID ixheaacd_ducker_apply_71(
WORD16 one_by_5 = ONE_BY_FIVE_Q16;
duck_gain = scratch;
q_duck_gain = (WORD16 *)scratch + PARAMETER_BANDSX2;
q_duck_gain = (WORD16 *)scratch + IXHEAAC_GET_SIZE_ALIGNED_TYPE(
PARAMETER_BANDSX2, sizeof(*q_duck_gain), BYTE_ALIGN_8);
p_input_real = input_real;
p_input_imag = input_imag;
@ -792,7 +793,8 @@ static VOID ixheaacd_ducker_apply(
WORD16 one_by_5 = ONE_BY_FIVE_Q16;
duck_gain = scratch;
q_duck_gain = (WORD16 *)scratch + PARAMETER_BANDSX2;
q_duck_gain = (WORD16 *)scratch + IXHEAAC_GET_SIZE_ALIGNED_TYPE(
PARAMETER_BANDSX2, sizeof(*q_duck_gain), BYTE_ALIGN_8);
p_input_real = input_real;
p_input_imag = input_imag;
@ -1012,7 +1014,8 @@ VOID ixheaacd_decorr_apply(ia_heaac_mps_state_struct *pstr_mps_state, WORD32 len
WORD32 length1;
VOID *free_scratch;
free_scratch = (WORD32 *)pstr_mps_state->mps_scratch_mem_v + MAX_TIMESLOTSX2;
free_scratch = (WORD32 *)pstr_mps_state->mps_scratch_mem_v +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_TIMESLOTSX2, sizeof(WORD32), BYTE_ALIGN_8);
if (decorr_ptr != NULL) {
p_input_real = input_real;

View file

@ -157,6 +157,26 @@ WORD32 ixheaacd_mps_persistent_buffer_sizes() {
buffer_size += IXHEAAC_GET_SIZE_ALIGNED(ARRAY_STRUCT_SIZE, BYTE_ALIGN_8);
// Add buffer sizes for pstr_mps_state->array_struct
// res_mdct
buffer_size += IXHEAAC_GET_SIZE_ALIGNED(MDCT_RES_BUF_SIZE, BYTE_ALIGN_8);
// qmf_residual_real
buffer_size += IXHEAAC_GET_SIZE_ALIGNED(QMF_RES_BUF_SIZE, BYTE_ALIGN_8);
// qmf_residual_imag
buffer_size += IXHEAAC_GET_SIZE_ALIGNED(QMF_RES_BUF_SIZE, BYTE_ALIGN_8);
// m_qmf_real
buffer_size += IXHEAAC_GET_SIZE_ALIGNED(QMF_BUF_SIZE, BYTE_ALIGN_8);
// m_qmf_imag
buffer_size += IXHEAAC_GET_SIZE_ALIGNED(QMF_BUF_SIZE, BYTE_ALIGN_8);
// buf_real
buffer_size += IXHEAAC_GET_SIZE_ALIGNED(BUF_SIZE, BYTE_ALIGN_8);
// buf_imag
buffer_size += IXHEAAC_GET_SIZE_ALIGNED(BUF_SIZE, BYTE_ALIGN_8);
// aux_struct
buffer_size += IXHEAAC_GET_SIZE_ALIGNED(sizeof(ia_mps_dec_auxilary_struct), BYTE_ALIGN_8);
// aux_struct->m2_param
buffer_size += IXHEAAC_GET_SIZE_ALIGNED(sizeof(ia_mps_dec_m2_param_struct), BYTE_ALIGN_8);
return buffer_size;
}
@ -292,34 +312,32 @@ VOID ixheaacd_set_mps_persistent_buffers(ia_heaac_mps_state_struct *pstr_mps_sta
IXHEAAC_GET_SIZE_ALIGNED(ARRAY_STRUCT_SIZE, BYTE_ALIGN_8));
used_persistent += IXHEAAC_GET_SIZE_ALIGNED(ARRAY_STRUCT_SIZE, BYTE_ALIGN_8);
*persistent_used = used_persistent;
}
VOID ixheaacd_set_scratch_buffers(ia_heaac_mps_state_struct *pstr_mps_state, VOID *scratch_mem) {
WORD32 scratch_used;
// Set buffers pointers of pstr_mps_state->array_struct
ia_mps_dec_reuse_array_struct *p_array_struct = pstr_mps_state->array_struct;
p_array_struct->res_mdct = scratch_mem;
scratch_used = MDCT_RES_BUF_SIZE;
p_array_struct->res_mdct = (WORD32 *)((WORD8 *)persistent_mem + used_persistent);
used_persistent += IXHEAAC_GET_SIZE_ALIGNED(MDCT_RES_BUF_SIZE, BYTE_ALIGN_8);
p_array_struct->qmf_residual_real = (WORD32 *)((WORD8 *)scratch_mem + scratch_used);
scratch_used += QMF_RES_BUF_SIZE;
p_array_struct->qmf_residual_imag = (WORD32 *)((WORD8 *)scratch_mem + scratch_used);
scratch_used += QMF_RES_BUF_SIZE;
p_array_struct->qmf_residual_real = (WORD32 *)((WORD8 *)persistent_mem + used_persistent);
used_persistent += IXHEAAC_GET_SIZE_ALIGNED(QMF_RES_BUF_SIZE, BYTE_ALIGN_8);
p_array_struct->qmf_residual_imag = (WORD32 *)((WORD8 *)persistent_mem + used_persistent);
used_persistent += IXHEAAC_GET_SIZE_ALIGNED(QMF_RES_BUF_SIZE, BYTE_ALIGN_8);
p_array_struct->m_qmf_real = (WORD32 *)((WORD8 *)scratch_mem + scratch_used);
scratch_used += QMF_BUF_SIZE;
p_array_struct->m_qmf_imag = (WORD32 *)((WORD8 *)scratch_mem + scratch_used);
scratch_used += QMF_BUF_SIZE;
p_array_struct->m_qmf_real = (WORD32 *)((WORD8 *)persistent_mem + used_persistent);
used_persistent += IXHEAAC_GET_SIZE_ALIGNED(QMF_BUF_SIZE, BYTE_ALIGN_8);
p_array_struct->m_qmf_imag = (WORD32 *)((WORD8 *)persistent_mem + used_persistent);
used_persistent += IXHEAAC_GET_SIZE_ALIGNED(QMF_BUF_SIZE, BYTE_ALIGN_8);
p_array_struct->buf_real = (WORD32 *)((WORD8 *)scratch_mem + scratch_used);
scratch_used += BUF_SIZE;
p_array_struct->buf_imag = (WORD32 *)((WORD8 *)scratch_mem + scratch_used);
scratch_used += BUF_SIZE;
p_array_struct->buf_real = (WORD32 *)((WORD8 *)persistent_mem + used_persistent);
used_persistent += IXHEAAC_GET_SIZE_ALIGNED(BUF_SIZE, BYTE_ALIGN_8);
p_array_struct->buf_imag = (WORD32 *)((WORD8 *)persistent_mem + used_persistent);
used_persistent += IXHEAAC_GET_SIZE_ALIGNED(BUF_SIZE, BYTE_ALIGN_8);
p_array_struct->hyb_output_real_dry = p_array_struct->res_mdct;
p_array_struct->hyb_output_imag_dry =
p_array_struct->res_mdct + MAX_OUTPUT_CHANNELS_AT_MPS * TSXHB;
p_array_struct->res_mdct +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_OUTPUT_CHANNELS_AT_MPS * TSXHB,
sizeof(*p_array_struct->hyb_output_imag_dry), BYTE_ALIGN_8);
p_array_struct->x_real = p_array_struct->hyb_output_real_dry;
p_array_struct->x_imag = p_array_struct->hyb_output_imag_dry;
@ -329,14 +347,25 @@ VOID ixheaacd_set_scratch_buffers(ia_heaac_mps_state_struct *pstr_mps_state, VOI
p_array_struct->w_dry_real = p_array_struct->m_qmf_real;
p_array_struct->w_dry_imag = p_array_struct->m_qmf_imag;
p_array_struct->env_dmx_0 = p_array_struct->m_qmf_real + TSXHBX5;
p_array_struct->env_dmx_1 = p_array_struct->env_dmx_0 + MAX_TIME_SLOTS;
p_array_struct->env_dmx_0 =
p_array_struct->m_qmf_real +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(TSXHBX5, sizeof(*p_array_struct->env_dmx_0), BYTE_ALIGN_8);
p_array_struct->env_dmx_1 =
p_array_struct->env_dmx_0 +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_TIME_SLOTS, sizeof(*p_array_struct->env_dmx_1),
BYTE_ALIGN_8);
p_array_struct->qmf_residual_real_pre = p_array_struct->qmf_residual_real;
p_array_struct->qmf_residual_real_post = p_array_struct->qmf_residual_real + RES_CHXQMFXTS;
p_array_struct->qmf_residual_real_post =
p_array_struct->qmf_residual_real +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(
RES_CHXQMFXTS, sizeof(*p_array_struct->qmf_residual_real_post), BYTE_ALIGN_8);
p_array_struct->qmf_residual_imag_pre = p_array_struct->qmf_residual_imag;
p_array_struct->qmf_residual_imag_post = p_array_struct->qmf_residual_imag + RES_CHXQMFXTS;
p_array_struct->qmf_residual_imag_post =
p_array_struct->qmf_residual_imag +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(
RES_CHXQMFXTS, sizeof(*p_array_struct->qmf_residual_imag_post), BYTE_ALIGN_8);
p_array_struct->buffer_real = p_array_struct->qmf_residual_real_post;
p_array_struct->buffer_imag = p_array_struct->qmf_residual_imag_post;
@ -344,12 +373,42 @@ VOID ixheaacd_set_scratch_buffers(ia_heaac_mps_state_struct *pstr_mps_state, VOI
p_array_struct->m1_param = (ia_mps_dec_m1_param_struct *)p_array_struct->buffer_real;
pstr_mps_state->aux_struct =
(ia_mps_dec_auxilary_struct *)((WORD8 *)scratch_mem + scratch_used);
scratch_used += sizeof(ia_mps_dec_auxilary_struct);
(ia_mps_dec_auxilary_struct *)((WORD8 *)persistent_mem + used_persistent);
used_persistent += IXHEAAC_GET_SIZE_ALIGNED(sizeof(ia_mps_dec_auxilary_struct), BYTE_ALIGN_8);
pstr_mps_state->aux_struct->m2_param =
(ia_mps_dec_m2_param_struct *)((WORD8 *)scratch_mem + scratch_used);
scratch_used += sizeof(ia_mps_dec_m2_param_struct);
(ia_mps_dec_m2_param_struct *)((WORD8 *)persistent_mem + used_persistent);
used_persistent += IXHEAAC_GET_SIZE_ALIGNED(sizeof(ia_mps_dec_m2_param_struct), BYTE_ALIGN_8);
*persistent_used = used_persistent;
}
WORD32 ixheaacd_scratch_buffer_sizes() {
WORD32 buffer_size;
buffer_size = IXHEAAC_GET_SIZE_ALIGNED(MDCT_RES_BUF_SIZE, BYTE_ALIGN_8);
buffer_size += IXHEAAC_GET_SIZE_ALIGNED(QMF_RES_BUF_SIZE, BYTE_ALIGN_8);
buffer_size += IXHEAAC_GET_SIZE_ALIGNED(QMF_RES_BUF_SIZE, BYTE_ALIGN_8);
buffer_size += IXHEAAC_GET_SIZE_ALIGNED(QMF_BUF_SIZE, BYTE_ALIGN_8);
buffer_size += IXHEAAC_GET_SIZE_ALIGNED(QMF_BUF_SIZE, BYTE_ALIGN_8);
buffer_size += IXHEAAC_GET_SIZE_ALIGNED(BUF_SIZE, BYTE_ALIGN_8);
buffer_size += IXHEAAC_GET_SIZE_ALIGNED(BUF_SIZE, BYTE_ALIGN_8);
buffer_size += IXHEAAC_GET_SIZE_ALIGNED(sizeof(ia_mps_dec_auxilary_struct), BYTE_ALIGN_8);
buffer_size += IXHEAAC_GET_SIZE_ALIGNED(sizeof(ia_mps_dec_m2_param_struct), BYTE_ALIGN_8);
return buffer_size;
}
VOID ixheaacd_set_scratch_buffers(ia_heaac_mps_state_struct *pstr_mps_state, VOID *scratch_mem) {
WORD32 scratch_used = 0;
pstr_mps_state->mps_scratch_mem_v = (VOID *)((WORD8 *)scratch_mem + scratch_used);
}

View file

@ -874,7 +874,8 @@ static VOID ixheaacd_local_imdet(
WORD32 l;
WORD32 *p_sum = scratch;
WORD32 *p_diff = (WORD32 *)scratch + SUM_SIZE;
WORD32 *p_diff =
(WORD32 *)scratch + IXHEAAC_GET_SIZE_ALIGNED_TYPE(SUM_SIZE, sizeof(*p_diff), BYTE_ALIGN_8);
z_real_2 = z_real + lw;
z_imag_2 = z_imag + lw;
@ -1526,16 +1527,21 @@ VOID ixheaacd_mdct2qmf_process(WORD32 upd_qmf, WORD32 *const mdct_in, WORD32 *qm
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);
wt = wf + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_TIMESLOTSX2, sizeof(*wt), BYTE_ALIGN_8);
v1 = wt + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_TIMESLOTSX2, sizeof(*v1), BYTE_ALIGN_8);
v2 = v1 + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MDCT_LENGTH_HI, sizeof(*v2), BYTE_ALIGN_8);
twipost_real =
v2 + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MDCT_LENGTH_HI, sizeof(*twipost_real), BYTE_ALIGN_8);
twipost_imag = twipost_real + IXHEAAC_GET_SIZE_ALIGNED_TYPE(
MAX_NUM_QMF_BANDS, sizeof(*twipost_imag), BYTE_ALIGN_8);
mdct_sf = twipost_imag +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_NUM_QMF_BANDS, sizeof(*mdct_sf), BYTE_ALIGN_8);
z1_real =
mdct_sf + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MDCT_LENGTH_SF, sizeof(*z1_real), BYTE_ALIGN_8);
z1_imag = z1_real + IXHEAAC_GET_SIZE_ALIGNED_TYPE(QBXTSX2, sizeof(*z1_imag), BYTE_ALIGN_8);
a = z1_imag + IXHEAAC_GET_SIZE_ALIGNED_TYPE(QBXTSX2, sizeof(*a), BYTE_ALIGN_8);
free_scratch = (VOID *)((WORD32 *)a + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_NUM_QMF_BANDS,
sizeof(*a), BYTE_ALIGN_8));
scale = a;

View file

@ -103,8 +103,10 @@ static VOID ixheaacd_extract_bb_env(ia_heaac_mps_state_struct *pstr_mps_state, W
pstr_mps_state->ia_mps_dec_mps_table.bitdec_table_ptr->kernel_table.bb_env_kernels;
q_slot_nrg_fix = (WORD16 *)scratch;
n_slot_nrg = (WORD32 *)((WORD8 *)scratch + RESHAPE_OFFSET_1);
slot_nrg_fix = (WORD64 *)ALIGN_SIZE64((SIZE_T)((WORD8 *)scratch + RESHAPE_OFFSET_2));
n_slot_nrg =
(WORD32 *)((WORD8 *)scratch + IXHEAAC_GET_SIZE_ALIGNED(RESHAPE_OFFSET_1, BYTE_ALIGN_8));
slot_nrg_fix =
(WORD64 *)((WORD8 *)scratch + IXHEAAC_GET_SIZE_ALIGNED(RESHAPE_OFFSET_2, BYTE_ALIGN_8));
switch (inp) {
WORD32 frame_nrg_prev;
WORD16 q_frame_nrg_prev;
@ -401,8 +403,10 @@ VOID ixheaacd_reshape_bb_env(ia_heaac_mps_state_struct *pstr_mps_state) {
env_dry = free_scratch;
env_dmx_0 = pstr_mps_state->array_struct->env_dmx_0;
env_dmx_1 = pstr_mps_state->array_struct->env_dmx_1;
inter = (WORD64 *)((WORD8 *)free_scratch + MAX_TIME_SLOTSX12);
free_scratch = inter + MAX_TIME_SLOTS;
inter = (WORD64 *)((WORD8 *)free_scratch +
IXHEAAC_GET_SIZE_ALIGNED(MAX_TIME_SLOTSX12, BYTE_ALIGN_8));
free_scratch =
inter + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_TIME_SLOTS, sizeof(*inter), BYTE_ALIGN_8);
p_buffer_real = pstr_mps_state->array_struct->buf_real + start_hsb;
p_buffer_imag = pstr_mps_state->array_struct->buf_imag + start_hsb;

View file

@ -290,8 +290,11 @@ VOID ixheaacd_smooth_m1m2(ia_heaac_mps_state_struct *pstr_mps_state) {
WORD32 *m1_param_imag_prev = persistent_mem->m1_param_imag_prev;
ton = pstr_mps_state->mps_scratch_mem_v;
delta = delta_ptr = ton + MAX_PARAMETER_BANDS;
one_minus_delta = one_minus_delta_ptr = delta + MAX_PARAMETER_SETS;
delta = delta_ptr =
ton + IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_BANDS, sizeof(*delta), BYTE_ALIGN_8);
one_minus_delta = one_minus_delta_ptr =
delta +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(MAX_PARAMETER_SETS, sizeof(*one_minus_delta), BYTE_ALIGN_8);
param_r = curr_state->res_bands;
if (curr_state->residual_coding) {

View file

@ -360,24 +360,37 @@ static VOID ixheaacd_subband_tp(ia_heaac_mps_state_struct *pstr_mps_state, WORD3
WORD32 tree_config = pstr_mps_state->tree_config;
dry_ener = pstr_mps_state->mps_scratch_mem_v;
q_dry_ener = (WORD16 *)pstr_mps_state->mps_scratch_mem_v + INPUT_CHX2;
q_dry_ener = (WORD16 *)pstr_mps_state->mps_scratch_mem_v +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(INPUT_CHX2, sizeof(*q_dry_ener), BYTE_ALIGN_8);
wet_ener = dry_ener + INPUT_CHX1_5;
q_wet_ener = q_dry_ener + IN_CH_2XOUT_CH;
wet_ener =
dry_ener + IXHEAAC_GET_SIZE_ALIGNED_TYPE(INPUT_CHX1_5, sizeof(*wet_ener), BYTE_ALIGN_8);
q_wet_ener = q_dry_ener +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(IN_CH_2XOUT_CH, sizeof(*q_wet_ener), BYTE_ALIGN_8);
scale = wet_ener + OUTPUT_CHX1_5;
q_scale = q_wet_ener + OUTPUT_CHX3;
scale = wet_ener + IXHEAAC_GET_SIZE_ALIGNED_TYPE(OUTPUT_CHX1_5, sizeof(*scale), BYTE_ALIGN_8);
q_scale =
q_wet_ener + IXHEAAC_GET_SIZE_ALIGNED_TYPE(OUTPUT_CHX3, sizeof(*q_scale), BYTE_ALIGN_8);
dmx_real = scale + OUTPUT_CHX1_5;
dmx_imag = dmx_real + IN_CHXBP_SIZE;
dmx_real =
scale + IXHEAAC_GET_SIZE_ALIGNED_TYPE(OUTPUT_CHX1_5, sizeof(*dmx_real), BYTE_ALIGN_8);
dmx_imag =
dmx_real + IXHEAAC_GET_SIZE_ALIGNED_TYPE(IN_CHXBP_SIZE, sizeof(*dmx_imag), BYTE_ALIGN_8);
qmf_output_real_dry = dmx_imag + IN_CHXBP_SIZE;
qmf_output_real_dry = dmx_imag + IXHEAAC_GET_SIZE_ALIGNED_TYPE(
IN_CHXBP_SIZE, sizeof(*qmf_output_real_dry), BYTE_ALIGN_8);
qmf_output_imag_dry = qmf_output_real_dry + OUT_CHXQB;
qmf_output_imag_dry =
qmf_output_real_dry +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(OUT_CHXQB, sizeof(*qmf_output_imag_dry), BYTE_ALIGN_8);
qmf_output_real_wet = qmf_output_imag_dry + OUT_CHXQB;
qmf_output_real_wet =
qmf_output_imag_dry +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(OUT_CHXQB, sizeof(*qmf_output_real_wet), BYTE_ALIGN_8);
qmf_output_imag_wet = qmf_output_real_wet + OUT_CHXQB;
qmf_output_imag_wet =
qmf_output_real_wet +
IXHEAAC_GET_SIZE_ALIGNED_TYPE(OUT_CHXQB, sizeof(*qmf_output_imag_wet), BYTE_ALIGN_8);
if (sub_band_tp->update_old_ener == STP_UPDATE_ENERGY_RATE) {
sub_band_tp->update_old_ener = 1;

View file

@ -212,15 +212,19 @@ VOID ixheaacd_measure_tonality(ia_heaac_mps_state_struct *pstr_mps_state, WORD32
WORD32 temp_1, temp;
WORD16 qtemp1, qtemp2;
spec_zoom_real =
(WORD32 *)((WORD8 *)pstr_mps_state->mps_scratch_mem_v + SCRATCH_OFFSET_SMOOTHING);
spec_zoom_imag = spec_zoom_real + QMF_BANDSX8;
p_max = spec_zoom_imag + QMF_BANDSX8;
coh_spec = p_max + QMF_BANDSX8;
pow_spec = coh_spec + QMF_BANDSX8;
spec_zoom_real = (WORD32 *)((WORD8 *)pstr_mps_state->mps_scratch_mem_v +
IXHEAAC_GET_SIZE_ALIGNED(SCRATCH_OFFSET_SMOOTHING, BYTE_ALIGN_8));
spec_zoom_imag = spec_zoom_real + IXHEAAC_GET_SIZE_ALIGNED_TYPE(
QMF_BANDSX8, sizeof(*spec_zoom_imag), BYTE_ALIGN_8);
p_max =
spec_zoom_imag + IXHEAAC_GET_SIZE_ALIGNED_TYPE(QMF_BANDSX8, sizeof(*p_max), BYTE_ALIGN_8);
coh_spec = p_max + IXHEAAC_GET_SIZE_ALIGNED_TYPE(QMF_BANDSX8, sizeof(*coh_spec), BYTE_ALIGN_8);
pow_spec =
coh_spec + IXHEAAC_GET_SIZE_ALIGNED_TYPE(QMF_BANDSX8, sizeof(*pow_spec), BYTE_ALIGN_8);
qmf_real = pow_spec + QMF_BANDSX8;
qmf_imag = qmf_real + QBXTS;
qmf_real =
pow_spec + IXHEAAC_GET_SIZE_ALIGNED_TYPE(QMF_BANDSX8, sizeof(*qmf_real), BYTE_ALIGN_8);
qmf_imag = qmf_real + IXHEAAC_GET_SIZE_ALIGNED_TYPE(QBXTS, sizeof(*qmf_imag), BYTE_ALIGN_8);
switch (num_parameter_bands) {
case PARAMETER_BANDS_4:

View file

@ -103,12 +103,9 @@
#define MAXNRSBRELEMENTS 6
VOID ixheaacd_allocate_sbr_scr(ia_sbr_scr_struct *sbr_scratch_struct,
VOID *base_scratch_ptr, VOID *output_ptr,
WORD total_elements, WORD ch_fac,
WORD32 object_type, WORD32 total_channels,
WORD8 *p_qshift_arr, UWORD8 slot_element,
WORD32 channel);
VOID ixheaacd_allocate_sbr_scr(ia_sbr_scr_struct *sbr_scratch_struct, VOID *base_scratch_ptr,
VOID *output_ptr, WORD32 total_channels, WORD8 *p_qshift_arr,
UWORD8 slot_element, WORD32 channel);
IA_ERRORCODE ixheaacd_esbr_process(ia_usac_data_struct *usac_data,
ia_bit_buf_struct *it_bit_buff,
@ -122,9 +119,8 @@ IA_ERRORCODE ixheaacd_esbr_process(ia_usac_data_struct *usac_data,
ia_handle_sbr_dec_inst_struct self = usac_data->pstr_esbr_dec;
ia_sbr_scr_struct sbr_scratch_struct;
ixheaacd_allocate_sbr_scr(&sbr_scratch_struct,
usac_data->sbr_scratch_mem_base, NULL, 2, 1,
audio_object_type, 0, NULL, 0, 0);
ixheaacd_allocate_sbr_scr(&sbr_scratch_struct, usac_data->sbr_scratch_mem_base, NULL, 0, NULL,
0, 0);
self->usac_independency_flag = usac_data->usac_independency_flg;
@ -169,8 +165,8 @@ IA_ERRORCODE ixheaacd_esbr_parse(ia_usac_data_struct *usac_data, ia_bit_buf_stru
ia_sbr_scr_struct sbr_scratch_struct;
jmp_buf local;
ixheaacd_allocate_sbr_scr(&sbr_scratch_struct, usac_data->sbr_scratch_mem_base, NULL, 2, 1,
audio_object_type, 0, NULL, 0, 0);
ixheaacd_allocate_sbr_scr(&sbr_scratch_struct, usac_data->sbr_scratch_mem_base, NULL, 0, NULL,
0, 0);
self->usac_independency_flag = usac_data->usac_independency_flg;

View file

@ -69,8 +69,6 @@ typedef struct ia_sbr_dec_inst_struct *ia_handle_sbr_dec_inst_struct;
typedef struct {
VOID *ptr_work_buf_core;
VOID *ptr_work_buf;
VOID *extra_scr_1k[2];
} ia_sbr_scr_struct;
IA_ERRORCODE ixheaacd_applysbr(