Commit 7e8341b4 authored by lintervo's avatar lintervo
Browse files

Harmonize gain editing to Q29

parent e8a4f5ac
Loading
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -126,7 +126,7 @@ typedef struct _IVAS_ISM_METADATA
    Word32 elevation_fx;            /* Q22 */
    Word16 radius_fx;               /* Q9 */
    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 pitch_fx;                /* Q22 */
    float azimuth;
@@ -138,7 +138,7 @@ typedef struct _IVAS_ISM_METADATA
    float pitch;
    Word16 non_diegetic_flag;
#ifdef OBJ_EDITING_API
    Word32 gain_fx;
    Word32 gain_fx;     // Q29
#endif

} IVAS_ISM_METADATA;
@@ -148,7 +148,7 @@ typedef struct _IVAS_EDITABLE_PARAMETERS
{
    Word16 num_obj;
    IVAS_ISM_METADATA ism_metadata[IVAS_MAX_NUM_OBJECTS];
    Word32 gain_bed_fx;
    Word32 gain_bed_fx;     // Q29
} IVAS_EDITABLE_PARAMETERS;
#endif

+2 −2
Original line number Diff line number Diff line
@@ -471,13 +471,13 @@ void ivas_ism_reset_metadata(
    move16();

#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_elevation_fx = 0;
    hIsmMeta->edited_pitch_fx = 0;
    hIsmMeta->edited_yaw_fx = 0;
    hIsmMeta->edited_radius_fx = ONE_IN_Q9;
    hIsmMeta->gain_fx = ONE_IN_Q31;
    hIsmMeta->gain_fx = ONE_IN_Q29;
    hIsmMeta->non_diegetic_flag = 0;
#endif

+2 −2
Original line number Diff line number Diff line
@@ -66,7 +66,7 @@ typedef struct
    Word32 pitch_fx; /* pitch value read from the input metadata file */         /* Q22 */

#ifdef OBJ_EDITING_API
    Word32 gain_fx; /* Q31 */
    Word32 gain_fx; /* Q29 */

    Word32 edited_azimuth_fx;   /* Q22 */
    Word32 edited_elevation_fx; /* Q22 */
@@ -74,7 +74,7 @@ typedef struct

    Word32 edited_yaw_fx;   /* Q22 */
    Word32 edited_pitch_fx; /* Q22 */
    Word32 edited_gain_fx;  /* Q31 */
    Word32 edited_gain_fx;  /* Q29 */
#endif

    Word16 non_diegetic_flag; /* Non-diegetic (non-headtracked) object flag */
+3 −2
Original line number Diff line number Diff line
@@ -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 );
#ifdef OBJ_EDITING_API
                        // 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
                    }
+9 −6
Original line number Diff line number Diff line
@@ -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
                move32();
                // 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
@@ -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 );
#ifdef OBJ_EDITING_API
                        // 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
                    }
@@ -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 );
#ifdef OBJ_EDITING_API
                    // 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
                }
Loading