Loading lib_dec/ivas_corecoder_dec_reconfig.c +13 −0 Original line number Diff line number Diff line Loading @@ -64,6 +64,10 @@ ivas_error ivas_corecoder_dec_reconfig( MC_MODE last_mc_mode; DECODER_CONFIG_HANDLE hDecoderConfig; ivas_error error; #ifdef NONBE_FIX_862_UBSAN_SPAR_DEC_BR_SW_PLC int16_t prev_bfi; Decoder_State *st0; #endif /*-----------------------------------------------------------------* * Initialization Loading Loading @@ -141,6 +145,10 @@ ivas_error ivas_corecoder_dec_reconfig( } else { #ifdef NONBE_FIX_862_UBSAN_SPAR_DEC_BR_SW_PLC st0 = ( nSCE_old > 0 ) ? st_ivas->hSCE[0]->hCoreCoder[0] : st_ivas->hCPE[0]->hCoreCoder[0]; prev_bfi = st0->prev_bfi; #endif nSCE_existing = min( nSCE_old, st_ivas->nSCE ); nCPE_existing = min( nCPE_old, st_ivas->nCPE ); Loading Loading @@ -293,6 +301,11 @@ ivas_error ivas_corecoder_dec_reconfig( st_ivas->hCPE[0]->hCoreCoder[n]->mct_chan_mode = MCT_CHAN_MODE_REGULAR; } } #ifdef NONBE_FIX_862_UBSAN_SPAR_DEC_BR_SW_PLC st0 = ( st_ivas->nSCE > 0 ) ? st_ivas->hSCE[0]->hCoreCoder[0] : st_ivas->hCPE[0]->hCoreCoder[0]; st0->prev_bfi = prev_bfi; #endif } /* create dummy CPE element for DFT stereo-like upmix */ Loading lib_dec/ivas_spar_md_dec.c +160 −1 Original line number Diff line number Diff line Loading @@ -76,6 +76,9 @@ static void ivas_spar_dec_compute_ramp_down_post_matrix( ivas_spar_md_dec_state_ static void ivas_spar_md_fill_invalid_bands( ivas_spar_dec_matrices_t *pSpar_coeffs, ivas_spar_dec_matrices_t *pSpar_coeffs_prev, const int16_t *valid_bands, int16_t *base_band_age, const int16_t num_bands, const int16_t numch_out, const int16_t num_md_sub_frames ); #ifdef NONBE_FIX_862_UBSAN_SPAR_DEC_BR_SW_PLC static void ivas_spar_md_fill_invalid_bandcoeffs( ivas_band_coeffs_t *pBand_coeffs, ivas_band_coeffs_t *pBand_coeffs_prev, const int16_t *valid_bands, int16_t *base_band_age, int16_t *first_valid_frame, const int16_t num_bands ); #endif static ivas_error ivas_spar_set_dec_config( ivas_spar_md_dec_state_t *hMdDec, const int16_t nchan_transport, float *pFC ); static void ivas_parse_parameter_bitstream_dtx( ivas_spar_md_t *pSpar_md, Decoder_State *st, const int16_t bw, const int16_t num_bands, int16_t *num_dmx_per_band, int16_t *num_dec_per_band ); Loading Loading @@ -108,6 +111,12 @@ ivas_error ivas_spar_md_dec_matrix_open( { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for band_coeffs in SPAR MD" ); } #ifdef NONBE_FIX_862_UBSAN_SPAR_DEC_BR_SW_PLC if ( ( hMdDec->band_coeffs_prev = (ivas_band_coeffs_t *) malloc( IVAS_MAX_NUM_BANDS * sizeof( ivas_band_coeffs_t ) ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for band_coeffs in SPAR MD" ); } #endif if ( ( hMdDec->mixer_mat = (float ***) malloc( num_channels * sizeof( float ** ) ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for SPAR MD matrix" ); Loading Loading @@ -370,6 +379,13 @@ void ivas_spar_md_dec_matrix_close( free( hMdDecoder->spar_md.band_coeffs ); hMdDecoder->spar_md.band_coeffs = NULL; } #ifdef NONBE_FIX_862_UBSAN_SPAR_DEC_BR_SW_PLC if ( hMdDecoder->band_coeffs_prev != NULL ) { free( hMdDecoder->band_coeffs_prev ); hMdDecoder->band_coeffs_prev = NULL; } #endif if ( hMdDecoder->mixer_mat != NULL ) { Loading Loading @@ -548,11 +564,17 @@ ivas_error ivas_spar_md_dec_init( /* initialize PLC state */ set_s( hMdDec->valid_bands, 0, IVAS_MAX_NUM_BANDS ); set_s( hMdDec->base_band_age, 0, IVAS_MAX_NUM_BANDS ); #ifdef NONBE_FIX_862_UBSAN_SPAR_DEC_BR_SW_PLC set_s( hMdDec->base_band_coeffs_age, 0, IVAS_MAX_NUM_BANDS ); #endif hMdDec->spar_plc_num_lost_frames = 0; hMdDec->spar_plc_enable_fadeout_flag = 1; hMdDec->dtx_md_smoothing_cntr = 1; ivas_clear_band_coeffs( hMdDec->spar_md.band_coeffs, IVAS_MAX_NUM_BANDS ); #ifdef NONBE_FIX_862_UBSAN_SPAR_DEC_BR_SW_PLC ivas_clear_band_coeffs( hMdDec->band_coeffs_prev, IVAS_MAX_NUM_BANDS ); #endif ivas_clear_band_coeff_idx( hMdDec->spar_md.band_coeffs_idx, IVAS_MAX_NUM_BANDS ); ivas_clear_band_coeff_idx( hMdDec->spar_md_prev.band_coeffs_idx, IVAS_MAX_NUM_BANDS ); ivas_clear_band_coeff_idx( hMdDec->spar_md_prev.band_coeffs_idx_mapped, IVAS_MAX_NUM_BANDS ); Loading @@ -576,6 +598,9 @@ ivas_error ivas_spar_md_dec_init( set_zero( hMdDec->mixer_mat_prev2[i][j], IVAS_MAX_NUM_BANDS ); } } #ifdef NONBE_FIX_862_UBSAN_SPAR_DEC_BR_SW_PLC hMdDec->first_valid_frame = 1; #endif return IVAS_ERR_OK; } Loading Loading @@ -767,6 +792,13 @@ void ivas_spar_md_dec_process( #ifdef NONBE_FIX_862_UBSAN_SPAR_DEC_BR_SW_PLC assert( nB == hMdDec->spar_md.num_bands ); assert( bw == 1 ); ivas_spar_md_fill_invalid_bandcoeffs( hMdDec->spar_md.band_coeffs, hMdDec->band_coeffs_prev, &hMdDec->valid_bands[0], &hMdDec->base_band_coeffs_age[0], &hMdDec->first_valid_frame, nB ); #endif ivas_dec_mono_sba_handling( st_ivas ); Loading Loading @@ -1733,7 +1765,14 @@ static void ivas_spar_dec_parse_md_bs( do_diff[i] = ( ( ( i + 1 ) & 3 ) != strat - 4 ); do_repeat[i] = 0; } #ifdef NONBE_FIX_862_UBSAN_SPAR_DEC_BR_SW_PLC if ( hMdDec->spar_md_cfg.prev_quant_idx >= 0 ) { #endif ivas_map_prior_coeffs_quant( &hMdDec->spar_md_prev, &hMdDec->spar_md_cfg, qsi, *nB ); #ifdef NONBE_FIX_862_UBSAN_SPAR_DEC_BR_SW_PLC } #endif } #ifdef SPAR_HOA_DBG fprintf( stdout, "\n\n no_ec = %d, strat = %d\n", no_ec, strat ); Loading Loading @@ -2211,6 +2250,126 @@ static void ivas_spar_md_fill_invalid_bands( return; } #ifdef NONBE_FIX_862_UBSAN_SPAR_DEC_BR_SW_PLC static void ivas_spar_md_fill_invalid_bandcoeffs( ivas_band_coeffs_t *pBand_coeffs, ivas_band_coeffs_t *pBand_coeffs_prev, const int16_t *valid_bands, int16_t *base_band_age, int16_t *first_valid_frame, const int16_t num_bands ) { int16_t j, k, b, all_valid; int16_t valid_band_idx[IVAS_MAX_NUM_BANDS], idx = -1; int16_t last_valid_band_idx[IVAS_MAX_NUM_BANDS]; float w = 0; set_s( valid_band_idx, 0, IVAS_MAX_NUM_BANDS ); set_s( last_valid_band_idx, 0, IVAS_MAX_NUM_BANDS ); all_valid = 1; for ( b = 0; b < num_bands; b++ ) { if ( valid_bands[b] != 0 ) { base_band_age[b] = 0; /* reset band age */ idx++; valid_band_idx[idx] = b; } else { base_band_age[b] += 1; /* increment the age of invalid bands */ if ( base_band_age[b] > 3 ) { last_valid_band_idx[b] = idx; } all_valid = 0; } } assert( idx > 0 ); /* some bands should be valid */ if ( all_valid == 0 ) { for ( b = 0; b < num_bands; b++ ) { /* check against non zero in if and else if */ if ( ( base_band_age[b] > 3 ) || ( *first_valid_frame == 0 ) ) /* old invalid bands */ { int16_t tmp_id, id0, id1; tmp_id = last_valid_band_idx[b]; if ( tmp_id < 0 ) /* Extrapolation */ { id1 = valid_band_idx[0]; id0 = 0; w = 1; } else if ( tmp_id == idx ) /* Extrapolation */ { id1 = valid_band_idx[tmp_id]; id0 = valid_band_idx[tmp_id]; w = 0; } else /* Interpolation */ { id0 = valid_band_idx[tmp_id]; id1 = valid_band_idx[tmp_id + 1]; w = ( (float) ( b - id0 ) ) / ( id1 - id0 ); } for ( j = 0; j < IVAS_SPAR_MAX_CH - 1; j++ ) { pBand_coeffs[b].pred_re[j] = ( 1 - w ) * pBand_coeffs[id0].pred_re[j] + w * pBand_coeffs[id1].pred_re[j]; } for ( j = 0; j < IVAS_SPAR_MAX_CH - IVAS_SPAR_MAX_DMX_CHS; j++ ) { for ( k = 0; k < IVAS_SPAR_MAX_DMX_CHS - 1; k++ ) { pBand_coeffs[b].C_re[j][k] = ( 1 - w ) * pBand_coeffs[id0].C_re[j][k] + w * pBand_coeffs[id1].C_re[j][k]; } } for ( j = 0; j < IVAS_SPAR_MAX_CH - 1; j++ ) { pBand_coeffs[b].P_re[j] = ( 1 - w ) * pBand_coeffs[id0].P_re[j] + w * pBand_coeffs[id1].P_re[j]; } } else /* young invalid bands */ { if ( valid_bands[b] == 0 ) { for ( j = 0; j < IVAS_SPAR_MAX_CH - 1; j++ ) { pBand_coeffs[b].pred_re[j] = pBand_coeffs_prev[b].pred_re[j]; } for ( j = 0; j < IVAS_SPAR_MAX_CH - IVAS_SPAR_MAX_DMX_CHS; j++ ) { for ( k = 0; k < IVAS_SPAR_MAX_DMX_CHS - 1; k++ ) { pBand_coeffs[b].C_re[j][k] = pBand_coeffs_prev[b].C_re[j][k]; } } for ( j = 0; j < IVAS_SPAR_MAX_CH - 1; j++ ) { pBand_coeffs[b].P_re[j] = pBand_coeffs_prev[b].P_re[j]; } } } } } else { *first_valid_frame = 1; } return; } #endif /*-----------------------------------------------------------------------------------------* * Function ivas_spar_dec_compute_ramp_down_post_matrix() Loading lib_dec/ivas_stat_dec.h +5 −0 Original line number Diff line number Diff line Loading @@ -603,6 +603,11 @@ typedef struct ivas_spar_md_dec_state_t float smooth_buf[IVAS_MAX_NUM_BANDS][2 * SBA_DIRAC_NRG_SMOOTH_LONG + 1]; float smooth_fac[IVAS_MAX_NUM_BANDS]; float mixer_mat_prev2[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH][IVAS_MAX_NUM_BANDS]; #ifdef NONBE_FIX_862_UBSAN_SPAR_DEC_BR_SW_PLC int16_t first_valid_frame; ivas_band_coeffs_t *band_coeffs_prev; int16_t base_band_coeffs_age[IVAS_MAX_NUM_BANDS]; #endif } ivas_spar_md_dec_state_t; Loading Loading
lib_dec/ivas_corecoder_dec_reconfig.c +13 −0 Original line number Diff line number Diff line Loading @@ -64,6 +64,10 @@ ivas_error ivas_corecoder_dec_reconfig( MC_MODE last_mc_mode; DECODER_CONFIG_HANDLE hDecoderConfig; ivas_error error; #ifdef NONBE_FIX_862_UBSAN_SPAR_DEC_BR_SW_PLC int16_t prev_bfi; Decoder_State *st0; #endif /*-----------------------------------------------------------------* * Initialization Loading Loading @@ -141,6 +145,10 @@ ivas_error ivas_corecoder_dec_reconfig( } else { #ifdef NONBE_FIX_862_UBSAN_SPAR_DEC_BR_SW_PLC st0 = ( nSCE_old > 0 ) ? st_ivas->hSCE[0]->hCoreCoder[0] : st_ivas->hCPE[0]->hCoreCoder[0]; prev_bfi = st0->prev_bfi; #endif nSCE_existing = min( nSCE_old, st_ivas->nSCE ); nCPE_existing = min( nCPE_old, st_ivas->nCPE ); Loading Loading @@ -293,6 +301,11 @@ ivas_error ivas_corecoder_dec_reconfig( st_ivas->hCPE[0]->hCoreCoder[n]->mct_chan_mode = MCT_CHAN_MODE_REGULAR; } } #ifdef NONBE_FIX_862_UBSAN_SPAR_DEC_BR_SW_PLC st0 = ( st_ivas->nSCE > 0 ) ? st_ivas->hSCE[0]->hCoreCoder[0] : st_ivas->hCPE[0]->hCoreCoder[0]; st0->prev_bfi = prev_bfi; #endif } /* create dummy CPE element for DFT stereo-like upmix */ Loading
lib_dec/ivas_spar_md_dec.c +160 −1 Original line number Diff line number Diff line Loading @@ -76,6 +76,9 @@ static void ivas_spar_dec_compute_ramp_down_post_matrix( ivas_spar_md_dec_state_ static void ivas_spar_md_fill_invalid_bands( ivas_spar_dec_matrices_t *pSpar_coeffs, ivas_spar_dec_matrices_t *pSpar_coeffs_prev, const int16_t *valid_bands, int16_t *base_band_age, const int16_t num_bands, const int16_t numch_out, const int16_t num_md_sub_frames ); #ifdef NONBE_FIX_862_UBSAN_SPAR_DEC_BR_SW_PLC static void ivas_spar_md_fill_invalid_bandcoeffs( ivas_band_coeffs_t *pBand_coeffs, ivas_band_coeffs_t *pBand_coeffs_prev, const int16_t *valid_bands, int16_t *base_band_age, int16_t *first_valid_frame, const int16_t num_bands ); #endif static ivas_error ivas_spar_set_dec_config( ivas_spar_md_dec_state_t *hMdDec, const int16_t nchan_transport, float *pFC ); static void ivas_parse_parameter_bitstream_dtx( ivas_spar_md_t *pSpar_md, Decoder_State *st, const int16_t bw, const int16_t num_bands, int16_t *num_dmx_per_band, int16_t *num_dec_per_band ); Loading Loading @@ -108,6 +111,12 @@ ivas_error ivas_spar_md_dec_matrix_open( { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for band_coeffs in SPAR MD" ); } #ifdef NONBE_FIX_862_UBSAN_SPAR_DEC_BR_SW_PLC if ( ( hMdDec->band_coeffs_prev = (ivas_band_coeffs_t *) malloc( IVAS_MAX_NUM_BANDS * sizeof( ivas_band_coeffs_t ) ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for band_coeffs in SPAR MD" ); } #endif if ( ( hMdDec->mixer_mat = (float ***) malloc( num_channels * sizeof( float ** ) ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for SPAR MD matrix" ); Loading Loading @@ -370,6 +379,13 @@ void ivas_spar_md_dec_matrix_close( free( hMdDecoder->spar_md.band_coeffs ); hMdDecoder->spar_md.band_coeffs = NULL; } #ifdef NONBE_FIX_862_UBSAN_SPAR_DEC_BR_SW_PLC if ( hMdDecoder->band_coeffs_prev != NULL ) { free( hMdDecoder->band_coeffs_prev ); hMdDecoder->band_coeffs_prev = NULL; } #endif if ( hMdDecoder->mixer_mat != NULL ) { Loading Loading @@ -548,11 +564,17 @@ ivas_error ivas_spar_md_dec_init( /* initialize PLC state */ set_s( hMdDec->valid_bands, 0, IVAS_MAX_NUM_BANDS ); set_s( hMdDec->base_band_age, 0, IVAS_MAX_NUM_BANDS ); #ifdef NONBE_FIX_862_UBSAN_SPAR_DEC_BR_SW_PLC set_s( hMdDec->base_band_coeffs_age, 0, IVAS_MAX_NUM_BANDS ); #endif hMdDec->spar_plc_num_lost_frames = 0; hMdDec->spar_plc_enable_fadeout_flag = 1; hMdDec->dtx_md_smoothing_cntr = 1; ivas_clear_band_coeffs( hMdDec->spar_md.band_coeffs, IVAS_MAX_NUM_BANDS ); #ifdef NONBE_FIX_862_UBSAN_SPAR_DEC_BR_SW_PLC ivas_clear_band_coeffs( hMdDec->band_coeffs_prev, IVAS_MAX_NUM_BANDS ); #endif ivas_clear_band_coeff_idx( hMdDec->spar_md.band_coeffs_idx, IVAS_MAX_NUM_BANDS ); ivas_clear_band_coeff_idx( hMdDec->spar_md_prev.band_coeffs_idx, IVAS_MAX_NUM_BANDS ); ivas_clear_band_coeff_idx( hMdDec->spar_md_prev.band_coeffs_idx_mapped, IVAS_MAX_NUM_BANDS ); Loading @@ -576,6 +598,9 @@ ivas_error ivas_spar_md_dec_init( set_zero( hMdDec->mixer_mat_prev2[i][j], IVAS_MAX_NUM_BANDS ); } } #ifdef NONBE_FIX_862_UBSAN_SPAR_DEC_BR_SW_PLC hMdDec->first_valid_frame = 1; #endif return IVAS_ERR_OK; } Loading Loading @@ -767,6 +792,13 @@ void ivas_spar_md_dec_process( #ifdef NONBE_FIX_862_UBSAN_SPAR_DEC_BR_SW_PLC assert( nB == hMdDec->spar_md.num_bands ); assert( bw == 1 ); ivas_spar_md_fill_invalid_bandcoeffs( hMdDec->spar_md.band_coeffs, hMdDec->band_coeffs_prev, &hMdDec->valid_bands[0], &hMdDec->base_band_coeffs_age[0], &hMdDec->first_valid_frame, nB ); #endif ivas_dec_mono_sba_handling( st_ivas ); Loading Loading @@ -1733,7 +1765,14 @@ static void ivas_spar_dec_parse_md_bs( do_diff[i] = ( ( ( i + 1 ) & 3 ) != strat - 4 ); do_repeat[i] = 0; } #ifdef NONBE_FIX_862_UBSAN_SPAR_DEC_BR_SW_PLC if ( hMdDec->spar_md_cfg.prev_quant_idx >= 0 ) { #endif ivas_map_prior_coeffs_quant( &hMdDec->spar_md_prev, &hMdDec->spar_md_cfg, qsi, *nB ); #ifdef NONBE_FIX_862_UBSAN_SPAR_DEC_BR_SW_PLC } #endif } #ifdef SPAR_HOA_DBG fprintf( stdout, "\n\n no_ec = %d, strat = %d\n", no_ec, strat ); Loading Loading @@ -2211,6 +2250,126 @@ static void ivas_spar_md_fill_invalid_bands( return; } #ifdef NONBE_FIX_862_UBSAN_SPAR_DEC_BR_SW_PLC static void ivas_spar_md_fill_invalid_bandcoeffs( ivas_band_coeffs_t *pBand_coeffs, ivas_band_coeffs_t *pBand_coeffs_prev, const int16_t *valid_bands, int16_t *base_band_age, int16_t *first_valid_frame, const int16_t num_bands ) { int16_t j, k, b, all_valid; int16_t valid_band_idx[IVAS_MAX_NUM_BANDS], idx = -1; int16_t last_valid_band_idx[IVAS_MAX_NUM_BANDS]; float w = 0; set_s( valid_band_idx, 0, IVAS_MAX_NUM_BANDS ); set_s( last_valid_band_idx, 0, IVAS_MAX_NUM_BANDS ); all_valid = 1; for ( b = 0; b < num_bands; b++ ) { if ( valid_bands[b] != 0 ) { base_band_age[b] = 0; /* reset band age */ idx++; valid_band_idx[idx] = b; } else { base_band_age[b] += 1; /* increment the age of invalid bands */ if ( base_band_age[b] > 3 ) { last_valid_band_idx[b] = idx; } all_valid = 0; } } assert( idx > 0 ); /* some bands should be valid */ if ( all_valid == 0 ) { for ( b = 0; b < num_bands; b++ ) { /* check against non zero in if and else if */ if ( ( base_band_age[b] > 3 ) || ( *first_valid_frame == 0 ) ) /* old invalid bands */ { int16_t tmp_id, id0, id1; tmp_id = last_valid_band_idx[b]; if ( tmp_id < 0 ) /* Extrapolation */ { id1 = valid_band_idx[0]; id0 = 0; w = 1; } else if ( tmp_id == idx ) /* Extrapolation */ { id1 = valid_band_idx[tmp_id]; id0 = valid_band_idx[tmp_id]; w = 0; } else /* Interpolation */ { id0 = valid_band_idx[tmp_id]; id1 = valid_band_idx[tmp_id + 1]; w = ( (float) ( b - id0 ) ) / ( id1 - id0 ); } for ( j = 0; j < IVAS_SPAR_MAX_CH - 1; j++ ) { pBand_coeffs[b].pred_re[j] = ( 1 - w ) * pBand_coeffs[id0].pred_re[j] + w * pBand_coeffs[id1].pred_re[j]; } for ( j = 0; j < IVAS_SPAR_MAX_CH - IVAS_SPAR_MAX_DMX_CHS; j++ ) { for ( k = 0; k < IVAS_SPAR_MAX_DMX_CHS - 1; k++ ) { pBand_coeffs[b].C_re[j][k] = ( 1 - w ) * pBand_coeffs[id0].C_re[j][k] + w * pBand_coeffs[id1].C_re[j][k]; } } for ( j = 0; j < IVAS_SPAR_MAX_CH - 1; j++ ) { pBand_coeffs[b].P_re[j] = ( 1 - w ) * pBand_coeffs[id0].P_re[j] + w * pBand_coeffs[id1].P_re[j]; } } else /* young invalid bands */ { if ( valid_bands[b] == 0 ) { for ( j = 0; j < IVAS_SPAR_MAX_CH - 1; j++ ) { pBand_coeffs[b].pred_re[j] = pBand_coeffs_prev[b].pred_re[j]; } for ( j = 0; j < IVAS_SPAR_MAX_CH - IVAS_SPAR_MAX_DMX_CHS; j++ ) { for ( k = 0; k < IVAS_SPAR_MAX_DMX_CHS - 1; k++ ) { pBand_coeffs[b].C_re[j][k] = pBand_coeffs_prev[b].C_re[j][k]; } } for ( j = 0; j < IVAS_SPAR_MAX_CH - 1; j++ ) { pBand_coeffs[b].P_re[j] = pBand_coeffs_prev[b].P_re[j]; } } } } } else { *first_valid_frame = 1; } return; } #endif /*-----------------------------------------------------------------------------------------* * Function ivas_spar_dec_compute_ramp_down_post_matrix() Loading
lib_dec/ivas_stat_dec.h +5 −0 Original line number Diff line number Diff line Loading @@ -603,6 +603,11 @@ typedef struct ivas_spar_md_dec_state_t float smooth_buf[IVAS_MAX_NUM_BANDS][2 * SBA_DIRAC_NRG_SMOOTH_LONG + 1]; float smooth_fac[IVAS_MAX_NUM_BANDS]; float mixer_mat_prev2[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH][IVAS_MAX_NUM_BANDS]; #ifdef NONBE_FIX_862_UBSAN_SPAR_DEC_BR_SW_PLC int16_t first_valid_frame; ivas_band_coeffs_t *band_coeffs_prev; int16_t base_band_coeffs_age[IVAS_MAX_NUM_BANDS]; #endif } ivas_spar_md_dec_state_t; Loading