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

move static buffers from calculate_hodirac_sector_parameters to hDirAC

parent 15941b5c
Loading
Loading
Loading
Loading
Loading
+14 −9
Original line number Diff line number Diff line
@@ -947,6 +947,9 @@ void deindex_spherical_component(
 *-----------------------------------------------------------------*/

void calculate_hodirac_sector_parameters(
#ifdef FIX_485_STATIC_BUFFERS
    DIRAC_ENC_HANDLE hDirAC, /* i  : DirAC handle                               */
#endif
    float RealBuffer[DIRAC_MAX_ANA_CHANS][DIRAC_NO_FB_BANDS_MAX], /* i  : signal vector (L+1)^2 x N_bins, real part  */
    float ImagBuffer[DIRAC_MAX_ANA_CHANS][DIRAC_NO_FB_BANDS_MAX], /* i  : signal vector, imaginary part              */
    const float beta,                                             /* i  : forgetting factor for average filtering    */
@@ -965,6 +968,7 @@ void calculate_hodirac_sector_parameters(
    float sec_I_vec_y[NUM_ANA_SECTORS];
    float sec_I_vec_z[NUM_ANA_SECTORS];

#ifndef FIX_485_STATIC_BUFFERS
    static int16_t firstrun_sector_params = 1;

    static float sec_I_vec_smth_x[NUM_ANA_SECTORS][IVAS_MAX_NUM_BANDS];
@@ -974,6 +978,7 @@ void calculate_hodirac_sector_parameters(
    static float energy_smth[NUM_ANA_SECTORS][IVAS_MAX_NUM_BANDS];
    static float azi_prev[NUM_ANA_SECTORS * IVAS_MAX_NUM_BANDS];
    static float ele_prev[NUM_ANA_SECTORS * IVAS_MAX_NUM_BANDS];
#endif

    for ( i_sec = 0; i_sec < NUM_ANA_SECTORS; i_sec++ )
    {
@@ -1009,13 +1014,13 @@ void calculate_hodirac_sector_parameters(
            float *p_ene = &ene[i_sec * N_bands + i_band];

            float *p_diff = &diff[i_sec * N_bands + i_band];
            float *p_azi_prev = &azi_prev[i_sec * N_bands + i_band];
            float *p_ele_prev = &ele_prev[i_sec * N_bands + i_band];
            float *p_azi_prev = &hDirAC->azi_prev[i_sec * N_bands + i_band];
            float *p_ele_prev = &hDirAC->ele_prev[i_sec * N_bands + i_band];

            float *p_energy_smth = &energy_smth[i_sec][i_band];
            float *p_sec_I_vec_smth_x = &sec_I_vec_smth_x[i_sec][i_band];
            float *p_sec_I_vec_smth_y = &sec_I_vec_smth_y[i_sec][i_band];
            float *p_sec_I_vec_smth_z = &sec_I_vec_smth_z[i_sec][i_band];
            float *p_energy_smth = &hDirAC->energy_smth[i_sec][i_band];
            float *p_sec_I_vec_smth_x = &hDirAC->sec_I_vec_smth_x[i_sec][i_band];
            float *p_sec_I_vec_smth_y = &hDirAC->sec_I_vec_smth_y[i_sec][i_band];
            float *p_sec_I_vec_smth_z = &hDirAC->sec_I_vec_smth_z[i_sec][i_band];

            *p_sec_I_vec_x = 0.f;
            *p_sec_I_vec_y = 0.f;
@@ -1083,7 +1088,7 @@ void calculate_hodirac_sector_parameters(
                }
            }

            if ( firstrun_sector_params )
            if ( hDirAC->firstrun_sector_params )
            {
                *p_sec_I_vec_smth_x = *p_sec_I_vec_x;
                *p_sec_I_vec_smth_y = *p_sec_I_vec_y;
@@ -1125,7 +1130,7 @@ void calculate_hodirac_sector_parameters(
            }
            if ( tmp_diff > 0.5f )
            {
                if ( firstrun_sector_params )
                if ( hDirAC->firstrun_sector_params )
                {
                    *p_azi = 0.f;
                    *p_ele = 0.f;
@@ -1144,7 +1149,7 @@ void calculate_hodirac_sector_parameters(
        }
    }

    firstrun_sector_params = 0;
    hDirAC->firstrun_sector_params = 0;

    return;
}
+3 −0
Original line number Diff line number Diff line
@@ -3905,6 +3905,9 @@ void ivas_dirac_dec_get_frequency_axis(
    const int16_t num_freq_bands );                             /* i  : number of frequency bands                         */

void calculate_hodirac_sector_parameters(
#ifdef FIX_485_STATIC_BUFFERS
	DIRAC_ENC_HANDLE hDirAC,
#endif
    float RealBuffer[DIRAC_MAX_ANA_CHANS][DIRAC_NO_FB_BANDS_MAX],/* i  : signal vector (L+1)^2 x N_bins, real part      */
    float ImagBuffer[DIRAC_MAX_ANA_CHANS][DIRAC_NO_FB_BANDS_MAX],/* i  : signal vector, imaginary part                  */
    const float beta,                                           /* i  : forgetting factor for average filtering         */
+1 −1
Original line number Diff line number Diff line
@@ -295,7 +295,7 @@ void ivas_sba_get_spar_hoa_md_flag(
        *spar_hoa_md_flag = 0;
    }

    if ( sba_order > 1 && ivas_total_brate >= IVAS_512k )
    if ( sba_order > 1 && ivas_total_brate >= IVAS_384k )
    {
        *spar_hoa_dirac2spar_md_flag = 0;
    }
+2 −0
Original line number Diff line number Diff line
@@ -164,6 +164,8 @@
#define FIX_482_DUMMYDEC_INIT                           /* Nokia: fix issue #428: missing inits for dummyDec in IVAS_rend */
#define FIX_468_16KHZ_PUPMIX                            /* Dlb: Fix issue 468 for Param Upmix at 16kHz sampling rate */

#define FIX_485_STATIC_BUFFERS                          /* FhG: move static buffers in DirAC parameter estimator to the DirAC struct */

/* ################## End DEVELOPMENT switches ######################### */
/* clang-format on */

+17 −1
Original line number Diff line number Diff line
@@ -79,6 +79,9 @@ ivas_error ivas_dirac_enc_open(
    {
        return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC Config\n" ) );
    }
#ifdef FIX_485_STATIC_BUFFERS
    hDirAC->firstrun_sector_params = 1;
#endif

    /*-----------------------------------------------------------------*
     * DirAC main configuration
@@ -763,7 +766,20 @@ void ivas_dirac_param_est_enc(
#ifdef DEBUGGING
                assert( l_ts <= DIRAC_NO_FB_BANDS_MAX );
#endif
                calculate_hodirac_sector_parameters( Cldfb_RealBuffer, Cldfb_ImagBuffer, 0.20f, hDirAC->band_grouping, hDirAC->hConfig->nbands, hDirAC->hConfig->enc_param_start_band, azi_secs, ele_secs, diff_secs, ene_secs );
                calculate_hodirac_sector_parameters(
#ifdef FIX_485_STATIC_BUFFERS
                    hDirAC,
#endif
                    Cldfb_RealBuffer,
                    Cldfb_ImagBuffer,
                    0.20f,
                    hDirAC->band_grouping,
                    hDirAC->hConfig->nbands,
                    hDirAC->hConfig->enc_param_start_band,
                    azi_secs,
                    ele_secs,
                    diff_secs,
                    ene_secs );
            }

            if ( hodirac_flag )
Loading