Loading lib_com/ivas_prot.h +25 −29 Original line number Original line Diff line number Diff line Loading @@ -3960,7 +3960,8 @@ void ivas_dirac_dec_compute_directional_responses( void ivas_dirac_dec_get_frequency_axis( void ivas_dirac_dec_get_frequency_axis( float *frequency_axis, /* o : array of center frequencies of a real filter bank */ float *frequency_axis, /* o : array of center frequencies of a real filter bank */ const int32_t output_Fs, /* i : sampling frequency */ const int32_t output_Fs, /* i : sampling frequency */ const int16_t num_freq_bands ); /* i : number of frequency bands */ const int16_t num_freq_bands /* i : number of frequency bands */ ); void calculate_hodirac_sector_parameters( void calculate_hodirac_sector_parameters( #ifdef FIX_485_STATIC_BUFFERS #ifdef FIX_485_STATIC_BUFFERS Loading Loading @@ -3991,7 +3992,7 @@ ivas_error ivas_mc_paramupmix_enc_open( void ivas_mc_paramupmix_enc_close( void ivas_mc_paramupmix_enc_close( MC_PARAMUPMIX_ENC_HANDLE *hMCParamUpmix, /* i/o: MC Param-Upmix encoder handle */ MC_PARAMUPMIX_ENC_HANDLE *hMCParamUpmix, /* i/o: MC Param-Upmix encoder handle */ const int32_t sampling_rate const int32_t input_Fs /* i : input sampling rate */ ); ); void ivas_mc_paramupmix_dec( void ivas_mc_paramupmix_dec( Loading @@ -3999,10 +4000,6 @@ void ivas_mc_paramupmix_dec( float output_f[][L_FRAME48k] /* i/o: synthesized core-coder transport channels/DirAC output */ float output_f[][L_FRAME48k] /* i/o: synthesized core-coder transport channels/DirAC output */ ); ); int16_t ivas_mc_paramupmix_getNumTransportChannels( void ); ivas_error ivas_mc_paramupmix_dec_open( ivas_error ivas_mc_paramupmix_dec_open( Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ ); ); Loading @@ -4012,9 +4009,8 @@ void ivas_mc_paramupmix_dec_close( ); ); void ivas_mc_paramupmix_dec_read_BS( void ivas_mc_paramupmix_dec_read_BS( const int32_t ivas_total_brate, /* i : IVAS total bitrate */ Decoder_State *st, /* i/o: decoder state structure */ Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ Decoder_State *st, /* i/o: decoder state structure */ MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix, /* i/o: decoder MC Param-Upmix handle */ MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix, /* i/o: decoder MC Param-Upmix handle */ int16_t *nb_bits /* o : number of bits written */ int16_t *nb_bits /* o : number of bits written */ ); ); Loading lib_com/ivas_rom_com.c +11 −0 Original line number Original line Diff line number Diff line Loading @@ -2535,6 +2535,17 @@ const uint16_t ivas_param_mc_sym_freq_ild_delta_combined_48_16bits[2 * PARAM_MC_ }; }; /*----------------------------------------------------------------------------------* * Parametric Upmix MC ROM tables *----------------------------------------------------------------------------------*/ const int16_t ivas_param_upmx_mx_qmap[2][33] = { { 0, 1, 2, 3, 4, 5, 6, 7, 8, 7, 6, 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 7, 6, 5, 4, 3, 2, 1, 0 }, { 0, 1, 2, 3, 4, 3, 2, 1, 0, 1, 2, 3, 4, 3, 2, 1, 0 } }; /*----------------------------------------------------------------------------------* /*----------------------------------------------------------------------------------* * MASA ROM tables * MASA ROM tables *----------------------------------------------------------------------------------*/ *----------------------------------------------------------------------------------*/ Loading lib_com/ivas_rom_com.h +7 −0 Original line number Original line Diff line number Diff line Loading @@ -261,6 +261,13 @@ extern const uint16_t ivas_param_mc_cum_freq_icc_delta_combined_48_16bits[2 * PA extern const uint16_t ivas_param_mc_sym_freq_icc_delta_combined_48_16bits[2 * PARAM_MC_SZ_ICC_QUANTIZER - 1]; extern const uint16_t ivas_param_mc_sym_freq_icc_delta_combined_48_16bits[2 * PARAM_MC_SZ_ICC_QUANTIZER - 1]; /*----------------------------------------------------------------------------------* * Parametric Upmix MC ROM tables *----------------------------------------------------------------------------------*/ extern const int16_t ivas_param_upmx_mx_qmap[2][33]; /*----------------------------------------------------------------------------------* /*----------------------------------------------------------------------------------* * MASA ROM tables * MASA ROM tables *----------------------------------------------------------------------------------*/ *----------------------------------------------------------------------------------*/ Loading lib_dec/ivas_dec.c +1 −1 Original line number Original line Diff line number Diff line Loading @@ -627,7 +627,7 @@ ivas_error ivas_dec( { { ivas_lfe_dec( st_ivas->hLFE, st, output_frame, st_ivas->bfi, output_lfe_ch ); ivas_lfe_dec( st_ivas->hLFE, st, output_frame, st_ivas->bfi, output_lfe_ch ); ivas_mc_paramupmix_dec_read_BS( ivas_total_brate, st, st_ivas, st_ivas->hMCParamUpmix, &nb_bits_metadata[0] ); ivas_mc_paramupmix_dec_read_BS( st_ivas, st, st_ivas->hMCParamUpmix, &nb_bits_metadata[0] ); if ( ( error = ivas_mct_dec( st_ivas, output, output_frame, nb_bits_metadata[0] ) ) != IVAS_ERR_OK ) if ( ( error = ivas_mct_dec( st_ivas, output, output_frame, nb_bits_metadata[0] ) ) != IVAS_ERR_OK ) { { Loading lib_dec/ivas_mc_paramupmix_dec.c +68 −60 Original line number Original line Diff line number Diff line Loading @@ -52,19 +52,21 @@ /*-----------------------------------------------------------------------* /*-----------------------------------------------------------------------* * Local function prototypes * Local function prototypes *-----------------------------------------------------------------------*/ *-----------------------------------------------------------------------*/ static void ps_pred_process( MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix, float qmf_mod_re[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], float qmf_mod_im[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], float qmf_side_re[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], float qmf_side_im[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], int16_t ch ); static void ps_pred_process( MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix, float qmf_mod_re[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], float qmf_mod_im[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], float qmf_side_re[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], float qmf_side_im[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], const int16_t ch ); static void paramupmix_td_decorr_process( ivas_td_decorr_state_t *hTdDecorr[], float pcm_in[][L_FRAME48k], float **pp_out_pcm, const int16_t output_frame ); static void paramupmix_td_decorr_process( ivas_td_decorr_state_t *hTdDecorr[], float pcm_in[][L_FRAME48k], float **pp_out_pcm, const int16_t output_frame ); static int huff_read( Decoder_State *st, const int16_t ( *ht )[2] ); static int huff_read( Decoder_State *st, const int16_t ( *ht )[2] ); static void huffman_decode( Decoder_State *st, int16_t nv, int16_t ivStart, PAR_TYPE parType, QUANT_TYPE quant_type, int16_t bNoDt, int32_t *vq ); static void huffman_decode( Decoder_State *st, const int16_t nv, const int16_t ivStart, PAR_TYPE parType, QUANT_TYPE quant_type, const int16_t bNoDt, int32_t *vq ); static void dequant_alpha( const int16_t nv, const int16_t ivStart, const QUANT_TYPE quant_type, int32_t *vq, float *v ); static void dequant_alpha( int16_t nv, int16_t ivStart, QUANT_TYPE quant_type, int32_t *vq, float *v ); static void dequant_beta( const int16_t nv, const int16_t ivStart, const QUANT_TYPE quant_type, int32_t *aq, int32_t *bq, float *beta ); static void dequant_beta( int16_t nv, int16_t ivStart, QUANT_TYPE quant_type, int32_t *aq, int32_t *bq, float *beta ); static void get_ec_data( Decoder_State *st, const PAR_TYPE parType, const QUANT_TYPE quant_type, const int16_t nParBand, const int16_t parBandStart, int32_t *parQ, int32_t *alphaQEnv, float ab[IVAS_MAX_NUM_BANDS] ); static void get_ec_data( Decoder_State *st, PAR_TYPE parType, QUANT_TYPE quant_type, int16_t nParBand, int16_t parBandStart, int32_t *parQ, int32_t *alphaQEnv, float ab[IVAS_MAX_NUM_BANDS] ); /*------------------------------------------------------------------------- /*------------------------------------------------------------------------- * ivas_mc_paramupmix_dec_read_BS() * ivas_mc_paramupmix_dec_read_BS() Loading @@ -73,9 +75,8 @@ static void get_ec_data( Decoder_State *st, PAR_TYPE parType, QUANT_TYPE quant_t *------------------------------------------------------------------------*/ *------------------------------------------------------------------------*/ void ivas_mc_paramupmix_dec_read_BS( void ivas_mc_paramupmix_dec_read_BS( const int32_t ivas_total_brate, /* i : IVAS total bitrate */ Decoder_State *st, /* i/o: decoder state structure */ Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ Decoder_State *st0, /* i/o: decoder state structure */ MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix, /* i/o: decoder MC Param-Upmix handle */ MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix, /* i/o: decoder MC Param-Upmix handle */ int16_t *nb_bits /* o : number of bits written */ int16_t *nb_bits /* o : number of bits written */ ) ) Loading @@ -89,7 +90,7 @@ void ivas_mc_paramupmix_dec_read_BS( push_wmops( "mc_paramupmix_read_bs" ); push_wmops( "mc_paramupmix_read_bs" ); *nb_bits = 0; *nb_bits = 0; if ( st->bfi ) if ( st0->bfi ) { { for ( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ ) for ( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ ) { { Loading @@ -103,31 +104,31 @@ void ivas_mc_paramupmix_dec_read_BS( } } else /* if (!st->bfi) */ else /* if (!st->bfi) */ { { bit_stream_orig = st->bit_stream; bit_stream_orig = st0->bit_stream; next_bit_pos_orig = st->next_bit_pos; next_bit_pos_orig = st0->next_bit_pos; last_bit_pos = (int16_t) ( ( ivas_total_brate / FRAMES_PER_SEC ) - 1 ); last_bit_pos = (int16_t) ( ( st_ivas->hDecoderConfig->ivas_total_brate / FRAMES_PER_SEC ) - 1 ); nb_bits_read_orig = 0; nb_bits_read_orig = 0; last_bit_pos -= nb_bits_read_orig; /* reverse the bitstream for easier reading of indices */ last_bit_pos -= nb_bits_read_orig; /* reverse the bitstream for easier reading of indices */ for ( i = 0; i < min( MAX_BITS_METADATA, last_bit_pos ); i++ ) for ( i = 0; i < min( MAX_BITS_METADATA, last_bit_pos ); i++ ) { { bstr_meta[i] = st_ivas->bit_stream[last_bit_pos - i]; bstr_meta[i] = st_ivas->bit_stream[last_bit_pos - i]; } } st->bit_stream = bstr_meta; st0->bit_stream = bstr_meta; st->next_bit_pos = 0; st0->next_bit_pos = 0; st->bits_frame = min( MAX_BITS_METADATA, last_bit_pos + 1 ); st0->bits_frame = min( MAX_BITS_METADATA, last_bit_pos + 1 ); st->total_brate = st_ivas->hDecoderConfig->ivas_total_brate; /* to avoid BER detect */ st0->total_brate = st_ivas->hDecoderConfig->ivas_total_brate; /* to avoid BER detect */ for ( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ ) for ( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ ) { { get_ec_data( st, ALPHA, FINE /*quant_type*/, IVAS_MAX_NUM_BANDS /*nParBand*/, get_ec_data( st0, ALPHA, FINE /*quant_type*/, IVAS_MAX_NUM_BANDS /*nParBand*/, 0 /*parBandStart*/, hMCParamUpmix->alpha_quant[i], alpha_quant, hMCParamUpmix->alphas[i] ); 0 /*parBandStart*/, hMCParamUpmix->alpha_quant[i], alpha_quant, hMCParamUpmix->alphas[i] ); get_ec_data( st, BETA, FINE /*quant_type*/, IVAS_MAX_NUM_BANDS /*nParBand*/, get_ec_data( st0, BETA, FINE /*quant_type*/, IVAS_MAX_NUM_BANDS /*nParBand*/, 0 /*parBandStart*/, hMCParamUpmix->beta_quant[i], alpha_quant, hMCParamUpmix->betas[i] ); 0 /*parBandStart*/, hMCParamUpmix->beta_quant[i], alpha_quant, hMCParamUpmix->betas[i] ); } } *nb_bits += st->next_bit_pos; *nb_bits += st0->next_bit_pos; st->bit_stream = bit_stream_orig; st0->bit_stream = bit_stream_orig; st->next_bit_pos = next_bit_pos_orig; st0->next_bit_pos = next_bit_pos_orig; if ( hMCParamUpmix->first_frame ) if ( hMCParamUpmix->first_frame ) { { Loading @@ -145,11 +146,13 @@ void ivas_mc_paramupmix_dec_read_BS( return; return; } } /*------------------------------------------------------------------------- /*------------------------------------------------------------------------- * ivas_mc_paramupmix_dec() * ivas_mc_paramupmix_dec() * * * MC ParamUpmix decoding process * MC ParamUpmix decoding process *------------------------------------------------------------------------*/ *------------------------------------------------------------------------*/ void ivas_mc_paramupmix_dec( void ivas_mc_paramupmix_dec( Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ float output_f[][L_FRAME48k] /* i/o: synthesized core-coder transport channels */ float output_f[][L_FRAME48k] /* i/o: synthesized core-coder transport channels */ Loading Loading @@ -288,17 +291,6 @@ void ivas_mc_paramupmix_dec( return; return; } } /*------------------------------------------------------------------------- * ivas_mc_paramupmix_getNumTransportChannels() * * *------------------------------------------------------------------------*/ int16_t ivas_mc_paramupmix_getNumTransportChannels() { int16_t nchan_transport; nchan_transport = MC_PARAMUPMIX_MAX_TRANSPORT_CHANS; /* 5.1.2 */ return nchan_transport; } /*------------------------------------------------------------------------- /*------------------------------------------------------------------------- * ivas_mc_paramupmix_dec_open() * ivas_mc_paramupmix_dec_open() Loading Loading @@ -329,7 +321,7 @@ ivas_error ivas_mc_paramupmix_dec_open( output_Fs = st_ivas->hDecoderConfig->output_Fs; output_Fs = st_ivas->hDecoderConfig->output_Fs; hMCParamUpmix->first_frame = 1; hMCParamUpmix->first_frame = 1; st_ivas->nchan_transport = ivas_mc_paramupmix_getNumTransportChannels(); st_ivas->nchan_transport = MC_PARAMUPMIX_MAX_TRANSPORT_CHANS; nchan_transport = st_ivas->nchan_transport; nchan_transport = st_ivas->nchan_transport; switch ( nchan_transport ) switch ( nchan_transport ) Loading @@ -344,6 +336,7 @@ ivas_error ivas_mc_paramupmix_dec_open( assert( 0 && "Number of TC not supported for MC ParamUpmix!" ); assert( 0 && "Number of TC not supported for MC ParamUpmix!" ); #endif #endif } } /*-----------------------------------------------------------------* /*-----------------------------------------------------------------* * set input parameters * set input parameters *-----------------------------------------------------------------*/ *-----------------------------------------------------------------*/ Loading @@ -369,6 +362,7 @@ ivas_error ivas_mc_paramupmix_dec_open( return error; return error; } } /*------------------------------------------------------------------------- /*------------------------------------------------------------------------- * ivas_mc_paramupmix_dec_close() * ivas_mc_paramupmix_dec_close() * * Loading Loading @@ -403,6 +397,7 @@ void ivas_mc_paramupmix_dec_close( return; return; } } /*****************************************************************************************/ /*****************************************************************************************/ /* local functions */ /* local functions */ /*****************************************************************************************/ /*****************************************************************************************/ Loading @@ -413,7 +408,7 @@ static void ps_pred_process( float qmf_mod_im[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], float qmf_mod_im[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], float qmf_side_re[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* in/out */ float qmf_side_re[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* in/out */ float qmf_side_im[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], float qmf_side_im[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], int16_t ch ) const int16_t ch ) { { float vmre, vmim, vsre, vsim; float vmre, vmim, vsre, vsim; int16_t iqmf, ipar, ismp, iismp; int16_t iqmf, ipar, ismp, iismp; Loading @@ -423,7 +418,7 @@ static void ps_pred_process( float *alpha_prev = hMCParamUpmix->alpha_prev[ch]; float *alpha_prev = hMCParamUpmix->alpha_prev[ch]; float *beta_prev = hMCParamUpmix->beta_prev[ch]; float *beta_prev = hMCParamUpmix->beta_prev[ch]; int16_t qmf_to_par_band[] = { const int16_t qmf_to_par_band[] = { 0, 1, 2, 3, 4, 5, 5, 6, 6, 7, 0, 1, 2, 3, 4, 5, 5, 6, 6, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, Loading Loading @@ -466,8 +461,11 @@ static void ps_pred_process( alpha1 = alpha2; alpha1 = alpha2; beta1 = beta2; beta1 = beta2; } } return; } } static void paramupmix_td_decorr_process( static void paramupmix_td_decorr_process( ivas_td_decorr_state_t *hTdDecorr[], /* i/o: SPAR Covar. decoder handle */ ivas_td_decorr_state_t *hTdDecorr[], /* i/o: SPAR Covar. decoder handle */ float pcm_in[][L_FRAME48k], /* i : input audio channels */ float pcm_in[][L_FRAME48k], /* i : input audio channels */ Loading Loading @@ -514,6 +512,7 @@ static void paramupmix_td_decorr_process( return; return; } } static int huff_read( static int huff_read( Decoder_State *st, Decoder_State *st, const int16_t ( *ht )[2] ) const int16_t ( *ht )[2] ) Loading @@ -531,19 +530,19 @@ static int huff_read( return -( node + 1 ); return -( node + 1 ); } } static void huffman_decode( static void huffman_decode( Decoder_State *st, Decoder_State *st, int16_t nv, const int16_t nv, int16_t ivStart, const int16_t ivStart, PAR_TYPE parType, const PAR_TYPE parType, QUANT_TYPE quant_type, const QUANT_TYPE quant_type, int16_t bNoDt, const int16_t bNoDt, int32_t *vq ) int32_t *vq ) { { const int16_t( *huff_node_table )[2]; const int16_t( *huff_node_table )[2]; int16_t iv, bdt, nquant, offset; int16_t iv, bdt, nquant, offset; nquant = 0; nquant = 0; switch ( parType ) switch ( parType ) { { Loading @@ -568,6 +567,7 @@ static void huffman_decode( bdt = st->bit_stream[st->next_bit_pos]; bdt = st->bit_stream[st->next_bit_pos]; st->next_bit_pos++; st->next_bit_pos++; } } if ( bdt ) if ( bdt ) { /* Get dt */ { /* Get dt */ switch ( parType ) switch ( parType ) Loading Loading @@ -620,12 +620,15 @@ static void huffman_decode( vq[iv] = huff_read( st, huff_node_table ) + vq[iv - 1] - offset; vq[iv] = huff_read( st, huff_node_table ) + vq[iv - 1] - offset; } } } } return; } } static void dequant_alpha( static void dequant_alpha( int16_t nv, const int16_t nv, int16_t ivStart, const int16_t ivStart, QUANT_TYPE quant_type, const QUANT_TYPE quant_type, int32_t *vq, int32_t *vq, float *v ) float *v ) { { Loading @@ -641,22 +644,21 @@ static void dequant_alpha( { { v[iv] = quant_table->data[vq[iv]]; v[iv] = quant_table->data[vq[iv]]; } } return; } } static void dequant_beta( static void dequant_beta( int16_t nv, const int16_t nv, int16_t ivStart, const int16_t ivStart, QUANT_TYPE quant_type, const QUANT_TYPE quant_type, int32_t *aq, int32_t *aq, int32_t *bq, int32_t *bq, float *beta ) float *beta ) { { int16_t iv; int16_t iv; ACPL_QUANT_TABLE *quant_table; ACPL_QUANT_TABLE *quant_table; const int16_t qmap[2][33] = { { 0, 1, 2, 3, 4, 5, 6, 7, 8, 7, 6, 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 7, 6, 5, 4, 3, 2, 1, 0 }, { 0, 1, 2, 3, 4, 3, 2, 1, 0, 1, 2, 3, 4, 3, 2, 1, 0 } }; for ( iv = 0; iv < ivStart; iv++ ) for ( iv = 0; iv < ivStart; iv++ ) { { Loading @@ -665,22 +667,26 @@ static void dequant_beta( for ( iv = ivStart; iv < nv; iv++ ) for ( iv = ivStart; iv < nv; iv++ ) { { quant_table = &beta_quant_table[quant_type][qmap[quant_type][aq[iv]]]; quant_table = &beta_quant_table[quant_type][ivas_param_upmx_mx_qmap[quant_type][aq[iv]]]; beta[iv] = quant_table->data[bq[iv]]; beta[iv] = quant_table->data[bq[iv]]; } } return; } } static void get_ec_data( static void get_ec_data( Decoder_State *st, Decoder_State *st, PAR_TYPE parType, const PAR_TYPE parType, QUANT_TYPE quant_type, const QUANT_TYPE quant_type, int16_t nParBand, const int16_t nParBand, int16_t parBandStart, const int16_t parBandStart, int32_t *parQ, int32_t *parQ, int32_t *alphaQEnv, int32_t *alphaQEnv, float ab[IVAS_MAX_NUM_BANDS] ) float ab[IVAS_MAX_NUM_BANDS] ) { { huffman_decode( st, nParBand, parBandStart, parType, quant_type, 0, parQ ); huffman_decode( st, nParBand, parBandStart, parType, quant_type, 0, parQ ); if ( parType == ALPHA ) if ( parType == ALPHA ) { { dequant_alpha( nParBand, parBandStart, quant_type, parQ, ab ); dequant_alpha( nParBand, parBandStart, quant_type, parQ, ab ); Loading @@ -690,4 +696,6 @@ static void get_ec_data( { { dequant_beta( nParBand, parBandStart, quant_type, alphaQEnv, parQ, ab ); dequant_beta( nParBand, parBandStart, quant_type, alphaQEnv, parQ, ab ); } } return; } } Loading
lib_com/ivas_prot.h +25 −29 Original line number Original line Diff line number Diff line Loading @@ -3960,7 +3960,8 @@ void ivas_dirac_dec_compute_directional_responses( void ivas_dirac_dec_get_frequency_axis( void ivas_dirac_dec_get_frequency_axis( float *frequency_axis, /* o : array of center frequencies of a real filter bank */ float *frequency_axis, /* o : array of center frequencies of a real filter bank */ const int32_t output_Fs, /* i : sampling frequency */ const int32_t output_Fs, /* i : sampling frequency */ const int16_t num_freq_bands ); /* i : number of frequency bands */ const int16_t num_freq_bands /* i : number of frequency bands */ ); void calculate_hodirac_sector_parameters( void calculate_hodirac_sector_parameters( #ifdef FIX_485_STATIC_BUFFERS #ifdef FIX_485_STATIC_BUFFERS Loading Loading @@ -3991,7 +3992,7 @@ ivas_error ivas_mc_paramupmix_enc_open( void ivas_mc_paramupmix_enc_close( void ivas_mc_paramupmix_enc_close( MC_PARAMUPMIX_ENC_HANDLE *hMCParamUpmix, /* i/o: MC Param-Upmix encoder handle */ MC_PARAMUPMIX_ENC_HANDLE *hMCParamUpmix, /* i/o: MC Param-Upmix encoder handle */ const int32_t sampling_rate const int32_t input_Fs /* i : input sampling rate */ ); ); void ivas_mc_paramupmix_dec( void ivas_mc_paramupmix_dec( Loading @@ -3999,10 +4000,6 @@ void ivas_mc_paramupmix_dec( float output_f[][L_FRAME48k] /* i/o: synthesized core-coder transport channels/DirAC output */ float output_f[][L_FRAME48k] /* i/o: synthesized core-coder transport channels/DirAC output */ ); ); int16_t ivas_mc_paramupmix_getNumTransportChannels( void ); ivas_error ivas_mc_paramupmix_dec_open( ivas_error ivas_mc_paramupmix_dec_open( Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ ); ); Loading @@ -4012,9 +4009,8 @@ void ivas_mc_paramupmix_dec_close( ); ); void ivas_mc_paramupmix_dec_read_BS( void ivas_mc_paramupmix_dec_read_BS( const int32_t ivas_total_brate, /* i : IVAS total bitrate */ Decoder_State *st, /* i/o: decoder state structure */ Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ Decoder_State *st, /* i/o: decoder state structure */ MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix, /* i/o: decoder MC Param-Upmix handle */ MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix, /* i/o: decoder MC Param-Upmix handle */ int16_t *nb_bits /* o : number of bits written */ int16_t *nb_bits /* o : number of bits written */ ); ); Loading
lib_com/ivas_rom_com.c +11 −0 Original line number Original line Diff line number Diff line Loading @@ -2535,6 +2535,17 @@ const uint16_t ivas_param_mc_sym_freq_ild_delta_combined_48_16bits[2 * PARAM_MC_ }; }; /*----------------------------------------------------------------------------------* * Parametric Upmix MC ROM tables *----------------------------------------------------------------------------------*/ const int16_t ivas_param_upmx_mx_qmap[2][33] = { { 0, 1, 2, 3, 4, 5, 6, 7, 8, 7, 6, 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 7, 6, 5, 4, 3, 2, 1, 0 }, { 0, 1, 2, 3, 4, 3, 2, 1, 0, 1, 2, 3, 4, 3, 2, 1, 0 } }; /*----------------------------------------------------------------------------------* /*----------------------------------------------------------------------------------* * MASA ROM tables * MASA ROM tables *----------------------------------------------------------------------------------*/ *----------------------------------------------------------------------------------*/ Loading
lib_com/ivas_rom_com.h +7 −0 Original line number Original line Diff line number Diff line Loading @@ -261,6 +261,13 @@ extern const uint16_t ivas_param_mc_cum_freq_icc_delta_combined_48_16bits[2 * PA extern const uint16_t ivas_param_mc_sym_freq_icc_delta_combined_48_16bits[2 * PARAM_MC_SZ_ICC_QUANTIZER - 1]; extern const uint16_t ivas_param_mc_sym_freq_icc_delta_combined_48_16bits[2 * PARAM_MC_SZ_ICC_QUANTIZER - 1]; /*----------------------------------------------------------------------------------* * Parametric Upmix MC ROM tables *----------------------------------------------------------------------------------*/ extern const int16_t ivas_param_upmx_mx_qmap[2][33]; /*----------------------------------------------------------------------------------* /*----------------------------------------------------------------------------------* * MASA ROM tables * MASA ROM tables *----------------------------------------------------------------------------------*/ *----------------------------------------------------------------------------------*/ Loading
lib_dec/ivas_dec.c +1 −1 Original line number Original line Diff line number Diff line Loading @@ -627,7 +627,7 @@ ivas_error ivas_dec( { { ivas_lfe_dec( st_ivas->hLFE, st, output_frame, st_ivas->bfi, output_lfe_ch ); ivas_lfe_dec( st_ivas->hLFE, st, output_frame, st_ivas->bfi, output_lfe_ch ); ivas_mc_paramupmix_dec_read_BS( ivas_total_brate, st, st_ivas, st_ivas->hMCParamUpmix, &nb_bits_metadata[0] ); ivas_mc_paramupmix_dec_read_BS( st_ivas, st, st_ivas->hMCParamUpmix, &nb_bits_metadata[0] ); if ( ( error = ivas_mct_dec( st_ivas, output, output_frame, nb_bits_metadata[0] ) ) != IVAS_ERR_OK ) if ( ( error = ivas_mct_dec( st_ivas, output, output_frame, nb_bits_metadata[0] ) ) != IVAS_ERR_OK ) { { Loading
lib_dec/ivas_mc_paramupmix_dec.c +68 −60 Original line number Original line Diff line number Diff line Loading @@ -52,19 +52,21 @@ /*-----------------------------------------------------------------------* /*-----------------------------------------------------------------------* * Local function prototypes * Local function prototypes *-----------------------------------------------------------------------*/ *-----------------------------------------------------------------------*/ static void ps_pred_process( MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix, float qmf_mod_re[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], float qmf_mod_im[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], float qmf_side_re[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], float qmf_side_im[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], int16_t ch ); static void ps_pred_process( MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix, float qmf_mod_re[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], float qmf_mod_im[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], float qmf_side_re[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], float qmf_side_im[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], const int16_t ch ); static void paramupmix_td_decorr_process( ivas_td_decorr_state_t *hTdDecorr[], float pcm_in[][L_FRAME48k], float **pp_out_pcm, const int16_t output_frame ); static void paramupmix_td_decorr_process( ivas_td_decorr_state_t *hTdDecorr[], float pcm_in[][L_FRAME48k], float **pp_out_pcm, const int16_t output_frame ); static int huff_read( Decoder_State *st, const int16_t ( *ht )[2] ); static int huff_read( Decoder_State *st, const int16_t ( *ht )[2] ); static void huffman_decode( Decoder_State *st, int16_t nv, int16_t ivStart, PAR_TYPE parType, QUANT_TYPE quant_type, int16_t bNoDt, int32_t *vq ); static void huffman_decode( Decoder_State *st, const int16_t nv, const int16_t ivStart, PAR_TYPE parType, QUANT_TYPE quant_type, const int16_t bNoDt, int32_t *vq ); static void dequant_alpha( const int16_t nv, const int16_t ivStart, const QUANT_TYPE quant_type, int32_t *vq, float *v ); static void dequant_alpha( int16_t nv, int16_t ivStart, QUANT_TYPE quant_type, int32_t *vq, float *v ); static void dequant_beta( const int16_t nv, const int16_t ivStart, const QUANT_TYPE quant_type, int32_t *aq, int32_t *bq, float *beta ); static void dequant_beta( int16_t nv, int16_t ivStart, QUANT_TYPE quant_type, int32_t *aq, int32_t *bq, float *beta ); static void get_ec_data( Decoder_State *st, const PAR_TYPE parType, const QUANT_TYPE quant_type, const int16_t nParBand, const int16_t parBandStart, int32_t *parQ, int32_t *alphaQEnv, float ab[IVAS_MAX_NUM_BANDS] ); static void get_ec_data( Decoder_State *st, PAR_TYPE parType, QUANT_TYPE quant_type, int16_t nParBand, int16_t parBandStart, int32_t *parQ, int32_t *alphaQEnv, float ab[IVAS_MAX_NUM_BANDS] ); /*------------------------------------------------------------------------- /*------------------------------------------------------------------------- * ivas_mc_paramupmix_dec_read_BS() * ivas_mc_paramupmix_dec_read_BS() Loading @@ -73,9 +75,8 @@ static void get_ec_data( Decoder_State *st, PAR_TYPE parType, QUANT_TYPE quant_t *------------------------------------------------------------------------*/ *------------------------------------------------------------------------*/ void ivas_mc_paramupmix_dec_read_BS( void ivas_mc_paramupmix_dec_read_BS( const int32_t ivas_total_brate, /* i : IVAS total bitrate */ Decoder_State *st, /* i/o: decoder state structure */ Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ Decoder_State *st0, /* i/o: decoder state structure */ MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix, /* i/o: decoder MC Param-Upmix handle */ MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix, /* i/o: decoder MC Param-Upmix handle */ int16_t *nb_bits /* o : number of bits written */ int16_t *nb_bits /* o : number of bits written */ ) ) Loading @@ -89,7 +90,7 @@ void ivas_mc_paramupmix_dec_read_BS( push_wmops( "mc_paramupmix_read_bs" ); push_wmops( "mc_paramupmix_read_bs" ); *nb_bits = 0; *nb_bits = 0; if ( st->bfi ) if ( st0->bfi ) { { for ( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ ) for ( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ ) { { Loading @@ -103,31 +104,31 @@ void ivas_mc_paramupmix_dec_read_BS( } } else /* if (!st->bfi) */ else /* if (!st->bfi) */ { { bit_stream_orig = st->bit_stream; bit_stream_orig = st0->bit_stream; next_bit_pos_orig = st->next_bit_pos; next_bit_pos_orig = st0->next_bit_pos; last_bit_pos = (int16_t) ( ( ivas_total_brate / FRAMES_PER_SEC ) - 1 ); last_bit_pos = (int16_t) ( ( st_ivas->hDecoderConfig->ivas_total_brate / FRAMES_PER_SEC ) - 1 ); nb_bits_read_orig = 0; nb_bits_read_orig = 0; last_bit_pos -= nb_bits_read_orig; /* reverse the bitstream for easier reading of indices */ last_bit_pos -= nb_bits_read_orig; /* reverse the bitstream for easier reading of indices */ for ( i = 0; i < min( MAX_BITS_METADATA, last_bit_pos ); i++ ) for ( i = 0; i < min( MAX_BITS_METADATA, last_bit_pos ); i++ ) { { bstr_meta[i] = st_ivas->bit_stream[last_bit_pos - i]; bstr_meta[i] = st_ivas->bit_stream[last_bit_pos - i]; } } st->bit_stream = bstr_meta; st0->bit_stream = bstr_meta; st->next_bit_pos = 0; st0->next_bit_pos = 0; st->bits_frame = min( MAX_BITS_METADATA, last_bit_pos + 1 ); st0->bits_frame = min( MAX_BITS_METADATA, last_bit_pos + 1 ); st->total_brate = st_ivas->hDecoderConfig->ivas_total_brate; /* to avoid BER detect */ st0->total_brate = st_ivas->hDecoderConfig->ivas_total_brate; /* to avoid BER detect */ for ( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ ) for ( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ ) { { get_ec_data( st, ALPHA, FINE /*quant_type*/, IVAS_MAX_NUM_BANDS /*nParBand*/, get_ec_data( st0, ALPHA, FINE /*quant_type*/, IVAS_MAX_NUM_BANDS /*nParBand*/, 0 /*parBandStart*/, hMCParamUpmix->alpha_quant[i], alpha_quant, hMCParamUpmix->alphas[i] ); 0 /*parBandStart*/, hMCParamUpmix->alpha_quant[i], alpha_quant, hMCParamUpmix->alphas[i] ); get_ec_data( st, BETA, FINE /*quant_type*/, IVAS_MAX_NUM_BANDS /*nParBand*/, get_ec_data( st0, BETA, FINE /*quant_type*/, IVAS_MAX_NUM_BANDS /*nParBand*/, 0 /*parBandStart*/, hMCParamUpmix->beta_quant[i], alpha_quant, hMCParamUpmix->betas[i] ); 0 /*parBandStart*/, hMCParamUpmix->beta_quant[i], alpha_quant, hMCParamUpmix->betas[i] ); } } *nb_bits += st->next_bit_pos; *nb_bits += st0->next_bit_pos; st->bit_stream = bit_stream_orig; st0->bit_stream = bit_stream_orig; st->next_bit_pos = next_bit_pos_orig; st0->next_bit_pos = next_bit_pos_orig; if ( hMCParamUpmix->first_frame ) if ( hMCParamUpmix->first_frame ) { { Loading @@ -145,11 +146,13 @@ void ivas_mc_paramupmix_dec_read_BS( return; return; } } /*------------------------------------------------------------------------- /*------------------------------------------------------------------------- * ivas_mc_paramupmix_dec() * ivas_mc_paramupmix_dec() * * * MC ParamUpmix decoding process * MC ParamUpmix decoding process *------------------------------------------------------------------------*/ *------------------------------------------------------------------------*/ void ivas_mc_paramupmix_dec( void ivas_mc_paramupmix_dec( Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ float output_f[][L_FRAME48k] /* i/o: synthesized core-coder transport channels */ float output_f[][L_FRAME48k] /* i/o: synthesized core-coder transport channels */ Loading Loading @@ -288,17 +291,6 @@ void ivas_mc_paramupmix_dec( return; return; } } /*------------------------------------------------------------------------- * ivas_mc_paramupmix_getNumTransportChannels() * * *------------------------------------------------------------------------*/ int16_t ivas_mc_paramupmix_getNumTransportChannels() { int16_t nchan_transport; nchan_transport = MC_PARAMUPMIX_MAX_TRANSPORT_CHANS; /* 5.1.2 */ return nchan_transport; } /*------------------------------------------------------------------------- /*------------------------------------------------------------------------- * ivas_mc_paramupmix_dec_open() * ivas_mc_paramupmix_dec_open() Loading Loading @@ -329,7 +321,7 @@ ivas_error ivas_mc_paramupmix_dec_open( output_Fs = st_ivas->hDecoderConfig->output_Fs; output_Fs = st_ivas->hDecoderConfig->output_Fs; hMCParamUpmix->first_frame = 1; hMCParamUpmix->first_frame = 1; st_ivas->nchan_transport = ivas_mc_paramupmix_getNumTransportChannels(); st_ivas->nchan_transport = MC_PARAMUPMIX_MAX_TRANSPORT_CHANS; nchan_transport = st_ivas->nchan_transport; nchan_transport = st_ivas->nchan_transport; switch ( nchan_transport ) switch ( nchan_transport ) Loading @@ -344,6 +336,7 @@ ivas_error ivas_mc_paramupmix_dec_open( assert( 0 && "Number of TC not supported for MC ParamUpmix!" ); assert( 0 && "Number of TC not supported for MC ParamUpmix!" ); #endif #endif } } /*-----------------------------------------------------------------* /*-----------------------------------------------------------------* * set input parameters * set input parameters *-----------------------------------------------------------------*/ *-----------------------------------------------------------------*/ Loading @@ -369,6 +362,7 @@ ivas_error ivas_mc_paramupmix_dec_open( return error; return error; } } /*------------------------------------------------------------------------- /*------------------------------------------------------------------------- * ivas_mc_paramupmix_dec_close() * ivas_mc_paramupmix_dec_close() * * Loading Loading @@ -403,6 +397,7 @@ void ivas_mc_paramupmix_dec_close( return; return; } } /*****************************************************************************************/ /*****************************************************************************************/ /* local functions */ /* local functions */ /*****************************************************************************************/ /*****************************************************************************************/ Loading @@ -413,7 +408,7 @@ static void ps_pred_process( float qmf_mod_im[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], float qmf_mod_im[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], float qmf_side_re[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* in/out */ float qmf_side_re[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* in/out */ float qmf_side_im[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], float qmf_side_im[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], int16_t ch ) const int16_t ch ) { { float vmre, vmim, vsre, vsim; float vmre, vmim, vsre, vsim; int16_t iqmf, ipar, ismp, iismp; int16_t iqmf, ipar, ismp, iismp; Loading @@ -423,7 +418,7 @@ static void ps_pred_process( float *alpha_prev = hMCParamUpmix->alpha_prev[ch]; float *alpha_prev = hMCParamUpmix->alpha_prev[ch]; float *beta_prev = hMCParamUpmix->beta_prev[ch]; float *beta_prev = hMCParamUpmix->beta_prev[ch]; int16_t qmf_to_par_band[] = { const int16_t qmf_to_par_band[] = { 0, 1, 2, 3, 4, 5, 5, 6, 6, 7, 0, 1, 2, 3, 4, 5, 5, 6, 6, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, Loading Loading @@ -466,8 +461,11 @@ static void ps_pred_process( alpha1 = alpha2; alpha1 = alpha2; beta1 = beta2; beta1 = beta2; } } return; } } static void paramupmix_td_decorr_process( static void paramupmix_td_decorr_process( ivas_td_decorr_state_t *hTdDecorr[], /* i/o: SPAR Covar. decoder handle */ ivas_td_decorr_state_t *hTdDecorr[], /* i/o: SPAR Covar. decoder handle */ float pcm_in[][L_FRAME48k], /* i : input audio channels */ float pcm_in[][L_FRAME48k], /* i : input audio channels */ Loading Loading @@ -514,6 +512,7 @@ static void paramupmix_td_decorr_process( return; return; } } static int huff_read( static int huff_read( Decoder_State *st, Decoder_State *st, const int16_t ( *ht )[2] ) const int16_t ( *ht )[2] ) Loading @@ -531,19 +530,19 @@ static int huff_read( return -( node + 1 ); return -( node + 1 ); } } static void huffman_decode( static void huffman_decode( Decoder_State *st, Decoder_State *st, int16_t nv, const int16_t nv, int16_t ivStart, const int16_t ivStart, PAR_TYPE parType, const PAR_TYPE parType, QUANT_TYPE quant_type, const QUANT_TYPE quant_type, int16_t bNoDt, const int16_t bNoDt, int32_t *vq ) int32_t *vq ) { { const int16_t( *huff_node_table )[2]; const int16_t( *huff_node_table )[2]; int16_t iv, bdt, nquant, offset; int16_t iv, bdt, nquant, offset; nquant = 0; nquant = 0; switch ( parType ) switch ( parType ) { { Loading @@ -568,6 +567,7 @@ static void huffman_decode( bdt = st->bit_stream[st->next_bit_pos]; bdt = st->bit_stream[st->next_bit_pos]; st->next_bit_pos++; st->next_bit_pos++; } } if ( bdt ) if ( bdt ) { /* Get dt */ { /* Get dt */ switch ( parType ) switch ( parType ) Loading Loading @@ -620,12 +620,15 @@ static void huffman_decode( vq[iv] = huff_read( st, huff_node_table ) + vq[iv - 1] - offset; vq[iv] = huff_read( st, huff_node_table ) + vq[iv - 1] - offset; } } } } return; } } static void dequant_alpha( static void dequant_alpha( int16_t nv, const int16_t nv, int16_t ivStart, const int16_t ivStart, QUANT_TYPE quant_type, const QUANT_TYPE quant_type, int32_t *vq, int32_t *vq, float *v ) float *v ) { { Loading @@ -641,22 +644,21 @@ static void dequant_alpha( { { v[iv] = quant_table->data[vq[iv]]; v[iv] = quant_table->data[vq[iv]]; } } return; } } static void dequant_beta( static void dequant_beta( int16_t nv, const int16_t nv, int16_t ivStart, const int16_t ivStart, QUANT_TYPE quant_type, const QUANT_TYPE quant_type, int32_t *aq, int32_t *aq, int32_t *bq, int32_t *bq, float *beta ) float *beta ) { { int16_t iv; int16_t iv; ACPL_QUANT_TABLE *quant_table; ACPL_QUANT_TABLE *quant_table; const int16_t qmap[2][33] = { { 0, 1, 2, 3, 4, 5, 6, 7, 8, 7, 6, 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 7, 6, 5, 4, 3, 2, 1, 0 }, { 0, 1, 2, 3, 4, 3, 2, 1, 0, 1, 2, 3, 4, 3, 2, 1, 0 } }; for ( iv = 0; iv < ivStart; iv++ ) for ( iv = 0; iv < ivStart; iv++ ) { { Loading @@ -665,22 +667,26 @@ static void dequant_beta( for ( iv = ivStart; iv < nv; iv++ ) for ( iv = ivStart; iv < nv; iv++ ) { { quant_table = &beta_quant_table[quant_type][qmap[quant_type][aq[iv]]]; quant_table = &beta_quant_table[quant_type][ivas_param_upmx_mx_qmap[quant_type][aq[iv]]]; beta[iv] = quant_table->data[bq[iv]]; beta[iv] = quant_table->data[bq[iv]]; } } return; } } static void get_ec_data( static void get_ec_data( Decoder_State *st, Decoder_State *st, PAR_TYPE parType, const PAR_TYPE parType, QUANT_TYPE quant_type, const QUANT_TYPE quant_type, int16_t nParBand, const int16_t nParBand, int16_t parBandStart, const int16_t parBandStart, int32_t *parQ, int32_t *parQ, int32_t *alphaQEnv, int32_t *alphaQEnv, float ab[IVAS_MAX_NUM_BANDS] ) float ab[IVAS_MAX_NUM_BANDS] ) { { huffman_decode( st, nParBand, parBandStart, parType, quant_type, 0, parQ ); huffman_decode( st, nParBand, parBandStart, parType, quant_type, 0, parQ ); if ( parType == ALPHA ) if ( parType == ALPHA ) { { dequant_alpha( nParBand, parBandStart, quant_type, parQ, ab ); dequant_alpha( nParBand, parBandStart, quant_type, parQ, ab ); Loading @@ -690,4 +696,6 @@ static void get_ec_data( { { dequant_beta( nParBand, parBandStart, quant_type, alphaQEnv, parQ, ab ); dequant_beta( nParBand, parBandStart, quant_type, alphaQEnv, parQ, ab ); } } return; } }