Commit e642f27d authored by Gregory Pallone's avatar Gregory Pallone
Browse files

fix panning law for ISM and renderer

parent 6366bfab
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -167,7 +167,7 @@

/* #################### Start NON-BE switches ############################ */
/* any switch which is non-be wrt. TS 26.258 V3.0 */

#define FIX_1548_HARMONIZE_NON_DIEGETIC_PANNING_LAW /* Orange: float issue 1548: Harmonize non diegetic panning law in ISM and renderers */
#define FIX_1543_MID_LSF_BITS                           /* VA: float issue 1543: Resolve "MSAN: use-of-uninitialized-value in lib_enc/lsf_enc.c:262:5 for EVS encoder" */


+6 −0
Original line number Diff line number Diff line
@@ -390,8 +390,14 @@ void TDREND_SRC_REND_UpdateFiltersFromSpatialParams(
        *Gain = 1.0f;
        set_f( hrf_left, 0.0f, *filterlength );
        set_f( hrf_right, 0.0f, *filterlength );
#ifdef FIX_1548_HARMONIZE_NON_DIEGETIC_PANNING_LAW
        float pan = ( SrcSpatial_p->Pos_p[1] + 1.f ) * 0.5f;
        hrf_left[0] = sinf( pan * EVS_PI * 0.5f );
        hrf_right[0] = cosf( pan * EVS_PI * 0.5f );
#else
        hrf_left[0] = ( SrcSpatial_p->Pos_p[1] + 1.f ) * 0.5f;
        hrf_right[0] = 1.f - hrf_left[0];
#endif
        *intp_count = MAX_INTERPOLATION_STEPS;
        Src_p->elev_prev = 0;
        Src_p->azim_prev = 360.0f; /* Dummy angle -- sets max interpolation if switching to TDREND_POSTYPE_ABSOLUTE */
+18 −0
Original line number Diff line number Diff line
@@ -2234,8 +2234,14 @@ static ivas_error updateMcPanGainsForMcOut(
    {
        if ( ( inputMc->base.inConfig == IVAS_AUDIO_CONFIG_MONO ) && ( inputMc->nonDiegeticPan ) )
        {
#ifdef FIX_1548_HARMONIZE_NON_DIEGETIC_PANNING_LAW
            float pan = ( inputMc->nonDiegeticPanGain + 1.f ) * 0.5f;
            inputMc->panGains[0][0] = sinf( pan * EVS_PI * 0.5f );
            inputMc->panGains[0][1] = cosf( pan * EVS_PI * 0.5f );
#else
            inputMc->panGains[0][0] = ( inputMc->nonDiegeticPanGain + 1.f ) * 0.5f;
            inputMc->panGains[0][1] = 1.f - inputMc->panGains[0][0];
#endif
            error = IVAS_ERR_OK;
        }
        else
@@ -2369,8 +2375,14 @@ static ivas_error updateMcPanGainsForBinauralOut(
    setZeroPanMatrix( inputMc->panGains );
    if ( inputMc->base.inConfig == IVAS_AUDIO_CONFIG_MONO )
    {
#ifdef FIX_1548_HARMONIZE_NON_DIEGETIC_PANNING_LAW
        float pan = ( inputMc->nonDiegeticPanGain + 1.f ) * 0.5f;
        inputMc->panGains[0][0] = sinf( pan * EVS_PI * 0.5f );
        inputMc->panGains[0][1] = cosf( pan * EVS_PI * 0.5f );
#else
        inputMc->panGains[0][0] = ( inputMc->nonDiegeticPanGain + 1.f ) * 0.5f;
        inputMc->panGains[0][1] = 1.f - inputMc->panGains[0][0];
#endif
    }
    else
    {
@@ -5988,8 +6000,14 @@ static ivas_error renderIsmToMc(
    {
        if ( ismInput->nonDiegeticPan )
        {
#ifdef FIX_1548_HARMONIZE_NON_DIEGETIC_PANNING_LAW
            float pan = ( ismInput->nonDiegeticPanGain + 1.f ) * 0.5f;
            ismInput->prev_pan_gains[0] = currentPanGains[0] = sinf( pan * EVS_PI * 0.5f );
            ismInput->prev_pan_gains[1] = currentPanGains[1] = cosf( pan * EVS_PI * 0.5f );
#else
            ismInput->prev_pan_gains[0] = currentPanGains[0] = ( ismInput->nonDiegeticPanGain + 1.f ) * 0.5f;
            ismInput->prev_pan_gains[1] = currentPanGains[1] = 1.f - currentPanGains[0];
#endif
        }
        else
        {