Loading lib_com/ivas_cov_smooth.c +10 −10 Original line number Diff line number Diff line Loading @@ -180,7 +180,7 @@ static void ivas_compute_smooth_cov( const int16_t end_band #ifdef SBA_SPAR_HARM , const int16_t num_ch, const int16_t nchan, const int16_t transient_det #endif ) Loading @@ -188,7 +188,7 @@ static void ivas_compute_smooth_cov( int16_t i, j, k; int16_t prev_idx = hCovState->prior_bank_idx; #ifndef SBA_SPAR_HARM int16_t num_ch = pIn_buf->num_ch; int16_t nchan = pIn_buf->nchan; #endif float factor = 0; Loading @@ -200,7 +200,7 @@ static void ivas_compute_smooth_cov( if ( prev_idx == -1 || pIn_buf->reset_cov == 1 ) #endif { for ( i = 0; i < num_ch; i++ ) for ( i = 0; i < nchan; i++ ) { for ( k = start_band; k < end_band; k++ ) { Loading @@ -210,9 +210,9 @@ static void ivas_compute_smooth_cov( } else if ( prev_idx == 0 ) { for ( i = 0; i < num_ch; i++ ) for ( i = 0; i < nchan; i++ ) { for ( j = 0; j < num_ch; j++ ) for ( j = 0; j < nchan; j++ ) { if ( i == j ) { Loading Loading @@ -253,26 +253,26 @@ void ivas_cov_smooth_process( const int16_t end_band #ifdef SBA_SPAR_HARM , const int16_t num_ch, const int16_t nchan, const int16_t transient_det #endif ) { int16_t i, j; #ifndef SBA_SPAR_HARM int16_t num_ch = pIn_buf->num_ch; int16_t nchan = pIn_buf->nchan; #endif int16_t num_bands = end_band - start_band; #ifdef SBA_SPAR_HARM ivas_compute_smooth_cov( hCovState, pFb, cov_real, hCovState->pPrior_cov_real, 1e-20f, start_band, end_band, num_ch, transient_det ); ivas_compute_smooth_cov( hCovState, pFb, cov_real, hCovState->pPrior_cov_real, 1e-20f, start_band, end_band, nchan, transient_det ); #else ivas_compute_smooth_cov( hCovState, pIn_buf, pFb, pIn_buf->cov_real, hCovState->pPrior_cov_real, 1e-20f, start_band, end_band ); #endif for ( i = 0; i < num_ch; i++ ) for ( i = 0; i < nchan; i++ ) { for ( j = 0; j < num_ch; j++ ) for ( j = 0; j < nchan; j++ ) { #ifdef SBA_SPAR_HARM mvr2r( &cov_real[i][j][start_band], &hCovState->pPrior_cov_real[i][j][start_band], num_bands ); Loading lib_com/ivas_fb_mixer.c +42 −42 Original line number Diff line number Diff line Loading @@ -102,8 +102,8 @@ ivas_error ivas_fb_set_cfg( IVAS_FB_CFG **pFb_cfg_out, /* o : FB config. handle */ const int16_t ivas_format, /* i : IVAS format */ const SBA_MODE sba_mode, /* i : SBA mode */ const int16_t num_in_chans, /* i : number of FB input channels */ const int16_t num_out_chans, /* i : number of FB output channels*/ const int16_t nchan_inp, /* i : number of FB input channels */ const int16_t nchan_out, /* i : number of FB output channels*/ const int16_t active_w_mixing, /* i : active_w_mixing flag */ const int32_t sampling_rate /* i : sampling rate */ ) Loading @@ -115,8 +115,8 @@ ivas_error ivas_fb_set_cfg( return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for FB mixer config" ); } pFb_cfg->num_in_chans = num_in_chans; pFb_cfg->num_out_chans = num_out_chans; pFb_cfg->nchan_inp = nchan_inp; pFb_cfg->nchan_out = nchan_out; pFb_cfg->pcm_offset = 0; /* note: in SPAR decoder, this parameter is overwritten later */ pFb_cfg->active_w_mixing = active_w_mixing; Loading Loading @@ -179,7 +179,7 @@ ivas_error ivas_FB_mixer_open( { IVAS_FB_MIXER_HANDLE hFbMixer; int16_t i, j, frame_len, num_bands; int16_t num_chs_alloc; int16_t nchan_alloc; ivas_error error; error = IVAS_ERR_OK; Loading @@ -198,20 +198,20 @@ ivas_error ivas_FB_mixer_open( if ( fb_cfg->active_w_mixing == -1 ) { num_chs_alloc = 0; nchan_alloc = 0; } else if ( fb_cfg->active_w_mixing ) { num_chs_alloc = fb_cfg->num_in_chans; nchan_alloc = fb_cfg->nchan_inp; } else { num_chs_alloc = fb_cfg->num_out_chans; nchan_alloc = fb_cfg->nchan_out; } for ( i = 0; i < num_chs_alloc; i++ ) for ( i = 0; i < nchan_alloc; i++ ) { if ( fb_cfg->num_out_chans == 0 ) if ( fb_cfg->nchan_out == 0 ) { hFbMixer->ppFilterbank_inFR_re[i] = NULL; hFbMixer->ppFilterbank_inFR_im[i] = NULL; Loading @@ -234,13 +234,13 @@ ivas_error ivas_FB_mixer_open( if ( fb_cfg->active_w_mixing == -1 ) { num_chs_alloc = 0; nchan_alloc = 0; } else { num_chs_alloc = fb_cfg->num_in_chans; nchan_alloc = fb_cfg->nchan_inp; } for ( i = 0; i < num_chs_alloc; i++ ) for ( i = 0; i < nchan_alloc; i++ ) { if ( ( hFbMixer->ppFilterbank_prior_input[i] = (float *) count_malloc( sizeof( float ) * fb_cfg->prior_input_length ) ) == NULL ) { Loading @@ -249,17 +249,17 @@ ivas_error ivas_FB_mixer_open( set_f( hFbMixer->ppFilterbank_prior_input[i], 0, fb_cfg->prior_input_length ); } if ( ( fb_cfg->active_w_mixing != -1 ) && ( fb_cfg->num_out_chans > 0 ) ) if ( ( fb_cfg->active_w_mixing != -1 ) && ( fb_cfg->nchan_out > 0 ) ) { float *pTemp_mem; if ( ( pTemp_mem = (float *) count_malloc( sizeof( float ) * fb_cfg->num_out_chans * fb_cfg->num_in_chans * IVAS_MAX_NUM_BANDS ) ) == NULL ) if ( ( pTemp_mem = (float *) count_malloc( sizeof( float ) * fb_cfg->nchan_out * fb_cfg->nchan_inp * IVAS_MAX_NUM_BANDS ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for FB mixer" ); } for ( i = 0; i < fb_cfg->num_out_chans; i++ ) for ( i = 0; i < fb_cfg->nchan_out; i++ ) { for ( j = 0; j < fb_cfg->num_in_chans; j++ ) for ( j = 0; j < fb_cfg->nchan_inp; j++ ) { hFbMixer->prior_mixer[i][j] = pTemp_mem; pTemp_mem += IVAS_MAX_NUM_BANDS; Loading @@ -268,7 +268,7 @@ ivas_error ivas_FB_mixer_open( } } if ( fb_cfg->num_out_chans > 0 ) if ( fb_cfg->nchan_out > 0 ) { const int16_t *pActive_bins_per_band, *pActive_bins_per_band_abs, *pStart_offset, *pStart_offset_abs; Loading Loading @@ -372,18 +372,18 @@ void ivas_FB_mixer_close( } else if ( fb_cfg->active_w_mixing ) { num_chs_alloc = fb_cfg->num_in_chans; num_chs_alloc = fb_cfg->nchan_inp; } else { num_chs_alloc = fb_cfg->num_out_chans; num_chs_alloc = fb_cfg->nchan_out; } if ( hFbMixer != NULL ) { for ( i = 0; i < num_chs_alloc; i++ ) { if ( fb_cfg->num_out_chans > 0 ) if ( fb_cfg->nchan_out > 0 ) { j = fb_cfg->remix_order[i]; Loading @@ -401,7 +401,7 @@ void ivas_FB_mixer_close( } else { num_chs_alloc = fb_cfg->num_in_chans; num_chs_alloc = fb_cfg->nchan_inp; } for ( i = 0; i < num_chs_alloc; i++ ) { Loading @@ -409,13 +409,13 @@ void ivas_FB_mixer_close( hFbMixer->ppFilterbank_prior_input[i] = NULL; } if ( ( fb_cfg->active_w_mixing != -1 ) && ( fb_cfg->num_out_chans > 0 ) ) if ( ( fb_cfg->active_w_mixing != -1 ) && ( fb_cfg->nchan_out > 0 ) ) { count_free( hFbMixer->prior_mixer[0][0] ); hFbMixer->prior_mixer[0][0] = NULL; } if ( fb_cfg->num_out_chans > 0 ) if ( fb_cfg->nchan_out > 0 ) { num_bands = hFbMixer->pFb->filterbank_num_bands; Loading Loading @@ -483,14 +483,14 @@ void ivas_fb_mixer_pcm_ingest( if ( fb_cfg->active_w_mixing ) { num_chs_ingest = fb_cfg->num_in_chans; num_chs_ingest = fb_cfg->nchan_inp; } else { num_chs_ingest = fb_cfg->num_out_chans; num_chs_ingest = fb_cfg->nchan_out; } for ( i = 0; i < fb_cfg->num_in_chans; i++ ) for ( i = 0; i < fb_cfg->nchan_inp; i++ ) { mvr2r( &hFbMixer->ppFilterbank_prior_input[i][fb_cfg->prior_input_length - frame_len], ppOut_pcm[i], frame_len ); mvr2r( pcm_in[i], &ppOut_pcm[i][frame_len], frame_len ); Loading Loading @@ -519,7 +519,7 @@ void ivas_fb_mixer_update_prior_input( { int16_t i; for ( i = 0; i < hFbMixer->fb_cfg->num_in_chans; i++ ) for ( i = 0; i < hFbMixer->fb_cfg->nchan_inp; i++ ) { mvr2r( &hFbMixer->ppFilterbank_prior_input[i][length], hFbMixer->ppFilterbank_prior_input[i], hFbMixer->fb_cfg->prior_input_length - length ); mvr2r( pcm_in[i], &hFbMixer->ppFilterbank_prior_input[i][hFbMixer->fb_cfg->prior_input_length - length], length ); Loading Loading @@ -556,7 +556,7 @@ void ivas_fb_mixer_get_windowed_fr( rev_offset = (int16_t) ( 2 * mdft_len - hFbMixer->ana_window_offset ); set_zero( fr_in_block, offset ); for ( ch_idx = 0; ch_idx < hFbMixer->fb_cfg->num_in_chans; ch_idx++ ) for ( ch_idx = 0; ch_idx < hFbMixer->fb_cfg->nchan_inp; ch_idx++ ) { mvr2r( &hFbMixer->ppFilterbank_prior_input[ch_idx][offset + hFbMixer->fb_cfg->windowed_fr_offset], &fr_in_block[offset], n_old_samples - offset ); mvr2r( pcm_in[ch_idx], &fr_in_block[n_old_samples], n_new_samples ); Loading Loading @@ -657,7 +657,7 @@ void ivas_fb_mixer_process( pMdft_out[0] = Mdft_out_0; pMdft_out[1] = Mdft_out_1; for ( ch = ( hFbMixer->fb_cfg->active_w_mixing == 0 ); ch < hFbMixer->fb_cfg->num_out_chans; ch++ ) for ( ch = ( hFbMixer->fb_cfg->active_w_mixing == 0 ); ch < hFbMixer->fb_cfg->nchan_out; ch++ ) { /* Run a loop of 2 to calculate current frame's filterbank output and prev frame's output */ for ( hist = 0; hist < 2; hist++ ) Loading @@ -665,7 +665,7 @@ void ivas_fb_mixer_process( set_zero( pOut_fr_re, frame_len ); set_zero( pOut_fr_im, frame_len ); for ( j = 0; j < hFbMixer->fb_cfg->num_in_chans; j++ ) for ( j = 0; j < hFbMixer->fb_cfg->nchan_inp; j++ ) { if ( in_out_mixer_map[ch][j] != 0 ) { Loading Loading @@ -739,9 +739,9 @@ void ivas_fb_mixer_get_in_out_mapping( { if ( fb_cfg->active_w_mixing ) { for ( i = 0; i < fb_cfg->num_out_chans; i++ ) for ( i = 0; i < fb_cfg->nchan_out; i++ ) { for ( j = 0; j < fb_cfg->num_in_chans; j++ ) for ( j = 0; j < fb_cfg->nchan_inp; j++ ) { in_out_mixer_map[i][j] = 1; } Loading @@ -750,7 +750,7 @@ void ivas_fb_mixer_get_in_out_mapping( else { in_out_mixer_map[0][0] = 1; /* W depends on only W input*/ for ( i = 1; i < fb_cfg->num_out_chans; i++ ) for ( i = 1; i < fb_cfg->nchan_out; i++ ) { in_out_mixer_map[i][0] = 1; in_out_mixer_map[i][order[i]] = 1; Loading @@ -768,7 +768,7 @@ void ivas_fb_mixer_get_in_out_mapping( if ( nchan_transport == 1 ) { /* no cross predicitons in 1 ch dmx*/ for ( i = nchan_transport; i < fb_cfg->num_out_chans; i++ ) for ( i = nchan_transport; i < fb_cfg->nchan_out; i++ ) { in_out_mixer_map[order[i]][0] = 1; in_out_mixer_map[order[i]][i] = 1; Loading @@ -777,7 +777,7 @@ void ivas_fb_mixer_get_in_out_mapping( else { /* handle the cross predictions and decorrelation*/ for ( i = nchan_transport; i < fb_cfg->num_out_chans; i++ ) for ( i = nchan_transport; i < fb_cfg->nchan_out; i++ ) { for ( j = 0; j < nchan_transport; j++ ) { Loading Loading @@ -1038,11 +1038,11 @@ static ivas_error ivas_filterbank_setup( error = IVAS_ERR_OK; set_s( hFbMixer->first_frame, 1, pCfg->num_out_chans ); set_s( hFbMixer->first_frame + pCfg->num_out_chans, 0, IVAS_SPAR_MAX_CH - pCfg->num_out_chans ); set_s( hFbMixer->first_frame, 1, pCfg->nchan_out ); set_s( hFbMixer->first_frame + pCfg->nchan_out, 0, IVAS_SPAR_MAX_CH - pCfg->nchan_out ); if ( pCfg->num_out_chans > 0 ) if ( pCfg->nchan_out > 0 ) { hFbMixer->pFb->filterbank_num_bands = ivas_get_num_bands( sampling_rate ); Loading Loading @@ -1078,7 +1078,7 @@ static ivas_error ivas_filterbank_setup( return error; } if ( pCfg->num_out_chans > 0 ) if ( pCfg->nchan_out > 0 ) { ivas_filterbank_t *pFb = hFbMixer->pFb; int16_t offset = 0; Loading lib_com/ivas_prot.h +19 −19 Original line number Diff line number Diff line Loading @@ -654,7 +654,7 @@ MC_LS_SETUP ivas_mc_map_output_config_to_mc_ls_setup( /*! r: limiter struct handle */ IVAS_LIMITER_HANDLE ivas_limiter_open( const int16_t num_channels, /* i : number of I/O channels */ const int16_t nchan, /* i : number of I/O channels */ const int32_t sampling_rate /* i : sampling rate for processing */ ); Loading @@ -666,7 +666,7 @@ void ivas_limiter_dec ( IVAS_LIMITER_HANDLE hLimiter, /* i/o: limiter struct handle */ float output[MAX_OUTPUT_CHANNELS][L_FRAME48k], /* i/o: input/output buffer */ const int16_t num_channels, /* i : number of channels to be processed */ const int16_t nchan, /* i : number of channels to be processed */ const int16_t output_frame, /* i : number of samples per channel in the buffer */ const int16_t BER_detect /* i : BER detect flag */ ); Loading Loading @@ -3103,7 +3103,7 @@ void ivas_sba_getTCs( ivas_error ivas_sba_linear_renderer( float output[][L_FRAME48k], /* i/o: synthesized core-coder transport channels/DirAC output */ const int16_t output_frame, /* i : output frame length per channel */ const int16_t nchan_in, /* i : number of input ambisonics channels */ const int16_t nchan_inp, /* i : number of input ambisonics channels */ const AUDIO_CONFIG output_config, /* i : output audio configuration */ const IVAS_OUTPUT_SETUP output_setup, /* i : output format setup */ const float hoa_dec_mtx[] /* i : HOA decoding mtx */ Loading Loading @@ -3299,7 +3299,7 @@ void computeDiffuseness( ); void ivas_dirac_dec_onset_detection_open( const int16_t num_channels, const int16_t nchan, const int16_t num_freq_bands, const int16_t max_band_decorr, DIRAC_ONSET_DETECTION_PARAMS *ph_dirac_onset_detection_params, Loading Loading @@ -3328,7 +3328,7 @@ void ivas_dirac_dec_decorr_open( void ivas_dirac_dec_decorr_process( const int16_t num_freq_bands, int16_t num_channels, int16_t nchan, const int16_t num_protos_diff, const DIRAC_SYNTHESIS_CONFIG synthesisConf, const int16_t nchan_transport, /* i : number of transport channels */ Loading Loading @@ -3623,14 +3623,14 @@ void ivas_dirac_dec_output_synthesis_cov_open( const int16_t interp_length, /* i : length for interpolating the mixing matrices in time slots */ const int16_t num_param_bands, /* i : number of parameter bands */ const int16_t num_param_bands_residual, /* i : number of parameter bands with a residual mixing matrix (i.e. decorrelation */ const int16_t nchan_in, /* i : number of input (transport) channels */ const int16_t nchan_inp, /* i : number of input (transport) channels */ const int16_t nchan_out, /* i : number of output channels */ const float *proto_matrix /* i : the prototype (upmix) matrix (only used if mode == 1) */ ); void ivas_dirac_dec_output_synthesis_cov_init( DIRAC_OUTPUT_SYNTHESIS_COV_STATE *h_dirac_output_synthesis_state, /* i/o: pointer to the state of the covariance synthesis */ const int16_t nchan_in, /* i : number of input (tranport) channels */ const int16_t nchan_inp, /* i : number of input (tranport) channels */ const int16_t nchan_out, /* i : number of output channels */ const int16_t n_param_bands, /* i : number of total parameter bands */ const int16_t n_param_bands_res /* i : number of parameter bands with a residual mixing matrix (i.e. decorrelation */ Loading @@ -3647,7 +3647,7 @@ void ivas_dirac_dec_output_synthesis_cov_param_mc_collect_slot( float cx[PARAM_MC_MAX_PARAMETER_BANDS][PARAM_MC_MAX_TRANSPORT_CHANS * PARAM_MC_MAX_TRANSPORT_CHANS], /* o : accumulated input covariance (real part) */ float cx_imag[PARAM_MC_MAX_PARAMETER_BANDS][PARAM_MC_MAX_TRANSPORT_CHANS * PARAM_MC_MAX_TRANSPORT_CHANS], /* o : accumulated input covariance (imaginary part) */ PARAM_MC_DEC_HANDLE hParamMC, /* i : handle to Parametric MC state */ const int16_t nchan_in, /* i : number of input channels */ const int16_t nchan_inp, /* i : number of input channels */ const int16_t idx_slot /* i : index of the slot to be added to the input covariance */ ); Loading Loading @@ -3930,7 +3930,7 @@ void ivas_compute_spar_params( const int16_t start_band, const int16_t end_band, const int16_t dtx_vad, const int16_t num_ch, const int16_t nchan, const int16_t bands_bw, const int16_t active_w, ivas_spar_md_com_cfg *hSparCfg, Loading @@ -3955,7 +3955,7 @@ void ivas_calc_c_p_coeffs( float *pppCov_mat_re[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH], const int16_t i_ts, float ***mixer_mat, const int16_t num_ch, const int16_t nchan, const int16_t num_dmx, const int16_t band_idx, const int16_t dtx_vad, Loading @@ -3973,7 +3973,7 @@ void ivas_get_spar_md_from_dirac( ivas_spar_md_com_cfg *hSpar_md_cfg, const int16_t start_band, const int16_t end_band, const int16_t order, const int16_t sba_order, const int16_t dtx_vad, float Wscale_d[IVAS_MAX_NUM_BANDS] ); Loading @@ -3981,7 +3981,7 @@ void ivas_get_spar_md_from_dirac( ivas_error ivas_spar_md_dec_open( ivas_spar_md_dec_state_t **hMdDec_out, /* i/o: SPAR MD decoder handle */ const DECODER_CONFIG_HANDLE hDecoderConfig, /* i : configuration structure */ const int16_t num_channels /* i : number of internal channels */ const int16_t nchan /* i : number of internal channels */ ); void ivas_spar_md_dec_close( Loading @@ -3992,8 +3992,8 @@ void ivas_spar_get_parameters( SPAR_DEC_HANDLE hSpar, /* i/o: SPAR decoder handle */ const DECODER_CONFIG_HANDLE hDecoderConfig, /* i : configuration structure */ const int16_t ts, /* i : time slot index */ const int16_t num_ch_out, /* i : number of channels out */ const int16_t num_ch_in, /* i : number of channels in */ const int16_t nchan_out, /* i : number of channels out */ const int16_t nchan_inp, /* i : number of channels in */ const int16_t num_spar_bands, /* i : number of SPAR bands */ float mixer_mat[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH][IVAS_MAX_NUM_BANDS] /* o : mixing matrix */ ); Loading @@ -4001,7 +4001,7 @@ void ivas_spar_get_parameters( ivas_error ivas_spar_md_dec_init( ivas_spar_md_dec_state_t *hMdDec, /* i/o: SPAR MD decoder handle */ const DECODER_CONFIG_HANDLE hDecoderConfig, /* i : configuration structure */ const int16_t num_channels /* i : number of internal channels */ const int16_t nchan /* i : number of internal channels */ ); void ivas_spar_md_dec_process( Loading Loading @@ -4098,7 +4098,7 @@ void ivas_cov_smooth_process( const int16_t end_band #ifdef SBA_SPAR_HARM , const int16_t num_ch, const int16_t nchan, const int16_t transient_det #endif ); Loading Loading @@ -4590,7 +4590,7 @@ void rotateFrame_shd_cldfb( float Cldfb_RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o: unrotated HOA3 signal buffer in cldfb domain real part */ float Cldfb_ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o: unrotated HOA3 signal buffer in cldfb domain imag part */ float Rmat[3][3], /* i : real-space rotation matrix */ const int16_t nInChannels, /* i : number of channels */ const int16_t nchan_inp, /* i : number of channels */ const int16_t shd_rot_max_order /* i : split-order rotation method */ ); Loading Loading @@ -5154,8 +5154,8 @@ ivas_error ivas_fb_set_cfg( IVAS_FB_CFG **pFb_cfg_out, /* o : FB config. handle */ const int16_t ivas_format, /* i : IVAS format */ const SBA_MODE sba_mode, /* i : SBA mode */ const int16_t num_in_chans, /* i : number of FB input channels */ const int16_t num_out_chans, /* i : number of FB output channels */ const int16_t nchan_inp, /* i : number of FB input channels */ const int16_t nchan_out, /* i : number of FB output channels */ const int16_t active_w_mixing, /* i : active_w_mixing flag */ const int32_t sampling_Fs /* i : sampling rate */ ); Loading lib_com/ivas_spar_com.c +102 −102 File changed.Preview size limit exceeded, changes collapsed. Show changes lib_com/ivas_stat_com.h +3 −3 Original line number Diff line number Diff line Loading @@ -355,7 +355,7 @@ typedef struct ivas_cov_smooth_cfg_t typedef struct ivas_cov_smooth_in_buf_t { float *cov_real[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH]; int16_t num_ch; int16_t nchan; int16_t reset_cov; } ivas_cov_smooth_in_buf_t; Loading Loading @@ -670,8 +670,8 @@ typedef struct ivas_trans_det_state_t typedef struct ivas_fb_mixer_cfg_t { int16_t fb_latency; int16_t num_in_chans; int16_t num_out_chans; int16_t nchan_inp; int16_t nchan_out; int16_t pcm_offset; int16_t fade_len; /* this sets the stride length; no delay is introduced */ int16_t prior_input_length; Loading Loading
lib_com/ivas_cov_smooth.c +10 −10 Original line number Diff line number Diff line Loading @@ -180,7 +180,7 @@ static void ivas_compute_smooth_cov( const int16_t end_band #ifdef SBA_SPAR_HARM , const int16_t num_ch, const int16_t nchan, const int16_t transient_det #endif ) Loading @@ -188,7 +188,7 @@ static void ivas_compute_smooth_cov( int16_t i, j, k; int16_t prev_idx = hCovState->prior_bank_idx; #ifndef SBA_SPAR_HARM int16_t num_ch = pIn_buf->num_ch; int16_t nchan = pIn_buf->nchan; #endif float factor = 0; Loading @@ -200,7 +200,7 @@ static void ivas_compute_smooth_cov( if ( prev_idx == -1 || pIn_buf->reset_cov == 1 ) #endif { for ( i = 0; i < num_ch; i++ ) for ( i = 0; i < nchan; i++ ) { for ( k = start_band; k < end_band; k++ ) { Loading @@ -210,9 +210,9 @@ static void ivas_compute_smooth_cov( } else if ( prev_idx == 0 ) { for ( i = 0; i < num_ch; i++ ) for ( i = 0; i < nchan; i++ ) { for ( j = 0; j < num_ch; j++ ) for ( j = 0; j < nchan; j++ ) { if ( i == j ) { Loading Loading @@ -253,26 +253,26 @@ void ivas_cov_smooth_process( const int16_t end_band #ifdef SBA_SPAR_HARM , const int16_t num_ch, const int16_t nchan, const int16_t transient_det #endif ) { int16_t i, j; #ifndef SBA_SPAR_HARM int16_t num_ch = pIn_buf->num_ch; int16_t nchan = pIn_buf->nchan; #endif int16_t num_bands = end_band - start_band; #ifdef SBA_SPAR_HARM ivas_compute_smooth_cov( hCovState, pFb, cov_real, hCovState->pPrior_cov_real, 1e-20f, start_band, end_band, num_ch, transient_det ); ivas_compute_smooth_cov( hCovState, pFb, cov_real, hCovState->pPrior_cov_real, 1e-20f, start_band, end_band, nchan, transient_det ); #else ivas_compute_smooth_cov( hCovState, pIn_buf, pFb, pIn_buf->cov_real, hCovState->pPrior_cov_real, 1e-20f, start_band, end_band ); #endif for ( i = 0; i < num_ch; i++ ) for ( i = 0; i < nchan; i++ ) { for ( j = 0; j < num_ch; j++ ) for ( j = 0; j < nchan; j++ ) { #ifdef SBA_SPAR_HARM mvr2r( &cov_real[i][j][start_band], &hCovState->pPrior_cov_real[i][j][start_band], num_bands ); Loading
lib_com/ivas_fb_mixer.c +42 −42 Original line number Diff line number Diff line Loading @@ -102,8 +102,8 @@ ivas_error ivas_fb_set_cfg( IVAS_FB_CFG **pFb_cfg_out, /* o : FB config. handle */ const int16_t ivas_format, /* i : IVAS format */ const SBA_MODE sba_mode, /* i : SBA mode */ const int16_t num_in_chans, /* i : number of FB input channels */ const int16_t num_out_chans, /* i : number of FB output channels*/ const int16_t nchan_inp, /* i : number of FB input channels */ const int16_t nchan_out, /* i : number of FB output channels*/ const int16_t active_w_mixing, /* i : active_w_mixing flag */ const int32_t sampling_rate /* i : sampling rate */ ) Loading @@ -115,8 +115,8 @@ ivas_error ivas_fb_set_cfg( return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for FB mixer config" ); } pFb_cfg->num_in_chans = num_in_chans; pFb_cfg->num_out_chans = num_out_chans; pFb_cfg->nchan_inp = nchan_inp; pFb_cfg->nchan_out = nchan_out; pFb_cfg->pcm_offset = 0; /* note: in SPAR decoder, this parameter is overwritten later */ pFb_cfg->active_w_mixing = active_w_mixing; Loading Loading @@ -179,7 +179,7 @@ ivas_error ivas_FB_mixer_open( { IVAS_FB_MIXER_HANDLE hFbMixer; int16_t i, j, frame_len, num_bands; int16_t num_chs_alloc; int16_t nchan_alloc; ivas_error error; error = IVAS_ERR_OK; Loading @@ -198,20 +198,20 @@ ivas_error ivas_FB_mixer_open( if ( fb_cfg->active_w_mixing == -1 ) { num_chs_alloc = 0; nchan_alloc = 0; } else if ( fb_cfg->active_w_mixing ) { num_chs_alloc = fb_cfg->num_in_chans; nchan_alloc = fb_cfg->nchan_inp; } else { num_chs_alloc = fb_cfg->num_out_chans; nchan_alloc = fb_cfg->nchan_out; } for ( i = 0; i < num_chs_alloc; i++ ) for ( i = 0; i < nchan_alloc; i++ ) { if ( fb_cfg->num_out_chans == 0 ) if ( fb_cfg->nchan_out == 0 ) { hFbMixer->ppFilterbank_inFR_re[i] = NULL; hFbMixer->ppFilterbank_inFR_im[i] = NULL; Loading @@ -234,13 +234,13 @@ ivas_error ivas_FB_mixer_open( if ( fb_cfg->active_w_mixing == -1 ) { num_chs_alloc = 0; nchan_alloc = 0; } else { num_chs_alloc = fb_cfg->num_in_chans; nchan_alloc = fb_cfg->nchan_inp; } for ( i = 0; i < num_chs_alloc; i++ ) for ( i = 0; i < nchan_alloc; i++ ) { if ( ( hFbMixer->ppFilterbank_prior_input[i] = (float *) count_malloc( sizeof( float ) * fb_cfg->prior_input_length ) ) == NULL ) { Loading @@ -249,17 +249,17 @@ ivas_error ivas_FB_mixer_open( set_f( hFbMixer->ppFilterbank_prior_input[i], 0, fb_cfg->prior_input_length ); } if ( ( fb_cfg->active_w_mixing != -1 ) && ( fb_cfg->num_out_chans > 0 ) ) if ( ( fb_cfg->active_w_mixing != -1 ) && ( fb_cfg->nchan_out > 0 ) ) { float *pTemp_mem; if ( ( pTemp_mem = (float *) count_malloc( sizeof( float ) * fb_cfg->num_out_chans * fb_cfg->num_in_chans * IVAS_MAX_NUM_BANDS ) ) == NULL ) if ( ( pTemp_mem = (float *) count_malloc( sizeof( float ) * fb_cfg->nchan_out * fb_cfg->nchan_inp * IVAS_MAX_NUM_BANDS ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for FB mixer" ); } for ( i = 0; i < fb_cfg->num_out_chans; i++ ) for ( i = 0; i < fb_cfg->nchan_out; i++ ) { for ( j = 0; j < fb_cfg->num_in_chans; j++ ) for ( j = 0; j < fb_cfg->nchan_inp; j++ ) { hFbMixer->prior_mixer[i][j] = pTemp_mem; pTemp_mem += IVAS_MAX_NUM_BANDS; Loading @@ -268,7 +268,7 @@ ivas_error ivas_FB_mixer_open( } } if ( fb_cfg->num_out_chans > 0 ) if ( fb_cfg->nchan_out > 0 ) { const int16_t *pActive_bins_per_band, *pActive_bins_per_band_abs, *pStart_offset, *pStart_offset_abs; Loading Loading @@ -372,18 +372,18 @@ void ivas_FB_mixer_close( } else if ( fb_cfg->active_w_mixing ) { num_chs_alloc = fb_cfg->num_in_chans; num_chs_alloc = fb_cfg->nchan_inp; } else { num_chs_alloc = fb_cfg->num_out_chans; num_chs_alloc = fb_cfg->nchan_out; } if ( hFbMixer != NULL ) { for ( i = 0; i < num_chs_alloc; i++ ) { if ( fb_cfg->num_out_chans > 0 ) if ( fb_cfg->nchan_out > 0 ) { j = fb_cfg->remix_order[i]; Loading @@ -401,7 +401,7 @@ void ivas_FB_mixer_close( } else { num_chs_alloc = fb_cfg->num_in_chans; num_chs_alloc = fb_cfg->nchan_inp; } for ( i = 0; i < num_chs_alloc; i++ ) { Loading @@ -409,13 +409,13 @@ void ivas_FB_mixer_close( hFbMixer->ppFilterbank_prior_input[i] = NULL; } if ( ( fb_cfg->active_w_mixing != -1 ) && ( fb_cfg->num_out_chans > 0 ) ) if ( ( fb_cfg->active_w_mixing != -1 ) && ( fb_cfg->nchan_out > 0 ) ) { count_free( hFbMixer->prior_mixer[0][0] ); hFbMixer->prior_mixer[0][0] = NULL; } if ( fb_cfg->num_out_chans > 0 ) if ( fb_cfg->nchan_out > 0 ) { num_bands = hFbMixer->pFb->filterbank_num_bands; Loading Loading @@ -483,14 +483,14 @@ void ivas_fb_mixer_pcm_ingest( if ( fb_cfg->active_w_mixing ) { num_chs_ingest = fb_cfg->num_in_chans; num_chs_ingest = fb_cfg->nchan_inp; } else { num_chs_ingest = fb_cfg->num_out_chans; num_chs_ingest = fb_cfg->nchan_out; } for ( i = 0; i < fb_cfg->num_in_chans; i++ ) for ( i = 0; i < fb_cfg->nchan_inp; i++ ) { mvr2r( &hFbMixer->ppFilterbank_prior_input[i][fb_cfg->prior_input_length - frame_len], ppOut_pcm[i], frame_len ); mvr2r( pcm_in[i], &ppOut_pcm[i][frame_len], frame_len ); Loading Loading @@ -519,7 +519,7 @@ void ivas_fb_mixer_update_prior_input( { int16_t i; for ( i = 0; i < hFbMixer->fb_cfg->num_in_chans; i++ ) for ( i = 0; i < hFbMixer->fb_cfg->nchan_inp; i++ ) { mvr2r( &hFbMixer->ppFilterbank_prior_input[i][length], hFbMixer->ppFilterbank_prior_input[i], hFbMixer->fb_cfg->prior_input_length - length ); mvr2r( pcm_in[i], &hFbMixer->ppFilterbank_prior_input[i][hFbMixer->fb_cfg->prior_input_length - length], length ); Loading Loading @@ -556,7 +556,7 @@ void ivas_fb_mixer_get_windowed_fr( rev_offset = (int16_t) ( 2 * mdft_len - hFbMixer->ana_window_offset ); set_zero( fr_in_block, offset ); for ( ch_idx = 0; ch_idx < hFbMixer->fb_cfg->num_in_chans; ch_idx++ ) for ( ch_idx = 0; ch_idx < hFbMixer->fb_cfg->nchan_inp; ch_idx++ ) { mvr2r( &hFbMixer->ppFilterbank_prior_input[ch_idx][offset + hFbMixer->fb_cfg->windowed_fr_offset], &fr_in_block[offset], n_old_samples - offset ); mvr2r( pcm_in[ch_idx], &fr_in_block[n_old_samples], n_new_samples ); Loading Loading @@ -657,7 +657,7 @@ void ivas_fb_mixer_process( pMdft_out[0] = Mdft_out_0; pMdft_out[1] = Mdft_out_1; for ( ch = ( hFbMixer->fb_cfg->active_w_mixing == 0 ); ch < hFbMixer->fb_cfg->num_out_chans; ch++ ) for ( ch = ( hFbMixer->fb_cfg->active_w_mixing == 0 ); ch < hFbMixer->fb_cfg->nchan_out; ch++ ) { /* Run a loop of 2 to calculate current frame's filterbank output and prev frame's output */ for ( hist = 0; hist < 2; hist++ ) Loading @@ -665,7 +665,7 @@ void ivas_fb_mixer_process( set_zero( pOut_fr_re, frame_len ); set_zero( pOut_fr_im, frame_len ); for ( j = 0; j < hFbMixer->fb_cfg->num_in_chans; j++ ) for ( j = 0; j < hFbMixer->fb_cfg->nchan_inp; j++ ) { if ( in_out_mixer_map[ch][j] != 0 ) { Loading Loading @@ -739,9 +739,9 @@ void ivas_fb_mixer_get_in_out_mapping( { if ( fb_cfg->active_w_mixing ) { for ( i = 0; i < fb_cfg->num_out_chans; i++ ) for ( i = 0; i < fb_cfg->nchan_out; i++ ) { for ( j = 0; j < fb_cfg->num_in_chans; j++ ) for ( j = 0; j < fb_cfg->nchan_inp; j++ ) { in_out_mixer_map[i][j] = 1; } Loading @@ -750,7 +750,7 @@ void ivas_fb_mixer_get_in_out_mapping( else { in_out_mixer_map[0][0] = 1; /* W depends on only W input*/ for ( i = 1; i < fb_cfg->num_out_chans; i++ ) for ( i = 1; i < fb_cfg->nchan_out; i++ ) { in_out_mixer_map[i][0] = 1; in_out_mixer_map[i][order[i]] = 1; Loading @@ -768,7 +768,7 @@ void ivas_fb_mixer_get_in_out_mapping( if ( nchan_transport == 1 ) { /* no cross predicitons in 1 ch dmx*/ for ( i = nchan_transport; i < fb_cfg->num_out_chans; i++ ) for ( i = nchan_transport; i < fb_cfg->nchan_out; i++ ) { in_out_mixer_map[order[i]][0] = 1; in_out_mixer_map[order[i]][i] = 1; Loading @@ -777,7 +777,7 @@ void ivas_fb_mixer_get_in_out_mapping( else { /* handle the cross predictions and decorrelation*/ for ( i = nchan_transport; i < fb_cfg->num_out_chans; i++ ) for ( i = nchan_transport; i < fb_cfg->nchan_out; i++ ) { for ( j = 0; j < nchan_transport; j++ ) { Loading Loading @@ -1038,11 +1038,11 @@ static ivas_error ivas_filterbank_setup( error = IVAS_ERR_OK; set_s( hFbMixer->first_frame, 1, pCfg->num_out_chans ); set_s( hFbMixer->first_frame + pCfg->num_out_chans, 0, IVAS_SPAR_MAX_CH - pCfg->num_out_chans ); set_s( hFbMixer->first_frame, 1, pCfg->nchan_out ); set_s( hFbMixer->first_frame + pCfg->nchan_out, 0, IVAS_SPAR_MAX_CH - pCfg->nchan_out ); if ( pCfg->num_out_chans > 0 ) if ( pCfg->nchan_out > 0 ) { hFbMixer->pFb->filterbank_num_bands = ivas_get_num_bands( sampling_rate ); Loading Loading @@ -1078,7 +1078,7 @@ static ivas_error ivas_filterbank_setup( return error; } if ( pCfg->num_out_chans > 0 ) if ( pCfg->nchan_out > 0 ) { ivas_filterbank_t *pFb = hFbMixer->pFb; int16_t offset = 0; Loading
lib_com/ivas_prot.h +19 −19 Original line number Diff line number Diff line Loading @@ -654,7 +654,7 @@ MC_LS_SETUP ivas_mc_map_output_config_to_mc_ls_setup( /*! r: limiter struct handle */ IVAS_LIMITER_HANDLE ivas_limiter_open( const int16_t num_channels, /* i : number of I/O channels */ const int16_t nchan, /* i : number of I/O channels */ const int32_t sampling_rate /* i : sampling rate for processing */ ); Loading @@ -666,7 +666,7 @@ void ivas_limiter_dec ( IVAS_LIMITER_HANDLE hLimiter, /* i/o: limiter struct handle */ float output[MAX_OUTPUT_CHANNELS][L_FRAME48k], /* i/o: input/output buffer */ const int16_t num_channels, /* i : number of channels to be processed */ const int16_t nchan, /* i : number of channels to be processed */ const int16_t output_frame, /* i : number of samples per channel in the buffer */ const int16_t BER_detect /* i : BER detect flag */ ); Loading Loading @@ -3103,7 +3103,7 @@ void ivas_sba_getTCs( ivas_error ivas_sba_linear_renderer( float output[][L_FRAME48k], /* i/o: synthesized core-coder transport channels/DirAC output */ const int16_t output_frame, /* i : output frame length per channel */ const int16_t nchan_in, /* i : number of input ambisonics channels */ const int16_t nchan_inp, /* i : number of input ambisonics channels */ const AUDIO_CONFIG output_config, /* i : output audio configuration */ const IVAS_OUTPUT_SETUP output_setup, /* i : output format setup */ const float hoa_dec_mtx[] /* i : HOA decoding mtx */ Loading Loading @@ -3299,7 +3299,7 @@ void computeDiffuseness( ); void ivas_dirac_dec_onset_detection_open( const int16_t num_channels, const int16_t nchan, const int16_t num_freq_bands, const int16_t max_band_decorr, DIRAC_ONSET_DETECTION_PARAMS *ph_dirac_onset_detection_params, Loading Loading @@ -3328,7 +3328,7 @@ void ivas_dirac_dec_decorr_open( void ivas_dirac_dec_decorr_process( const int16_t num_freq_bands, int16_t num_channels, int16_t nchan, const int16_t num_protos_diff, const DIRAC_SYNTHESIS_CONFIG synthesisConf, const int16_t nchan_transport, /* i : number of transport channels */ Loading Loading @@ -3623,14 +3623,14 @@ void ivas_dirac_dec_output_synthesis_cov_open( const int16_t interp_length, /* i : length for interpolating the mixing matrices in time slots */ const int16_t num_param_bands, /* i : number of parameter bands */ const int16_t num_param_bands_residual, /* i : number of parameter bands with a residual mixing matrix (i.e. decorrelation */ const int16_t nchan_in, /* i : number of input (transport) channels */ const int16_t nchan_inp, /* i : number of input (transport) channels */ const int16_t nchan_out, /* i : number of output channels */ const float *proto_matrix /* i : the prototype (upmix) matrix (only used if mode == 1) */ ); void ivas_dirac_dec_output_synthesis_cov_init( DIRAC_OUTPUT_SYNTHESIS_COV_STATE *h_dirac_output_synthesis_state, /* i/o: pointer to the state of the covariance synthesis */ const int16_t nchan_in, /* i : number of input (tranport) channels */ const int16_t nchan_inp, /* i : number of input (tranport) channels */ const int16_t nchan_out, /* i : number of output channels */ const int16_t n_param_bands, /* i : number of total parameter bands */ const int16_t n_param_bands_res /* i : number of parameter bands with a residual mixing matrix (i.e. decorrelation */ Loading @@ -3647,7 +3647,7 @@ void ivas_dirac_dec_output_synthesis_cov_param_mc_collect_slot( float cx[PARAM_MC_MAX_PARAMETER_BANDS][PARAM_MC_MAX_TRANSPORT_CHANS * PARAM_MC_MAX_TRANSPORT_CHANS], /* o : accumulated input covariance (real part) */ float cx_imag[PARAM_MC_MAX_PARAMETER_BANDS][PARAM_MC_MAX_TRANSPORT_CHANS * PARAM_MC_MAX_TRANSPORT_CHANS], /* o : accumulated input covariance (imaginary part) */ PARAM_MC_DEC_HANDLE hParamMC, /* i : handle to Parametric MC state */ const int16_t nchan_in, /* i : number of input channels */ const int16_t nchan_inp, /* i : number of input channels */ const int16_t idx_slot /* i : index of the slot to be added to the input covariance */ ); Loading Loading @@ -3930,7 +3930,7 @@ void ivas_compute_spar_params( const int16_t start_band, const int16_t end_band, const int16_t dtx_vad, const int16_t num_ch, const int16_t nchan, const int16_t bands_bw, const int16_t active_w, ivas_spar_md_com_cfg *hSparCfg, Loading @@ -3955,7 +3955,7 @@ void ivas_calc_c_p_coeffs( float *pppCov_mat_re[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH], const int16_t i_ts, float ***mixer_mat, const int16_t num_ch, const int16_t nchan, const int16_t num_dmx, const int16_t band_idx, const int16_t dtx_vad, Loading @@ -3973,7 +3973,7 @@ void ivas_get_spar_md_from_dirac( ivas_spar_md_com_cfg *hSpar_md_cfg, const int16_t start_band, const int16_t end_band, const int16_t order, const int16_t sba_order, const int16_t dtx_vad, float Wscale_d[IVAS_MAX_NUM_BANDS] ); Loading @@ -3981,7 +3981,7 @@ void ivas_get_spar_md_from_dirac( ivas_error ivas_spar_md_dec_open( ivas_spar_md_dec_state_t **hMdDec_out, /* i/o: SPAR MD decoder handle */ const DECODER_CONFIG_HANDLE hDecoderConfig, /* i : configuration structure */ const int16_t num_channels /* i : number of internal channels */ const int16_t nchan /* i : number of internal channels */ ); void ivas_spar_md_dec_close( Loading @@ -3992,8 +3992,8 @@ void ivas_spar_get_parameters( SPAR_DEC_HANDLE hSpar, /* i/o: SPAR decoder handle */ const DECODER_CONFIG_HANDLE hDecoderConfig, /* i : configuration structure */ const int16_t ts, /* i : time slot index */ const int16_t num_ch_out, /* i : number of channels out */ const int16_t num_ch_in, /* i : number of channels in */ const int16_t nchan_out, /* i : number of channels out */ const int16_t nchan_inp, /* i : number of channels in */ const int16_t num_spar_bands, /* i : number of SPAR bands */ float mixer_mat[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH][IVAS_MAX_NUM_BANDS] /* o : mixing matrix */ ); Loading @@ -4001,7 +4001,7 @@ void ivas_spar_get_parameters( ivas_error ivas_spar_md_dec_init( ivas_spar_md_dec_state_t *hMdDec, /* i/o: SPAR MD decoder handle */ const DECODER_CONFIG_HANDLE hDecoderConfig, /* i : configuration structure */ const int16_t num_channels /* i : number of internal channels */ const int16_t nchan /* i : number of internal channels */ ); void ivas_spar_md_dec_process( Loading Loading @@ -4098,7 +4098,7 @@ void ivas_cov_smooth_process( const int16_t end_band #ifdef SBA_SPAR_HARM , const int16_t num_ch, const int16_t nchan, const int16_t transient_det #endif ); Loading Loading @@ -4590,7 +4590,7 @@ void rotateFrame_shd_cldfb( float Cldfb_RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o: unrotated HOA3 signal buffer in cldfb domain real part */ float Cldfb_ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o: unrotated HOA3 signal buffer in cldfb domain imag part */ float Rmat[3][3], /* i : real-space rotation matrix */ const int16_t nInChannels, /* i : number of channels */ const int16_t nchan_inp, /* i : number of channels */ const int16_t shd_rot_max_order /* i : split-order rotation method */ ); Loading Loading @@ -5154,8 +5154,8 @@ ivas_error ivas_fb_set_cfg( IVAS_FB_CFG **pFb_cfg_out, /* o : FB config. handle */ const int16_t ivas_format, /* i : IVAS format */ const SBA_MODE sba_mode, /* i : SBA mode */ const int16_t num_in_chans, /* i : number of FB input channels */ const int16_t num_out_chans, /* i : number of FB output channels */ const int16_t nchan_inp, /* i : number of FB input channels */ const int16_t nchan_out, /* i : number of FB output channels */ const int16_t active_w_mixing, /* i : active_w_mixing flag */ const int32_t sampling_Fs /* i : sampling rate */ ); Loading
lib_com/ivas_spar_com.c +102 −102 File changed.Preview size limit exceeded, changes collapsed. Show changes
lib_com/ivas_stat_com.h +3 −3 Original line number Diff line number Diff line Loading @@ -355,7 +355,7 @@ typedef struct ivas_cov_smooth_cfg_t typedef struct ivas_cov_smooth_in_buf_t { float *cov_real[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH]; int16_t num_ch; int16_t nchan; int16_t reset_cov; } ivas_cov_smooth_in_buf_t; Loading Loading @@ -670,8 +670,8 @@ typedef struct ivas_trans_det_state_t typedef struct ivas_fb_mixer_cfg_t { int16_t fb_latency; int16_t num_in_chans; int16_t num_out_chans; int16_t nchan_inp; int16_t nchan_out; int16_t pcm_offset; int16_t fade_len; /* this sets the stride length; no delay is introduced */ int16_t prior_input_length; Loading