aboutsummaryrefslogtreecommitdiff
path: root/decoder/ixheaacd_ld_mps_config.c
diff options
context:
space:
mode:
Diffstat (limited to 'decoder/ixheaacd_ld_mps_config.c')
-rw-r--r--decoder/ixheaacd_ld_mps_config.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/decoder/ixheaacd_ld_mps_config.c b/decoder/ixheaacd_ld_mps_config.c
index 1da3472..162b876 100644
--- a/decoder/ixheaacd_ld_mps_config.c
+++ b/decoder/ixheaacd_ld_mps_config.c
@@ -85,6 +85,9 @@ static IA_ERRORCODE ixheaacd_ld_spatial_extension_config(
config->bs_residual_sampling_freq_index =
ixheaacd_read_bits_buf(it_bit_buff, 4);
+ if (config->bs_residual_sampling_freq_index > MAX_RES_SAMP_FREQ_IDX) {
+ return IA_FATAL_ERROR;
+ }
config->bs_residual_frames_per_spatial_frame =
ixheaacd_read_bits_buf(it_bit_buff, 2);
@@ -97,6 +100,10 @@ static IA_ERRORCODE ixheaacd_ld_spatial_extension_config(
if (config->bs_residual_present[j]) {
config->bs_residual_bands_ld_mps[j] =
ixheaacd_read_bits_buf(it_bit_buff, 5);
+ if (config->bs_residual_bands_ld_mps[j] > MAX_PARAMETER_BANDS)
+ {
+ return IA_FATAL_ERROR;
+ }
}
}
break;
@@ -106,10 +113,17 @@ static IA_ERRORCODE ixheaacd_ld_spatial_extension_config(
config->bs_arbitrary_downmix_residual_sampling_freq_index =
ixheaacd_read_bits_buf(it_bit_buff, 4);
+ if (config->bs_arbitrary_downmix_residual_sampling_freq_index > MAX_RES_SAMP_FREQ_IDX) {
+ return IA_FATAL_ERROR;
+ }
config->bs_arbitrary_downmix_residual_frames_per_spatial_frame =
ixheaacd_read_bits_buf(it_bit_buff, 2);
config->bs_arbitrary_downmix_residual_bands =
ixheaacd_read_bits_buf(it_bit_buff, 5);
+ if (config->bs_arbitrary_downmix_residual_bands >=
+ ixheaacd_freq_res_table[config->bs_freq_res]) {
+ return IA_FATAL_ERROR;
+ }
break;