Commit b33ef432 authored by Dominik Weckbecker's avatar Dominik Weckbecker 💬
Browse files

wrap prediction changes in new define HODIRAC_PRED

parent e1049aef
Loading
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -4185,7 +4185,7 @@ void ivas_get_spar_md_from_dirac(
    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],
#ifdef HODIRAC
#ifdef HODIRAC_PRED
    float azi_dirac2[IVAS_MAX_NUM_BANDS][MAX_PARAM_SPATIAL_SUBFRAMES],
    float ele_dirac2[IVAS_MAX_NUM_BANDS][MAX_PARAM_SPATIAL_SUBFRAMES],
    float ratio[IVAS_MAX_NUM_BANDS],
@@ -4199,7 +4199,7 @@ void ivas_get_spar_md_from_dirac(
    const int16_t order,
    const int16_t dtx_vad,
    float Wscale_d[IVAS_MAX_NUM_BANDS]
#ifdef HODIRAC
#ifdef HODIRAC_PRED
    ,
    int16_t hodirac
#endif
+12 −12
Original line number Diff line number Diff line
@@ -1640,7 +1640,7 @@ void ivas_get_spar_md_from_dirac(
    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],
#ifdef HODIRAC
#ifdef HODIRAC_PRED
    float azi_dirac2[IVAS_MAX_NUM_BANDS][MAX_PARAM_SPATIAL_SUBFRAMES],
    float ele_dirac2[IVAS_MAX_NUM_BANDS][MAX_PARAM_SPATIAL_SUBFRAMES],
    float ratio[IVAS_MAX_NUM_BANDS],
@@ -1654,7 +1654,7 @@ void ivas_get_spar_md_from_dirac(
    const int16_t order,
    const int16_t dtx_vad,
    float Wscale_d[IVAS_MAX_NUM_BANDS]
#ifdef HODIRAC
#ifdef HODIRAC_PRED
    ,
    int16_t hodirac
#endif
@@ -1664,7 +1664,7 @@ void ivas_get_spar_md_from_dirac(
    int16_t block, ch;
    float response_avg[MAX_OUTPUT_CHANNELS];
    float response[MAX_PARAM_SPATIAL_SUBFRAMES][MAX_OUTPUT_CHANNELS];
#ifdef HODIRAC
#ifdef HODIRAC_PRED
    float response_avg2[MAX_OUTPUT_CHANNELS];
    float response2[MAX_PARAM_SPATIAL_SUBFRAMES][MAX_OUTPUT_CHANNELS];
#endif
@@ -1676,7 +1676,7 @@ 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;
#ifdef HODIRAC
#ifdef HODIRAC_PRED
    float w1 = 0;
    float w2 = 0;
#endif
@@ -1687,7 +1687,7 @@ void ivas_get_spar_md_from_dirac(
    remix_order = remix_order_set[hSpar_md_cfg->remix_unmix_order];

    num_ch = ivas_sba_get_nchan_metadata( order );
#ifdef HODIRAC
#ifdef HODIRAC_PRED
    hoa2_ch = 6;
#else
    hoa2_ch = ivas_sba_get_nchan_metadata( SBA_HOA2_ORDER );
@@ -1761,7 +1761,7 @@ void ivas_get_spar_md_from_dirac(

            /*SPAR from DirAC*/
            set_f( response_avg, 0.0f, MAX_OUTPUT_CHANNELS );
#ifdef HODIRAC
#ifdef HODIRAC_PRED
            if ( hodirac )
            {
                set_f( response_avg2, 0.0f, MAX_OUTPUT_CHANNELS );
@@ -1771,7 +1771,7 @@ 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 );
#ifdef HODIRAC
#ifdef HODIRAC_PRED
                if ( hodirac )
                {
                    ivas_dirac_dec_get_response( (int16_t) azi_dirac2[band][i_ts], (int16_t) ele_dirac2[band][i_ts], response_avg2, order );
@@ -1783,7 +1783,7 @@ void ivas_get_spar_md_from_dirac(
                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 );
#ifdef HODIRAC
#ifdef HODIRAC_PRED
                    if ( hodirac )
                    {
                        ivas_dirac_dec_get_response( (int16_t) azi_dirac2[band][block], (int16_t) ele_dirac2[band][block], &( response2[block][0] ), order );
@@ -1844,7 +1844,7 @@ void ivas_get_spar_md_from_dirac(
                        response_avg[ch] /= norm;
                    }

#ifdef HODIRAC
#ifdef HODIRAC_PRED
                    if ( hodirac )
                    {

@@ -1900,7 +1900,7 @@ void ivas_get_spar_md_from_dirac(
            {
                response_avg[i] = response_avg[HOA_keep_ind[i]];
            }
#ifdef HODIRAC
#ifdef HODIRAC_PRED
            if ( hodirac )
            {
                for ( i = FOA_CHANNELS + 1; i < num_ch; i++ )
@@ -1910,7 +1910,7 @@ void ivas_get_spar_md_from_dirac(
            }
#endif
            en_ratio_fac = ( 1.0f - diffuseness[band] );
#ifdef HODIRAC
#ifdef HODIRAC_PRED
            if ( hodirac )
            {
                w1 = ratio[band] * ratio[band];
@@ -1975,7 +1975,7 @@ void ivas_get_spar_md_from_dirac(
                    }
                    else
                    {
#ifdef HODIRAC
#ifdef HODIRAC_PRED
                        if ( hodirac )
                        {
                            cov_real_dirac[i][j][band] = en_ratio_fac * ( w1 * response_avg[i] * response_avg[j] + w2 * response_avg2[i] * response_avg2[j] );
+4 −3
Original line number Diff line number Diff line
@@ -150,13 +150,14 @@

#define HODIRAC                                         /* FhG: Sector-based HO-DirAC method for SBA at high bitrates */
#define HODIRAC_CRASH_FIX
#define HODIRAC_PRED

#define HODIRAC_DEBUG
/*#define HODIRAC_DEBUG*/

#ifdef HODIRAC_DEBUG
//#define HODIRAC_CHECK_VALUE_RANGE
#define HODIRAC_WRITE_PARAMS
///#define HODIRAC_READ_PARAMS
//#define HODIRAC_WRITE_PARAMS
//#define HODIRAC_READ_PARAMS
#endif

/* ################## End DEVELOPMENT switches ######################### */
+7 −7
Original line number Diff line number Diff line
@@ -2542,7 +2542,7 @@ void ivas_spar_to_dirac(
    int16_t sba_order_internal;
    float azi_dirac[IVAS_MAX_NUM_BANDS][MAX_PARAM_SPATIAL_SUBFRAMES];
    float ele_dirac[IVAS_MAX_NUM_BANDS][MAX_PARAM_SPATIAL_SUBFRAMES];
#ifdef HODIRAC
#ifdef HODIRAC_PRED
    float azi_dirac2[IVAS_MAX_NUM_BANDS][MAX_PARAM_SPATIAL_SUBFRAMES];
    float ele_dirac2[IVAS_MAX_NUM_BANDS][MAX_PARAM_SPATIAL_SUBFRAMES];
    float ratio[IVAS_MAX_NUM_BANDS];
@@ -2744,7 +2744,7 @@ void ivas_spar_to_dirac(
            }
            azi_dirac[band][block] = st_ivas->hQMetaData->q_direction->band_data[dirac_band_idx].azimuth[block];
            ele_dirac[band][block] = st_ivas->hQMetaData->q_direction->band_data[dirac_band_idx].elevation[block];
#ifdef HODIRAC
#ifdef HODIRAC_PRED
            if ( st_ivas->sba_analysis_order > 1 )
            {
                azi_dirac2[band][block] = st_ivas->hQMetaData->q_direction[1].band_data[dirac_band_idx].azimuth[block];
@@ -2754,7 +2754,7 @@ void ivas_spar_to_dirac(
        }

        diffuseness[band] = 1.0f - st_ivas->hQMetaData->q_direction->band_data[dirac_band_idx].energy_ratio[0];
#ifdef HODIRAC
#ifdef HODIRAC_PRED
        if ( st_ivas->sba_analysis_order > 1 )
        {
            ratio[band] = st_ivas->hQMetaData->q_direction[1].band_data[dirac_band_idx].energy_ratio[0];
@@ -2769,7 +2769,7 @@ void ivas_spar_to_dirac(
            azi_dirac, 
            ele_dirac, 
            diffuseness,
#ifdef HODIRAC
#ifdef HODIRAC_PRED
            azi_dirac2,
            ele_dirac2,
            ratio,
@@ -2783,7 +2783,7 @@ void ivas_spar_to_dirac(
            ( hMdDec->spar_hoa_md_flag ) ? 1 : sba_order_internal, 
            dtx_vad, 
            NULL 
#ifdef HODIRAC
#ifdef HODIRAC_PRED
            ,
            st_ivas->sba_analysis_order > 1
#endif
@@ -2803,7 +2803,7 @@ void ivas_spar_to_dirac(
        azi_dirac, 
        ele_dirac, 
        diffuseness, 
#ifdef HODIRAC
#ifdef HODIRAC_PRED
        azi_dirac2,
        ele_dirac2,
        ratio,
@@ -2817,7 +2817,7 @@ void ivas_spar_to_dirac(
        ( hMdDec->spar_hoa_md_flag ) ? 1 : sba_order_internal, 
        dtx_vad, 
        NULL 
#ifdef HODIRAC
#ifdef HODIRAC_PRED
        ,
        st_ivas->sba_analysis_order > 1
#endif
+5 −5
Original line number Diff line number Diff line
@@ -721,7 +721,7 @@ static ivas_error ivas_spar_enc_process(
    {
        float azi_dirac[IVAS_MAX_NUM_BANDS][MAX_PARAM_SPATIAL_SUBFRAMES];
        float ele_dirac[IVAS_MAX_NUM_BANDS][MAX_PARAM_SPATIAL_SUBFRAMES];
#ifdef HODIRAC
#ifdef HODIRAC_PRED
        float azi_dirac2[IVAS_MAX_NUM_BANDS][MAX_PARAM_SPATIAL_SUBFRAMES];
        float ele_dirac2[IVAS_MAX_NUM_BANDS][MAX_PARAM_SPATIAL_SUBFRAMES];
        float ratio[IVAS_MAX_NUM_BANDS];
@@ -741,7 +741,7 @@ static ivas_error ivas_spar_enc_process(
            {
                azi_dirac[b][i_ts] = hQMetaData->q_direction[0].band_data[dirac_band_idx].azimuth[i_ts];
                ele_dirac[b][i_ts] = hQMetaData->q_direction[0].band_data[dirac_band_idx].elevation[i_ts];
#ifdef HODIRAC
#ifdef HODIRAC_PRED
                if ( st_ivas->sba_analysis_order > 1 )
                {
                    azi_dirac2[b][i_ts] = hQMetaData->q_direction[1].band_data[dirac_band_idx].azimuth[i_ts] + hQMetaData->q_direction[0].band_data[dirac_band_idx].azimuth[i_ts] - 180.f;
@@ -758,7 +758,7 @@ static ivas_error ivas_spar_enc_process(
#endif
            }
            diffuseness[b] = 1.0f - hQMetaData->q_direction->band_data[dirac_band_idx].energy_ratio[0];
#ifdef HODIRAC
#ifdef HODIRAC_PRED
            if ( st_ivas->sba_analysis_order > 1 )
            {
                ratio[b] = hQMetaData->q_direction[1].band_data[dirac_band_idx].energy_ratio[0];
@@ -787,7 +787,7 @@ static ivas_error ivas_spar_enc_process(
            azi_dirac,
            ele_dirac,
            diffuseness,
#ifdef HODIRAC
#ifdef HODIRAC_PRED
            azi_dirac2,
            ele_dirac2,
            ratio,
@@ -799,7 +799,7 @@ static ivas_error ivas_spar_enc_process(
            d_start_band,
            d_end_band,
            ( hSpar->hMdEnc->spar_hoa_md_flag ) ? 1 : sba_order, dtx_vad, Wscale_d
#ifdef HODIRAC
#ifdef HODIRAC_PRED
            ,
            st_ivas->sba_analysis_order > 1
#endif