Unverified Commit 822aef79 authored by norvell's avatar norvell
Browse files

Merge branch 'main' into fix-directivity-precision

parents a4087c46 1dd70df2
Loading
Loading
Loading
Loading
Loading
+46 −0
Original line number Diff line number Diff line
@@ -1174,7 +1174,53 @@ int main(
        fprintf( stderr, "\nError in Renderer Config Init: %s\n", ivas_error_to_string( error ) );
        goto cleanup;
    }
#ifdef FIX_1452_DEFAULT_REVERB

    if ( args.outConfig.audioConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB )
    {
        /* Set reverb room size if specified or select based automatically based on default per input formats */
        IVAS_ROOM_SIZE_T selectedReverbRoomSize = args.reverbRoomSize;
        if ( selectedReverbRoomSize == IVAS_ROOM_SIZE_AUTO )
        {
            bool combinedFormat = false;
            selectedReverbRoomSize = IVAS_ROOM_SIZE_MEDIUM;

            /* ISM present with MASA/SBA inputs; treat as combined format */
            if ( args.inConfig.numAudioObjects > 0 && ( args.inConfig.numMasaBuses > 0 || args.inConfig.numAmbisonicsBuses > 0 ) )
            {
                combinedFormat = true;
            }

            if ( combinedFormat )
            {
                selectedReverbRoomSize = IVAS_ROOM_SIZE_MEDIUM;
            }
            else
            {
                /* Only set large if ISM is present alone, MASA and Ambisonic have been checked above */
                if ( args.inConfig.numAudioObjects > 0 && args.inConfig.numMultiChannelBuses == 0 )
                {
                    selectedReverbRoomSize = IVAS_ROOM_SIZE_LARGE;
                }
                /* if only MC is present, set medium; Will not be overridden by the subsequent block */
                else if ( args.inConfig.numMultiChannelBuses > 0 )
                {
                    selectedReverbRoomSize = IVAS_ROOM_SIZE_MEDIUM;
                }
                else if ( args.inConfig.numMasaBuses > 0 || args.inConfig.numAmbisonicsBuses > 0 )
                {
                    selectedReverbRoomSize = IVAS_ROOM_SIZE_SMALL;
                }
            }
        }

        if ( ( error = IVAS_REND_SetReverbRoomSize( hIvasRend, selectedReverbRoomSize ) ) != IVAS_ERR_OK )
        {
            fprintf( stderr, "\nError setting reverb room size\n" );
            goto cleanup;
        }
    }
#endif

    if ( args.renderConfigFilePath[0] != '\0' )
    {
+11 −0
Original line number Diff line number Diff line
@@ -1640,6 +1640,17 @@ typedef enum
#define IVAS_REVERB_DEFAULT_M_N_BANDS           31
#define IVAS_REVERB_DEFAULT_S_N_BANDS           60

#ifdef FIX_1452_DEFAULT_REVERB
#define IVAS_REVERB_DEFAULT_S_ACOUSTIC_PRE_DELAY_FX    2013266  /* 0.015f in Q27 */
#define IVAS_REVERB_DEFAULT_S_INPUT_PRE_DELAY_FX       2684355  /* 0.02f in Q27 */

#define IVAS_REVERB_DEFAULT_M_ACOUSTIC_PRE_DELAY_FX    2013266  /* 0.015f in Q27 */
#define IVAS_REVERB_DEFAULT_M_INPUT_PRE_DELAY_FX       2684355  /* 0.02f in Q27 */

#define IVAS_REVERB_DEFAULT_L_ACOUSTIC_PRE_DELAY_FX    2181038  /* 0.01625f in Q27 */
#define IVAS_REVERB_DEFAULT_L_INPUT_PRE_DELAY_FX       13421773 /* 0.1f in Q27 */
#endif

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

+3 −1
Original line number Diff line number Diff line
@@ -128,6 +128,8 @@
#define FIX_BASOP_2545_FIX_LTV_REGRESSION_2529          /* Nokia: BASOP issue 2545: Fix LTV regression caused by issue 2529 fix */
#define FIX_FLOAT_1573_POSITION_UPDATE                  /* Eri: Float issue 1573: For static orientation and listener movement, the PoseUpdated flag is cleared and prevents 5 ms update rate. */
#define FIX_BASOP_2521_DIRAC_STEREO_STEFFI_NRGS         /* FhG: BASOP issue 2521: Fix wrong porting for determination of first subframe length in ivas_sba_dirac_stereo_compute_td_stefi_nrgs() */
#define FIX_1452_DEFAULT_REVERB                         /* Nokia/Philips/FhG: Fix default room presets and their usage in renderer */


/* ##################### End NON-BE switches ########################### */

+39 −0
Original line number Diff line number Diff line
@@ -35,6 +35,9 @@
#include "prot_fx.h"
#include "ivas_prot_rend_fx.h"
#include "ivas_rom_rend.h"
#ifdef FIX_1452_DEFAULT_REVERB
#include "ivas_cnst.h"
#endif
#include "ivas_rom_TdBinauralRenderer.h"
#include "wmc_auto.h"

@@ -42,6 +45,7 @@
 * Local constants
 *-----------------------------------------------------------------------*/

#ifndef FIX_1452_DEFAULT_REVERB
#define IVAS_REVERB_DEFAULT_L_PRE_DELAY_FX   2147484  // 0.016
#define IVAS_REVERB_DEFAULT_L_INPUT_DELAY_FX 13421773 // 0.1

@@ -50,6 +54,7 @@

#define IVAS_REVERB_DEFAULT_M_PRE_DELAY_FX   1677722 //   0.0125f
#define IVAS_REVERB_DEFAULT_M_INPUT_DELAY_FX 0       // 0.0f
#endif

#define IVAS_REVERB_DEFAULT_USE_ER 0

@@ -117,10 +122,17 @@ ivas_error ivas_render_config_init_from_rom_fx(
    move16();
    ( *hRenderConfig )->roomAcoustics.nBands = IVAS_REVERB_DEFAULT_L_N_BANDS;
    move16();
#ifdef FIX_1452_DEFAULT_REVERB
    ( *hRenderConfig )->roomAcoustics.acousticPreDelay_fx = IVAS_REVERB_DEFAULT_L_ACOUSTIC_PRE_DELAY_FX;
    move32();
    ( *hRenderConfig )->roomAcoustics.inputPreDelay_fx = IVAS_REVERB_DEFAULT_L_INPUT_PRE_DELAY_FX;
    move32();
#else
    ( *hRenderConfig )->roomAcoustics.acousticPreDelay_fx = IVAS_REVERB_DEFAULT_L_PRE_DELAY_FX;
    move32();
    ( *hRenderConfig )->roomAcoustics.inputPreDelay_fx = IVAS_REVERB_DEFAULT_L_INPUT_DELAY_FX;
    move32();
#endif
    ( *hRenderConfig )->roomAcoustics.use_er = IVAS_REVERB_DEFAULT_USE_ER;
    move16();
    set32_fx( &( *hRenderConfig )->roomAcoustics.pFc_input_fx[0], 0, CLDFB_NO_CHANNELS_MAX );
@@ -191,17 +203,30 @@ ivas_error ivas_render_config_change_defaults(
    IVAS_DefaultReverbSize defaultReverbSize /* i:   Reverb default size    */
)
{
#ifdef FIX_1452_DEFAULT_REVERB
    hRenderConfig->roomAcoustics.use_er = IVAS_REVERB_DEFAULT_USE_ER;
    move16();

#endif

    SWITCH( defaultReverbSize )
    {
        case DEFAULT_REVERB_SMALL:
            hRenderConfig->roomAcoustics.nBands = IVAS_REVERB_DEFAULT_S_N_BANDS;
            move16();
#ifdef FIX_1452_DEFAULT_REVERB
            hRenderConfig->roomAcoustics.acousticPreDelay_fx = IVAS_REVERB_DEFAULT_S_ACOUSTIC_PRE_DELAY_FX;
            move32();
            hRenderConfig->roomAcoustics.inputPreDelay_fx = IVAS_REVERB_DEFAULT_S_INPUT_PRE_DELAY_FX;
            move32();
#else
            hRenderConfig->roomAcoustics.acousticPreDelay_fx = IVAS_REVERB_DEFAULT_S_PRE_DELAY_FX;
            move32();
            hRenderConfig->roomAcoustics.inputPreDelay_fx = IVAS_REVERB_DEFAULT_S_INPUT_DELAY_FX;
            move32();
            hRenderConfig->roomAcoustics.use_er = IVAS_REVERB_DEFAULT_USE_ER;
            move16();
#endif
            set_zero_fx( &hRenderConfig->roomAcoustics.pFc_input_fx[0], CLDFB_NO_CHANNELS_MAX );
            set_zero_fx( &hRenderConfig->roomAcoustics.pAcoustic_rt60_fx[0], CLDFB_NO_CHANNELS_MAX );
            set_zero_fx( &hRenderConfig->roomAcoustics.pAcoustic_dsr_fx[0], CLDFB_NO_CHANNELS_MAX );
@@ -213,12 +238,19 @@ ivas_error ivas_render_config_change_defaults(
        case DEFAULT_REVERB_MEDIUM:
            hRenderConfig->roomAcoustics.nBands = IVAS_REVERB_DEFAULT_M_N_BANDS;
            move16();
#ifdef FIX_1452_DEFAULT_REVERB
            hRenderConfig->roomAcoustics.acousticPreDelay_fx = IVAS_REVERB_DEFAULT_M_ACOUSTIC_PRE_DELAY_FX;
            move32();
            hRenderConfig->roomAcoustics.inputPreDelay_fx = IVAS_REVERB_DEFAULT_M_INPUT_PRE_DELAY_FX;
            move32();
#else
            hRenderConfig->roomAcoustics.acousticPreDelay_fx = IVAS_REVERB_DEFAULT_M_PRE_DELAY_FX;
            move32();
            hRenderConfig->roomAcoustics.inputPreDelay_fx = IVAS_REVERB_DEFAULT_M_INPUT_DELAY_FX;
            move32();
            hRenderConfig->roomAcoustics.use_er = IVAS_REVERB_DEFAULT_USE_ER;
            move16();
#endif
            set_zero_fx( &hRenderConfig->roomAcoustics.pFc_input_fx[0], CLDFB_NO_CHANNELS_MAX );
            set_zero_fx( &hRenderConfig->roomAcoustics.pAcoustic_rt60_fx[0], CLDFB_NO_CHANNELS_MAX );
            set_zero_fx( &hRenderConfig->roomAcoustics.pAcoustic_dsr_fx[0], CLDFB_NO_CHANNELS_MAX );
@@ -230,12 +262,19 @@ ivas_error ivas_render_config_change_defaults(
        case DEFAULT_REVERB_LARGE:
            hRenderConfig->roomAcoustics.nBands = IVAS_REVERB_DEFAULT_L_N_BANDS;
            move16();
#ifdef FIX_1452_DEFAULT_REVERB
            hRenderConfig->roomAcoustics.acousticPreDelay_fx = IVAS_REVERB_DEFAULT_L_ACOUSTIC_PRE_DELAY_FX;
            move32();
            hRenderConfig->roomAcoustics.inputPreDelay_fx = IVAS_REVERB_DEFAULT_L_INPUT_PRE_DELAY_FX;
            move32();
#else
            hRenderConfig->roomAcoustics.acousticPreDelay_fx = IVAS_REVERB_DEFAULT_L_PRE_DELAY_FX;
            move32();
            hRenderConfig->roomAcoustics.inputPreDelay_fx = IVAS_REVERB_DEFAULT_L_INPUT_DELAY_FX;
            move32();
            hRenderConfig->roomAcoustics.use_er = IVAS_REVERB_DEFAULT_USE_ER;
            move16();
#endif
            set_zero_fx( &hRenderConfig->roomAcoustics.pFc_input_fx[0], CLDFB_NO_CHANNELS_MAX );
            set_zero_fx( &hRenderConfig->roomAcoustics.pAcoustic_rt60_fx[0], CLDFB_NO_CHANNELS_MAX );
            set_zero_fx( &hRenderConfig->roomAcoustics.pAcoustic_dsr_fx[0], CLDFB_NO_CHANNELS_MAX );
+20 −0
Original line number Diff line number Diff line
@@ -270,12 +270,21 @@ const Word32 ivas_reverb_default_small_RT60_fx[IVAS_REVERB_DEFAULT_S_N_BANDS] =

const Word32 ivas_reverb_default_small_DSR_fx[IVAS_REVERB_DEFAULT_S_N_BANDS] =
{
#ifdef FIX_1452_DEFAULT_REVERB
    7492, 3154, 2033, 1848, 2280, 2721, 2988, 3693, 4165, 4276,
    3797, 3273, 2676, 2205, 1756, 1386, 1142, 932, 832, 952,
    1084, 1320, 1508, 1675, 1659, 1610, 1475, 1263, 1118, 981,
    876, 769, 666, 612, 535, 467, 429, 379, 351, 321,
    296, 273, 250, 226, 203, 180, 160, 149, 141, 133,
    129, 123, 118, 115, 111, 110, 107, 106, 106, 105
#else
    16773, 7628, 5046, 4620, 5666, 6853, 7771, 9876, 11530, 12337,
    11421, 10287, 8791, 7565, 6305, 5215, 4504, 3860, 3627, 4363,
    5246, 6739, 8151, 9611, 10088, 10416, 10154, 9187, 8628, 8012,
    7491, 6931, 6320, 6074, 5589, 5145, 4977, 4646, 4558, 4411,
    4331, 4253, 4147, 4018, 3821, 3629, 3428, 3361, 3361, 3361,
    3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361
#endif
};

const Word32 ivas_reverb_default_medium_fc_fx[IVAS_REVERB_DEFAULT_M_N_BANDS] =
@@ -304,6 +313,16 @@ const Word32 ivas_reverb_default_medium_RT60_fx[IVAS_REVERB_DEFAULT_M_N_BANDS] =

const Word32 ivas_reverb_default_medium_DSR_fx[IVAS_REVERB_DEFAULT_M_N_BANDS] =
{
#ifdef FIX_1452_DEFAULT_REVERB
    5324, 5580, 5917, 6365,
    6903, 7617, 8575, 9732,
    11218, 13358, 15873, 14689,
    13167, 11206, 8942, 6549,
    5536, 4354, 4110, 4418,
    5367, 6294, 8399, 8798,
    5894, 2958, 2403, 3968,
    1999, 840, 433
#else
    15978, 16341, 16813, 17430,
    18156, 19101, 20335, 21788,
    23603, 26145, 29050, 27037,
@@ -312,6 +331,7 @@ const Word32 ivas_reverb_default_medium_DSR_fx[IVAS_REVERB_DEFAULT_M_N_BANDS] =
    10526, 12575, 17260, 19074,
    13653, 7464, 6609, 12688,
    7607, 3835, 2373
#endif
};

const Word32 ivas_reverb_default_large_fc_fx[IVAS_REVERB_DEFAULT_L_N_BANDS] /*Q16*/ =
Loading