diff options
Diffstat (limited to 'decoder/ixheaacd_env_extr.c')
-rw-r--r-- | decoder/ixheaacd_env_extr.c | 76 |
1 files changed, 43 insertions, 33 deletions
diff --git a/decoder/ixheaacd_env_extr.c b/decoder/ixheaacd_env_extr.c index dca8171..11d5660 100644 --- a/decoder/ixheaacd_env_extr.c +++ b/decoder/ixheaacd_env_extr.c @@ -119,6 +119,7 @@ static WORD32 ixheaacd_read_esbr_pvc_envelope(ia_pvc_data_struct *ptr_pvc_data, WORD32 sum_length = 0; WORD32 length_bits = 4; UWORD8 pvc_id_bits = PVC_ID_BITS; + IA_ERRORCODE err = IA_NO_ERROR; div_mode = (UWORD8)ixheaacd_read_bits_buf(it_bit_buff, PVC_DIV_MODE_BITS); ns_mode = (UWORD8)ixheaacd_read_bits_buf(it_bit_buff, PVC_NS_MODE_BITS); @@ -223,7 +224,7 @@ static WORD32 ixheaacd_read_esbr_pvc_envelope(ia_pvc_data_struct *ptr_pvc_data, for (i = 0; i < PVC_NUM_TIME_SLOTS; i++) { ptr_pvc_data->pvc_id[i] = pvc_id[i]; } - return 0; + return err; } static VOID ixheaacd_pvc_env_dtdf_data( @@ -563,9 +564,10 @@ static WORD16 ixheaacd_validate_frame_info( return 1; } -static WORD16 ixheaacd_read_extn_data( - ia_sbr_header_data_struct *ptr_header_data, ia_ps_dec_struct *ptr_ps_dec, - ia_bit_buf_struct *it_bit_buff, ia_ps_tables_struct *ps_tables_ptr) { +static VOID ixheaacd_read_extn_data(ia_sbr_header_data_struct *ptr_header_data, + ia_ps_dec_struct *ptr_ps_dec, + ia_bit_buf_struct *it_bit_buff, + ia_ps_tables_struct *ps_tables_ptr) { WORD i; WORD extended_data; WORD no_bits_left; @@ -595,7 +597,7 @@ static WORD16 ixheaacd_read_extn_data( case EXTENSION_ID_PS_CODING: if (ptr_ps_dec == NULL) { - return 0; + return; } if (!(ptr_ps_dec->force_mono || ps_read)) { @@ -604,7 +606,7 @@ static WORD16 ixheaacd_read_extn_data( (WORD16)no_bits_left, ps_tables_ptr)); - if (no_bits_left < 0) return 0; + if (no_bits_left < 0) return; ptr_header_data->channel_mode = PS_STEREO; ps_read = 1; @@ -619,11 +621,11 @@ static WORD16 ixheaacd_read_extn_data( } } - if (no_bits_left < 0) return 0; + if (no_bits_left < 0) return; ixheaacd_read_bits_buf(it_bit_buff, no_bits_left); } - return 1; + return; } WORD32 ixheaacd_sbr_read_pvc_sce(ia_sbr_frame_info_data_struct *ptr_frame_data, @@ -670,8 +672,9 @@ WORD32 ixheaacd_sbr_read_pvc_sce(ia_sbr_frame_info_data_struct *ptr_frame_data, ptr_pvc_data->pvc_mode = ptr_header_data->pvc_mode; - ixheaacd_read_esbr_pvc_envelope(ptr_pvc_data, it_bit_buff, - usac_independency_flag); + err_code = ixheaacd_read_esbr_pvc_envelope(ptr_pvc_data, it_bit_buff, + usac_independency_flag); + if (err_code) return err_code; ixheaacd_read_sbr_noise_floor_data(ptr_header_data, ptr_frame_data, it_bit_buff, env_extr_tables_ptr); @@ -685,15 +688,14 @@ WORD32 ixheaacd_sbr_read_pvc_sce(ia_sbr_frame_info_data_struct *ptr_frame_data, ptr_frame_data->coupling_mode = COUPLING_OFF; - return 0; + return err_code; } -WORD8 ixheaacd_sbr_read_sce(ia_sbr_header_data_struct *ptr_header_data, - ia_sbr_frame_info_data_struct *ptr_frame_data, - ia_ps_dec_struct *ptr_ps_dec, - ia_bit_buf_struct *it_bit_buff, - ia_sbr_tables_struct *ptr_sbr_tables, - WORD audio_object_type) { +IA_ERRORCODE ixheaacd_sbr_read_sce( + ia_sbr_header_data_struct *ptr_header_data, + ia_sbr_frame_info_data_struct *ptr_frame_data, ia_ps_dec_struct *ptr_ps_dec, + ia_bit_buf_struct *it_bit_buff, ia_sbr_tables_struct *ptr_sbr_tables, + WORD audio_object_type) { WORD32 bit; WORD32 i; WORD32 hbe_flag = ptr_header_data->hbe_flag; @@ -701,6 +703,7 @@ WORD8 ixheaacd_sbr_read_sce(ia_sbr_header_data_struct *ptr_header_data, WORD32 usac_flag = ptr_header_data->usac_flag; ia_env_extr_tables_struct *env_extr_tables_ptr = ptr_sbr_tables->env_extr_tables_ptr; + IA_ERRORCODE err = IA_NO_ERROR; ptr_frame_data->coupling_mode = COUPLING_OFF; @@ -711,8 +714,8 @@ WORD8 ixheaacd_sbr_read_sce(ia_sbr_header_data_struct *ptr_header_data, if (audio_object_type == AOT_ER_AAC_ELD || audio_object_type == AOT_ER_AAC_LD) { if (ptr_frame_data->eld_sbr_flag == 1) { - if (!ixheaacd_extract_frame_info_ld(it_bit_buff, ptr_frame_data)) - return 0; + err = ixheaacd_extract_frame_info_ld(it_bit_buff, ptr_frame_data); + if (err) return err; } } else { if (!ixheaacd_sbr_time_freq_grid_info(it_bit_buff, ptr_frame_data, @@ -796,16 +799,16 @@ WORD8 ixheaacd_sbr_read_sce(ia_sbr_header_data_struct *ptr_header_data, return 1; } -WORD8 ixheaacd_sbr_read_cpe(ia_sbr_header_data_struct *ptr_header_data, - ia_sbr_frame_info_data_struct **ptr_frame_data, - ia_bit_buf_struct *it_bit_buff, - ia_sbr_tables_struct *ptr_sbr_tables, - WORD audio_object_type) { +IA_ERRORCODE ixheaacd_sbr_read_cpe( + ia_sbr_header_data_struct *ptr_header_data, + ia_sbr_frame_info_data_struct **ptr_frame_data, + ia_bit_buf_struct *it_bit_buff, ia_sbr_tables_struct *ptr_sbr_tables, + WORD audio_object_type) { WORD32 i, k, bit, num_ch = 2; WORD32 num_if_bands = ptr_header_data->pstr_freq_band_data->num_if_bands; WORD32 hbe_flag = ptr_header_data->hbe_flag; WORD32 usac_flag = ptr_header_data->usac_flag; - + IA_ERRORCODE err = IA_NO_ERROR; ia_env_extr_tables_struct *env_extr_tables_ptr = ptr_sbr_tables->env_extr_tables_ptr; bit = ixheaacd_read_bits_buf(it_bit_buff, 1); @@ -898,8 +901,8 @@ WORD8 ixheaacd_sbr_read_cpe(ia_sbr_header_data_struct *ptr_header_data, if (audio_object_type == AOT_ER_AAC_ELD || audio_object_type == AOT_ER_AAC_LD) { if (ptr_frame_data[i]->eld_sbr_flag == 1) { - if (!ixheaacd_extract_frame_info_ld(it_bit_buff, ptr_frame_data[i])) - return 0; + err = ixheaacd_extract_frame_info_ld(it_bit_buff, ptr_frame_data[i]); + if (err) return err; } } else { if (!ixheaacd_sbr_time_freq_grid_info(it_bit_buff, ptr_frame_data[i], @@ -941,13 +944,19 @@ WORD8 ixheaacd_sbr_read_cpe(ia_sbr_header_data_struct *ptr_header_data, ptr_frame_data[1]->sbr_invf_mode[i] = ptr_frame_data[0]->sbr_invf_mode[i]; } - ixheaacd_read_sbr_env_data(ptr_header_data, ptr_frame_data[0], it_bit_buff, - env_extr_tables_ptr, audio_object_type); + if (!ixheaacd_read_sbr_env_data(ptr_header_data, ptr_frame_data[0], + it_bit_buff, env_extr_tables_ptr, + audio_object_type)) { + return 0; + } ixheaacd_read_sbr_noise_floor_data(ptr_header_data, ptr_frame_data[0], it_bit_buff, env_extr_tables_ptr); - ixheaacd_read_sbr_env_data(ptr_header_data, ptr_frame_data[1], it_bit_buff, - env_extr_tables_ptr, audio_object_type); + if (!ixheaacd_read_sbr_env_data(ptr_header_data, ptr_frame_data[1], + it_bit_buff, env_extr_tables_ptr, + audio_object_type)) { + return 0; + } ixheaacd_read_sbr_noise_floor_data(ptr_header_data, ptr_frame_data[1], it_bit_buff, env_extr_tables_ptr); @@ -1323,13 +1332,14 @@ WORD16 ixheaacd_read_sbr_env_data( return 1; } -int ixheaacd_extract_frame_info_ld( +IA_ERRORCODE ixheaacd_extract_frame_info_ld( ia_bit_buf_struct *it_bit_buff, ia_sbr_frame_info_data_struct *h_frame_data) { int abs_bord_lead = 0, num_rel_lead = 0, num_rel_trail = 0, bs_num_env = 0, frame_class, temp, env, k, abs_bord_trail = 0, middle_bord = 0, bs_num_noise, transient_env_temp = 0, bs_transient_position = 0; + IA_ERRORCODE err = IA_NO_ERROR; WORD16 time_border[MAX_ENVELOPES + 1]; WORD16 time_border_noise[2 + 1]; WORD16 f[MAX_ENVELOPES + 1]; @@ -1449,7 +1459,7 @@ int ixheaacd_extract_frame_info_ld( memcpy(v_frame_info->noise_border_vec, time_border_noise, (bs_num_noise + 1) * sizeof(WORD16)); - return 1; + return err; } WORD32 ixheaacd_pvc_time_freq_grid_info( |