Commit b7b40a9b authored by vaclav's avatar vaclav
Browse files

harmonize 'nchan' terminology

parent 597532f1
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -3977,7 +3977,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]
);
+43 −43
Original line number Diff line number Diff line
@@ -1645,11 +1645,11 @@ 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] )
{
    int16_t nchan, band, i, j;
    int16_t nchan_md, band, i, j;
    int16_t block, ch;
    float response_avg[MAX_OUTPUT_CHANNELS];
    float response[MAX_PARAM_SPATIAL_SUBFRAMES][MAX_OUTPUT_CHANNELS];
@@ -1661,15 +1661,15 @@ void ivas_get_spar_md_from_dirac(
    float **ppMixer_mat[IVAS_MAX_FB_MIXER_OUT_CH];
    float *pMixer_mat[IVAS_MAX_FB_MIXER_OUT_CH][IVAS_MAX_SPAR_FB_MIXER_IN_CH];
    float en_ratio_fac, diff_norm_order1, diff_norm_order2, diff_norm_order3;
    int16_t ndm, foa_ch, hoa2_ch;
    int16_t ndm, nchan_foa, nchan_md_hoa2;
    float P_dir_fact[IVAS_SPAR_MAX_CH - 1];
    const int16_t *remix_order;

    remix_order = remix_order_set[hSpar_md_cfg->remix_unmix_order];

    nchan = 2 * order + 2;
    hoa2_ch = 6;
    foa_ch = FOA_CHANNELS;
    nchan_md = ivas_sba_get_nchan_metadata( sba_order );
    nchan_md_hoa2 = ivas_sba_get_nchan_metadata( 2 );
    nchan_foa = FOA_CHANNELS;
    diff_norm_order1 = 3.0f;
    diff_norm_order2 = 5.0f;
    diff_norm_order3 = 7.0f;
@@ -1689,39 +1689,39 @@ void ivas_get_spar_md_from_dirac(
        int16_t idx;
        ndm = hSpar_md_cfg->num_dmx_chans_per_band[start_band - 1];
        P_norm[0] = 0.0f;
        for ( i = 0; i < max( 0, foa_ch - ndm ); i++ )
        for ( i = 0; i < max( 0, nchan_foa - ndm ); i++ )
        {
            P_norm[0] += hSpar_md->band_coeffs[start_band - 1].P_re[i] * hSpar_md->band_coeffs[start_band - 1].P_re[i];
        }
        P_norm[0] *= diff_norm_order1 / min( diff_norm_order1, max( 0, foa_ch - ndm ) );
        P_norm[0] *= diff_norm_order1 / min( diff_norm_order1, max( 0, nchan_foa - ndm ) );

        P_norm[1] = 0.0f;
        for ( ; i < max( 0, min( nchan, hoa2_ch ) - ndm ); i++ )
        for ( ; i < max( 0, min( nchan_md, nchan_md_hoa2 ) - ndm ); i++ )
        {
            P_norm[1] += hSpar_md->band_coeffs[start_band - 1].P_re[i] * hSpar_md->band_coeffs[start_band - 1].P_re[i];
        }
        P_norm[1] *= diff_norm_order2 / min( diff_norm_order2, max( 0, min( nchan, hoa2_ch ) - ndm ) );
        P_norm[1] *= diff_norm_order2 / min( diff_norm_order2, max( 0, min( nchan_md, nchan_md_hoa2 ) - ndm ) );

        P_norm[2] = 0.0f;
        for ( ; i < nchan - ndm; i++ )
        for ( ; i < nchan_md - ndm; i++ )
        {
            P_norm[2] += hSpar_md->band_coeffs[start_band - 1].P_re[i] * hSpar_md->band_coeffs[start_band - 1].P_re[i];
        }
        P_norm[2] *= diff_norm_order3 / min( diff_norm_order3, max( 0, nchan - ndm ) );
        P_norm[2] *= diff_norm_order3 / min( diff_norm_order3, max( 0, nchan_md - ndm ) );

        for ( i = 0; i < max( 0, foa_ch - ndm ); i++ )
        for ( i = 0; i < max( 0, nchan_foa - ndm ); i++ )
        {
            idx = remix_order[i + ndm] - ndm;
            P_dir_fact[idx] = hSpar_md->band_coeffs[start_band - 1].P_re[i] * hSpar_md->band_coeffs[start_band - 1].P_re[i];
            P_dir_fact[idx] = P_dir_fact[idx] / max( IVAS_FLT_EPS, P_norm[0] );
        }
        for ( ; i < max( 0, min( nchan, hoa2_ch ) - ndm ); i++ )
        for ( ; i < max( 0, min( nchan_md, nchan_md_hoa2 ) - ndm ); i++ )
        {
            idx = remix_order[i + ndm] - ndm;
            P_dir_fact[idx] = hSpar_md->band_coeffs[start_band - 1].P_re[i] * hSpar_md->band_coeffs[start_band - 1].P_re[i];
            P_dir_fact[idx] = P_dir_fact[idx] / max( IVAS_FLT_EPS, P_norm[1] );
        }
        for ( ; i < nchan - ndm; i++ )
        for ( ; i < nchan_md - ndm; i++ )
        {
            idx = remix_order[i + ndm] - ndm;
            P_dir_fact[idx] = hSpar_md->band_coeffs[start_band - 1].P_re[i] * hSpar_md->band_coeffs[start_band - 1].P_re[i];
@@ -1743,24 +1743,24 @@ void ivas_get_spar_md_from_dirac(

            if ( n_ts > 1 )
            {
                ivas_dirac_dec_get_response( (int16_t) azi_dirac[band][i_ts], (int16_t) ele_dirac[band][i_ts], response_avg, order );
                ivas_dirac_dec_get_response( (int16_t) azi_dirac[band][i_ts], (int16_t) ele_dirac[band][i_ts], response_avg, sba_order );
            }
            else
            {
                for ( block = 0; block < MAX_PARAM_SPATIAL_SUBFRAMES; block++ )
                {
                    ivas_dirac_dec_get_response( (int16_t) azi_dirac[band][block], (int16_t) ele_dirac[band][block], &( response[block][0] ), order );
                    ivas_dirac_dec_get_response( (int16_t) azi_dirac[band][block], (int16_t) ele_dirac[band][block], &( response[block][0] ), sba_order );
                }

                /* average responses in all subframes*/
                {
                    float norm;
                    int16_t num_ch_order, hoa2_ch_order;
                    int16_t nchan_internal, nchan_hoa2;

                    num_ch_order = ivas_sba_get_nchan( order, 0 );
                    hoa2_ch_order = 9;
                    nchan_internal = ivas_sba_get_nchan( sba_order, 0 );
                    nchan_hoa2 = ivas_sba_get_nchan( 2, 0 );

                    for ( ch = 0; ch < num_ch_order; ch++ )
                    for ( ch = 0; ch < nchan_internal; ch++ )
                    {
                        for ( block = 0; block < MAX_PARAM_SPATIAL_SUBFRAMES; block++ )
                        {
@@ -1771,51 +1771,51 @@ void ivas_get_spar_md_from_dirac(

                    /*normalize 1st order*/
                    norm = 0.0f;
                    for ( ch = 1; ch < foa_ch; ch++ )
                    for ( ch = 1; ch < nchan_foa; ch++ )
                    {
                        norm += response_avg[ch] * response_avg[ch];
                    }
                    norm = max( EPSILON, sqrtf( norm ) );
                    for ( ch = 1; ch < foa_ch; ch++ )
                    for ( ch = 1; ch < nchan_foa; ch++ )
                    {
                        response_avg[ch] /= norm;
                    }

                    /*normalize 2nd order*/
                    norm = 0.0f;
                    for ( ch = foa_ch; ch < min( hoa2_ch_order, num_ch_order ); ch++ )
                    for ( ch = nchan_foa; ch < min( nchan_hoa2, nchan_internal ); ch++ )
                    {
                        norm += response_avg[ch] * response_avg[ch];
                    }
                    norm = max( EPSILON, sqrtf( norm ) );
                    for ( ch = foa_ch; ch < min( hoa2_ch_order, num_ch_order ); ch++ )
                    for ( ch = nchan_foa; ch < min( nchan_hoa2, nchan_internal ); ch++ )
                    {
                        response_avg[ch] /= norm;
                    }

                    /*normalize 3rd order*/
                    norm = 0.0f;
                    for ( ch = hoa2_ch_order; ch < num_ch_order; ch++ )
                    for ( ch = nchan_hoa2; ch < nchan_internal; ch++ )
                    {
                        norm += response_avg[ch] * response_avg[ch];
                    }
                    norm = max( EPSILON, sqrtf( norm ) );
                    for ( ch = hoa2_ch_order; ch < num_ch_order; ch++ )
                    for ( ch = nchan_hoa2; ch < nchan_internal; ch++ )
                    {
                        response_avg[ch] /= norm;
                    }
                }
            }

            for ( i = FOA_CHANNELS + 1; i < nchan; i++ )
            for ( i = FOA_CHANNELS + 1; i < nchan_md; i++ )
            {
                response_avg[i] = response_avg[HOA_keep_ind[i]];
            }
            en_ratio_fac = ( 1.0f - diffuseness[band] );

            for ( i = 0; i < nchan; i++ )
            for ( i = 0; i < nchan_md; i++ )
            {
                for ( j = 0; j < nchan; j++ )
                for ( j = 0; j < nchan_md; j++ )
                {
                    if ( i == j )
                    {
@@ -1835,11 +1835,11 @@ void ivas_get_spar_md_from_dirac(
                                }
                                else
                                {
                                    if ( i < foa_ch )
                                    if ( i < nchan_foa )
                                    {
                                        cov_real_dirac[i][j][band] += ( 1.0f - ( en_ratio_fac * en_ratio_fac ) ) / diff_norm_order1;
                                    }
                                    else if ( i < hoa2_ch )
                                    else if ( i < nchan_md_hoa2 )
                                    {
                                        cov_real_dirac[i][j][band] += ( 1.0f - ( en_ratio_fac * en_ratio_fac ) ) / diff_norm_order2;
                                    }
@@ -1851,11 +1851,11 @@ void ivas_get_spar_md_from_dirac(
                            }
                            else
                            {
                                if ( i < foa_ch )
                                if ( i < nchan_foa )
                                {
                                    cov_real_dirac[i][j][band] += ( 1.0f - en_ratio_fac ) / diff_norm_order1;
                                }
                                else if ( i < hoa2_ch )
                                else if ( i < nchan_md_hoa2 )
                                {
                                    cov_real_dirac[i][j][band] += ( 1.0f - en_ratio_fac ) / diff_norm_order2;
                                }
@@ -1874,9 +1874,9 @@ void ivas_get_spar_md_from_dirac(
            }
        }

        for ( i = 0; i < nchan; i++ )
        for ( i = 0; i < nchan_md; i++ )
        {
            for ( j = 0; j < nchan; j++ )
            for ( j = 0; j < nchan_md; j++ )
            {
                pCov_real[i][j] = cov_real_dirac[i][j];
            }
@@ -1892,9 +1892,9 @@ void ivas_get_spar_md_from_dirac(
                fid = fopen( "cov_real_dirac.txt", "wt" );
            }

            for ( i = 0; i < nchan; i++ )
            for ( i = 0; i < nchan_md; i++ )
            {
                for ( j = 0; j < nchan; j++ )
                for ( j = 0; j < nchan_md; j++ )
                {
                    for ( k = start_band; k < end_band; k++ )
                    {
@@ -1907,7 +1907,7 @@ void ivas_get_spar_md_from_dirac(
#endif

        ivas_compute_spar_params( pCov_real, dm_fv_re, i_ts, ppMixer_mat, start_band, end_band, dtx_vad,
                                  nchan, 1, hSpar_md_cfg->active_w, hSpar_md_cfg, hSpar_md, Wscale, 1 );
                                  nchan_md, 1, hSpar_md_cfg->active_w, hSpar_md_cfg, hSpar_md, Wscale, 1 );

        if ( mixer_mat != NULL )
        {
@@ -1917,15 +1917,15 @@ void ivas_get_spar_md_from_dirac(

                for ( i = 0; i < ndm; i++ )
                {
                    for ( j = 0; j < nchan; j++ )
                    for ( j = 0; j < nchan_md; j++ )
                    {
                        mixer_mat[i][j][band + i_ts * IVAS_MAX_NUM_BANDS] = ppMixer_mat[i][j][band];
                    }
                }

                for ( i = ndm; i < nchan; i++ )
                for ( i = ndm; i < nchan_md; i++ )
                {
                    for ( j = 0; j < nchan; j++ )
                    for ( j = 0; j < nchan_md; j++ )
                    {
                        mixer_mat[i][j][band + i_ts * IVAS_MAX_NUM_BANDS] = 0.0f;
                    }
@@ -1933,7 +1933,7 @@ void ivas_get_spar_md_from_dirac(

                if ( ( ndm == 1 ) && ( Wscale_d != NULL ) )
                {
                    for ( j = 0; j < nchan; j++ )
                    for ( j = 0; j < nchan_md; j++ )
                    {
                        mixer_mat[0][j][band + i_ts * IVAS_MAX_NUM_BANDS] *= Wscale_d[band];
                    }
+2 −2
Original line number Diff line number Diff line
@@ -77,7 +77,7 @@ void ivas_mc2sba(
    assert( ( sba_order <= 3 ) && "Only order up to 3 is supported!" );

    /* Init*/
    sba_num_chans = ( sba_order + 1 ) * ( sba_order + 1 );
    sba_num_chans = ivas_sba_get_nchan( sba_order, 0 );
    for ( j = 0; j < sba_num_chans; j++ )
    {
        set_zero( buffer_tmp[j], output_frame );
@@ -297,7 +297,7 @@ void ivas_ism2sba(
    assert( hIsmRendererData != NULL && "hIsmRendererData not allocated!" );

    /* Init*/
    sba_num_chans = ( sba_order + 1 ) * ( sba_order + 1 );
    sba_num_chans = ivas_sba_get_nchan( sba_order, 0 );
    for ( j = 0; j < sba_num_chans; j++ )
    {
        set_zero( buffer_tmp[j], output_frame );
+3 −3
Original line number Diff line number Diff line
@@ -208,12 +208,12 @@ void ivas_sba_upmixer_renderer(
    const int16_t output_frame  /* i  : output frame length                 */
)
{
    int16_t i, nchan_internal;
    int16_t i, nchan;
    float temp;

    wmops_sub_start( "ivas_sba_upmixer_renderer" );

    nchan_internal = ivas_sba_get_nchan_metadata( st_ivas->sba_analysis_order );
    nchan = ivas_sba_get_nchan_metadata( st_ivas->sba_analysis_order );

    if ( st_ivas->nchan_transport >= 3 )
    {
@@ -227,7 +227,7 @@ void ivas_sba_upmixer_renderer(
    }

    /* Upmixer + Renderer */
    ivas_spar_dec_upmixer( st_ivas, output, nchan_internal, output_frame );
    ivas_spar_dec_upmixer( st_ivas, output, nchan, output_frame );

    if ( st_ivas->renderer_type == RENDERER_SBA_LINEAR_DEC )
    {
+104 −111

File changed.

Preview size limit exceeded, changes collapsed.

Loading