Merge "Fix for SEGV in ixheaacd_aacdec_decodeframe function." into rvc-dev
diff --git a/decoder/ixheaacd_api.c b/decoder/ixheaacd_api.c
index 6f90639..38d773b 100644
--- a/decoder/ixheaacd_api.c
+++ b/decoder/ixheaacd_api.c
@@ -2103,6 +2103,9 @@
i++;
}
+ p_state_enhaacplus_dec->pers_mem_ptr =
+ (WORD8 *)p_state_enhaacplus_dec->aac_persistent_mem_v +
+ persistent_used_t;
p_obj_exhaacplus_dec->aac_config.i_channel_mask =
ixheaacd_get_channel_mask(p_obj_exhaacplus_dec);
@@ -2542,14 +2545,12 @@
WORD32 pers_used = 0;
skip_full_decode = 1;
pers_used = ixheaacd_set_aac_persistent_buffers(
- (WORD8 *)p_state_enhaacplus_dec->aac_scratch_mem_v + (8 * 1024),
- channel);
+ p_state_enhaacplus_dec->pers_mem_ptr, channel);
{
struct ia_aac_persistent_struct *aac_persistent_mem =
- (struct ia_aac_persistent_struct
- *)((WORD8 *)p_state_enhaacplus_dec->aac_scratch_mem_v +
- (8 * 1024));
+ (struct ia_aac_persistent_struct *)
+ p_state_enhaacplus_dec->pers_mem_ptr;
aac_persistent_mem->str_aac_decoder.pstr_aac_tables =
&p_obj_exhaacplus_dec->aac_tables;
aac_persistent_mem->str_aac_decoder.pstr_common_tables =
@@ -2566,8 +2567,7 @@
p_state_enhaacplus_dec->pstr_stream_sbr[ch_idx],
- channel,
- (WORD8 *)p_state_enhaacplus_dec->aac_scratch_mem_v + (8 * 1024),
+ channel, p_state_enhaacplus_dec->pers_mem_ptr,
p_state_enhaacplus_dec->frame_length
);
diff --git a/decoder/ixheaacd_struct_def.h b/decoder/ixheaacd_struct_def.h
index 9e9e904..cf4e110 100644
--- a/decoder/ixheaacd_struct_def.h
+++ b/decoder/ixheaacd_struct_def.h
@@ -235,6 +235,7 @@
jmp_buf xaac_jmp_buf;
WORD32 decode_create_done;
WORD32 fatal_err_present;
+ WORD8 *pers_mem_ptr;
} ia_aac_dec_state_struct;
typedef struct ia_exhaacplus_dec_api_struct {