Commit 07b20e45 authored by emerit's avatar emerit
Browse files

change panning law

parent 56ce5346
Loading
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -337,11 +337,6 @@ typedef enum
#define ADJUST_ISM_BRATE_POS                    8000

#define ISM_AZIMUTH_NBITS                       7
#ifdef FIX_2570_BUF_OVFL   
#define ISM_AZIMUTH_MIN_NON_DIEGETIC_FX         28                          /* -90.0f in ism metadata */
#define ISM_AZIMUTH_ZERO_NON_DIEGETIC_FX        64                          /* 0.0f in ism metadata */
#define ISM_AZIMUTH_MAX_NON_DIEGETIC_FX         100                         /* 90.0f in ism metadata */
#endif
#define ISM_AZIMUTH_MIN_FX                      -754974720                  /* -180.0f in Q22 */
#define ISM_AZIMUTH_MAX_FX                      754974720                   /*  180.0f in Q22 */
#define ISM_AZIMUTH_LOW_BORDER_FX               -587202560                  /* -140.0f in Q22 */
+0 −11
Original line number Diff line number Diff line
@@ -1034,17 +1034,6 @@ static void decode_angle_indices_fx(
    }
    ELSE
    {
#ifdef FIX_2570_BUF_OVFL
        /* azimuth/yaw is on a circle - check for diff coding for -90 -> 90 and vice versa changes */
        IF( GT_16( idx_angle1, ISM_AZIMUTH_MAX_NON_DIEGETIC_FX ) )
        {
            idx_angle1 = ISM_AZIMUTH_ZERO_NON_DIEGETIC_FX;
        }
        ELSE IF( LE_16( idx_angle1, ISM_AZIMUTH_MIN_NON_DIEGETIC_FX ) )
        {
            idx_angle1 = ISM_AZIMUTH_ZERO_NON_DIEGETIC_FX;
        }
#endif
        idx_angle2 = angle->last_angle2_idx; /* second MD parameter is not transmitted for non-diegetic object */
        move16();
    }
+19 −0
Original line number Diff line number Diff line
@@ -320,7 +320,26 @@ void ivas_apply_non_diegetic_panning_fx(
    const Word16 output_frame              /* i  : output frame length per channel      */
)
{
#ifdef FIX_2570_BUF_OVFL
    Word16 pan;
    Word32 wrapped_angle;
    IF( LT_32( L_add( ONE_IN_Q25, non_diegetic_pan_gain_fx ), 0 ) )
    {
        wrapped_angle = L_negate( L_add( ONE_IN_Q26, non_diegetic_pan_gain_fx ) );
    }
    ELSE IF( GT_32( L_sub( non_diegetic_pan_gain_fx, ONE_IN_Q25 ), 0 ) )
    {
        wrapped_angle = L_sub( ONE_IN_Q26, non_diegetic_pan_gain_fx );
    }
    ELSE
    {
        wrapped_angle = non_diegetic_pan_gain_fx;
        move32();
    }
    pan = add( extract_h( L_shr( wrapped_angle, sub( non_diegetic_pan_gain_fx, Q21 ) ) ), 32 );
#else
    Word16 pan = add( mult_r( non_diegetic_pan_gain_fx, 32 ), 32 ); // 0.5.Q15 = 16384                             // Q15
#endif
    v_multc_fx_16( input_f_fx, cos_table_129[pan], output_fx[1], output_frame );
    v_multc_fx_16( input_f_fx, cos_table_129[64 - pan], output_fx[0], output_frame );

+20 −0
Original line number Diff line number Diff line
@@ -332,6 +332,9 @@ void TDREND_SRC_REND_UpdateFiltersFromSpatialParams_fx(
#ifdef FIX_1548_HARMONIZE_NON_DIEGETIC_PANNING_LAW
    Word16 pan;
#endif
#ifdef FIX_2570_BUF_OVFL
    Word32 wrapped_angle;
#endif
#ifdef FIX_BASOP_2023_TDREND_DISTATT_PRECISION
    Word16 pos_q;
    Word32 Src_p_tmp[3];
@@ -488,7 +491,24 @@ void TDREND_SRC_REND_UpdateFiltersFromSpatialParams_fx(
        set32_fx( hrf_right, 0, *filterlength );
#ifdef FIX_1548_HARMONIZE_NON_DIEGETIC_PANNING_LAW
#ifdef FIX_BASOP_2023_TDREND_DISTATT_PRECISION
#ifdef FIX_2570_BUF_OVFL
        IF( LT_32( L_add( ONE_IN_Q25, SrcSpatial_p->Pos_p_fx[1] ), 0 ) )
        {
            wrapped_angle = L_negate( L_add( ONE_IN_Q26, SrcSpatial_p->Pos_p_fx[1] ) );
        }
        ELSE IF( GT_32( L_sub( SrcSpatial_p->Pos_p_fx[1], ONE_IN_Q25 ), 0 ) )
        {
            wrapped_angle = L_sub( ONE_IN_Q26, SrcSpatial_p->Pos_p_fx[1] );
        }
        ELSE
        {
            wrapped_angle = SrcSpatial_p->Pos_p_fx[1];
            move32();
        }
        pan = add( extract_h( L_shr( wrapped_angle, sub( SrcSpatial_p->q_Pos_p, Q21 ) ) ), 32 );
#else
        pan = add( extract_h( L_shr( SrcSpatial_p->Pos_p_fx[1], sub( SrcSpatial_p->q_Pos_p, Q21 ) ) ), 32 );
#endif
#else
        pan = add( mult_r( extract_h( SrcSpatial_p->Pos_p_fx[1] ), 2048 ), 32 );
#endif