Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Encoder enhancements #78

Merged
merged 1 commit into from
Jan 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions encoder/ixheaace_aac_constants.h
Original file line number Diff line number Diff line change
Expand Up @@ -80,9 +80,7 @@ typedef struct {

/* bits in byte (char) */
#define BYTE_NUMBIT 8
#define BYTE_ALIGN_8 (8)
#define EIGHT_BYTE_SIZE (8)
#define IXHEAACE_GET_SIZE_ALIGNED(size, alignment) ((size + (alignment - 1)) & ~(alignment - 1))

/* here we distinguish between stereo and the mono only encoder */
#define IXHEAACE_MAX_CH_IN_BS_ELE (2)
Expand Down
102 changes: 51 additions & 51 deletions encoder/ixheaace_api.c

Large diffs are not rendered by default.

30 changes: 15 additions & 15 deletions encoder/ixheaace_enc_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -155,28 +155,28 @@ static VOID ixheaace_determine_bandwidth(const WORD32 proposed_bandwidth, const

WORD32 ia_enhaacplus_enc_aac_enc_pers_size(WORD32 num_aac_chan, WORD32 aot) {
WORD32 num_bytes;
num_bytes = IXHEAACE_GET_SIZE_ALIGNED(sizeof(iexheaac_encoder_str), BYTE_ALIGN_8);
num_bytes = IXHEAAC_GET_SIZE_ALIGNED(sizeof(iexheaac_encoder_str), BYTE_ALIGN_8);
num_bytes += (num_aac_chan *
IXHEAACE_GET_SIZE_ALIGNED(sizeof(ixheaace_psy_out_channel), BYTE_ALIGN_8));
IXHEAAC_GET_SIZE_ALIGNED(sizeof(ixheaace_psy_out_channel), BYTE_ALIGN_8));
num_bytes += (num_aac_chan *
IXHEAACE_GET_SIZE_ALIGNED(sizeof(ixheaace_psy_data), BYTE_ALIGN_8));
IXHEAAC_GET_SIZE_ALIGNED(sizeof(ixheaace_psy_data), BYTE_ALIGN_8));
num_bytes += (num_aac_chan *
IXHEAACE_GET_SIZE_ALIGNED(sizeof(ixheaace_temporal_noise_shaping_data), BYTE_ALIGN_8));
IXHEAAC_GET_SIZE_ALIGNED(sizeof(ixheaace_temporal_noise_shaping_data), BYTE_ALIGN_8));
if (aot == AOT_AAC_LC || aot == AOT_SBR || aot == AOT_PS) {
num_bytes += (num_aac_chan *
IXHEAACE_GET_SIZE_ALIGNED(BLK_SWITCH_OFFSET_LC_128 * sizeof(FLOAT32), BYTE_ALIGN_8));
IXHEAAC_GET_SIZE_ALIGNED(BLK_SWITCH_OFFSET_LC_128 * sizeof(FLOAT32), BYTE_ALIGN_8));
} else if (aot == AOT_AAC_LD || aot == AOT_AAC_ELD) {
num_bytes += (num_aac_chan *
IXHEAACE_GET_SIZE_ALIGNED(BLK_SWITCH_OFFSET_LD * sizeof(FLOAT32), BYTE_ALIGN_8));
IXHEAAC_GET_SIZE_ALIGNED(BLK_SWITCH_OFFSET_LD * sizeof(FLOAT32), BYTE_ALIGN_8));
}

num_bytes += (num_aac_chan *
IXHEAACE_GET_SIZE_ALIGNED(sizeof(ixheaace_qc_out_channel), BYTE_ALIGN_8));
IXHEAAC_GET_SIZE_ALIGNED(sizeof(ixheaace_qc_out_channel), BYTE_ALIGN_8));
return num_bytes;
}

WORD32 ia_enhaacplus_enc_aac_enc_scr_size(VOID) {
return IXHEAACE_GET_SIZE_ALIGNED(sizeof(iaace_scratch), BYTE_ALIGN_8);
return IXHEAAC_GET_SIZE_ALIGNED(sizeof(iaace_scratch), BYTE_ALIGN_8);
}

VOID ia_enhaacplus_enc_set_shared_bufs(iaace_scratch *scr, WORD32 **shared_buf1,
Expand Down Expand Up @@ -225,28 +225,28 @@ VOID ia_enhaacplus_enc_init_aac_tabs(ixheaace_aac_tables *pstr_aac_tabs) {
static VOID ia_enhaacplus_enc_aac_set_persist_buf(WORD8 *ptr_base, WORD32 num_chan, WORD32 aot) {
iexheaac_encoder_str *pstr_exheaac_encoder;
WORD8 *ptr_curr_mem = ptr_base +
IXHEAACE_GET_SIZE_ALIGNED(sizeof(iexheaac_encoder_str), BYTE_ALIGN_8);
IXHEAAC_GET_SIZE_ALIGNED(sizeof(iexheaac_encoder_str), BYTE_ALIGN_8);
WORD32 i;

pstr_exheaac_encoder = (iexheaac_encoder_str *)ptr_base;

for (i = 0; i < num_chan; i++) {
pstr_exheaac_encoder->psy_out.psy_out_ch[i] = (ixheaace_psy_out_channel *)(ptr_curr_mem);
ptr_curr_mem = ptr_curr_mem +
IXHEAACE_GET_SIZE_ALIGNED(sizeof(ixheaace_psy_out_channel), BYTE_ALIGN_8);
IXHEAAC_GET_SIZE_ALIGNED(sizeof(ixheaace_psy_out_channel), BYTE_ALIGN_8);
}

for (i = 0; i < num_chan; i++) {
pstr_exheaac_encoder->psy_kernel.psy_data[i] = (ixheaace_psy_data *)(ptr_curr_mem);
ptr_curr_mem = ptr_curr_mem +
IXHEAACE_GET_SIZE_ALIGNED(sizeof(ixheaace_psy_data), BYTE_ALIGN_8);
IXHEAAC_GET_SIZE_ALIGNED(sizeof(ixheaace_psy_data), BYTE_ALIGN_8);
}

for (i = 0; i < num_chan; i++) {
pstr_exheaac_encoder->psy_kernel.temporal_noise_shaping_data[i] =
(ixheaace_temporal_noise_shaping_data *)(ptr_curr_mem);
ptr_curr_mem = ptr_curr_mem +
IXHEAACE_GET_SIZE_ALIGNED(sizeof(ixheaace_temporal_noise_shaping_data), BYTE_ALIGN_8);
IXHEAAC_GET_SIZE_ALIGNED(sizeof(ixheaace_temporal_noise_shaping_data), BYTE_ALIGN_8);
}

for (i = 0; i < num_chan; i++) {
Expand All @@ -257,23 +257,23 @@ static VOID ia_enhaacplus_enc_aac_set_persist_buf(WORD8 *ptr_base, WORD32 num_ch
pstr_exheaac_encoder->psy_kernel.psy_data[i]->ptr_mdct_delay_buf =
(FLOAT32 *)(ptr_curr_mem);
ptr_curr_mem = ptr_curr_mem +
IXHEAACE_GET_SIZE_ALIGNED(sizeof(FLOAT32) * BLK_SWITCH_OFFSET_LC_128, BYTE_ALIGN_8);
IXHEAAC_GET_SIZE_ALIGNED(sizeof(FLOAT32) * BLK_SWITCH_OFFSET_LC_128, BYTE_ALIGN_8);
break;

case AOT_AAC_LD:
case AOT_AAC_ELD:
pstr_exheaac_encoder->psy_kernel.psy_data[i]->ptr_mdct_delay_buf =
(FLOAT32 *)(ptr_curr_mem);
ptr_curr_mem = ptr_curr_mem +
IXHEAACE_GET_SIZE_ALIGNED(sizeof(FLOAT32) * BLK_SWITCH_OFFSET_LD, BYTE_ALIGN_8);
IXHEAAC_GET_SIZE_ALIGNED(sizeof(FLOAT32) * BLK_SWITCH_OFFSET_LD, BYTE_ALIGN_8);
break;
}
}

for (i = 0; i < num_chan; i++) {
pstr_exheaac_encoder->qc_out.qc_channel[i] = (ixheaace_qc_out_channel *)(ptr_curr_mem);
ptr_curr_mem = ptr_curr_mem +
IXHEAACE_GET_SIZE_ALIGNED(sizeof(ixheaace_qc_out_channel), BYTE_ALIGN_8);
IXHEAAC_GET_SIZE_ALIGNED(sizeof(ixheaace_qc_out_channel), BYTE_ALIGN_8);
}
}

Expand Down
3 changes: 1 addition & 2 deletions encoder/ixheaace_mps_enc.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@
#include "ixheaace_mps_defines.h"
#include "ixheaace_mps_common_define.h"
#include "ixheaac_constants.h"
#include "ixheaace_aac_constants.h"
#include "ixheaace_bitbuffer.h"
#include "ixheaace_sbr_def.h"
#include "ixheaace_mps_buf.h"
Expand Down Expand Up @@ -1048,7 +1047,7 @@ WORD32 ixheaace_mps_515_scratch_size(VOID) {
sizeof(FLOAT32));
size += (INPUT_LEN_DOWNSAMPLE * IXHEAACE_MAX_CH_IN_BS_ELE * UPSAMPLE_FAC * sizeof(FLOAT32));
size += (INPUT_LEN_DOWNSAMPLE * IXHEAACE_MAX_CH_IN_BS_ELE * UPSAMPLE_FAC * sizeof(FLOAT32));
size = IXHEAACE_GET_SIZE_ALIGNED(size, BYTE_ALIGN_8);
size = IXHEAAC_GET_SIZE_ALIGNED(size, BYTE_ALIGN_8);
return size;
}

Expand Down
3 changes: 1 addition & 2 deletions encoder/ixheaace_resampler.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
#include <string.h>
#include "ixheaac_type_def.h"
#include "ixheaac_constants.h"
#include "ixheaace_aac_constants.h"
#include "ixheaace_sbr_def.h"
#include "ixheaace_resampler.h"
#include "iusace_cnst.h"
Expand Down Expand Up @@ -138,7 +137,7 @@ VOID ixheaace_get_input_scratch_buf(VOID *ptr_scr, FLOAT32 **ptr_scratch_buf_inp
}

WORD32 ixheaace_resampler_scr_size(VOID) {
return IXHEAACE_GET_SIZE_ALIGNED(sizeof(ixheaace_resampler_scratch), BYTE_ALIGN_8);
return IXHEAAC_GET_SIZE_ALIGNED(sizeof(ixheaace_resampler_scratch), BYTE_ALIGN_8);
}

static VOID ia_enhaacplus_enc_iir_sos_filter(ixheaace_iir_sos_resampler *pstr_down_sampler,
Expand Down
62 changes: 31 additions & 31 deletions encoder/ixheaace_sbr_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -726,7 +726,7 @@ ixheaace_env_encode_frame(ixheaace_pstr_sbr_enc pstr_env_encoder, FLOAT32 *ptr_s
}

WORD32 ixheaace_sbr_enc_scr_size(VOID) {
return IXHEAACE_GET_SIZE_ALIGNED(sizeof(ixheaace_str_sbr_enc_scratch), BYTE_ALIGN_8);
return IXHEAAC_GET_SIZE_ALIGNED(sizeof(ixheaace_str_sbr_enc_scratch), BYTE_ALIGN_8);
}

VOID ia_enhaacplus_enc_get_scratch_bufs(VOID *ptr_scr, FLOAT32 **ptr_shared_buf1,
Expand Down Expand Up @@ -756,111 +756,111 @@ VOID ixheaace_sbr_set_scratch_ptr(ixheaace_pstr_sbr_enc pstr_env_enc, VOID *ptr_

WORD32 ixheaace_sbr_enc_pers_size(WORD32 num_ch, WORD32 use_ps, WORD32 harmonic_sbr) {
WORD32 num_bytes;
num_bytes = IXHEAACE_GET_SIZE_ALIGNED(sizeof(struct ixheaace_str_sbr_enc), BYTE_ALIGN_8);
num_bytes += (IXHEAACE_GET_SIZE_ALIGNED(sizeof(struct ixheaace_str_enc_channel), BYTE_ALIGN_8) *
num_bytes = IXHEAAC_GET_SIZE_ALIGNED(sizeof(struct ixheaace_str_sbr_enc), BYTE_ALIGN_8);
num_bytes += (IXHEAAC_GET_SIZE_ALIGNED(sizeof(struct ixheaace_str_enc_channel), BYTE_ALIGN_8) *
num_ch);
num_bytes += IXHEAACE_GET_SIZE_ALIGNED(sizeof(ixheaace_pvc_enc), BYTE_ALIGN_8);
num_bytes += (IXHEAACE_GET_SIZE_ALIGNED(2 * sizeof(FLOAT32) * QMF_FILTER_LENGTH, BYTE_ALIGN_8) *
num_bytes += IXHEAAC_GET_SIZE_ALIGNED(sizeof(ixheaace_pvc_enc), BYTE_ALIGN_8);
num_bytes += (IXHEAAC_GET_SIZE_ALIGNED(2 * sizeof(FLOAT32) * QMF_FILTER_LENGTH, BYTE_ALIGN_8) *
num_ch);
if (1 == harmonic_sbr) {
num_bytes += (IXHEAACE_GET_SIZE_ALIGNED(sizeof(ixheaace_str_hbe_enc), BYTE_ALIGN_8) * num_ch);
num_bytes += (IXHEAACE_GET_SIZE_ALIGNED(sizeof(ixheaace_str_esbr_hbe_txposer), BYTE_ALIGN_8) *
num_bytes += (IXHEAAC_GET_SIZE_ALIGNED(sizeof(ixheaace_str_hbe_enc), BYTE_ALIGN_8) * num_ch);
num_bytes += (IXHEAAC_GET_SIZE_ALIGNED(sizeof(ixheaace_str_esbr_hbe_txposer), BYTE_ALIGN_8) *
num_ch);
num_bytes += (IXHEAACE_GET_SIZE_ALIGNED(IXHEAACE_MAX_HBE_PERSISTENT_SIZE, BYTE_ALIGN_8) *
num_bytes += (IXHEAAC_GET_SIZE_ALIGNED(IXHEAACE_MAX_HBE_PERSISTENT_SIZE, BYTE_ALIGN_8) *
num_ch);
num_bytes += IXHEAACE_GET_SIZE_ALIGNED(ESBR_RESAMP_SAMPLES * sizeof(FLOAT32), BYTE_ALIGN_8);
num_bytes += IXHEAAC_GET_SIZE_ALIGNED(ESBR_RESAMP_SAMPLES * sizeof(FLOAT32), BYTE_ALIGN_8);
}
num_bytes += (IXHEAACE_GET_SIZE_ALIGNED(sizeof(FLOAT32) * 5 * NO_OF_ESTIMATES *
num_bytes += (IXHEAAC_GET_SIZE_ALIGNED(sizeof(FLOAT32) * 5 * NO_OF_ESTIMATES *
MAXIMUM_FREQ_COEFFS, BYTE_ALIGN_8) * num_ch);

num_bytes += (IXHEAACE_GET_SIZE_ALIGNED(sizeof(FLOAT32) * MAX_QMF_TIME_SLOTS *
num_bytes += (IXHEAAC_GET_SIZE_ALIGNED(sizeof(FLOAT32) * MAX_QMF_TIME_SLOTS *
IXHEAACE_QMF_CHANNELS, BYTE_ALIGN_8) * num_ch);

if (use_ps) {
num_bytes += IXHEAACE_GET_SIZE_ALIGNED(sizeof(struct ixheaace_str_enc_channel), BYTE_ALIGN_8);
num_bytes += IXHEAACE_GET_SIZE_ALIGNED(sizeof(struct ixheaace_ps_enc), BYTE_ALIGN_8);
num_bytes += IXHEAACE_GET_SIZE_ALIGNED(sizeof(FLOAT32) * QMF_FILTER_LENGTH, BYTE_ALIGN_8);
num_bytes += IXHEAAC_GET_SIZE_ALIGNED(sizeof(struct ixheaace_str_enc_channel), BYTE_ALIGN_8);
num_bytes += IXHEAAC_GET_SIZE_ALIGNED(sizeof(struct ixheaace_ps_enc), BYTE_ALIGN_8);
num_bytes += IXHEAAC_GET_SIZE_ALIGNED(sizeof(FLOAT32) * QMF_FILTER_LENGTH, BYTE_ALIGN_8);

num_bytes += IXHEAACE_GET_SIZE_ALIGNED(sizeof(WORD32) * 5 * NO_OF_ESTIMATES *
num_bytes += IXHEAAC_GET_SIZE_ALIGNED(sizeof(WORD32) * 5 * NO_OF_ESTIMATES *
MAXIMUM_FREQ_COEFFS, BYTE_ALIGN_8);

/*shared between spectral_band_replication_envYBuffer_fix and IIC IDD PS data buffers*/
num_bytes += IXHEAACE_GET_SIZE_ALIGNED(sizeof(WORD32) * IXHEAACE_QMF_TIME_SLOTS *
num_bytes += IXHEAAC_GET_SIZE_ALIGNED(sizeof(WORD32) * IXHEAACE_QMF_TIME_SLOTS *
IXHEAACE_QMF_CHANNELS, BYTE_ALIGN_8);
}
num_bytes += IXHEAACE_GET_SIZE_ALIGNED(sizeof(ixheaace_str_sbr_qmf_filter_bank), BYTE_ALIGN_8);
num_bytes += IXHEAAC_GET_SIZE_ALIGNED(sizeof(ixheaace_str_sbr_qmf_filter_bank), BYTE_ALIGN_8);
return num_bytes;
}

VOID ia_enhaacplus_enc_sbr_set_persist_buf(WORD8 *ptr_base, WORD32 num_ch, WORD32 use_ps,
WORD32 harmonic_sbr) {
struct ixheaace_str_sbr_enc *pstr_env_enc;
WORD8 *ptr_curr_mem = ptr_base +
IXHEAACE_GET_SIZE_ALIGNED(sizeof(struct ixheaace_str_sbr_enc), BYTE_ALIGN_8);
IXHEAAC_GET_SIZE_ALIGNED(sizeof(struct ixheaace_str_sbr_enc), BYTE_ALIGN_8);
WORD32 i;

pstr_env_enc = (struct ixheaace_str_sbr_enc *)ptr_base;

for (i = 0; i < num_ch; i++) {
pstr_env_enc->pstr_env_channel[i] = (struct ixheaace_str_enc_channel *)(ptr_curr_mem);
ptr_curr_mem = ptr_curr_mem +
IXHEAACE_GET_SIZE_ALIGNED(sizeof(struct ixheaace_str_enc_channel), BYTE_ALIGN_8);
IXHEAAC_GET_SIZE_ALIGNED(sizeof(struct ixheaace_str_enc_channel), BYTE_ALIGN_8);
}

for (i = 0; i < num_ch; i++) {
pstr_env_enc->pstr_env_channel[i]->str_sbr_qmf.ptr_sbr_qmf_states_ana =
(FLOAT32 *)ptr_curr_mem;
ptr_curr_mem += IXHEAACE_GET_SIZE_ALIGNED(
ptr_curr_mem += IXHEAAC_GET_SIZE_ALIGNED(
sizeof(pstr_env_enc->pstr_env_channel[i]->str_sbr_qmf.ptr_sbr_qmf_states_ana[0]) *
QMF_FILTER_LENGTH, BYTE_ALIGN_8);
}
if (!use_ps) {
pstr_env_enc->ptr_common_buffer1 = (WORD32 *)ptr_curr_mem;
ptr_curr_mem += IXHEAACE_GET_SIZE_ALIGNED(sizeof(pstr_env_enc->ptr_common_buffer1[0]) *
ptr_curr_mem += IXHEAAC_GET_SIZE_ALIGNED(sizeof(pstr_env_enc->ptr_common_buffer1[0]) *
num_ch * 5 * NO_OF_ESTIMATES * MAXIMUM_FREQ_COEFFS, BYTE_ALIGN_8);

pstr_env_enc->ptr_common_buffer2 = (WORD32 *)ptr_curr_mem;
ptr_curr_mem += IXHEAACE_GET_SIZE_ALIGNED(sizeof(pstr_env_enc->ptr_common_buffer2[0]) *
ptr_curr_mem += IXHEAAC_GET_SIZE_ALIGNED(sizeof(pstr_env_enc->ptr_common_buffer2[0]) *
num_ch * MAX_QMF_TIME_SLOTS * IXHEAACE_QMF_CHANNELS, BYTE_ALIGN_8);
} else {
pstr_env_enc->ptr_common_buffer1 = (WORD32 *)ptr_curr_mem;
ptr_curr_mem += IXHEAACE_GET_SIZE_ALIGNED(2 * sizeof(pstr_env_enc->ptr_common_buffer1[0]) *
ptr_curr_mem += IXHEAAC_GET_SIZE_ALIGNED(2 * sizeof(pstr_env_enc->ptr_common_buffer1[0]) *
5 * NO_OF_ESTIMATES * MAXIMUM_FREQ_COEFFS, BYTE_ALIGN_8);

pstr_env_enc->ptr_common_buffer2 = (WORD32 *)ptr_curr_mem;
ptr_curr_mem += IXHEAACE_GET_SIZE_ALIGNED(2 * sizeof(pstr_env_enc->ptr_common_buffer2[0]) *
ptr_curr_mem += IXHEAAC_GET_SIZE_ALIGNED(2 * sizeof(pstr_env_enc->ptr_common_buffer2[0]) *
IXHEAACE_QMF_TIME_SLOTS * IXHEAACE_QMF_CHANNELS, BYTE_ALIGN_8);
}
// PVC encoder
pstr_env_enc->pstr_pvc_enc = (ixheaace_pvc_enc *)ptr_curr_mem;
ptr_curr_mem = ptr_curr_mem + IXHEAACE_GET_SIZE_ALIGNED(sizeof(ixheaace_pvc_enc), BYTE_ALIGN_8);
ptr_curr_mem = ptr_curr_mem + IXHEAAC_GET_SIZE_ALIGNED(sizeof(ixheaace_pvc_enc), BYTE_ALIGN_8);
// Harmonic SBR
if (1 == harmonic_sbr) {
for (i = 0; i < num_ch; i++) {
pstr_env_enc->pstr_env_channel[i]->pstr_hbe_enc = (ixheaace_str_hbe_enc *)ptr_curr_mem;
ptr_curr_mem = ptr_curr_mem +
IXHEAACE_GET_SIZE_ALIGNED(sizeof(ixheaace_str_hbe_enc), BYTE_ALIGN_8);
IXHEAAC_GET_SIZE_ALIGNED(sizeof(ixheaace_str_hbe_enc), BYTE_ALIGN_8);
pstr_env_enc->pstr_env_channel[i]->pstr_hbe_enc->pstr_hbe_txposer =
(ixheaace_str_esbr_hbe_txposer *)ptr_curr_mem;
ptr_curr_mem = ptr_curr_mem +
IXHEAACE_GET_SIZE_ALIGNED(sizeof(ixheaace_str_esbr_hbe_txposer), BYTE_ALIGN_8);
IXHEAAC_GET_SIZE_ALIGNED(sizeof(ixheaace_str_esbr_hbe_txposer), BYTE_ALIGN_8);
pstr_env_enc->pstr_env_channel[i]->pstr_hbe_enc->ptr_hbe_txposer_buffers =
(VOID *)ptr_curr_mem;
ptr_curr_mem = ptr_curr_mem + IXHEAACE_MAX_HBE_PERSISTENT_SIZE;
}
pstr_env_enc->ptr_hbe_resample_buf = (FLOAT32 *)ptr_curr_mem;
ptr_curr_mem = ptr_curr_mem + IXHEAACE_GET_SIZE_ALIGNED(
ptr_curr_mem = ptr_curr_mem + IXHEAAC_GET_SIZE_ALIGNED(
(ESBR_RESAMP_SAMPLES * sizeof(pstr_env_enc->ptr_hbe_resample_buf[0])), BYTE_ALIGN_8);
}
if (use_ps) {
pstr_env_enc->pstr_env_channel[1] = (struct ixheaace_str_enc_channel *)(ptr_curr_mem);
ptr_curr_mem = ptr_curr_mem +
IXHEAACE_GET_SIZE_ALIGNED(sizeof(struct ixheaace_str_enc_channel), BYTE_ALIGN_8);
IXHEAAC_GET_SIZE_ALIGNED(sizeof(struct ixheaace_str_enc_channel), BYTE_ALIGN_8);
memset(pstr_env_enc->pstr_env_channel[1], 0, sizeof(struct ixheaace_str_enc_channel));

pstr_env_enc->pstr_env_channel[1]->str_sbr_qmf.ptr_sbr_qmf_states_ana =
(FLOAT32 *)ptr_curr_mem;
ptr_curr_mem += IXHEAACE_GET_SIZE_ALIGNED(
ptr_curr_mem += IXHEAAC_GET_SIZE_ALIGNED(
sizeof(pstr_env_enc->pstr_env_channel[1]->str_sbr_qmf.ptr_sbr_qmf_states_ana[0]) *
QMF_FILTER_LENGTH, BYTE_ALIGN_8);
memset(pstr_env_enc->pstr_env_channel[1]->str_sbr_qmf.ptr_sbr_qmf_states_ana, 0,
Expand All @@ -869,7 +869,7 @@ VOID ia_enhaacplus_enc_sbr_set_persist_buf(WORD8 *ptr_base, WORD32 num_ch, WORD3

pstr_env_enc->pstr_ps_enc = (struct ixheaace_ps_enc *)(ptr_curr_mem);
ptr_curr_mem = ptr_curr_mem +
IXHEAACE_GET_SIZE_ALIGNED(sizeof(struct ixheaace_ps_enc), BYTE_ALIGN_8);
IXHEAAC_GET_SIZE_ALIGNED(sizeof(struct ixheaace_ps_enc), BYTE_ALIGN_8);
memset(pstr_env_enc->pstr_ps_enc, 0, sizeof(struct ixheaace_ps_enc));
}
pstr_env_enc->pstr_synthesis_qmf_bank = (ixheaace_str_sbr_qmf_filter_bank *)(ptr_curr_mem);
Expand Down