From e6b766c3d6b1bc18e541d4834b3af4aa9016090a Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 20 Sep 2023 09:50:09 +0200 Subject: [PATCH 1/4] Initialize arrays per each entry --- apps/renderer.c | 39 +++++++++++++++++++++++------ lib_com/ivas_spar_com.c | 7 +++++- lib_com/ivas_transient_det.c | 8 +++++- lib_com/swb_tbe_com.c | 5 ++-- lib_dec/ivas_stereo_mdct_core_dec.c | 9 ++++--- lib_enc/ivas_dirac_enc.c | 16 ++++++------ lib_enc/ivas_stereo_dft_enc.c | 3 --- lib_rend/ivas_MSPred.c | 7 ++++-- lib_rend/ivas_lc3plus_enc.c | 4 ++- lib_rend/ivas_lcld_encoder.c | 3 ++- 10 files changed, 71 insertions(+), 30 deletions(-) diff --git a/apps/renderer.c b/apps/renderer.c index d11ff01c76..1dd9bcc85f 100644 --- a/apps/renderer.c +++ b/apps/renderer.c @@ -1003,14 +1003,6 @@ int main( #endif const int16_t frameSize_smpls = (int16_t) ( ( args.framing_5ms ? 5 : 20 ) * args.sampleRate / 1000 ); - IVAS_REND_InputId mcIds[RENDERER_MAX_MC_INPUTS] = { 0 }; - IVAS_REND_InputId ismIds[RENDERER_MAX_ISM_INPUTS] = { 0 }; - IVAS_REND_InputId sbaIds[RENDERER_MAX_SBA_INPUTS] = { 0 }; - IVAS_REND_InputId masaIds[RENDERER_MAX_MASA_INPUTS] = { 0 }; -#ifdef SPLIT_REND_WITH_HEAD_ROT - IVAS_REND_InputId splitBinIds[RENDERER_MAX_BIN_INPUTS] = { 0 }; -#endif - if ( ( error = IVAS_REND_Open( &hIvasRend, args.sampleRate, args.outConfig.audioConfig, args.nonDiegeticPan, args.nonDiegeticPanGain, ( args.framing_5ms ) ? 1 : 4 ) ) != IVAS_ERR_OK ) { fprintf( stderr, "Error opening renderer handle: %s\n", ivas_error_to_string( error ) ); @@ -1157,6 +1149,37 @@ int main( } } + IVAS_REND_InputId mcIds[RENDERER_MAX_MC_INPUTS]; + IVAS_REND_InputId ismIds[RENDERER_MAX_ISM_INPUTS]; + IVAS_REND_InputId sbaIds[RENDERER_MAX_SBA_INPUTS]; + IVAS_REND_InputId masaIds[RENDERER_MAX_MASA_INPUTS]; +#ifdef SPLIT_REND_WITH_HEAD_ROT + IVAS_REND_InputId splitBinIds[RENDERER_MAX_BIN_INPUTS]; +#endif + + for ( i = 0; i < RENDERER_MAX_MC_INPUTS; i++ ) + { + mcIds[i] = 0u; + } + for ( i = 0; i < RENDERER_MAX_ISM_INPUTS; i++ ) + { + ismIds[i] = 0u; + } + for ( i = 0; i < RENDERER_MAX_SBA_INPUTS; i++ ) + { + sbaIds[i] = 0u; + } + for ( i = 0; i < RENDERER_MAX_MASA_INPUTS; i++ ) + { + masaIds[i] = 0u; + } +#ifdef SPLIT_REND_WITH_HEAD_ROT + for ( i = 0; i < RENDERER_MAX_BIN_INPUTS; i++ ) + { + splitBinIds[i] = 0u; + } +#endif + for ( i = 0; i < args.inConfig.numMultiChannelBuses; ++i ) { if ( ( error = IVAS_REND_AddInput( hIvasRend, args.inConfig.multiChannelBuses[i].audioConfig, &mcIds[i] ) ) != IVAS_ERR_OK ) diff --git a/lib_com/ivas_spar_com.c b/lib_com/ivas_spar_com.c index 45472ea441..af183c2b74 100644 --- a/lib_com/ivas_spar_com.c +++ b/lib_com/ivas_spar_com.c @@ -682,7 +682,12 @@ static void ivas_get_Wscaling_factor( { int16_t b, ch; float dm_f_local, abs_val; - float postpred_cov_re[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH] = { 0 }; + float postpred_cov_re[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH]; + + for ( ch = 0; ch < IVAS_SPAR_MAX_CH; ch++ ) + { + set_zero( postpred_cov_re[ch], IVAS_SPAR_MAX_CH ); + } if ( dtx_vad == 0 ) { diff --git a/lib_com/ivas_transient_det.c b/lib_com/ivas_transient_det.c index aac25f50c9..54c12e916f 100644 --- a/lib_com/ivas_transient_det.c +++ b/lib_com/ivas_transient_det.c @@ -88,11 +88,17 @@ static void ivas_transient_det_init( const int32_t sampling_rate /* i : sampling rate */ ) { - float filt_coeff_arr[3][IVAS_BIQUAD_FILT_LEN << 1] = { { 0 } }; + int16_t i; + float filt_coeff_arr[3][IVAS_BIQUAD_FILT_LEN << 1]; hTranDet->in_duck_gain = 1.0f; hTranDet->out_duck_gain = 1.0f; + for ( i = 0; i < 3; i++ ) + { + set_zero( filt_coeff_arr[i], IVAS_BIQUAD_FILT_LEN << 1 ); + } + switch ( sampling_rate ) { case 48000: diff --git a/lib_com/swb_tbe_com.c b/lib_com/swb_tbe_com.c index 235a3551f6..ade552a568 100644 --- a/lib_com/swb_tbe_com.c +++ b/lib_com/swb_tbe_com.c @@ -743,7 +743,7 @@ void GenShapedSHBExcitation( float mix_factor, old_fact, new_fact, fact, old_scale, new_scale, step_scale; float c0, c1, c2, c3, c4, c5, g1, g2, g, den; float EnvWhiteExc16k[L_FRAME16k], EnvExc16kWhtnd[L_FRAME16k]; - float EnvWhiteExc16k_4k[L_FRAME4k] = { 0 }, EnvExc16kWhtnd_4k[L_FRAME4k] = { 0 }; + float EnvWhiteExc16k_4k[L_FRAME4k], EnvExc16kWhtnd_4k[L_FRAME4k]; int16_t flag_plosive; float delta; float c0_part[NUM_SHB_SUBGAINS], c1_part[NUM_SHB_SUBGAINS], c2_part[NUM_SHB_SUBGAINS], c3_part[NUM_SHB_SUBGAINS], c4_part[NUM_SHB_SUBGAINS], c5_part[NUM_SHB_SUBGAINS]; @@ -752,6 +752,8 @@ void GenShapedSHBExcitation( set_f( zero_mem, 0, LPC_SHB_ORDER ); set_f( wht_fil_mem, 0, LPC_WHTN_ORDER ); + set_f( EnvWhiteExc16k_4k, 0, L_FRAME4k ); + set_f( EnvExc16kWhtnd_4k, 0, L_FRAME4k ); /* Mirror the spectrum */ for ( i = 0; i < L_FRAME32k; i++ ) @@ -762,7 +764,6 @@ void GenShapedSHBExcitation( /* Decimate by 2 */ Decimate_allpass_steep( exc32k, mem_genSHBexc_filt_down_shb, 2 * L_FRAME16k, exc16k ); - autocorr( exc16k, R, LPC_WHTN_ORDER + 1, L_FRAME16k, win_flatten, 0, 1, 1 ); /* Ensure R[0] isn't zero when entering Levinson-Durbin */ diff --git a/lib_dec/ivas_stereo_mdct_core_dec.c b/lib_dec/ivas_stereo_mdct_core_dec.c index 697028c483..5a1a27b41c 100644 --- a/lib_dec/ivas_stereo_mdct_core_dec.c +++ b/lib_dec/ivas_stereo_mdct_core_dec.c @@ -156,8 +156,8 @@ void stereo_mdct_core_dec( float *x[CPE_CHANNELS][2]; /*needed to allocate N_MAX to prevent stereo switching crash */ - float x_0_buf[CPE_CHANNELS][N_MAX] = { { 0.0f } }; - float *x_0[CPE_CHANNELS][2]; + float x_0_buf[CPE_CHANNELS][N_MAX]; + float *x_0[CPE_CHANNELS][NB_DIV]; /* Concealment */ int16_t bfi; @@ -166,8 +166,8 @@ void stereo_mdct_core_dec( int16_t L_frame[CPE_CHANNELS], L_frameTCX[CPE_CHANNELS], nSubframes[CPE_CHANNELS]; /* TCX */ - int16_t fUseTns[CPE_CHANNELS][2]; /*two entries for each channel in case of TCX 10 */ - STnsData tnsData[CPE_CHANNELS][2]; + int16_t fUseTns[CPE_CHANNELS][NB_DIV]; + STnsData tnsData[CPE_CHANNELS][NB_DIV]; int16_t tcx_offset[CPE_CHANNELS]; int16_t tcx_offsetFB[CPE_CHANNELS]; int16_t left_rect[CPE_CHANNELS]; @@ -204,6 +204,7 @@ void stereo_mdct_core_dec( x[ch][0] = &signal_out_tmp[ch][0]; x[ch][1] = &signal_out_tmp[ch][0] + L_FRAME_PLUS / 2; + set_zero( x_0_buf[ch], N_MAX ); x_0[ch][0] = &x_0_buf[ch][0]; x_0[ch][1] = &x_0_buf[ch][0] + L_FRAME48k / 2; nTnsBitsTCX10[ch][0] = 0; diff --git a/lib_enc/ivas_dirac_enc.c b/lib_enc/ivas_dirac_enc.c index dc34471640..1c5482b081 100644 --- a/lib_enc/ivas_dirac_enc.c +++ b/lib_enc/ivas_dirac_enc.c @@ -627,13 +627,12 @@ void ivas_dirac_param_est_enc( int16_t mrange[2]; int16_t num_blocks; float reference_power[CLDFB_NO_COL_MAX][DIRAC_NO_FB_BANDS_MAX]; - float azi_secs[2 * DIRAC_MAX_ANA_CHANS * DIRAC_MAX_NBANDS] = { 0 }; - float ele_secs[2 * DIRAC_MAX_ANA_CHANS * DIRAC_MAX_NBANDS] = { 0 }; - float diff_secs[2 * DIRAC_MAX_ANA_CHANS * DIRAC_MAX_NBANDS] = { 0 }; - float ene_secs[2 * DIRAC_MAX_ANA_CHANS * DIRAC_MAX_NBANDS] = { 0 }; + float azi_secs[2 * DIRAC_MAX_ANA_CHANS * DIRAC_MAX_NBANDS]; + float ele_secs[2 * DIRAC_MAX_ANA_CHANS * DIRAC_MAX_NBANDS]; + float diff_secs[2 * DIRAC_MAX_ANA_CHANS * DIRAC_MAX_NBANDS]; + float ene_secs[2 * DIRAC_MAX_ANA_CHANS * DIRAC_MAX_NBANDS]; push_wmops( "dirac_enc_param_est" ); - num_freq_bands = hDirAC->hConfig->nbands; /* Initialization */ @@ -656,6 +655,11 @@ void ivas_dirac_param_est_enc( hDirAC->diffuseness_m[i] = 0; } + set_f( azi_secs, 0, 2 * DIRAC_MAX_ANA_CHANS * DIRAC_MAX_NBANDS ); + set_f( ele_secs, 0, 2 * DIRAC_MAX_ANA_CHANS * DIRAC_MAX_NBANDS ); + set_f( diff_secs, 0, 2 * DIRAC_MAX_ANA_CHANS * DIRAC_MAX_NBANDS ); + set_f( ene_secs, 0, 2 * DIRAC_MAX_ANA_CHANS * DIRAC_MAX_NBANDS ); + /* Copy current frame to memory for delay compensation */ for ( i = 0; i < nchan_fb_in; i++ ) { @@ -966,9 +970,7 @@ void ivas_dirac_param_est_enc( } } #endif - pop_wmops(); - return; } diff --git a/lib_enc/ivas_stereo_dft_enc.c b/lib_enc/ivas_stereo_dft_enc.c index eb2bc5a3ae..68164363be 100644 --- a/lib_enc/ivas_stereo_dft_enc.c +++ b/lib_enc/ivas_stereo_dft_enc.c @@ -1902,7 +1902,6 @@ void stereo_dft_enc_res( #ifdef DEBUG_MODE_DFT float MDCT_RES_dec[L_FRAME8k] = { 0 }; #endif - assert( hStereoDft->res_cod_line_max <= L_FRAME8k ); if ( hStereoDft->res_cod_mode[STEREO_DFT_OFFSET] ) @@ -1959,7 +1958,6 @@ void stereo_dft_enc_res( #endif push_wmops( "residual_encode" ); - /* residual encoding */ ECSQ_init_instance( &ecsq_inst, 0 /*dummy index*/, &range_uni_enc_state ); rc_uni_enc_init( &range_uni_enc_state ); @@ -2037,7 +2035,6 @@ void stereo_dft_enc_res( #endif pop_wmops(); - #ifdef DEBUG_MODE_DFT { int16_t tmp[1024]; diff --git a/lib_rend/ivas_MSPred.c b/lib_rend/ivas_MSPred.c index f7e48ce2e0..f1defbec5d 100644 --- a/lib_rend/ivas_MSPred.c +++ b/lib_rend/ivas_MSPred.c @@ -428,8 +428,11 @@ int32_t CountMSBits( int32_t b; int32_t anyNonZero; int32_t iNumMSBands = 0; - int32_t piPhaseCopy[MAX_BANDS_48] = { 0 }; - int32_t piPredCopy[MAX_BANDS_48] = { 0 }; + int32_t piPhaseCopy[MAX_BANDS_48]; + int32_t piPredCopy[MAX_BANDS_48]; + + set_l( piPhaseCopy, 0, MAX_BANDS_48 ); + set_l( piPredCopy, 0, MAX_BANDS_48 ); iBitsWritten += 2; /* iMSMode */ for ( b = 0; b < iNumBands; b++ ) diff --git a/lib_rend/ivas_lc3plus_enc.c b/lib_rend/ivas_lc3plus_enc.c index dd4268a1f1..dd52d243d5 100644 --- a/lib_rend/ivas_lc3plus_enc.c +++ b/lib_rend/ivas_lc3plus_enc.c @@ -53,9 +53,11 @@ ivas_error IVAS_LC3PLUS_ENC_Open( int32_t bitsPerSecondPerChannel; int32_t encoder_size; LC3PLUS_Error err; - int32_t lfeChans[1] = { 0 }; + int32_t lfeChans[1]; int16_t i; + lfeChans[0] = 0; + if ( 0U == config.channels ) { return IVAS_ERROR( IVAS_ERR_INTERNAL, "Invalid number of channels\n" ); diff --git a/lib_rend/ivas_lcld_encoder.c b/lib_rend/ivas_lcld_encoder.c index 82c0438cec..7abfabbbd5 100644 --- a/lib_rend/ivas_lcld_encoder.c +++ b/lib_rend/ivas_lcld_encoder.c @@ -725,7 +725,7 @@ static int32_t MSModeCalculation( int32_t b; int32_t iFBOffset; int32_t iNumMSBands; - int32_t piMSPredFlags[MAX_BANDS] = { 0 }; + int32_t piMSPredFlags[MAX_BANDS]; int32_t iNumMSPredBands = 0; float msBitsReduction = 0.0f; float msPredBitsReduction = 0.0f; @@ -737,6 +737,7 @@ static int32_t MSModeCalculation( #endif const float one_by_log10_2 = 3.32192809488736f; + set_l( piMSPredFlags, 0, MAX_BANDS ); *piMSMode = 0; iFBOffset = 0; iNumMSBands = 0; -- GitLab From a13b76e832b76e0b9e154991430361a7e26b39ba Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 20 Sep 2023 10:11:54 +0200 Subject: [PATCH 2/4] Define local arrays using "const" --- apps/renderer.c | 2 +- lib_com/fft.c | 10 ++++---- lib_com/index_pvq_opt.c | 12 +++------ lib_com/ppp.c | 2 +- lib_com/swb_tbe_com.c | 4 +-- lib_dec/FEC_clas_estim.c | 3 ++- lib_dec/igf_dec.c | 8 ++++-- lib_dec/ivas_mc_paramupmix_dec.c | 44 +++++++++++++++----------------- lib_enc/ivas_masa_enc.c | 2 +- lib_enc/ivas_mc_paramupmix_enc.c | 10 ++++---- lib_enc/ivas_qmetadata_enc.c | 5 ++-- lib_enc/ivas_stereo_icbwe_enc.c | 4 +-- lib_enc/ivas_tcx_core_enc.c | 6 ++--- 13 files changed, 56 insertions(+), 56 deletions(-) diff --git a/apps/renderer.c b/apps/renderer.c index 1dd9bcc85f..4ede41624f 100644 --- a/apps/renderer.c +++ b/apps/renderer.c @@ -3304,7 +3304,6 @@ static void parseObjectPosition( int16_t read_values; float meta_prm[8] = { 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f }; - readNextMetadataChunk( line, "," ); *positionDuration = (uint16_t) strtol( line, &endptr, 10 ); readNextMetadataChunk( line, "\n" ); @@ -3323,6 +3322,7 @@ static void parseObjectPosition( position->yaw = meta_prm[5]; position->pitch = meta_prm[6]; position->non_diegetic_flag = (int16_t) meta_prm[7]; + return; } diff --git a/lib_com/fft.c b/lib_com/fft.c index e6121e818a..a36712b8e0 100644 --- a/lib_com/fft.c +++ b/lib_com/fft.c @@ -3244,7 +3244,7 @@ static void DoRTFT600( ) { float scratch[1200], cmplx[1200]; - int16_t factors[3] = { 25, 8, 3 }; + const int16_t factors[3] = { 25, 8, 3 }; fftf_interleave( x, y, cmplx, 600 ); pfaDFT( cmplx, 600, scratch, 3, factors ); @@ -3259,7 +3259,7 @@ static void DoRTFT400( ) { float scratch[800], cmplx[800]; - int16_t factors[2] = { 25, 16 }; + const int16_t factors[2] = { 25, 16 }; fftf_interleave( x, y, cmplx, 400 ); pfaDFT( cmplx, 400, scratch, 2, factors ); @@ -3275,7 +3275,7 @@ static void DoRTFT240( ) { float scratch[480], cmplx[480]; - int16_t factors[3] = { 16, 5, 3 }; + const int16_t factors[3] = { 16, 5, 3 }; fftf_interleave( x, y, cmplx, 240 ); pfaDFT( cmplx, 240, scratch, 3, factors ); @@ -3290,7 +3290,7 @@ static void DoRTFT200( ) { float scratch[400], cmplx[400]; - int16_t factors[2] = { 25, 8 }; + const int16_t factors[2] = { 25, 8 }; fftf_interleave( x, y, cmplx, 200 ); pfaDFT( cmplx, 200, scratch, 2, factors ); @@ -3305,7 +3305,7 @@ static void DoRTFT100( ) { float scratch[200], cmplx[200]; - int16_t factors[2] = { 25, 4 }; + const int16_t factors[2] = { 25, 4 }; fftf_interleave( x, y, cmplx, 100 ); pfaDFT( cmplx, 100, scratch, 2, factors ); diff --git a/lib_com/index_pvq_opt.c b/lib_com/index_pvq_opt.c index c762e96c71..097732442b 100644 --- a/lib_com/index_pvq_opt.c +++ b/lib_com/index_pvq_opt.c @@ -1131,13 +1131,9 @@ PvqEntry mpvq_encode_vec( ) { PvqEntry result; - uint32_t h_mem[1 + KMAX_NON_DIRECT + 1]; /* allocate max offset memory for dim 6 */ - /* OPT: actually only 1+k_val_in+1 needed ) */ + uint32_t h_mem[1 + KMAX_NON_DIRECT + 1]; /* allocate max offset memory for dim 6 */ /* OPT: actually only 1+k_val_in+1 needed ) */ uint32_t lead_sign_ind; - - VEC2INDFUNCM vec2mind_f[1 + N_OPT] = { NULL, vec2mind_one, vec2mind_two, vec2mind_three, vec2mind_four, vec2mind_five }; - /* VEC2INDFUNCM can be a static global */ - + const VEC2INDFUNCM vec2mind_f[1 + N_OPT] = { NULL, vec2mind_one, vec2mind_two, vec2mind_three, vec2mind_four, vec2mind_five }; /* VEC2INDFUNCM can be a static global */ result.k_val = k_val_local; result.dim = dim_in; @@ -1202,8 +1198,7 @@ void mpvq_decode_vec( ) { int16_t i, leading_sign; - IND2VECFUNCM mind2vec_f[N_OPT + 1] = { NULL, mind2vec_one, mind2vec_two, mind2vec_three, mind2vec_four, mind2vec_five }; - /*IND2VECFUNCM vector can be static global */ + const IND2VECFUNCM mind2vec_f[N_OPT + 1] = { NULL, mind2vec_one, mind2vec_two, mind2vec_three, mind2vec_four, mind2vec_five }; /*IND2VECFUNCM vector can be static global */ for ( i = 0; i < entry->dim; i++ ) { @@ -1229,6 +1224,7 @@ void mpvq_decode_vec( ( mind2vec_f[entry->dim] )( entry->k_val, leading_sign, entry->index, vec_out ); } } + return; } diff --git a/lib_com/ppp.c b/lib_com/ppp.c index 73570bbd96..882c94b696 100644 --- a/lib_com/ppp.c +++ b/lib_com/ppp.c @@ -82,7 +82,7 @@ void deemph_lpc( { int16_t k; float b[M + 2]; - float a[2] = { -PREEMPH_FAC, 1.0 }; + const float a[2] = { -PREEMPH_FAC, 1.0 }; b[0] = 1.0; for ( k = 0; k < M; k++ ) diff --git a/lib_com/swb_tbe_com.c b/lib_com/swb_tbe_com.c index ade552a568..768078e27f 100644 --- a/lib_com/swb_tbe_com.c +++ b/lib_com/swb_tbe_com.c @@ -1572,8 +1572,8 @@ void interp_code_5over2( ) { int16_t i, kk, kkp1; - float factor_i[5] = { 0.2f, 0.6f, 1.0f, 0.6f, 0.2f }; - float factor_j[5] = { 0.8f, 0.4f, 0.0f, 0.4f, 0.8f }; + const float factor_i[5] = { 0.2f, 0.6f, 1.0f, 0.6f, 0.2f }; + const float factor_j[5] = { 0.8f, 0.4f, 0.0f, 0.4f, 0.8f }; interp_code[0] = inp_code[0]; interp_code[1] = inp_code[0] * factor_i[3] + inp_code[1] * factor_j[3]; diff --git a/lib_dec/FEC_clas_estim.c b/lib_dec/FEC_clas_estim.c index 8d54129a7c..d20760ddbf 100644 --- a/lib_dec/FEC_clas_estim.c +++ b/lib_dec/FEC_clas_estim.c @@ -127,10 +127,11 @@ static float calculate_pitch_synchr_norm_correlation( { int16_t T0, pos; int16_t j, i; - float cor_max[16] = { 0.f }; + float cor_max[16]; float enr1t, enr2t, voicing; T0 = (int16_t) pitch[3]; + set_zero( cor_max, 16 ); if ( T0 > ( 3 * ( L_subfr / 2 ) ) ) { diff --git a/lib_dec/igf_dec.c b/lib_dec/igf_dec.c index ee116ee86f..8095f6da41 100755 --- a/lib_dec/igf_dec.c +++ b/lib_dec/igf_dec.c @@ -653,7 +653,9 @@ static void IGF_calc( H_IGF_GRID hGrid; float *igf_pN; float *igf_sN; - float tmp[N_MAX_TCX] = { 0.f }; + float tmp[N_MAX_TCX]; + + set_zero( tmp, N_MAX_TCX ); hGrid = &hPrivateData->igfInfo.grid[igfGridIdx]; igf_pN = hPrivateData->igf_pN; @@ -1147,9 +1149,11 @@ void IGFDecApplyMono( IGF_DEC_PRIVATE_DATA_HANDLE hPrivateData; H_IGF_GRID hGrid; int16_t i, whiteningLevel, nLinesToReset; - float igf_spec[IGF_MAX_GRANULE_LEN] = { 0.f }; + float igf_spec[IGF_MAX_GRANULE_LEN]; int16_t nShift; + set_zero( igf_spec, IGF_MAX_GRANULE_LEN ); + /* initialize variables */ if ( element_mode > EVS_MONO ) { diff --git a/lib_dec/ivas_mc_paramupmix_dec.c b/lib_dec/ivas_mc_paramupmix_dec.c index ed002ccc66..e4c1cd693f 100644 --- a/lib_dec/ivas_mc_paramupmix_dec.c +++ b/lib_dec/ivas_mc_paramupmix_dec.c @@ -50,6 +50,16 @@ #include "wmc_auto.h" #include "rom_dec.h" + +/*-----------------------------------------------------------------------* + * Local arrays + *-----------------------------------------------------------------------*/ + +/* boxes = { 0 1 2 3 [4 6] [5 7] [8 10] [9 11] }; */ +const int16_t MC_PARAMUPMIX_CHIDX1[MC_PARAMUPMIX_COMBINATIONS] = { 0, 1, 4, 5 }; +const int16_t MC_PARAMUPMIX_CHIDX2[MC_PARAMUPMIX_COMBINATIONS] = { 2, 3, 6, 7 }; + + /*-----------------------------------------------------------------------* * Local function prototypes *-----------------------------------------------------------------------*/ @@ -204,9 +214,6 @@ void ivas_mc_paramupmix_dec( float Cldfb_RealBuffer_Binaural[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer_Binaural[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; #endif - /* boxes = { 0 1 2 3 [4 6] [5 7] [8 10] [9 11] }; */ - int16_t chidx1[MC_PARAMUPMIX_COMBINATIONS] = { 0, 1, 4, 5 }; - int16_t chidx2[MC_PARAMUPMIX_COMBINATIONS] = { 2, 3, 6, 7 }; hMCParamUpmix = st_ivas->hMCParamUpmix; assert( hMCParamUpmix ); @@ -310,10 +317,10 @@ void ivas_mc_paramupmix_dec( { for ( slot_idx = 0; slot_idx < MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ ) { - mvr2r( Cldfb_RealBuffer[chidx1[ch]][index_slot + slot_idx], Cldfb_RealBuffer_subfr[idx_in][slot_idx], CLDFB_NO_CHANNELS_MAX ); - mvr2r( Cldfb_ImagBuffer[chidx1[ch]][index_slot + slot_idx], Cldfb_ImagBuffer_subfr[idx_in][slot_idx], CLDFB_NO_CHANNELS_MAX ); - mvr2r( Cldfb_RealBuffer[chidx2[ch]][index_slot + slot_idx], Cldfb_RealBuffer_subfr[idx_in + 1][slot_idx], CLDFB_NO_CHANNELS_MAX ); - mvr2r( Cldfb_ImagBuffer[chidx2[ch]][index_slot + slot_idx], Cldfb_ImagBuffer_subfr[idx_in + 1][slot_idx], CLDFB_NO_CHANNELS_MAX ); + mvr2r( Cldfb_RealBuffer[MC_PARAMUPMIX_CHIDX1[ch]][index_slot + slot_idx], Cldfb_RealBuffer_subfr[idx_in][slot_idx], CLDFB_NO_CHANNELS_MAX ); + mvr2r( Cldfb_ImagBuffer[MC_PARAMUPMIX_CHIDX1[ch]][index_slot + slot_idx], Cldfb_ImagBuffer_subfr[idx_in][slot_idx], CLDFB_NO_CHANNELS_MAX ); + mvr2r( Cldfb_RealBuffer[MC_PARAMUPMIX_CHIDX2[ch]][index_slot + slot_idx], Cldfb_RealBuffer_subfr[idx_in + 1][slot_idx], CLDFB_NO_CHANNELS_MAX ); + mvr2r( Cldfb_ImagBuffer[MC_PARAMUPMIX_CHIDX2[ch]][index_slot + slot_idx], Cldfb_ImagBuffer_subfr[idx_in + 1][slot_idx], CLDFB_NO_CHANNELS_MAX ); } idx_in += 2; } @@ -340,10 +347,7 @@ void ivas_mc_paramupmix_dec( /* slot loop for gathering the input data */ for ( slot_idx = 0; slot_idx < MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ ) { - cldfbAnalysis_ts( &( output_f[ch][maxBand * index_slot] ), - Cldfb_RealBuffer_subfr[idx_in][slot_idx], - Cldfb_ImagBuffer_subfr[idx_in][slot_idx], - maxBand, st_ivas->cldfbAnaDec[idx_in] ); + cldfbAnalysis_ts( &( output_f[ch][maxBand * index_slot] ), Cldfb_RealBuffer_subfr[idx_in][slot_idx], Cldfb_ImagBuffer_subfr[idx_in][slot_idx], maxBand, st_ivas->cldfbAnaDec[idx_in] ); } idx_in++; } @@ -1063,12 +1067,9 @@ static void ivas_mc_paramupmix_dec_sf( float Cldfb_RealBuffer_Binaural[BINAURAL_CHANNELS][JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer_Binaural[BINAURAL_CHANNELS][JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; #endif - /* boxes = { 0 1 2 3 [4 6] [5 7] [8 10] [9 11] }; */ - int16_t chidx1[MC_PARAMUPMIX_COMBINATIONS] = { 0, 1, 4, 5 }; - int16_t chidx2[MC_PARAMUPMIX_COMBINATIONS] = { 2, 3, 6, 7 }; + hMCParamUpmix = st_ivas->hMCParamUpmix; assert( hMCParamUpmix ); - push_wmops( "ivas_mc_paramupmix_dec_sf" ); for ( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ ) @@ -1145,10 +1146,10 @@ static void ivas_mc_paramupmix_dec_sf( { for ( slot_idx = 0; slot_idx < MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ ) { - mvr2r( Cldfb_RealBuffer[chidx1[ch]][slot_idx], Cldfb_RealBuffer_subfr[idx_in][slot_idx], CLDFB_NO_CHANNELS_MAX ); - mvr2r( Cldfb_ImagBuffer[chidx1[ch]][slot_idx], Cldfb_ImagBuffer_subfr[idx_in][slot_idx], CLDFB_NO_CHANNELS_MAX ); - mvr2r( Cldfb_RealBuffer[chidx2[ch]][slot_idx], Cldfb_RealBuffer_subfr[idx_in + 1][slot_idx], CLDFB_NO_CHANNELS_MAX ); - mvr2r( Cldfb_ImagBuffer[chidx2[ch]][slot_idx], Cldfb_ImagBuffer_subfr[idx_in + 1][slot_idx], CLDFB_NO_CHANNELS_MAX ); + mvr2r( Cldfb_RealBuffer[MC_PARAMUPMIX_CHIDX1[ch]][slot_idx], Cldfb_RealBuffer_subfr[idx_in][slot_idx], CLDFB_NO_CHANNELS_MAX ); + mvr2r( Cldfb_ImagBuffer[MC_PARAMUPMIX_CHIDX1[ch]][slot_idx], Cldfb_ImagBuffer_subfr[idx_in][slot_idx], CLDFB_NO_CHANNELS_MAX ); + mvr2r( Cldfb_RealBuffer[MC_PARAMUPMIX_CHIDX2[ch]][slot_idx], Cldfb_RealBuffer_subfr[idx_in + 1][slot_idx], CLDFB_NO_CHANNELS_MAX ); + mvr2r( Cldfb_ImagBuffer[MC_PARAMUPMIX_CHIDX2[ch]][slot_idx], Cldfb_ImagBuffer_subfr[idx_in + 1][slot_idx], CLDFB_NO_CHANNELS_MAX ); } idx_in += 2; } @@ -1162,10 +1163,7 @@ static void ivas_mc_paramupmix_dec_sf( ch = st_ivas->hIntSetup.index_lfe[idx_lfe]; for ( slot_idx = 0; slot_idx < st_ivas->hTcBuffer->subframe_nbslots[st_ivas->hTcBuffer->subframes_rendered]; slot_idx++ ) { - cldfbAnalysis_ts( &( output_f[ch][maxBand * slot_idx] ), - Cldfb_RealBuffer_subfr[idx_in][slot_idx], - Cldfb_ImagBuffer_subfr[idx_in][slot_idx], - maxBand, st_ivas->cldfbAnaDec[idx_in] ); + cldfbAnalysis_ts( &( output_f[ch][maxBand * slot_idx] ), Cldfb_RealBuffer_subfr[idx_in][slot_idx], Cldfb_ImagBuffer_subfr[idx_in][slot_idx], maxBand, st_ivas->cldfbAnaDec[idx_in] ); } idx_in++; } diff --git a/lib_enc/ivas_masa_enc.c b/lib_enc/ivas_masa_enc.c index c44491cc2f..52e03fc409 100644 --- a/lib_enc/ivas_masa_enc.c +++ b/lib_enc/ivas_masa_enc.c @@ -1377,7 +1377,7 @@ static void detect_metadata_composition( MASA_METADATA_FRAME *hMeta; int8_t sf, band, dir, numDir; int16_t nSubFrames; - uint8_t dirValid[2] = { FALSE }; + uint8_t dirValid[2] = { FALSE, FALSE }; uint8_t cohPresent = FALSE; uint8_t sfDiffer = FALSE; uint8_t sfSimilar; diff --git a/lib_enc/ivas_mc_paramupmix_enc.c b/lib_enc/ivas_mc_paramupmix_enc.c index 27ed7f250d..d3c431a1bd 100644 --- a/lib_enc/ivas_mc_paramupmix_enc.c +++ b/lib_enc/ivas_mc_paramupmix_enc.c @@ -746,9 +746,8 @@ static void ivas_mc_paramupmix_param_est_enc( int16_t maxbands; int16_t transient_det[MC_PARAMUPMIX_COMBINATIONS][2]; int16_t transient_det_l[2], transient_det_r[2]; - int16_t chan1s[4] = { 4, 5, 8, 9 }; - int16_t chan2s[4] = { 6, 7, 10, 11 }; - + const int16_t chan1s[MC_PARAMUPMIX_COMBINATIONS] = { 4, 5, 8, 9 }; + const int16_t chan2s[MC_PARAMUPMIX_COMBINATIONS] = { 6, 7, 10, 11 }; const int16_t HOA_md_ind[IVAS_SPAR_MAX_CH] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; for ( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ ) @@ -821,9 +820,9 @@ static void ivas_mc_paramupmix_param_est_enc( } } - ivas_enc_cov_handler_process( hMCParamUpmix->hCovEnc[b], pp_in_fr_real, pp_in_fr_imag, cov_real, cov_dtx_real, hMCParamUpmix->hFbMixer->pFb, 0, hMCParamUpmix->hFbMixer->pFb->filterbank_num_bands, MC_PARAMUPMIX_NCH, 0 /*dtx_vad*/, transient_det[b], HOA_md_ind, - NULL, NULL, NULL, 0, 0 ); + ivas_enc_cov_handler_process( hMCParamUpmix->hCovEnc[b], pp_in_fr_real, pp_in_fr_imag, cov_real, cov_dtx_real, hMCParamUpmix->hFbMixer->pFb, 0, hMCParamUpmix->hFbMixer->pFb->filterbank_num_bands, MC_PARAMUPMIX_NCH, 0 /*dtx_vad*/, transient_det[b], HOA_md_ind, NULL, NULL, NULL, 0, 0 ); } + maxbands = hMCParamUpmix->hFbMixer->pFb->filterbank_num_bands; for ( b = 0; b < MC_PARAMUPMIX_COMBINATIONS; b++ ) { @@ -842,6 +841,7 @@ static void ivas_mc_paramupmix_param_est_enc( betas[b][bnd] = 2.0f * wetaux; } } + if ( maxbands < IVAS_MAX_NUM_BANDS ) { for ( b = 0; b < MC_PARAMUPMIX_COMBINATIONS; b++ ) diff --git a/lib_enc/ivas_qmetadata_enc.c b/lib_enc/ivas_qmetadata_enc.c index cd1d50775a..cdd755a27e 100644 --- a/lib_enc/ivas_qmetadata_enc.c +++ b/lib_enc/ivas_qmetadata_enc.c @@ -3334,7 +3334,8 @@ static int16_t truncGR0( { int16_t i; int16_t bits; - int16_t remap3b[] = { 1, 6, 2, 4, 0, 5, 3, 7 }, remap2b[] = { 1, 2, 0, 3 }; + const int16_t remap3b[1 << 3] = { 1, 6, 2, 4, 0, 5, 3, 7 }; + const int16_t remap2b[1 << 2] = { 1, 2, 0, 3 }; float diff[MAX_PARAM_SPATIAL_SUBFRAMES]; int16_t indx[MAX_PARAM_SPATIAL_SUBFRAMES]; @@ -4322,7 +4323,7 @@ static void calculate_two_distances( { int16_t i; float d1, d2, el_av; - float cos_delta_phi_cb[] = { 0.848f, 0.8988f, 0.9272f, 0.9563f, 0.9744f, 0.9816f, 0.9877f, 0.9925f }; + const float cos_delta_phi_cb[] = { 0.848f, 0.8988f, 0.9272f, 0.9563f, 0.9744f, 0.9816f, 0.9877f, 0.9925f }; float var_el; d1 = 0.0f; diff --git a/lib_enc/ivas_stereo_icbwe_enc.c b/lib_enc/ivas_stereo_icbwe_enc.c index fee250951b..e7b40e3ba3 100644 --- a/lib_enc/ivas_stereo_icbwe_enc.c +++ b/lib_enc/ivas_stereo_icbwe_enc.c @@ -241,8 +241,8 @@ static void icbwe_dft_stereo_param( int16_t gsIndx, spIndx; float *nrg_L, *nrg_R, *nrg_DMX; float sum_nrg_L, sum_nrg_R, sum_nrg_DMX; - float slope_table[4] = { -2.17141801027151f, -1.29118591145892f, -0.588623666024448f, 0 }; - float spec_table[4] = { -0.6f, -0.4f, -0.2f, 0 }; + const float slope_table[4] = { -2.17141801027151f, -1.29118591145892f, -0.588623666024448f, 0 }; + const float spec_table[4] = { -0.6f, -0.4f, -0.2f, 0 }; BSTR_ENC_HANDLE hBstr = st->hBstr; diff --git a/lib_enc/ivas_tcx_core_enc.c b/lib_enc/ivas_tcx_core_enc.c index 7bcd80301a..110b7656d8 100644 --- a/lib_enc/ivas_tcx_core_enc.c +++ b/lib_enc/ivas_tcx_core_enc.c @@ -729,9 +729,9 @@ int16_t ivas_acelp_tcx20_switching( if ( !flag_16k_smc ) { - int16_t *bands; - int16_t bands_20[8] = { 0, 5, 9, 19, 34, 51, 81, 111 }; - int16_t bands_25[8] = { 0, 4, 7, 15, 28, 40, 65, 89 }; + const int16_t *bands; + const int16_t bands_20[8] = { 0, 5, 9, 19, 34, 51, 81, 111 }; + const int16_t bands_25[8] = { 0, 4, 7, 15, 28, 40, 65, 89 }; float nrg_s, nrg_n; /*Approximate SNR of TCX*/ -- GitLab From 04800d6c9f7a0bfa070dd36b15e2ea952f9425aa Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 20 Sep 2023 11:48:12 +0200 Subject: [PATCH 3/4] fix SR build --- lib_rend/ivas_MSPred.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib_rend/ivas_MSPred.c b/lib_rend/ivas_MSPred.c index f1defbec5d..4dcdbbb1cf 100644 --- a/lib_rend/ivas_MSPred.c +++ b/lib_rend/ivas_MSPred.c @@ -431,8 +431,11 @@ int32_t CountMSBits( int32_t piPhaseCopy[MAX_BANDS_48]; int32_t piPredCopy[MAX_BANDS_48]; - set_l( piPhaseCopy, 0, MAX_BANDS_48 ); - set_l( piPredCopy, 0, MAX_BANDS_48 ); + for ( b = 0; b < MAX_BANDS_48; b++ ) + { + piPhaseCopy[b] = 0; + piPredCopy[b] = 0; + } iBitsWritten += 2; /* iMSMode */ for ( b = 0; b < iNumBands; b++ ) -- GitLab From 1e893d816e043ab56d6ee4f96de511f0eb491910 Mon Sep 17 00:00:00 2001 From: vaclav Date: Thu, 21 Sep 2023 17:22:50 +0200 Subject: [PATCH 4/4] address received comments --- lib_com/prot.h | 24 +++++++++--------- lib_dec/ivas_mct_dec.c | 4 +-- lib_dec/ivas_stereo_mdct_core_dec.c | 5 +--- lib_enc/igf_enc.c | 8 +++--- lib_enc/ivas_dirac_enc.c | 8 +++--- lib_enc/ivas_mdct_core_enc.c | 38 ++++++++++++++--------------- lib_enc/ivas_qmetadata_enc.c | 5 ++-- lib_enc/ivas_stereo_mdct_core_enc.c | 18 +++++++------- lib_enc/tcx_utils_enc.c | 20 +++++++-------- 9 files changed, 63 insertions(+), 67 deletions(-) diff --git a/lib_com/prot.h b/lib_com/prot.h index babc0b3141..aa1e53e195 100644 --- a/lib_com/prot.h +++ b/lib_com/prot.h @@ -7403,16 +7403,16 @@ void ProcessIGF( void ProcessStereoIGF( STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct, - Encoder_State *sts[CPE_CHANNELS], /* i : Encoder state */ - int16_t ms_mask[2][MAX_SFB], /* i : bandwise MS mask */ - float *pITFMDCTSpectrum[CPE_CHANNELS][2], /* i : MDCT spectrum fir ITF */ - float *pPowerSpectrum[CPE_CHANNELS], /* i/o: MDCT^2 + MDST^2 spectrum, or estimate */ - float *pPowerSpectrumMsInv[CPE_CHANNELS][2], /* i : inverse power spectrum */ - float *inv_spectrum[CPE_CHANNELS][2], /* i : inverse spectrum */ - const int16_t frameno, /* i : flag indicating index of current subframe*/ - const int16_t sp_aud_decision0, /* i : sp_aud_decision0 */ - const int32_t element_brate, /* i : element bitrate */ - const int16_t mct_on /* i : flag mct block (1) or stereo (0) */ + Encoder_State *sts[CPE_CHANNELS], /* i : Encoder state */ + int16_t ms_mask[2][MAX_SFB], /* i : bandwise MS mask */ + float *pITFMDCTSpectrum[CPE_CHANNELS][NB_DIV], /* i : MDCT spectrum fir ITF */ + float *pPowerSpectrum[CPE_CHANNELS], /* i/o: MDCT^2 + MDST^2 spectrum, or estimate */ + float *pPowerSpectrumMsInv[CPE_CHANNELS][NB_DIV], /* i : inverse power spectrum */ + float *inv_spectrum[CPE_CHANNELS][NB_DIV], /* i : inverse spectrum */ + const int16_t frameno, /* i : flag indicating index of current subframe*/ + const int16_t sp_aud_decision0, /* i : sp_aud_decision0 */ + const int32_t element_brate, /* i : element bitrate */ + const int16_t mct_on /* i : flag mct block (1) or stereo (0) */ ); void AnalyzePowerSpectrum( @@ -9855,8 +9855,8 @@ void IGFEncApplyStereo( const int16_t igfGridIdx, /* i : IGF grid index */ Encoder_State *sts[CPE_CHANNELS], /* i : Encoder state */ float *pPowerSpectrum[CPE_CHANNELS], /* i/o: MDCT^2 + MDST^2 spectrum, or estimate */ - float *pPowerSpectrumMsInv[CPE_CHANNELS][2], /* i/o: inverse power spectrum */ - float *inv_spectrum[CPE_CHANNELS][2], /* i : inverse spectrum */ + float *pPowerSpectrumMsInv[CPE_CHANNELS][NB_DIV], /* i/o: inverse power spectrum */ + float *inv_spectrum[CPE_CHANNELS][NB_DIV], /* i : inverse spectrum */ const int16_t frameno, /* i : flag indicating index of current subframe */ const int16_t sp_aud_decision0, /* i : sp_aud_decision0 */ const int32_t element_brate, /* i : element bitrate */ diff --git a/lib_dec/ivas_mct_dec.c b/lib_dec/ivas_mct_dec.c index efd369b534..7012165c85 100644 --- a/lib_dec/ivas_mct_dec.c +++ b/lib_dec/ivas_mct_dec.c @@ -83,8 +83,8 @@ ivas_error ivas_mct_dec( int16_t p_param[MCT_MAX_BLOCKS][CPE_CHANNELS][NB_DIV]; int16_t nTnsBitsTCX10[MCT_MAX_BLOCKS][CPE_CHANNELS][NB_DIV]; float Aq[MCT_MAX_BLOCKS][CPE_CHANNELS][( NB_SUBFR16k + 1 ) * ( M + 1 )]; - int16_t fUseTns[MCT_MAX_BLOCKS][CPE_CHANNELS][2]; /* two entries for each channel in case of TCX 10 */ - STnsData tnsData[MCT_MAX_BLOCKS][CPE_CHANNELS][2]; + int16_t fUseTns[MCT_MAX_BLOCKS][CPE_CHANNELS][NB_DIV]; + STnsData tnsData[MCT_MAX_BLOCKS][CPE_CHANNELS][NB_DIV]; Decoder_State **sts; float synth[CPE_CHANNELS][L_FRAME_PLUS]; float output_lfe_ch[L_FRAME48k]; diff --git a/lib_dec/ivas_stereo_mdct_core_dec.c b/lib_dec/ivas_stereo_mdct_core_dec.c index 5a1a27b41c..c95729bc29 100644 --- a/lib_dec/ivas_stereo_mdct_core_dec.c +++ b/lib_dec/ivas_stereo_mdct_core_dec.c @@ -153,7 +153,7 @@ void stereo_mdct_core_dec( int16_t param_lpc[CPE_CHANNELS][NPRM_LPC_NEW]; float Aq[CPE_CHANNELS][( NB_SUBFR16k + 1 ) * ( M + 1 )]; - float *x[CPE_CHANNELS][2]; + float *x[CPE_CHANNELS][NB_DIV]; /*needed to allocate N_MAX to prevent stereo switching crash */ float x_0_buf[CPE_CHANNELS][N_MAX]; @@ -179,9 +179,7 @@ void stereo_mdct_core_dec( int16_t p_param[CPE_CHANNELS][NB_DIV]; int16_t nTnsBitsTCX10[CPE_CHANNELS][NB_DIV]; float signal_outFB_tmp[CPE_CHANNELS][L_FRAME_PLUS]; - float signal_out_tmp[CPE_CHANNELS][L_FRAME_PLUS]; - push_wmops( "stereo_mdct_core_dec" ); /*--------------------------------------------------------------------------------* @@ -366,7 +364,6 @@ void stereo_mdct_core_dec( mvr2r( signal_outFB_tmp[1], signal_outFB[1], hCPE->hCoreCoder[1]->hTcxDec->L_frameTCX ); pop_wmops(); - return; } diff --git a/lib_enc/igf_enc.c b/lib_enc/igf_enc.c index 2b2e3d8356..1beddd01a8 100644 --- a/lib_enc/igf_enc.c +++ b/lib_enc/igf_enc.c @@ -1916,16 +1916,16 @@ void IGFEncApplyStereo( const int16_t igfGridIdx, /* i : IGF grid index */ Encoder_State *sts[CPE_CHANNELS], /* i : Encoder state */ float *pPowerSpectrum[CPE_CHANNELS], /* i/o: MDCT^2 + MDST^2 spectrum, or estimate */ - float *pPowerSpectrumMsInv[CPE_CHANNELS][2], /* i/o: inverse power spectrum */ - float *inv_spectrum[CPE_CHANNELS][2], /* i : inverse spectrum */ + float *pPowerSpectrumMsInv[CPE_CHANNELS][NB_DIV], /* i/o: inverse power spectrum */ + float *inv_spectrum[CPE_CHANNELS][NB_DIV], /* i : inverse spectrum */ const int16_t frameno, /* i : flag indicating index of current subfr. */ const int16_t sp_aud_decision0, /* i : sp_aud_decision0 */ const int32_t element_brate, /* i : element bitrate */ const int16_t mct_on /* i : flag mct block (1) or stereo (0) */ ) { - float *pPowerSpectrumParameter[2]; /* If it is NULL it informs a function that specific handling is needed */ - float *pPowerSpectrumParameterMsInv[2]; + float *pPowerSpectrumParameter[NB_DIV]; /* If it is NULL it informs a function that specific handling is needed */ + float *pPowerSpectrumParameterMsInv[NB_DIV]; int16_t coreMsMask[N_MAX]; int16_t sfb, ch, last_core_acelp; STEREO_MDCT_BAND_PARAMETERS *sfbConf; diff --git a/lib_enc/ivas_dirac_enc.c b/lib_enc/ivas_dirac_enc.c index 1c5482b081..724609463b 100644 --- a/lib_enc/ivas_dirac_enc.c +++ b/lib_enc/ivas_dirac_enc.c @@ -655,10 +655,10 @@ void ivas_dirac_param_est_enc( hDirAC->diffuseness_m[i] = 0; } - set_f( azi_secs, 0, 2 * DIRAC_MAX_ANA_CHANS * DIRAC_MAX_NBANDS ); - set_f( ele_secs, 0, 2 * DIRAC_MAX_ANA_CHANS * DIRAC_MAX_NBANDS ); - set_f( diff_secs, 0, 2 * DIRAC_MAX_ANA_CHANS * DIRAC_MAX_NBANDS ); - set_f( ene_secs, 0, 2 * DIRAC_MAX_ANA_CHANS * DIRAC_MAX_NBANDS ); + set_zero( azi_secs, 2 * DIRAC_MAX_ANA_CHANS * DIRAC_MAX_NBANDS ); + set_zero( ele_secs, 2 * DIRAC_MAX_ANA_CHANS * DIRAC_MAX_NBANDS ); + set_zero( diff_secs, 2 * DIRAC_MAX_ANA_CHANS * DIRAC_MAX_NBANDS ); + set_zero( ene_secs, 2 * DIRAC_MAX_ANA_CHANS * DIRAC_MAX_NBANDS ); /* Copy current frame to memory for delay compensation */ for ( i = 0; i < nchan_fb_in; i++ ) diff --git a/lib_enc/ivas_mdct_core_enc.c b/lib_enc/ivas_mdct_core_enc.c index d0e844d530..54ab9212ed 100644 --- a/lib_enc/ivas_mdct_core_enc.c +++ b/lib_enc/ivas_mdct_core_enc.c @@ -591,7 +591,7 @@ void ivas_mdct_core_whitening_enc( float temp_buffer[15 * L_FRAME48k / 8]; float *windowedSignal[CPE_CHANNELS]; float *powerSpec = orig_spectrum_long[0]; - float *mdst_spectrum[CPE_CHANNELS][2]; + float *mdst_spectrum[CPE_CHANNELS][NB_DIV]; float nrg; Encoder_State *st, **sts; float scf[CPE_CHANNELS][NB_DIV][M]; @@ -830,7 +830,6 @@ void ivas_mdct_core_whitening_enc( * Envelope Quantization and FDNS *---------------------------------------------------------------*/ - for ( ch = 0; ch < CPE_CHANNELS; ch++ ) { if ( ( hCPE->cpe_id * CPE_CHANNELS + ch ) >= nChannels ) @@ -969,7 +968,6 @@ void ivas_mdct_core_whitening_enc( } } - /*--------------------------------------------------------------* * TNS *---------------------------------------------------------------*/ @@ -1087,6 +1085,7 @@ void ivas_mdct_core_whitening_enc( /*--------------------------------------------------------------------------------* * SNS parameters *--------------------------------------------------------------------------------*/ + if ( !mct_on && sts[0]->sr_core == 25600 && ( ( hCPE->element_brate == IVAS_48k || hCPE->element_brate == IVAS_64k ) ) ) { idx = 0; @@ -1157,7 +1156,7 @@ void ivas_mdct_core_whitening_enc( nbits_start_sns = hBstr->nb_bits_tot; - num_sns = ( st->core == TCX_20_CORE ) ? 1 : 2; + num_sns = ( st->core == TCX_20_CORE ) ? 1 : NB_DIV; if ( ch == 0 || skipped_first_channel ) { @@ -1215,16 +1214,16 @@ void ivas_mdct_quant_coder( { Encoder_State *st, **sts; int16_t bitsAvailable, target_bits, nSubframes, ch, n; - int16_t L_frameTCX[CPE_CHANNELS][2]; /* full frame length */ - int16_t L_frame[CPE_CHANNELS][2]; /* frame length */ - int16_t L_spec[CPE_CHANNELS][2]; /* length of the coded spectrum */ - int16_t tcx_offset[CPE_CHANNELS][2]; /* folding point offset relative to the end of the previous frame */ - int16_t noiseFillingBorder[CPE_CHANNELS][2]; /* noise filling border */ - float fac_ns[CPE_CHANNELS][2]; /* noise filling level */ - int16_t nf_seed[CPE_CHANNELS][2]; /* noise filling random seed */ - int16_t hm_active[CPE_CHANNELS][2]; /* flag indicating if the harmonic model is active */ - float ener[CPE_CHANNELS][2]; /* energy of the quantized spectrum */ - float gain_tcx[CPE_CHANNELS][2]; /* global gain */ + int16_t L_frameTCX[CPE_CHANNELS][NB_DIV]; /* full frame length */ + int16_t L_frame[CPE_CHANNELS][NB_DIV]; /* frame length */ + int16_t L_spec[CPE_CHANNELS][NB_DIV]; /* length of the coded spectrum */ + int16_t tcx_offset[CPE_CHANNELS][NB_DIV]; /* folding point offset relative to the end of the previous frame */ + int16_t noiseFillingBorder[CPE_CHANNELS][NB_DIV]; /* noise filling border */ + float fac_ns[CPE_CHANNELS][NB_DIV]; /* noise filling level */ + int16_t nf_seed[CPE_CHANNELS][NB_DIV]; /* noise filling random seed */ + int16_t hm_active[CPE_CHANNELS][NB_DIV]; /* flag indicating if the harmonic model is active */ + float ener[CPE_CHANNELS][NB_DIV]; /* energy of the quantized spectrum */ + float gain_tcx[CPE_CHANNELS][NB_DIV]; /* global gain */ float quantized_spectrum_long[CPE_CHANNELS][N_MAX]; /* quantized MDCT spectrum, inv ms mask mdst spectrum, scratch for MS spectra in the MS decision */ float *quantized_spectrum[CPE_CHANNELS][NB_DIV]; int16_t param_core[CPE_CHANNELS][2 * NPRM_DIV]; @@ -1233,16 +1232,15 @@ void ivas_mdct_quant_coder( int16_t nbits_start, total_nbbits; push_wmops( "mdct_core_Q" ); - sts = hCPE->hCoreCoder; for ( ch = 0; ch < CPE_CHANNELS; ch++ ) { - set_f( fac_ns[ch], 0.0f, 2 ); - set_s( nf_seed[ch], 0, 2 ); - set_s( hm_active[ch], 0, 2 ); - set_f( ener[ch], 0.0f, 2 ); - set_f( gain_tcx[ch], 0.0f, 2 ); + set_f( fac_ns[ch], 0.0f, NB_DIV ); + set_s( nf_seed[ch], 0, NB_DIV ); + set_s( hm_active[ch], 0, NB_DIV ); + set_f( ener[ch], 0.0f, NB_DIV ); + set_f( gain_tcx[ch], 0.0f, NB_DIV ); } for ( ch = 0; ch < CPE_CHANNELS; ch++ ) diff --git a/lib_enc/ivas_qmetadata_enc.c b/lib_enc/ivas_qmetadata_enc.c index cdd755a27e..9f48c55392 100644 --- a/lib_enc/ivas_qmetadata_enc.c +++ b/lib_enc/ivas_qmetadata_enc.c @@ -3334,8 +3334,8 @@ static int16_t truncGR0( { int16_t i; int16_t bits; - const int16_t remap3b[1 << 3] = { 1, 6, 2, 4, 0, 5, 3, 7 }; - const int16_t remap2b[1 << 2] = { 1, 2, 0, 3 }; + const int16_t remap3b[8] = { 1, 6, 2, 4, 0, 5, 3, 7 }; + const int16_t remap2b[4] = { 1, 2, 0, 3 }; float diff[MAX_PARAM_SPATIAL_SUBFRAMES]; int16_t indx[MAX_PARAM_SPATIAL_SUBFRAMES]; @@ -3361,6 +3361,7 @@ static int16_t truncGR0( data_hat[i] = -180.0f; } } + return bits; } diff --git a/lib_enc/ivas_stereo_mdct_core_enc.c b/lib_enc/ivas_stereo_mdct_core_enc.c index 6a4003f95f..d74f21d8e8 100755 --- a/lib_enc/ivas_stereo_mdct_core_enc.c +++ b/lib_enc/ivas_stereo_mdct_core_enc.c @@ -123,25 +123,25 @@ void stereo_mdct_core_enc( { int16_t i, ch, nSubframes, L_subframeTCX; int16_t n, nAvailBits; - int16_t tnsSize[CPE_CHANNELS][2]; /* number of tns parameters put into prm */ - int16_t tnsBits[CPE_CHANNELS][2]; /* number of tns bits in the frame */ + int16_t tnsSize[CPE_CHANNELS][NB_DIV]; /* number of tns parameters put into prm */ + int16_t tnsBits[CPE_CHANNELS][NB_DIV]; /* number of tns bits in the frame */ float *p_orig_spectrum_long[CPE_CHANNELS], orig_spectrum_long[CPE_CHANNELS][N_MAX]; /* MDCT output (L/R). */ - float *orig_spectrum[CPE_CHANNELS][2]; /* Pointers to MDCT output for a short block (L/R) */ + float *orig_spectrum[CPE_CHANNELS][NB_DIV]; /* Pointers to MDCT output for a short block (L/R) */ float powerSpec[CPE_CHANNELS][N_MAX]; float *p_powerSpec[CPE_CHANNELS]; float powerSpecMsInv_long[CPE_CHANNELS][N_MAX]; /* MS inv power spectrum, also inverse MDST spectrum */ - float *powerSpecMsInv[CPE_CHANNELS][2]; + float *powerSpecMsInv[CPE_CHANNELS][NB_DIV]; float quantized_spectrum_long[CPE_CHANNELS][N_MAX]; /* quantized MDCT spectrum, inv ms mask mdst spectrum, scratch for MS spectra in the MS decision */ - float *quantized_spectrum[CPE_CHANNELS][2]; - float *inv_mdst_spectrum[CPE_CHANNELS][2]; - float *inv_spectrum[CPE_CHANNELS][2]; + float *quantized_spectrum[CPE_CHANNELS][NB_DIV]; + float *inv_mdst_spectrum[CPE_CHANNELS][NB_DIV]; + float *inv_spectrum[CPE_CHANNELS][NB_DIV]; float *p_mdst_spectrum_long[CPE_CHANNELS], mdst_spectrum_long[CPE_CHANNELS][N_MAX]; - float *mdst_spectrum[CPE_CHANNELS][2]; + float *mdst_spectrum[CPE_CHANNELS][NB_DIV]; Encoder_State *st, **sts; STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct; BSTR_ENC_HANDLE hBstr; int16_t ms_mask[2][MAX_SFB]; - int16_t p_param[CPE_CHANNELS][2]; + int16_t p_param[CPE_CHANNELS][NB_DIV]; int16_t stereo_bits; int16_t meta_bits, signal_bits; diff --git a/lib_enc/tcx_utils_enc.c b/lib_enc/tcx_utils_enc.c index b3459bd9c1..deaab8d696 100644 --- a/lib_enc/tcx_utils_enc.c +++ b/lib_enc/tcx_utils_enc.c @@ -1506,16 +1506,16 @@ void ProcessIGF( void ProcessStereoIGF( STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct, - Encoder_State *sts[CPE_CHANNELS], /* i : Encoder state */ - int16_t ms_mask[2][MAX_SFB], /* i : bandwise MS mask */ - float *pITFMDCTSpectrum[CPE_CHANNELS][2], /* i : MDCT spectrum fir ITF */ - float *pPowerSpectrum[CPE_CHANNELS], /* i/o: MDCT^2 + MDST^2 spectrum, or estimate */ - float *pPowerSpectrumMsInv[CPE_CHANNELS][2], /* i : inverse power spectrum */ - float *inv_spectrum[CPE_CHANNELS][2], /* i : inverse spectrum */ - const int16_t frameno, /* i : flag indicating index of current subfr. */ - const int16_t sp_aud_decision0, /* i : sp_aud_decision0 */ - const int32_t element_brate, /* i : element bitrate */ - const int16_t mct_on /* i : flag mct block (1) or stereo (0) */ + Encoder_State *sts[CPE_CHANNELS], /* i : Encoder state */ + int16_t ms_mask[2][MAX_SFB], /* i : bandwise MS mask */ + float *pITFMDCTSpectrum[CPE_CHANNELS][NB_DIV], /* i : MDCT spectrum fir ITF */ + float *pPowerSpectrum[CPE_CHANNELS], /* i/o: MDCT^2 + MDST^2 spectrum, or estimate */ + float *pPowerSpectrumMsInv[CPE_CHANNELS][NB_DIV], /* i : inverse power spectrum */ + float *inv_spectrum[CPE_CHANNELS][NB_DIV], /* i : inverse spectrum */ + const int16_t frameno, /* i : flag indicating index of current subfr. */ + const int16_t sp_aud_decision0, /* i : sp_aud_decision0 */ + const int32_t element_brate, /* i : element bitrate */ + const int16_t mct_on /* i : flag mct block (1) or stereo (0) */ ) { int16_t ch, igfGridIdx, isIndepFlag, bsBits, pBsStart, curr_order; -- GitLab