Unverified Commit aff5c1bc authored by Sumeyra Demir Kanik's avatar Sumeyra Demir Kanik
Browse files

Resolve conflicts from gain limiting

parents 0fe89e92 7b36c742
Loading
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -177,6 +177,12 @@ typedef enum
#define MAX_SPAR_INTERNAL_CHANNELS              IVAS_SPAR_MAX_CH
#define MAX_CLDFB_DIGEST_CHANNELS               3                           /* == maximum of ParamISM TCs and ParamMC TCs */

#ifdef FIX_GAIN_EDIT_LIMITS
#define EDIT_GAIN_MIN                           0.0630957f                     /* Minimum allowed gain edit with parametric modes: -24 dB */
#define EDIT_GAIN_MAX                           3.9810719f                     /* Maximum allowed gain edit: +12 dB */
#endif


typedef enum
{
    TC_BUFFER_MODE_RENDERER,
+1 −0
Original line number Diff line number Diff line
@@ -195,6 +195,7 @@
#define FIX_1330_JBM_MEMORY_FIX                         /* VA: basop issue: 2179 fix non-BE difference in FIX_1330_JBM_MEMORY */
#define NONBE_1380_OMASA_BUILD_DIFF                     /* Nokia: Fix for issue #1380: Large differences in OMASA output between Debug and Release builds */
#define NONBE_FIX_1426_STEREO_PANNING_BETWEEN_OPT_LEVEL /* Nokia: Adjustments in remaining stereo panning functions to make them BE between Debug and Release */
#define FIX_GAIN_EDIT_LIMITS                                 /* Harmonize gain edit limits for all opertation points. For all modes, limit to max +12dB. For parametric modes, limit to min -24dB. */


#define FIX_1430_EVS_STEREO_DMX_CHANNEL_DISAPPEARING    /* Orange: Fix for basop issue 2184 - to prevent one channel from becoming inaudible in the mono downmix output */
+89 −0
Original line number Diff line number Diff line
@@ -1528,13 +1528,35 @@ ivas_error IVAS_DEC_SetEditableParameters(
                st_ivas->hIsmMetaData[obj]->edited_radius = hIvasEditableParameters.ism_metadata[obj].radius;
                st_ivas->hIsmMetaData[obj]->edited_yaw = hIvasEditableParameters.ism_metadata[obj].yaw;
                st_ivas->hIsmMetaData[obj]->edited_pitch = hIvasEditableParameters.ism_metadata[obj].pitch;
#ifdef FIX_GAIN_EDIT_LIMITS
                if ( hIvasEditableParameters.ism_metadata[obj].gain > EDIT_GAIN_MAX )
                {
                    st_ivas->hIsmMetaData[obj]->edited_gain = EDIT_GAIN_MAX;
                }
                else
                {
                    st_ivas->hIsmMetaData[obj]->edited_gain = hIvasEditableParameters.ism_metadata[obj].gain;
                }
#else
                st_ivas->hIsmMetaData[obj]->edited_gain = hIvasEditableParameters.ism_metadata[obj].gain;
#endif
                st_ivas->hIsmMetaData[obj]->non_diegetic_flag = hIvasEditableParameters.ism_metadata[obj].non_diegetic_flag;
            }

            if ( ism_mode == ISM_SBA_MODE_DISC )
            {
#ifdef FIX_GAIN_EDIT_LIMITS
                if ( hIvasEditableParameters.gain_bed > EDIT_GAIN_MAX )
                {
                    st_ivas->hSbaIsmData->gain_bed = EDIT_GAIN_MAX;
                }
                else
                {
                    st_ivas->hSbaIsmData->gain_bed = hIvasEditableParameters.gain_bed;
                }
#else
                st_ivas->hSbaIsmData->gain_bed = hIvasEditableParameters.gain_bed;
#endif
            }
        }
        else if ( ism_mode == ISM_MODE_PARAM )
@@ -1549,7 +1571,23 @@ ivas_error IVAS_DEC_SetEditableParameters(

                if ( st_ivas->hMasaIsmData != NULL )
                {
#ifdef FIX_GAIN_EDIT_LIMITS
                    /* Limit gain edit to a range of +12dB to -24dB with parametric ISM mode */
                    if ( hIvasEditableParameters.ism_metadata[obj].gain > EDIT_GAIN_MAX )
                    {
                        st_ivas->hMasaIsmData->gain_ism_edited[obj] = EDIT_GAIN_MAX;
                    }
                    else if ( hIvasEditableParameters.ism_metadata[obj].gain < EDIT_GAIN_MIN )
                    {
                        st_ivas->hMasaIsmData->gain_ism_edited[obj] = EDIT_GAIN_MIN;
                    }
                    else
                    {
                        st_ivas->hMasaIsmData->gain_ism_edited[obj] = hIvasEditableParameters.ism_metadata[obj].gain;
                    }
#else
                    st_ivas->hMasaIsmData->gain_ism_edited[obj] = hIvasEditableParameters.ism_metadata[obj].gain;
#endif

                    /* Detect direction editing in Param-ISM mode */
                    if ( fabsf( st_ivas->hParamIsmDec->azimuth_values[obj] - hIvasEditableParameters.ism_metadata[obj].azimuth ) > OMASA_AZI_EDIT_THR ||
@@ -1683,7 +1721,23 @@ ivas_error IVAS_DEC_SetEditableParameters(
                if ( fabsf( st_ivas->hIsmMetaData[obj]->edited_gain - hIvasEditableParameters.ism_metadata[obj].gain ) > OMASA_GAIN_EDIT_THR )
                {
                    st_ivas->hMasaIsmData->ism_gain_is_edited[obj] = 1u;
#ifdef FIX_GAIN_EDIT_LIMITS
                    /* Limit masa gain edit to a range of +12dB to -infdB with discrete OMASA mode and +12dB to -24dB with parametric OMASA mode  */
                    if ( hIvasEditableParameters.ism_metadata[obj].gain > EDIT_GAIN_MAX )
                    {
                        st_ivas->hMasaIsmData->gain_ism_edited[obj] = EDIT_GAIN_MAX;
                    }
                    else if ( ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ && hIvasEditableParameters.ism_metadata[obj].gain < EDIT_GAIN_MIN )
                    {
                        st_ivas->hMasaIsmData->gain_ism_edited[obj] = EDIT_GAIN_MIN;
                    }
                    else
                    {
                        st_ivas->hMasaIsmData->gain_ism_edited[obj] = hIvasEditableParameters.ism_metadata[obj].gain;
                    }
#else
                    st_ivas->hMasaIsmData->gain_ism_edited[obj] = hIvasEditableParameters.ism_metadata[obj].gain;
#endif
                }
                else
                {
@@ -1703,15 +1757,50 @@ ivas_error IVAS_DEC_SetEditableParameters(
                    st_ivas->hIsmMetaData[obj]->edited_pitch = hIvasEditableParameters.ism_metadata[obj].pitch;
                    st_ivas->hIsmMetaData[obj]->edited_radius = hIvasEditableParameters.ism_metadata[obj].radius;
                }
#else
                st_ivas->hIsmMetaData[obj]->edited_yaw = hIvasEditableParameters.ism_metadata[obj].yaw;
                st_ivas->hIsmMetaData[obj]->edited_pitch = hIvasEditableParameters.ism_metadata[obj].pitch;
                st_ivas->hIsmMetaData[obj]->edited_radius = hIvasEditableParameters.ism_metadata[obj].radius;
#endif
#ifdef FIX_GAIN_EDIT_LIMITS
                if ( hIvasEditableParameters.ism_metadata[obj].gain > EDIT_GAIN_MAX )
                {
                    st_ivas->hIsmMetaData[obj]->edited_gain = EDIT_GAIN_MAX;
                }
                else if ( ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ && hIvasEditableParameters.ism_metadata[obj].gain < EDIT_GAIN_MIN )
                {
                    st_ivas->hIsmMetaData[obj]->edited_gain = EDIT_GAIN_MIN;
                }
                else
                {
                    st_ivas->hIsmMetaData[obj]->edited_gain = hIvasEditableParameters.ism_metadata[obj].gain;
                }
#else
                st_ivas->hIsmMetaData[obj]->edited_gain = hIvasEditableParameters.ism_metadata[obj].gain;
#endif
                st_ivas->hIsmMetaData[obj]->non_diegetic_flag = hIvasEditableParameters.ism_metadata[obj].non_diegetic_flag;
            }
        }

        if ( fabsf( hIvasEditableParameters.gain_bed - 1.0f ) > OMASA_GAIN_EDIT_THR )
        {
#ifdef FIX_GAIN_EDIT_LIMITS
            /* Limit masa gain edit to a range of +12dB to -infdB with discrete OMASA mode and +12dB to -24dB with parametric OMASA mode */
            if ( hIvasEditableParameters.gain_bed > EDIT_GAIN_MAX )
            {
                st_ivas->hMasaIsmData->gain_masa_edited = EDIT_GAIN_MAX;
            }
            else if ( ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ && hIvasEditableParameters.gain_bed < EDIT_GAIN_MIN )
            {
                st_ivas->hMasaIsmData->gain_masa_edited = EDIT_GAIN_MIN;
            }
            else
            {
                st_ivas->hMasaIsmData->gain_masa_edited = hIvasEditableParameters.gain_bed;
            }
#else
            st_ivas->hMasaIsmData->gain_masa_edited = hIvasEditableParameters.gain_bed;
#endif
            st_ivas->hMasaIsmData->masa_gain_is_edited = 1u;
        }
        else
+7 −1
Original line number Diff line number Diff line
@@ -40,12 +40,18 @@ the United Nations Convention on Contracts on the International Sales of Goods.
/*---------------------------------------------------------------------*
 * Constants ans structures
 *---------------------------------------------------------------------*/

#ifdef FIX_GAIN_EDIT_LIMITS
#define OBJ_EDIT_GAIN_MIN 0.0f       /* -inf dB */
#define OBJ_EDIT_GAIN_MAX 3.9810719f /* +12 dB */
#else
#define OBJ_EDIT_GAIN_MIN 0.06309573f /* -24 dB */
#define OBJ_EDIT_GAIN_MAX 15.84893f   /* +24 dB */
#endif

#ifdef FIX_1427_OBJ_EDITING_EXT_METADATA
#define OBJ_EDIT_RADIUS_MAX 15.75f /* Max radius = (2^ISM_RADIUS_NBITS-1)*0.25 = 15.75 */
#endif

typedef struct ObjectEditFileReader ObjectEditFileReader;
typedef struct ReadObjectEditInfo ReadObjectEditInfo;

+10 −2
Original line number Diff line number Diff line
@@ -86,7 +86,7 @@ if __name__ == '__main__':
    # Relies on the list being sorted
    i = 0
    while i + 1 < len(cmds_enc):
        if " ".join(cmds_enc[i].split()[:-1]) == " ".join(cmds_enc[i+1].split()[:-1]):
        if cmds_enc[i].split()[:-1] == cmds_enc[i+1].split()[:-1]:
            del cmds_enc[i+1]
        else:
            i = i + 1
@@ -185,6 +185,8 @@ if __name__ == '__main__':
        with open('scripts/rend_header.txt','r') as header:
            outfile.write(header.read())
        for cmd in cmds_rend:
            absolute_out = re.search(r"-o ([^>]+\.wav)", cmd)
            
            args = []
            for arg in cmd.split():
                # Adjust file arguments, pass other arguments as they are
@@ -200,8 +202,14 @@ if __name__ == '__main__':
            if "ref" in cmd:
                outfile.write(cmd+'\n')
            out = re.search(r"-o\s(([\S]+)(.wav|.raw|.pcm))", cmd)

            if out and "ref" in out.group(1):
                outfile.write('$DIFF_BIN '+out.group(1).replace(CUT_PATH + r'/renderer_short/ref',REF_PATH + r'/renderer_short/ref')+' '+out.group(1)+' >> $LOG_FILE 2>&1\n')
                diff_cmds=[]
                for output in glob.glob(absolute_out.group(1) + '*'):
                    output = path.relpath(output).replace('\\','/')
                    output = re.sub('tests', CUT_PATH, output)
                    diff_cmds.append('$DIFF_BIN '+output.replace(CUT_PATH + r'/renderer_short/ref',REF_PATH + r'/renderer_short/ref')+' '+ output +' >> $LOG_FILE 2>&1')
                outfile.write(('; ').join(diff_cmds))
                outfile.write('\n')            
        with open('scripts/script_footer.txt','r') as footer:
            outfile.write(footer.read())