Commit 4a759afb authored by Tapani Pihlajakuja's avatar Tapani Pihlajakuja
Browse files

Port changes of float MR 2417 to BASOP.

parent b1e944fc
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 )

+1 −0
Original line number Diff line number Diff line
@@ -121,6 +121,7 @@
#define FIX_BASOP_2522_MAP_PARAMS_DIRAC_STEREO          /* FhG: BASOP issue 2522: Fix copy and paste error for side_gain calculation in map_params_dirac_to_stereo() */
#define FIX_2505_IVAS_DEC_SEGFAULT                      /* FhG: BASOP #2505: Add headroom to input of ivas_rend_crendProcessSubframe_fx() for ivas_mdft_fx() calculation */
#define HARMONIZE_DoRTFTn                               /* VA: harmonize functions DoRTFTn_fx() and DoRTFTn_fx_ivas() */
#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 );
@@ -182,17 +194,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 );
@@ -204,12 +229,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 );
@@ -221,12 +253,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