Loading lib_com/ivas_cnst.h +0 −5 Original line number Diff line number Diff line Loading @@ -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 */ Loading lib_dec/ivas_ism_metadata_dec_fx.c +0 −11 Original line number Diff line number Diff line Loading @@ -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(); } Loading lib_dec/ivas_mono_dmx_renderer_fx.c +19 −0 Original line number Diff line number Diff line Loading @@ -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 ); Loading lib_rend/ivas_objectRenderer_sources_fx.c +20 −0 Original line number Diff line number Diff line Loading @@ -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]; Loading Loading @@ -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 Loading Loading
lib_com/ivas_cnst.h +0 −5 Original line number Diff line number Diff line Loading @@ -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 */ Loading
lib_dec/ivas_ism_metadata_dec_fx.c +0 −11 Original line number Diff line number Diff line Loading @@ -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(); } Loading
lib_dec/ivas_mono_dmx_renderer_fx.c +19 −0 Original line number Diff line number Diff line Loading @@ -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 ); Loading
lib_rend/ivas_objectRenderer_sources_fx.c +20 −0 Original line number Diff line number Diff line Loading @@ -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]; Loading Loading @@ -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 Loading