aboutsummaryrefslogtreecommitdiff
path: root/decoder/ixheaacd_ld_mps_dec.c
diff options
context:
space:
mode:
Diffstat (limited to 'decoder/ixheaacd_ld_mps_dec.c')
-rw-r--r--decoder/ixheaacd_ld_mps_dec.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/decoder/ixheaacd_ld_mps_dec.c b/decoder/ixheaacd_ld_mps_dec.c
index 8b98283..b12d1f8 100644
--- a/decoder/ixheaacd_ld_mps_dec.c
+++ b/decoder/ixheaacd_ld_mps_dec.c
@@ -50,9 +50,10 @@
#include "ixheaacd_drc_data_struct.h"
#include "ixheaacd_lt_predict.h"
-
-#include "ixheaacd_channelinfo.h"
#include "ixheaacd_cnst.h"
+#include "ixheaacd_ec_defines.h"
+#include "ixheaacd_ec_struct_def.h"
+#include "ixheaacd_channelinfo.h"
#include "ixheaacd_drc_dec.h"
#include "ixheaacd_sbrdecoder.h"
#include "ixheaacd_block.h"
@@ -61,8 +62,6 @@
#include "ixheaacd_sbr_payload.h"
#include "ixheaacd_common_rom.h"
-#include "ixheaacd_type_def.h"
-
#include "ixheaacd_sbrdecsettings.h"
#include "ixheaacd_sbr_scale.h"
#include "ixheaacd_env_extr_part.h"
@@ -85,6 +84,10 @@
#include "ixheaacd_pvc_dec.h"
#include "ixheaacd_sbr_dec.h"
+#include "ixheaacd_mps_macro_def.h"
+#include "ixheaacd_mps_struct_def.h"
+#include "ixheaacd_mps_res_rom.h"
+#include "ixheaacd_mps_aac_struct.h"
#include "ixheaacd_mps_dec.h"
#include "ixheaacd_struct_def.h"
@@ -154,6 +157,8 @@ WORD32 ixheaacd_ld_mps_apply(ia_exhaacplus_dec_api_struct *p_obj_exhaacplus_dec,
err = ixheaacd_mps_frame_decode(mps_handle);
if (err != IA_NO_ERROR) return err;
+ if (aac_handle->mps_dec_handle.num_parameter_sets_prev <= 0) return IA_FATAL_ERROR;
+
if (mps_handle->ldmps_config.bs_tree_config == 7) {
ixheaacd_pre_and_mix_matrix_calculation(&(aac_handle->mps_dec_handle));
ixheaacd_mps_pre_matrix_mix_matrix_smoothing(&(aac_handle->mps_dec_handle));
@@ -177,22 +182,22 @@ WORD32 ixheaacd_ld_mps_apply(ia_exhaacplus_dec_api_struct *p_obj_exhaacplus_dec,
}
ixheaacd_mps_qmf_hyb_analysis(mps_handle);
- err = ixheaacd_mps_apply_pre_matrix(mps_handle);
- if (err < 0) return err;
+ mps_handle->bs_high_rate_mode = 1;
+
+ ixheaacd_mps_apply_pre_matrix(mps_handle);
ixheaacd_mps_create_w(mps_handle);
if ((!(mps_handle->res_bands | mps_handle->pre_mix_req)) &&
(mps_handle->config->bs_phase_coding == 0)) {
- err = ixheaacd_mps_apply_mix_matrix_type1(mps_handle);
+ ixheaacd_mps_apply_mix_matrix_type1(mps_handle);
} else if (mps_handle->pre_mix_req) {
- err = ixheaacd_mps_apply_mix_matrix_type2(mps_handle);
+ ixheaacd_mps_apply_mix_matrix_type2(mps_handle);
} else {
- err = ixheaacd_mps_apply_mix_matrix_type3(mps_handle);
+ ixheaacd_mps_apply_mix_matrix_type3(mps_handle);
}
- if (err < 0) return err;
if (mps_handle->ldmps_config.bs_temp_shape_config == 2) {
ixheaacd_mps_time_env_shaping(mps_handle);