Loading lib_com/options.h +3 −1 Original line number Diff line number Diff line Loading @@ -175,7 +175,9 @@ #define FIX_GET_DELAY_RETURN /* Issue 223: change return data type in function get_delay() */ #define NTT_REDUC_COMP_POC /* Contribution : Complexity reduction of phase spectrum in stereo downmix*/ #define FIX_ISM_INACTIVE_BITS /* fix bitbudget distribution in inactive frames in ISM format */ //#define FIX_ISM_INACTIVE_BITS /* fix bitbudget distribution in inactive frames in ISM format */ #define COVARIANCE_MEMORY_OPT /* Issue 231: define SPAR covariance buffers in stack instead of inter-frame heap */ /* ################## End DEVELOPMENT switches ######################### */ /* clang-format on */ Loading lib_enc/ivas_spar_encoder.c +135 −1 Original line number Diff line number Diff line Loading @@ -325,6 +325,120 @@ ivas_error ivas_spar_enc( } #ifdef COVARIANCE_MEMORY_OPT /*-------------------------------------------------------------------* * ivas_spar_cov_md_process() * * Process call for SPAR covariance and MD encoder *-------------------------------------------------------------------*/ static void ivas_spar_cov_md_process( Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */ BSTR_ENC_HANDLE hMetaData, const int16_t nchan_inp, const int16_t sba_order, float *ppIn_FR_real[IVAS_SPAR_MAX_CH], float *ppIn_FR_imag[IVAS_SPAR_MAX_CH], const int16_t transient_det, const int16_t dtx_vad ) { int16_t i, j, i_ts, b, table_idx; float *cov_real[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH]; float *cov_dtx_real[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH]; float cov_real_buf[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH][IVAS_MAX_NUM_BANDS]; float cov_dtx_real_buf[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH][IVAS_MAX_NUM_BANDS]; ENCODER_CONFIG_HANDLE hEncoderConfig = st_ivas->hEncoderConfig; SPAR_ENC_HANDLE hSpar = st_ivas->hSpar; IVAS_QMETADATA_HANDLE hQMetaData = st_ivas->hQMetaData; /*-----------------------------------------------------------------------------------------* * Covariance process *-----------------------------------------------------------------------------------------*/ for ( i = 0; i < nchan_inp; i++ ) { for ( j = 0; j < nchan_inp; j++ ) { cov_real[i][j] = cov_real_buf[i][j]; cov_dtx_real[i][j] = cov_dtx_real_buf[i][j]; } } ivas_enc_cov_handler_process( hSpar->hCovEnc, ppIn_FR_real, ppIn_FR_imag, cov_real, cov_dtx_real, hSpar->hFbMixer->pFb, 0, hSpar->hFbMixer->pFb->filterbank_num_bands, nchan_inp, dtx_vad, transient_det ); /*-----------------------------------------------------------------------------------------* * Set SPAR bitrates *-----------------------------------------------------------------------------------------*/ table_idx = ivas_get_spar_table_idx( hEncoderConfig->ivas_total_brate, sba_order, SPAR_CONFIG_BW, NULL, NULL ); if ( hSpar->hMdEnc->table_idx != table_idx ) { hSpar->hMdEnc->table_idx = table_idx; ivas_spar_set_bitrate_config( &hSpar->hMdEnc->spar_md_cfg, table_idx, ( hSpar->hMdEnc->spar_hoa_md_flag ) ? IVAS_MAX_NUM_BANDS : SPAR_DIRAC_SPLIT_START_BAND ); } /*-----------------------------------------------------------------------------------------* * MetaData encoder *-----------------------------------------------------------------------------------------*/ if ( hSpar->hMdEnc->spar_hoa_md_flag == 0 ) { ivas_spar_md_enc_process( hSpar->hMdEnc, hEncoderConfig, cov_real, cov_dtx_real, hMetaData, dtx_vad, nchan_inp, sba_order ); } { float azi_dirac[IVAS_MAX_NUM_BANDS][MAX_PARAM_SPATIAL_SUBFRAMES]; float ele_dirac[IVAS_MAX_NUM_BANDS][MAX_PARAM_SPATIAL_SUBFRAMES]; float diffuseness[IVAS_MAX_NUM_BANDS]; float Wscale_d[IVAS_MAX_NUM_BANDS]; int16_t d_start_band, d_end_band; int16_t dirac_band_idx; d_start_band = hSpar->enc_param_start_band; d_end_band = IVAS_MAX_NUM_BANDS; for ( b = d_start_band; b < d_end_band; b++ ) { dirac_band_idx = hSpar->dirac_to_spar_md_bands[b] - d_start_band; for ( i_ts = 0; i_ts < hQMetaData->q_direction->cfg.nblocks; i_ts++ ) { azi_dirac[b][i_ts] = hQMetaData->q_direction->band_data[dirac_band_idx].azimuth[i_ts]; ele_dirac[b][i_ts] = hQMetaData->q_direction->band_data[dirac_band_idx].elevation[i_ts]; } diffuseness[b] = 1.0f - hQMetaData->q_direction->band_data[dirac_band_idx].energy_ratio[0]; } if ( d_start_band >= 6 && dtx_vad == 1 ) { mvr2r( hSpar->hMdEnc->spar_md.band_coeffs[d_start_band - 1].P_quant_re, hSpar->hMdEnc->spar_md.band_coeffs[d_start_band - 1].P_re, IVAS_SPAR_MAX_CH - 1 ); } for ( b = d_start_band; b < d_end_band; b++ ) { Wscale_d[b] = 1.0f; for ( i = 1; i < nchan_inp; i++ ) { Wscale_d[b] += cov_real[i][i][b] / max( EPSILON, cov_real[0][0][b] ); } Wscale_d[b] = Wscale_d[b] / ( 1.0f + (float) sba_order ); /*DirAC normalized signal variance sums to 1 + order*/ Wscale_d[b] = sqrtf( Wscale_d[b] ); Wscale_d[b] = min( 2.0f, max( Wscale_d[b], 1.0f ) ); } ivas_get_spar_md_from_dirac( azi_dirac, ele_dirac, diffuseness, 1, hSpar->hMdEnc->mixer_mat, &hSpar->hMdEnc->spar_md, &hSpar->hMdEnc->spar_md_cfg, d_start_band, d_end_band, ( hSpar->hMdEnc->spar_hoa_md_flag ) ? 1 : sba_order, dtx_vad, Wscale_d ); } if ( hSpar->hMdEnc->spar_hoa_md_flag ) { ivas_spar_md_enc_process( hSpar->hMdEnc, hEncoderConfig, cov_real, cov_dtx_real, hMetaData, dtx_vad, nchan_inp, sba_order ); } return; } #endif /*-----------------------------------------------------------------------------------------* * Function ivas_spar_enc_process() * Loading @@ -343,10 +457,13 @@ static ivas_error ivas_spar_enc_process( float *p_pcm_tmp[IVAS_SPAR_MAX_CH]; int16_t i, j, b, i_ts, input_frame, transient_det, dtx_vad; int32_t ivas_total_brate, input_Fs; #ifdef COVARIANCE_MEMORY_OPT int16_t nchan_inp, sba_order; #else float *cov_real[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH]; float *cov_dtx_real[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH]; int16_t nchan_inp, nchan_transport, sba_order; int16_t table_idx; #endif int16_t in_out_mixer_map[IVAS_MAX_FB_MIXER_OUT_CH][IVAS_MAX_SPAR_FB_MIXER_IN_CH]; ivas_error error; const int16_t *order; Loading Loading @@ -523,6 +640,9 @@ static ivas_error ivas_spar_enc_process( } } #ifdef COVARIANCE_MEMORY_OPT ivas_spar_cov_md_process( st_ivas, hMetaData, nchan_inp, sba_order, ppIn_FR_real, ppIn_FR_imag, transient_det, dtx_vad ); #else /*-----------------------------------------------------------------------------------------* * Covariance process *-----------------------------------------------------------------------------------------*/ Loading @@ -531,8 +651,13 @@ static ivas_error ivas_spar_enc_process( { for ( j = 0; j < nchan_inp; j++ ) { #ifdef COVARIANCE_MEMORY_OPT cov_real[i][j] = cov_real_buf[i][j]; cov_dtx_real[i][j] = cov_dtx_real_buf[i][j]; #else cov_real[i][j] = hSpar->hMdEnc->cov_real[i][j]; cov_dtx_real[i][j] = hSpar->hMdEnc->cov_dtx_real[i][j]; #endif } } Loading Loading @@ -607,12 +732,17 @@ static ivas_error ivas_spar_enc_process( { ivas_spar_md_enc_process( hSpar->hMdEnc, hEncoderConfig, cov_real, cov_dtx_real, hMetaData, dtx_vad, nchan_inp, sba_order ); } #endif /*-----------------------------------------------------------------------------------------* * FB mixer *-----------------------------------------------------------------------------------------*/ #ifdef COVARIANCE_MEMORY_OPT ivas_fb_mixer_get_in_out_mapping( hSpar->hFbMixer->fb_cfg, st_ivas->nchan_transport, ENC, remix_order_set[hSpar->hMdEnc->spar_md_cfg.remix_unmix_order], in_out_mixer_map ); #else ivas_fb_mixer_get_in_out_mapping( hSpar->hFbMixer->fb_cfg, nchan_transport, ENC, remix_order_set[hSpar->hMdEnc->spar_md_cfg.remix_unmix_order], in_out_mixer_map ); #endif #ifdef DEBUG_SBA_MD_DUMP { Loading Loading @@ -765,7 +895,11 @@ static ivas_error ivas_spar_enc_process( order = remix_order_set[hSpar->hMdEnc->spar_md_cfg.remix_unmix_order]; #ifdef COVARIANCE_MEMORY_OPT for ( j = 0; j < st_ivas->nchan_transport; j++ ) #else for ( j = 0; j < nchan_transport; j++ ) #endif { mvr2r( p_pcm_tmp[j], data_f[order[j]], input_frame ); } Loading lib_enc/ivas_spar_md_enc.c +6 −3 Original line number Diff line number Diff line Loading @@ -147,6 +147,7 @@ ivas_error ivas_spar_md_enc_open( } } #ifndef COVARIANCE_MEMORY_OPT if ( ( hMdEnc->cov_real = (float ***) count_malloc( num_channels * sizeof( float ** ) ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for SPAR cov real matrix" ); Loading Loading @@ -184,7 +185,7 @@ ivas_error ivas_spar_md_enc_open( } } } #endif if ( ( hMdEnc->mixer_mat_local = (float ***) count_malloc( num_channels * sizeof( float ** ) ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for SPAR MD matrix" ); Loading Loading @@ -249,6 +250,7 @@ void ivas_spar_md_enc_close( count_free( hMdEnc->mixer_mat ); } #ifndef COVARIANCE_MEMORY_OPT if ( hMdEnc->cov_real != NULL ) { for ( i = 0; i < num_channels; i++ ) Loading Loading @@ -276,7 +278,7 @@ void ivas_spar_md_enc_close( } count_free( hMdEnc->cov_dtx_real ); } #endif if ( hMdEnc->mixer_mat_local != NULL ) { for ( i = 0; i < num_channels; i++ ) Loading Loading @@ -363,6 +365,7 @@ static ivas_error ivas_spar_md_enc_init( } } #ifndef COVARIANCE_MEMORY_OPT for ( i = 0; i < num_channels; i++ ) { for ( j = 0; j < num_channels; j++ ) Loading @@ -374,7 +377,7 @@ static ivas_error ivas_spar_md_enc_init( } } } #endif ivas_clear_band_coeffs( hMdEnc->spar_md.band_coeffs, IVAS_MAX_NUM_BANDS ); ivas_clear_band_coeff_idx( hMdEnc->spar_md.band_coeffs_idx, IVAS_MAX_NUM_BANDS ); ivas_clear_band_coeff_idx( hMdEnc->spar_md_prior.band_coeffs_idx, IVAS_MAX_NUM_BANDS ); Loading lib_enc/ivas_stat_enc.h +2 −0 Original line number Diff line number Diff line Loading @@ -638,8 +638,10 @@ typedef struct ivas_spar_md_enc_state_t int16_t num_decorr; float ***mixer_mat; #ifndef COVARIANCE_MEMORY_OPT float ***cov_real; float ***cov_dtx_real; #endif float ***mixer_mat_local; ivas_spar_md_com_cfg spar_md_cfg; ivas_arith_coeffs_t arith_coeffs; Loading Loading
lib_com/options.h +3 −1 Original line number Diff line number Diff line Loading @@ -175,7 +175,9 @@ #define FIX_GET_DELAY_RETURN /* Issue 223: change return data type in function get_delay() */ #define NTT_REDUC_COMP_POC /* Contribution : Complexity reduction of phase spectrum in stereo downmix*/ #define FIX_ISM_INACTIVE_BITS /* fix bitbudget distribution in inactive frames in ISM format */ //#define FIX_ISM_INACTIVE_BITS /* fix bitbudget distribution in inactive frames in ISM format */ #define COVARIANCE_MEMORY_OPT /* Issue 231: define SPAR covariance buffers in stack instead of inter-frame heap */ /* ################## End DEVELOPMENT switches ######################### */ /* clang-format on */ Loading
lib_enc/ivas_spar_encoder.c +135 −1 Original line number Diff line number Diff line Loading @@ -325,6 +325,120 @@ ivas_error ivas_spar_enc( } #ifdef COVARIANCE_MEMORY_OPT /*-------------------------------------------------------------------* * ivas_spar_cov_md_process() * * Process call for SPAR covariance and MD encoder *-------------------------------------------------------------------*/ static void ivas_spar_cov_md_process( Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */ BSTR_ENC_HANDLE hMetaData, const int16_t nchan_inp, const int16_t sba_order, float *ppIn_FR_real[IVAS_SPAR_MAX_CH], float *ppIn_FR_imag[IVAS_SPAR_MAX_CH], const int16_t transient_det, const int16_t dtx_vad ) { int16_t i, j, i_ts, b, table_idx; float *cov_real[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH]; float *cov_dtx_real[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH]; float cov_real_buf[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH][IVAS_MAX_NUM_BANDS]; float cov_dtx_real_buf[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH][IVAS_MAX_NUM_BANDS]; ENCODER_CONFIG_HANDLE hEncoderConfig = st_ivas->hEncoderConfig; SPAR_ENC_HANDLE hSpar = st_ivas->hSpar; IVAS_QMETADATA_HANDLE hQMetaData = st_ivas->hQMetaData; /*-----------------------------------------------------------------------------------------* * Covariance process *-----------------------------------------------------------------------------------------*/ for ( i = 0; i < nchan_inp; i++ ) { for ( j = 0; j < nchan_inp; j++ ) { cov_real[i][j] = cov_real_buf[i][j]; cov_dtx_real[i][j] = cov_dtx_real_buf[i][j]; } } ivas_enc_cov_handler_process( hSpar->hCovEnc, ppIn_FR_real, ppIn_FR_imag, cov_real, cov_dtx_real, hSpar->hFbMixer->pFb, 0, hSpar->hFbMixer->pFb->filterbank_num_bands, nchan_inp, dtx_vad, transient_det ); /*-----------------------------------------------------------------------------------------* * Set SPAR bitrates *-----------------------------------------------------------------------------------------*/ table_idx = ivas_get_spar_table_idx( hEncoderConfig->ivas_total_brate, sba_order, SPAR_CONFIG_BW, NULL, NULL ); if ( hSpar->hMdEnc->table_idx != table_idx ) { hSpar->hMdEnc->table_idx = table_idx; ivas_spar_set_bitrate_config( &hSpar->hMdEnc->spar_md_cfg, table_idx, ( hSpar->hMdEnc->spar_hoa_md_flag ) ? IVAS_MAX_NUM_BANDS : SPAR_DIRAC_SPLIT_START_BAND ); } /*-----------------------------------------------------------------------------------------* * MetaData encoder *-----------------------------------------------------------------------------------------*/ if ( hSpar->hMdEnc->spar_hoa_md_flag == 0 ) { ivas_spar_md_enc_process( hSpar->hMdEnc, hEncoderConfig, cov_real, cov_dtx_real, hMetaData, dtx_vad, nchan_inp, sba_order ); } { float azi_dirac[IVAS_MAX_NUM_BANDS][MAX_PARAM_SPATIAL_SUBFRAMES]; float ele_dirac[IVAS_MAX_NUM_BANDS][MAX_PARAM_SPATIAL_SUBFRAMES]; float diffuseness[IVAS_MAX_NUM_BANDS]; float Wscale_d[IVAS_MAX_NUM_BANDS]; int16_t d_start_band, d_end_band; int16_t dirac_band_idx; d_start_band = hSpar->enc_param_start_band; d_end_band = IVAS_MAX_NUM_BANDS; for ( b = d_start_band; b < d_end_band; b++ ) { dirac_band_idx = hSpar->dirac_to_spar_md_bands[b] - d_start_band; for ( i_ts = 0; i_ts < hQMetaData->q_direction->cfg.nblocks; i_ts++ ) { azi_dirac[b][i_ts] = hQMetaData->q_direction->band_data[dirac_band_idx].azimuth[i_ts]; ele_dirac[b][i_ts] = hQMetaData->q_direction->band_data[dirac_band_idx].elevation[i_ts]; } diffuseness[b] = 1.0f - hQMetaData->q_direction->band_data[dirac_band_idx].energy_ratio[0]; } if ( d_start_band >= 6 && dtx_vad == 1 ) { mvr2r( hSpar->hMdEnc->spar_md.band_coeffs[d_start_band - 1].P_quant_re, hSpar->hMdEnc->spar_md.band_coeffs[d_start_band - 1].P_re, IVAS_SPAR_MAX_CH - 1 ); } for ( b = d_start_band; b < d_end_band; b++ ) { Wscale_d[b] = 1.0f; for ( i = 1; i < nchan_inp; i++ ) { Wscale_d[b] += cov_real[i][i][b] / max( EPSILON, cov_real[0][0][b] ); } Wscale_d[b] = Wscale_d[b] / ( 1.0f + (float) sba_order ); /*DirAC normalized signal variance sums to 1 + order*/ Wscale_d[b] = sqrtf( Wscale_d[b] ); Wscale_d[b] = min( 2.0f, max( Wscale_d[b], 1.0f ) ); } ivas_get_spar_md_from_dirac( azi_dirac, ele_dirac, diffuseness, 1, hSpar->hMdEnc->mixer_mat, &hSpar->hMdEnc->spar_md, &hSpar->hMdEnc->spar_md_cfg, d_start_band, d_end_band, ( hSpar->hMdEnc->spar_hoa_md_flag ) ? 1 : sba_order, dtx_vad, Wscale_d ); } if ( hSpar->hMdEnc->spar_hoa_md_flag ) { ivas_spar_md_enc_process( hSpar->hMdEnc, hEncoderConfig, cov_real, cov_dtx_real, hMetaData, dtx_vad, nchan_inp, sba_order ); } return; } #endif /*-----------------------------------------------------------------------------------------* * Function ivas_spar_enc_process() * Loading @@ -343,10 +457,13 @@ static ivas_error ivas_spar_enc_process( float *p_pcm_tmp[IVAS_SPAR_MAX_CH]; int16_t i, j, b, i_ts, input_frame, transient_det, dtx_vad; int32_t ivas_total_brate, input_Fs; #ifdef COVARIANCE_MEMORY_OPT int16_t nchan_inp, sba_order; #else float *cov_real[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH]; float *cov_dtx_real[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH]; int16_t nchan_inp, nchan_transport, sba_order; int16_t table_idx; #endif int16_t in_out_mixer_map[IVAS_MAX_FB_MIXER_OUT_CH][IVAS_MAX_SPAR_FB_MIXER_IN_CH]; ivas_error error; const int16_t *order; Loading Loading @@ -523,6 +640,9 @@ static ivas_error ivas_spar_enc_process( } } #ifdef COVARIANCE_MEMORY_OPT ivas_spar_cov_md_process( st_ivas, hMetaData, nchan_inp, sba_order, ppIn_FR_real, ppIn_FR_imag, transient_det, dtx_vad ); #else /*-----------------------------------------------------------------------------------------* * Covariance process *-----------------------------------------------------------------------------------------*/ Loading @@ -531,8 +651,13 @@ static ivas_error ivas_spar_enc_process( { for ( j = 0; j < nchan_inp; j++ ) { #ifdef COVARIANCE_MEMORY_OPT cov_real[i][j] = cov_real_buf[i][j]; cov_dtx_real[i][j] = cov_dtx_real_buf[i][j]; #else cov_real[i][j] = hSpar->hMdEnc->cov_real[i][j]; cov_dtx_real[i][j] = hSpar->hMdEnc->cov_dtx_real[i][j]; #endif } } Loading Loading @@ -607,12 +732,17 @@ static ivas_error ivas_spar_enc_process( { ivas_spar_md_enc_process( hSpar->hMdEnc, hEncoderConfig, cov_real, cov_dtx_real, hMetaData, dtx_vad, nchan_inp, sba_order ); } #endif /*-----------------------------------------------------------------------------------------* * FB mixer *-----------------------------------------------------------------------------------------*/ #ifdef COVARIANCE_MEMORY_OPT ivas_fb_mixer_get_in_out_mapping( hSpar->hFbMixer->fb_cfg, st_ivas->nchan_transport, ENC, remix_order_set[hSpar->hMdEnc->spar_md_cfg.remix_unmix_order], in_out_mixer_map ); #else ivas_fb_mixer_get_in_out_mapping( hSpar->hFbMixer->fb_cfg, nchan_transport, ENC, remix_order_set[hSpar->hMdEnc->spar_md_cfg.remix_unmix_order], in_out_mixer_map ); #endif #ifdef DEBUG_SBA_MD_DUMP { Loading Loading @@ -765,7 +895,11 @@ static ivas_error ivas_spar_enc_process( order = remix_order_set[hSpar->hMdEnc->spar_md_cfg.remix_unmix_order]; #ifdef COVARIANCE_MEMORY_OPT for ( j = 0; j < st_ivas->nchan_transport; j++ ) #else for ( j = 0; j < nchan_transport; j++ ) #endif { mvr2r( p_pcm_tmp[j], data_f[order[j]], input_frame ); } Loading
lib_enc/ivas_spar_md_enc.c +6 −3 Original line number Diff line number Diff line Loading @@ -147,6 +147,7 @@ ivas_error ivas_spar_md_enc_open( } } #ifndef COVARIANCE_MEMORY_OPT if ( ( hMdEnc->cov_real = (float ***) count_malloc( num_channels * sizeof( float ** ) ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for SPAR cov real matrix" ); Loading Loading @@ -184,7 +185,7 @@ ivas_error ivas_spar_md_enc_open( } } } #endif if ( ( hMdEnc->mixer_mat_local = (float ***) count_malloc( num_channels * sizeof( float ** ) ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for SPAR MD matrix" ); Loading Loading @@ -249,6 +250,7 @@ void ivas_spar_md_enc_close( count_free( hMdEnc->mixer_mat ); } #ifndef COVARIANCE_MEMORY_OPT if ( hMdEnc->cov_real != NULL ) { for ( i = 0; i < num_channels; i++ ) Loading Loading @@ -276,7 +278,7 @@ void ivas_spar_md_enc_close( } count_free( hMdEnc->cov_dtx_real ); } #endif if ( hMdEnc->mixer_mat_local != NULL ) { for ( i = 0; i < num_channels; i++ ) Loading Loading @@ -363,6 +365,7 @@ static ivas_error ivas_spar_md_enc_init( } } #ifndef COVARIANCE_MEMORY_OPT for ( i = 0; i < num_channels; i++ ) { for ( j = 0; j < num_channels; j++ ) Loading @@ -374,7 +377,7 @@ static ivas_error ivas_spar_md_enc_init( } } } #endif ivas_clear_band_coeffs( hMdEnc->spar_md.band_coeffs, IVAS_MAX_NUM_BANDS ); ivas_clear_band_coeff_idx( hMdEnc->spar_md.band_coeffs_idx, IVAS_MAX_NUM_BANDS ); ivas_clear_band_coeff_idx( hMdEnc->spar_md_prior.band_coeffs_idx, IVAS_MAX_NUM_BANDS ); Loading
lib_enc/ivas_stat_enc.h +2 −0 Original line number Diff line number Diff line Loading @@ -638,8 +638,10 @@ typedef struct ivas_spar_md_enc_state_t int16_t num_decorr; float ***mixer_mat; #ifndef COVARIANCE_MEMORY_OPT float ***cov_real; float ***cov_dtx_real; #endif float ***mixer_mat_local; ivas_spar_md_com_cfg spar_md_cfg; ivas_arith_coeffs_t arith_coeffs; Loading