Commit bd3c0430 authored by TYAGIRIS's avatar TYAGIRIS
Browse files

Merge branch 'main' into 1378_conformance_script_isar

parents 9fe09161 c42975a1
Loading
Loading
Loading
Loading
Loading
+110 −0
Original line number Diff line number Diff line
@@ -41,6 +41,10 @@
#ifdef IVAS_RTPDUMP
#include "ivas_rtp_file.h"
#endif
#ifdef IVAS_RTPDUMP_ACOUSTIC_ENVIRONMENT
#include "ivas_cnst.h"
#endif

#include "jbm_file_writer.h"
#include "hrtf_file_reader.h"
#include "ls_custom_file_reader.h"
@@ -229,6 +233,10 @@ int main(
    IVAS_RENDER_FRAMESIZE asked_frame_size;
    IVAS_DEC_HRTF_BINARY_WRAPPER hHrtfBinary;
    ObjectEditFileReader *objectEditFileReader = NULL;
#ifdef IVAS_RTPDUMP_ACOUSTIC_ENVIRONMENT
    IVAS_ROOM_ACOUSTICS_CONFIG_DATA **pAE = NULL;
    uint32_t aeCount = 0;
#endif
#ifdef DEBUGGING
    int32_t noClipping;
    int32_t cnt_frames_limited;
@@ -453,7 +461,11 @@ int main(
     *------------------------------------------------------------------------------------------*/

    asked_frame_size = arg.renderFramesize;
#ifdef IVAS_RTPDUMP_ACOUSTIC_ENVIRONMENT
    uint16_t aeID = arg.aeSequence.count > 0 ? arg.aeSequence.pID[0] : IVAS_DEFAULT_AEID;
#else
    uint16_t aeID = arg.aeSequence.count > 0 ? arg.aeSequence.pID[0] : 65535;
#endif

#ifdef IVAS_RTPDUMP
    arg.enableHeadRotation = arg.enableHeadRotation || arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM;
@@ -634,6 +646,47 @@ int main(
            fprintf( stderr, "Failed to read renderer configuration from file %s\n\n", arg.renderConfigFilename );
            goto cleanup;
        }
#ifdef IVAS_RTPDUMP_ACOUSTIC_ENVIRONMENT
        aeCount = RenderConfigReader_getAcousticEnvironmentCount( renderConfigReader );
        if ( aeCount > 0 )
        {
            uint32_t n;

            pAE = malloc( aeCount * sizeof( IVAS_ROOM_ACOUSTICS_CONFIG_DATA * ) );

            if ( pAE == NULL )
            {
                fprintf( stderr, "\nError: cannot allocate memory for acoustic environment array\n\n" );
                goto cleanup;
            }

            for ( n = 0; n < aeCount; n++ )
            {
                pAE[n] = NULL;

                if ( NULL == ( pAE[n] = malloc( sizeof( IVAS_ROOM_ACOUSTICS_CONFIG_DATA ) ) ) )
                {
                    fprintf( stderr, "\nError: cannot allocate memory for acoustic environment\n\n" );
                    goto cleanup;
                }
            }

            if ( ( error = RenderConfigReader_getAcousticEnvironments( renderConfigReader, pAE ) ) != IVAS_ERR_OK )
            {
                fprintf( stderr, "Error while getting acoustic environments\n\n" );
                goto cleanup;
            }

            for ( n = 0; n < aeCount; n++ )
            {
                if ( ( error = IVAS_DEC_AddAcousticEnvironment( hIvasDec, *pAE[n] ) ) != IVAS_ERR_OK )
                {
                    fprintf( stderr, "Failed to add acoustic environments\n\n" );
                    goto cleanup;
                }
            }
        }
#endif

        if ( ( error = RenderConfigReader_getDirectivity( renderConfigReader, arg.directivityPatternId, renderConfig.directivity ) ) != IVAS_ERR_OK )
        {
@@ -672,7 +725,11 @@ int main(

        if ( arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB )
        {
#ifdef IVAS_RTPDUMP_ACOUSTIC_ENVIRONMENT
            if ( ( error = IVAS_DEC_GetAcousticEnvironment( hIvasDec, aeID, &renderConfig.roomAcoustics ) ) == IVAS_ERR_OK )
#else
            if ( ( error = RenderConfigReader_getAcousticEnvironment( renderConfigReader, aeID, &renderConfig.roomAcoustics ) ) == IVAS_ERR_OK )
#endif
            {
                if ( RenderConfigReader_checkValues( &renderConfig ) != IVAS_ERR_OK )
                {
@@ -807,6 +864,19 @@ cleanup:

    free( pcmBuf );

#ifdef IVAS_RTPDUMP_ACOUSTIC_ENVIRONMENT
    if ( pAE != NULL )
    {
        uint16_t n;

        for ( n = 0; n < aeCount; n++ )
        {
            free( pAE[n] );
        }

        free( pAE );
    }
#endif
    if ( arg.aeSequence.count > 0 )
    {
        free( arg.aeSequence.pID );
@@ -4182,6 +4252,46 @@ static void do_object_editing(
                        editableParameters->ism_metadata[obj_idx].elevation = readInfo->obj_ele[obj_idx];
                    }
                }
#ifdef FIX_1427_OBJ_EDITING_EXT_METADATA
                /* object direction editing only for diegetic objects */
                if ( readInfo->obj_yaw_edited[obj_idx] )
                {
                    if ( readInfo->obj_yaw_relative[obj_idx] )
                    {
                        /* yaw: apply relative edit + wrap */
                        editableParameters->ism_metadata[obj_idx].yaw = fmodf( editableParameters->ism_metadata[obj_idx].yaw + readInfo->obj_yaw[obj_idx] + 540.f, 360.f ) - 180.f;
                    }
                    else
                    {
                        editableParameters->ism_metadata[obj_idx].yaw = readInfo->obj_yaw[obj_idx];
                    }
                }
                if ( readInfo->obj_pitch_edited[obj_idx] )
                {
                    if ( readInfo->obj_pitch_relative[obj_idx] )
                    {
                        /* pitch: apply relative edit + saturation */
                        editableParameters->ism_metadata[obj_idx].pitch = fmaxf( fminf( editableParameters->ism_metadata[obj_idx].pitch + readInfo->obj_pitch[obj_idx], 90.f ), -90.f );
                    }
                    else
                    {
                        editableParameters->ism_metadata[obj_idx].pitch = readInfo->obj_pitch[obj_idx];
                    }
                }
                /* radius editing only for diegetic objects */
                if ( readInfo->obj_radius_edited[obj_idx] )
                {
                    if ( readInfo->obj_radius_relative[obj_idx] )
                    {
                        /* radius: apply relative edit + saturation */
                        editableParameters->ism_metadata[obj_idx].radius = fmaxf( fminf( editableParameters->ism_metadata[obj_idx].radius * readInfo->obj_radius[obj_idx], OBJ_EDIT_RADIUS_MAX ), 0.0f );
                    }
                    else
                    {
                        editableParameters->ism_metadata[obj_idx].radius = readInfo->obj_radius[obj_idx];
                    }
                }
#endif
            }

            /* gain editing for all objects */
+3 −0
Original line number Diff line number Diff line
@@ -312,6 +312,9 @@ typedef enum
#endif
typedef struct _IVAS_ROOM_ACOUSTICS_CONFIG
{
#ifdef IVAS_RTPDUMP_ACOUSTIC_ENVIRONMENT
    uint16_t aeID; /* Acoustic environment ID*/
#endif
    int16_t nBands;                                   /* Number of frequency bands for which reverb properties are provided, integer, range [2..256]        */
    float pFc_input[IVAS_CLDFB_NO_CHANNELS_MAX];      /* Center frequencies for which following values are provided:                                        */
    float pAcoustic_rt60[IVAS_CLDFB_NO_CHANNELS_MAX]; /*  - The room's T60 per center frequency                                                             */
+9 −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,
@@ -1596,6 +1602,9 @@ typedef enum
#define RV_LENGTH_NR_FC                         ( RV_FILTER_MAX_FFT_SIZE / 2 ) + 1
#define RV_LENGTH_NR_FC_16KHZ                   ( RV_FILTER_MAX_FFT_SIZE / 4 ) + 1
#define IVAS_REVERB_DEFAULT_N_BANDS             31
#ifdef IVAS_RTPDUMP_ACOUSTIC_ENVIRONMENT
#define IVAS_DEFAULT_AEID                       ( 65535 )
#endif

#define LR_IAC_LENGTH_NR_FC                     ( RV_LENGTH_NR_FC )
#define LR_IAC_LENGTH_NR_FC_16KHZ               ( RV_LENGTH_NR_FC_16KHZ )

lib_com/options.h

100755 → 100644
+4 −0
Original line number Diff line number Diff line
@@ -161,7 +161,9 @@

#define RTP_S4_251135_CR26253_0016_REV1                /* RTP Pack/Unpack API corresponding to CR 26253 */
#define IVAS_RTPDUMP                                   /* RTPDUMP writing and reading for IVAS payloads */
#define IVAS_RTPDUMP_ACOUSTIC_ENVIRONMENT              /* RTPDUMP acoustic environment */
#define FIXED_RTP_SEQUENCE_NUM                         /* Remove random sequence number initialization */
#define ISM_PI_DATA                                    /* Add reading and packing/unpacking of ISM PI data */

/* ################### Start BE switches ################################# */
/* only BE switches wrt selection floating point code */
@@ -171,6 +173,7 @@
#define TMP_1342_WORKAROUND_DEC_FLUSH_BROKEN_IN_SR      /* FhG: Temporary workaround for incorrect implementation of decoder flush with split rendering */
#define FIX_1413_IGF_INIT_PRINTOUT                      /* FhG: use correct variable for IGF initiliazation */
#define RENDERER_MD_SYNC_DELAY_TO_INTEGER               /* FhG: change data type of metadata sync delay in ext renderer to int16_t for better BASOP portability (and nicer code) */
#define FIX_1427_OBJ_EDITING_EXT_METADATA               /* Eri: Add support for extended metadata in object editing */
#define FIX_1419_MONO_STEREO_UMX                        /* FhG: fix for issue 1419 : support upmix to all output formats for mono and stereo */


@@ -194,6 +197,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 */
+13 −0
Original line number Diff line number Diff line
@@ -2649,6 +2649,10 @@ void ivas_initialize_handles_dec(
    st_ivas->hRenderConfig = NULL;
    st_ivas->hExtOrientationData = NULL;
    st_ivas->hCombinedOrientationData = NULL;
#ifdef IVAS_RTPDUMP_ACOUSTIC_ENVIRONMENT
    st_ivas->acousticEnvironmentsCount = 0;
    st_ivas->pAcousticEnvironments = NULL;
#endif

    st_ivas->hSplitBinRend = NULL;
    for ( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i )
@@ -2895,6 +2899,15 @@ void ivas_destroy_dec(
        st_ivas->p_output_f[i] = NULL;
    }

#ifdef IVAS_RTPDUMP_ACOUSTIC_ENVIRONMENT
    /* Acoustic environments */
    if ( st_ivas->pAcousticEnvironments != NULL )
    {
        free( st_ivas->pAcousticEnvironments );
        st_ivas->pAcousticEnvironments = NULL;
    }
#endif

    /* main IVAS handle */
    free( st_ivas );

Loading