Loading lib_com/common_api_types.h +3 −3 Original line number Original line Diff line number Diff line Loading @@ -126,7 +126,7 @@ typedef struct _IVAS_ISM_METADATA Word32 elevation_fx; /* Q22 */ Word32 elevation_fx; /* Q22 */ Word16 radius_fx; /* Q9 */ Word16 radius_fx; /* Q9 */ Word32 spread_fx; /* Q22 */ Word32 spread_fx; /* Q22 */ Word32 gainFactor_fx; /* Q31 */ // TODO: Gain factor can't be Q31, due to the gain editing Word32 gainFactor_fx; /* Q29 */ Word32 yaw_fx; /* Q22 */ Word32 yaw_fx; /* Q22 */ Word32 pitch_fx; /* Q22 */ Word32 pitch_fx; /* Q22 */ float azimuth; float azimuth; Loading @@ -138,7 +138,7 @@ typedef struct _IVAS_ISM_METADATA float pitch; float pitch; Word16 non_diegetic_flag; Word16 non_diegetic_flag; #ifdef OBJ_EDITING_API #ifdef OBJ_EDITING_API Word32 gain_fx; Word32 gain_fx; // Q29 #endif #endif } IVAS_ISM_METADATA; } IVAS_ISM_METADATA; Loading @@ -148,7 +148,7 @@ typedef struct _IVAS_EDITABLE_PARAMETERS { { Word16 num_obj; Word16 num_obj; IVAS_ISM_METADATA ism_metadata[IVAS_MAX_NUM_OBJECTS]; IVAS_ISM_METADATA ism_metadata[IVAS_MAX_NUM_OBJECTS]; Word32 gain_bed_fx; Word32 gain_bed_fx; // Q29 } IVAS_EDITABLE_PARAMETERS; } IVAS_EDITABLE_PARAMETERS; #endif #endif Loading lib_com/ivas_ism_com_fx.c +2 −2 Original line number Original line Diff line number Diff line Loading @@ -471,13 +471,13 @@ void ivas_ism_reset_metadata( move16(); move16(); #ifdef OBJ_EDITING_API #ifdef OBJ_EDITING_API hIsmMeta->edited_gain_fx = ONE_IN_Q31; hIsmMeta->edited_gain_fx = ONE_IN_Q29; hIsmMeta->edited_azimuth_fx = 0; hIsmMeta->edited_azimuth_fx = 0; hIsmMeta->edited_elevation_fx = 0; hIsmMeta->edited_elevation_fx = 0; hIsmMeta->edited_pitch_fx = 0; hIsmMeta->edited_pitch_fx = 0; hIsmMeta->edited_yaw_fx = 0; hIsmMeta->edited_yaw_fx = 0; hIsmMeta->edited_radius_fx = ONE_IN_Q9; hIsmMeta->edited_radius_fx = ONE_IN_Q9; hIsmMeta->gain_fx = ONE_IN_Q31; hIsmMeta->gain_fx = ONE_IN_Q29; hIsmMeta->non_diegetic_flag = 0; hIsmMeta->non_diegetic_flag = 0; #endif #endif Loading lib_com/ivas_stat_com.h +2 −2 Original line number Original line Diff line number Diff line Loading @@ -66,7 +66,7 @@ typedef struct Word32 pitch_fx; /* pitch value read from the input metadata file */ /* Q22 */ Word32 pitch_fx; /* pitch value read from the input metadata file */ /* Q22 */ #ifdef OBJ_EDITING_API #ifdef OBJ_EDITING_API Word32 gain_fx; /* Q31 */ Word32 gain_fx; /* Q29 */ Word32 edited_azimuth_fx; /* Q22 */ Word32 edited_azimuth_fx; /* Q22 */ Word32 edited_elevation_fx; /* Q22 */ Word32 edited_elevation_fx; /* Q22 */ Loading @@ -74,7 +74,7 @@ typedef struct Word32 edited_yaw_fx; /* Q22 */ Word32 edited_yaw_fx; /* Q22 */ Word32 edited_pitch_fx; /* Q22 */ Word32 edited_pitch_fx; /* Q22 */ Word32 edited_gain_fx; /* Q31 */ Word32 edited_gain_fx; /* Q29 */ #endif #endif Word16 non_diegetic_flag; /* Non-diegetic (non-headtracked) object flag */ Word16 non_diegetic_flag; /* Non-diegetic (non-headtracked) object flag */ Loading lib_dec/ivas_dirac_dec_fx.c +3 −2 Original line number Original line Diff line number Diff line Loading @@ -3779,9 +3779,10 @@ void ivas_dirac_dec_render_sf_fx( efap_determine_gains_fx( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains_fx[i], azi_fx, ele_fx, EFAP_MODE_EFAP ); efap_determine_gains_fx( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains_fx[i], azi_fx, ele_fx, EFAP_MODE_EFAP ); #ifdef OBJ_EDITING_API #ifdef OBJ_EDITING_API // TODO: Align Q-values // TODO: Align Q-values IF( NE_32( st_ivas->hIsmMetaData[i]->edited_gain_fx, ONE_IN_Q31 ) ) IF( NE_32( st_ivas->hIsmMetaData[i]->edited_gain_fx, ONE_IN_Q29 ) ) { { v_multc_fx( st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hIsmMetaData[i]->edited_gain_fx, st_ivas->hIsmRendererData->gains_fx[i], nchan_out_woLFE ); // Q30, Q30 --> Q30 v_multc_fx( st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hIsmMetaData[i]->edited_gain_fx, st_ivas->hIsmRendererData->gains_fx[i], nchan_out_woLFE ); // Q30, Q29 --> Q28 Scale_sig32( st_ivas->hIsmRendererData->gains_fx[i], nchan_out_woLFE, Q2 ); // Q28 --> Q30 } } #endif #endif } } Loading lib_dec/ivas_ism_param_dec_fx.c +9 −6 Original line number Original line Diff line number Diff line Loading @@ -1001,9 +1001,10 @@ void ivas_ism_dec_digest_tc_fx( st_ivas->hIsmRendererData->gains_fx[i][1] = L_shr( L_deposit_h( gains_fx[1] ), 1 ); // Q31 -> Q30 st_ivas->hIsmRendererData->gains_fx[i][1] = L_shr( L_deposit_h( gains_fx[1] ), 1 ); // Q31 -> Q30 move32(); move32(); // TODO: Align Q values // TODO: Align Q values IF( NE_32( st_ivas->hIsmMetaData[i]->edited_gain_fx, ONE_IN_Q31 ) ) IF( NE_32( st_ivas->hIsmMetaData[i]->edited_gain_fx, ONE_IN_Q29 ) ) { { v_multc_fx( st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hIsmMetaData[i]->edited_gain_fx, st_ivas->hIsmRendererData->gains_fx[i], CPE_CHANNELS ); // Q30, Q30 --> Q30 v_multc_fx( st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hIsmMetaData[i]->edited_gain_fx, st_ivas->hIsmRendererData->gains_fx[i], CPE_CHANNELS ); // Q30, Q29 --> Q28 Scale_sig32( st_ivas->hIsmRendererData->gains_fx[i], CPE_CHANNELS, Q2 ); // Q28 --> Q30 } } #else #else Loading Loading @@ -1054,9 +1055,10 @@ void ivas_ism_dec_digest_tc_fx( efap_determine_gains_fx( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains_fx[i], azimuth_fx, elevation_fx, EFAP_MODE_EFAP ); efap_determine_gains_fx( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains_fx[i], azimuth_fx, elevation_fx, EFAP_MODE_EFAP ); #ifdef OBJ_EDITING_API #ifdef OBJ_EDITING_API // TODO: align Q values properly // TODO: align Q values properly IF( NE_32( st_ivas->hIsmMetaData[i]->edited_gain_fx, ONE_IN_Q31 ) ) IF( NE_32( st_ivas->hIsmMetaData[i]->edited_gain_fx, ONE_IN_Q29 ) ) { { v_multc_fx( st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hIsmMetaData[i]->edited_gain_fx, st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hEFAPdata->numSpk ); v_multc_fx( st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hIsmMetaData[i]->edited_gain_fx, st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hEFAPdata->numSpk ); // Q30, Q29 --> Q28 Scale_sig32( st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hEFAPdata->numSpk, Q2 ); // Q28 --> Q30 } } #endif #endif } } Loading @@ -1071,9 +1073,10 @@ void ivas_ism_dec_digest_tc_fx( ivas_dirac_dec_get_response_fx( azi, ele, st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hIntSetup.ambisonics_order, Q30 ); ivas_dirac_dec_get_response_fx( azi, ele, st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hIntSetup.ambisonics_order, Q30 ); #ifdef OBJ_EDITING_API #ifdef OBJ_EDITING_API // TODO: Align Q-values // TODO: Align Q-values IF( NE_32( st_ivas->hIsmMetaData[i]->edited_gain_fx, ONE_IN_Q31 ) ) IF( NE_32( st_ivas->hIsmMetaData[i]->edited_gain_fx, ONE_IN_Q29 ) ) { { v_multc_fx( st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hIsmMetaData[i]->edited_gain_fx, st_ivas->hIsmRendererData->gains_fx[i], ivas_sba_get_nchan_fx( st_ivas->hIntSetup.ambisonics_order, 0 ) ); // Q30, Q30 --> Q30 v_multc_fx( st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hIsmMetaData[i]->edited_gain_fx, st_ivas->hIsmRendererData->gains_fx[i], ivas_sba_get_nchan_fx( st_ivas->hIntSetup.ambisonics_order, 0 ) ); // Q30, Q29 --> Q28 Scale_sig32( st_ivas->hIsmRendererData->gains_fx[i], ivas_sba_get_nchan_fx( st_ivas->hIntSetup.ambisonics_order, 0 ), Q2 ); // Q28 --> 30 } } #endif #endif } } Loading Loading
lib_com/common_api_types.h +3 −3 Original line number Original line Diff line number Diff line Loading @@ -126,7 +126,7 @@ typedef struct _IVAS_ISM_METADATA Word32 elevation_fx; /* Q22 */ Word32 elevation_fx; /* Q22 */ Word16 radius_fx; /* Q9 */ Word16 radius_fx; /* Q9 */ Word32 spread_fx; /* Q22 */ Word32 spread_fx; /* Q22 */ Word32 gainFactor_fx; /* Q31 */ // TODO: Gain factor can't be Q31, due to the gain editing Word32 gainFactor_fx; /* Q29 */ Word32 yaw_fx; /* Q22 */ Word32 yaw_fx; /* Q22 */ Word32 pitch_fx; /* Q22 */ Word32 pitch_fx; /* Q22 */ float azimuth; float azimuth; Loading @@ -138,7 +138,7 @@ typedef struct _IVAS_ISM_METADATA float pitch; float pitch; Word16 non_diegetic_flag; Word16 non_diegetic_flag; #ifdef OBJ_EDITING_API #ifdef OBJ_EDITING_API Word32 gain_fx; Word32 gain_fx; // Q29 #endif #endif } IVAS_ISM_METADATA; } IVAS_ISM_METADATA; Loading @@ -148,7 +148,7 @@ typedef struct _IVAS_EDITABLE_PARAMETERS { { Word16 num_obj; Word16 num_obj; IVAS_ISM_METADATA ism_metadata[IVAS_MAX_NUM_OBJECTS]; IVAS_ISM_METADATA ism_metadata[IVAS_MAX_NUM_OBJECTS]; Word32 gain_bed_fx; Word32 gain_bed_fx; // Q29 } IVAS_EDITABLE_PARAMETERS; } IVAS_EDITABLE_PARAMETERS; #endif #endif Loading
lib_com/ivas_ism_com_fx.c +2 −2 Original line number Original line Diff line number Diff line Loading @@ -471,13 +471,13 @@ void ivas_ism_reset_metadata( move16(); move16(); #ifdef OBJ_EDITING_API #ifdef OBJ_EDITING_API hIsmMeta->edited_gain_fx = ONE_IN_Q31; hIsmMeta->edited_gain_fx = ONE_IN_Q29; hIsmMeta->edited_azimuth_fx = 0; hIsmMeta->edited_azimuth_fx = 0; hIsmMeta->edited_elevation_fx = 0; hIsmMeta->edited_elevation_fx = 0; hIsmMeta->edited_pitch_fx = 0; hIsmMeta->edited_pitch_fx = 0; hIsmMeta->edited_yaw_fx = 0; hIsmMeta->edited_yaw_fx = 0; hIsmMeta->edited_radius_fx = ONE_IN_Q9; hIsmMeta->edited_radius_fx = ONE_IN_Q9; hIsmMeta->gain_fx = ONE_IN_Q31; hIsmMeta->gain_fx = ONE_IN_Q29; hIsmMeta->non_diegetic_flag = 0; hIsmMeta->non_diegetic_flag = 0; #endif #endif Loading
lib_com/ivas_stat_com.h +2 −2 Original line number Original line Diff line number Diff line Loading @@ -66,7 +66,7 @@ typedef struct Word32 pitch_fx; /* pitch value read from the input metadata file */ /* Q22 */ Word32 pitch_fx; /* pitch value read from the input metadata file */ /* Q22 */ #ifdef OBJ_EDITING_API #ifdef OBJ_EDITING_API Word32 gain_fx; /* Q31 */ Word32 gain_fx; /* Q29 */ Word32 edited_azimuth_fx; /* Q22 */ Word32 edited_azimuth_fx; /* Q22 */ Word32 edited_elevation_fx; /* Q22 */ Word32 edited_elevation_fx; /* Q22 */ Loading @@ -74,7 +74,7 @@ typedef struct Word32 edited_yaw_fx; /* Q22 */ Word32 edited_yaw_fx; /* Q22 */ Word32 edited_pitch_fx; /* Q22 */ Word32 edited_pitch_fx; /* Q22 */ Word32 edited_gain_fx; /* Q31 */ Word32 edited_gain_fx; /* Q29 */ #endif #endif Word16 non_diegetic_flag; /* Non-diegetic (non-headtracked) object flag */ Word16 non_diegetic_flag; /* Non-diegetic (non-headtracked) object flag */ Loading
lib_dec/ivas_dirac_dec_fx.c +3 −2 Original line number Original line Diff line number Diff line Loading @@ -3779,9 +3779,10 @@ void ivas_dirac_dec_render_sf_fx( efap_determine_gains_fx( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains_fx[i], azi_fx, ele_fx, EFAP_MODE_EFAP ); efap_determine_gains_fx( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains_fx[i], azi_fx, ele_fx, EFAP_MODE_EFAP ); #ifdef OBJ_EDITING_API #ifdef OBJ_EDITING_API // TODO: Align Q-values // TODO: Align Q-values IF( NE_32( st_ivas->hIsmMetaData[i]->edited_gain_fx, ONE_IN_Q31 ) ) IF( NE_32( st_ivas->hIsmMetaData[i]->edited_gain_fx, ONE_IN_Q29 ) ) { { v_multc_fx( st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hIsmMetaData[i]->edited_gain_fx, st_ivas->hIsmRendererData->gains_fx[i], nchan_out_woLFE ); // Q30, Q30 --> Q30 v_multc_fx( st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hIsmMetaData[i]->edited_gain_fx, st_ivas->hIsmRendererData->gains_fx[i], nchan_out_woLFE ); // Q30, Q29 --> Q28 Scale_sig32( st_ivas->hIsmRendererData->gains_fx[i], nchan_out_woLFE, Q2 ); // Q28 --> Q30 } } #endif #endif } } Loading
lib_dec/ivas_ism_param_dec_fx.c +9 −6 Original line number Original line Diff line number Diff line Loading @@ -1001,9 +1001,10 @@ void ivas_ism_dec_digest_tc_fx( st_ivas->hIsmRendererData->gains_fx[i][1] = L_shr( L_deposit_h( gains_fx[1] ), 1 ); // Q31 -> Q30 st_ivas->hIsmRendererData->gains_fx[i][1] = L_shr( L_deposit_h( gains_fx[1] ), 1 ); // Q31 -> Q30 move32(); move32(); // TODO: Align Q values // TODO: Align Q values IF( NE_32( st_ivas->hIsmMetaData[i]->edited_gain_fx, ONE_IN_Q31 ) ) IF( NE_32( st_ivas->hIsmMetaData[i]->edited_gain_fx, ONE_IN_Q29 ) ) { { v_multc_fx( st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hIsmMetaData[i]->edited_gain_fx, st_ivas->hIsmRendererData->gains_fx[i], CPE_CHANNELS ); // Q30, Q30 --> Q30 v_multc_fx( st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hIsmMetaData[i]->edited_gain_fx, st_ivas->hIsmRendererData->gains_fx[i], CPE_CHANNELS ); // Q30, Q29 --> Q28 Scale_sig32( st_ivas->hIsmRendererData->gains_fx[i], CPE_CHANNELS, Q2 ); // Q28 --> Q30 } } #else #else Loading Loading @@ -1054,9 +1055,10 @@ void ivas_ism_dec_digest_tc_fx( efap_determine_gains_fx( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains_fx[i], azimuth_fx, elevation_fx, EFAP_MODE_EFAP ); efap_determine_gains_fx( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains_fx[i], azimuth_fx, elevation_fx, EFAP_MODE_EFAP ); #ifdef OBJ_EDITING_API #ifdef OBJ_EDITING_API // TODO: align Q values properly // TODO: align Q values properly IF( NE_32( st_ivas->hIsmMetaData[i]->edited_gain_fx, ONE_IN_Q31 ) ) IF( NE_32( st_ivas->hIsmMetaData[i]->edited_gain_fx, ONE_IN_Q29 ) ) { { v_multc_fx( st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hIsmMetaData[i]->edited_gain_fx, st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hEFAPdata->numSpk ); v_multc_fx( st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hIsmMetaData[i]->edited_gain_fx, st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hEFAPdata->numSpk ); // Q30, Q29 --> Q28 Scale_sig32( st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hEFAPdata->numSpk, Q2 ); // Q28 --> Q30 } } #endif #endif } } Loading @@ -1071,9 +1073,10 @@ void ivas_ism_dec_digest_tc_fx( ivas_dirac_dec_get_response_fx( azi, ele, st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hIntSetup.ambisonics_order, Q30 ); ivas_dirac_dec_get_response_fx( azi, ele, st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hIntSetup.ambisonics_order, Q30 ); #ifdef OBJ_EDITING_API #ifdef OBJ_EDITING_API // TODO: Align Q-values // TODO: Align Q-values IF( NE_32( st_ivas->hIsmMetaData[i]->edited_gain_fx, ONE_IN_Q31 ) ) IF( NE_32( st_ivas->hIsmMetaData[i]->edited_gain_fx, ONE_IN_Q29 ) ) { { v_multc_fx( st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hIsmMetaData[i]->edited_gain_fx, st_ivas->hIsmRendererData->gains_fx[i], ivas_sba_get_nchan_fx( st_ivas->hIntSetup.ambisonics_order, 0 ) ); // Q30, Q30 --> Q30 v_multc_fx( st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hIsmMetaData[i]->edited_gain_fx, st_ivas->hIsmRendererData->gains_fx[i], ivas_sba_get_nchan_fx( st_ivas->hIntSetup.ambisonics_order, 0 ) ); // Q30, Q29 --> Q28 Scale_sig32( st_ivas->hIsmRendererData->gains_fx[i], ivas_sba_get_nchan_fx( st_ivas->hIntSetup.ambisonics_order, 0 ), Q2 ); // Q28 --> 30 } } #endif #endif } } Loading