diff --git a/apps/renderer.c b/apps/renderer.c index 0bc511dc8c227ddc6d6abc1c1fc8ef0cc965e970..92430a35351ee6fad1083eb48676c9940f1767c7 100644 --- a/apps/renderer.c +++ b/apps/renderer.c @@ -74,6 +74,11 @@ #define IVAS_MIN16B_FLT ( -32768.0f ) #define IVAS_MAX16B_FX 32767 #define IVAS_MIN16B_FX ( -32768 ) + +#ifdef NONBE_1359_FIX_IVASREND_OMASA_BINAURAL_LOUDNESS +#define OMASA_TDREND_MATCHING_GAIN_DB ( -2.0f ) +#endif + #if !defined( DEBUGGING ) && !defined( WMOPS ) static #endif @@ -1262,20 +1267,41 @@ int main( } } +#ifndef NONBE_1359_FIX_IVASREND_OMASA_BINAURAL_LOUDNESS /* Set the total number of objects */ +#endif if ( args.inConfig.numAudioObjects > 0 ) { +#ifdef NONBE_1359_FIX_IVASREND_OMASA_BINAURAL_LOUDNESS + /* Set the total number of objects */ +#endif if ( ( error = IVAS_REND_SetTotalNumberOfObjects( hIvasRend, args.inConfig.numAudioObjects ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_REND_SetTotalNumberOfObjects(): %s\n", ivas_error_to_string( error ) ); goto cleanup; } + +#ifdef NONBE_1359_FIX_IVASREND_OMASA_BINAURAL_LOUDNESS + /* Set the metadata delay for objects */ +#endif Word32 var1 = (Word32) ( args.syncMdDelay ); IF( ( error = IVAS_REND_SetIsmMetadataDelay( hIvasRend, var1 ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_REND_SetIsmMetadataDelay(): %s\n", ivas_error_to_string( error ) ); goto cleanup; } + +#ifdef NONBE_1359_FIX_IVASREND_OMASA_BINAURAL_LOUDNESS + + /* For OMASA input and BINAURAL output, apply a gain to objects to match the loudness with MASA part */ + if ( args.inConfig.numMasaBuses > 0 && args.outConfig.audioConfig == IVAS_AUDIO_CONFIG_BINAURAL ) + { + for ( i = 0; i < args.inConfig.numAudioObjects; ++i ) + { + args.inConfig.audioObjects[i].gain_dB += OMASA_TDREND_MATCHING_GAIN_DB; + } + } +#endif } IVAS_REND_LfePanMtx lfePanMatrix; diff --git a/lib_com/options.h b/lib_com/options.h index b2d60e821f2d7e11fb1ef3a57fb9d5572e346685..62357fbd6be508a24c049f6fe41fd37776ed2c27 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -117,6 +117,7 @@ #define FIX_1370_EXTERNAL_ORIENTATION_CHECK /* Nokia: add sanity check for Euler angles for external orientations */ #define FIX_1413_IGF_INIT_PRINTOUT /* FhG: use correct variable for IGF initiliazation */ #define CODE_IMPROVEMENTS +#define NONBE_1359_FIX_IVASREND_OMASA_BINAURAL_LOUDNESS /* Nokia: issue 1339: Apply scaling to the object-part of OMASA for binaural rendering in IVAS_rend. */ // object-editing feature porting