Commit d6ad357d authored by Tapani Pihlajakuja's avatar Tapani Pihlajakuja
Browse files

Merge branch '1452-default-reverb-configuration-not-affecting-ivas_rend-properly' into 'main'

[non-be][renderer-non-be] Fix default reverb configuration

See merge request !2417
parents c865e3f0 1273d67b
Loading
Loading
Loading
Loading
+47 −0
Original line number Diff line number Diff line
@@ -1100,6 +1100,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
@@ -1576,6 +1576,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    0.015f
#define IVAS_REVERB_DEFAULT_S_INPUT_PRE_DELAY       0.02f

#define IVAS_REVERB_DEFAULT_M_ACOUSTIC_PRE_DELAY    0.015f
#define IVAS_REVERB_DEFAULT_M_INPUT_PRE_DELAY       0.02f

#define IVAS_REVERB_DEFAULT_L_ACOUSTIC_PRE_DELAY    0.01625f
#define IVAS_REVERB_DEFAULT_L_INPUT_PRE_DELAY       0.1f
#endif

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

+2 −1
Original line number Diff line number Diff line
@@ -177,6 +177,7 @@
#define FIX_1571_BFI_COPY_ARRAY_CORRECT_LEN             /* FhG: issue 1571: use correct channel signal length for copying signal to buffer */
#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_1576_LCLD_CRASH_DIFFERENT_CODEC_ISAR_FRAME_SIZE  /* Dolby: float issue 1576: fix for crash in LCLD mode when codec frame size is less than isar frame size */
#define FIX_1452_DEFAULT_REVERB                         /* Nokia/Philips/FhG: Fix default room presets and their usage in renderer */

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

+29 −0
Original line number Diff line number Diff line
@@ -35,6 +35,9 @@
#include "prot.h"
#include "ivas_prot_rend.h"
#include "ivas_rom_rend.h"
#ifdef FIX_1452_DEFAULT_REVERB
#include "ivas_cnst.h"
#endif
#ifdef DEBUGGING
#include "debug.h"
#endif
@@ -45,6 +48,7 @@
 * Local constants
 *-----------------------------------------------------------------------*/

#ifndef FIX_1452_DEFAULT_REVERB
#define IVAS_REVERB_DEFAULT_L_PRE_DELAY   0.016f
#define IVAS_REVERB_DEFAULT_L_INPUT_DELAY 0.1f

@@ -53,6 +57,7 @@

#define IVAS_REVERB_DEFAULT_M_PRE_DELAY   0.0125f
#define IVAS_REVERB_DEFAULT_M_INPUT_DELAY 0.0f
#endif

#define IVAS_REVERB_DEFAULT_USE_ER 0

@@ -118,8 +123,13 @@ ivas_error ivas_render_config_init_from_rom(

    ( *hRenderConfig )->roomAcoustics.aeID = IVAS_DEFAULT_AEID;
    ( *hRenderConfig )->roomAcoustics.nBands = IVAS_REVERB_DEFAULT_L_N_BANDS;
#ifdef FIX_1452_DEFAULT_REVERB
    ( *hRenderConfig )->roomAcoustics.acousticPreDelay = IVAS_REVERB_DEFAULT_L_ACOUSTIC_PRE_DELAY;
    ( *hRenderConfig )->roomAcoustics.inputPreDelay = IVAS_REVERB_DEFAULT_L_INPUT_PRE_DELAY;
#else
    ( *hRenderConfig )->roomAcoustics.acousticPreDelay = IVAS_REVERB_DEFAULT_L_PRE_DELAY;
    ( *hRenderConfig )->roomAcoustics.inputPreDelay = IVAS_REVERB_DEFAULT_L_INPUT_DELAY;
#endif
    ( *hRenderConfig )->roomAcoustics.use_er = IVAS_REVERB_DEFAULT_USE_ER;
    set_zero( &( *hRenderConfig )->roomAcoustics.pFc_input[0], CLDFB_NO_CHANNELS_MAX );
    set_zero( &( *hRenderConfig )->roomAcoustics.pAcoustic_rt60[0], CLDFB_NO_CHANNELS_MAX );
@@ -167,13 +177,22 @@ 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;

#endif
    switch ( defaultReverbSize )
    {
        case DEFAULT_REVERB_SMALL:
            hRenderConfig->roomAcoustics.nBands = IVAS_REVERB_DEFAULT_S_N_BANDS;
#ifdef FIX_1452_DEFAULT_REVERB
            hRenderConfig->roomAcoustics.acousticPreDelay = IVAS_REVERB_DEFAULT_S_ACOUSTIC_PRE_DELAY;
            hRenderConfig->roomAcoustics.inputPreDelay = IVAS_REVERB_DEFAULT_S_INPUT_PRE_DELAY;
#else
            hRenderConfig->roomAcoustics.acousticPreDelay = IVAS_REVERB_DEFAULT_S_PRE_DELAY;
            hRenderConfig->roomAcoustics.inputPreDelay = IVAS_REVERB_DEFAULT_S_INPUT_DELAY;
            hRenderConfig->roomAcoustics.use_er = IVAS_REVERB_DEFAULT_USE_ER;
#endif
            set_zero( &hRenderConfig->roomAcoustics.pFc_input[0], CLDFB_NO_CHANNELS_MAX );
            set_zero( &hRenderConfig->roomAcoustics.pAcoustic_rt60[0], CLDFB_NO_CHANNELS_MAX );
            set_zero( &hRenderConfig->roomAcoustics.pAcoustic_dsr[0], CLDFB_NO_CHANNELS_MAX );
@@ -184,9 +203,14 @@ ivas_error ivas_render_config_change_defaults(
            break;
        case DEFAULT_REVERB_MEDIUM:
            hRenderConfig->roomAcoustics.nBands = IVAS_REVERB_DEFAULT_M_N_BANDS;
#ifdef FIX_1452_DEFAULT_REVERB
            hRenderConfig->roomAcoustics.acousticPreDelay = IVAS_REVERB_DEFAULT_M_ACOUSTIC_PRE_DELAY;
            hRenderConfig->roomAcoustics.inputPreDelay = IVAS_REVERB_DEFAULT_M_INPUT_PRE_DELAY;
#else
            hRenderConfig->roomAcoustics.acousticPreDelay = IVAS_REVERB_DEFAULT_M_PRE_DELAY;
            hRenderConfig->roomAcoustics.inputPreDelay = IVAS_REVERB_DEFAULT_M_INPUT_DELAY;
            hRenderConfig->roomAcoustics.use_er = IVAS_REVERB_DEFAULT_USE_ER;
#endif
            set_zero( &hRenderConfig->roomAcoustics.pFc_input[0], CLDFB_NO_CHANNELS_MAX );
            set_zero( &hRenderConfig->roomAcoustics.pAcoustic_rt60[0], CLDFB_NO_CHANNELS_MAX );
            set_zero( &hRenderConfig->roomAcoustics.pAcoustic_dsr[0], CLDFB_NO_CHANNELS_MAX );
@@ -197,9 +221,14 @@ ivas_error ivas_render_config_change_defaults(
            break;
        case DEFAULT_REVERB_LARGE:
            hRenderConfig->roomAcoustics.nBands = IVAS_REVERB_DEFAULT_L_N_BANDS;
#ifdef FIX_1452_DEFAULT_REVERB
            hRenderConfig->roomAcoustics.acousticPreDelay = IVAS_REVERB_DEFAULT_L_ACOUSTIC_PRE_DELAY;
            hRenderConfig->roomAcoustics.inputPreDelay = IVAS_REVERB_DEFAULT_L_INPUT_PRE_DELAY;
#else
            hRenderConfig->roomAcoustics.acousticPreDelay = IVAS_REVERB_DEFAULT_L_PRE_DELAY;
            hRenderConfig->roomAcoustics.inputPreDelay = IVAS_REVERB_DEFAULT_L_INPUT_DELAY;
            hRenderConfig->roomAcoustics.use_er = IVAS_REVERB_DEFAULT_USE_ER;
#endif
            set_zero( &hRenderConfig->roomAcoustics.pFc_input[0], CLDFB_NO_CHANNELS_MAX );
            set_zero( &hRenderConfig->roomAcoustics.pAcoustic_rt60[0], CLDFB_NO_CHANNELS_MAX );
            set_zero( &hRenderConfig->roomAcoustics.pAcoustic_dsr[0], CLDFB_NO_CHANNELS_MAX );
+20 −0
Original line number Diff line number Diff line
@@ -368,12 +368,21 @@ const float ivas_reverb_default_small_RT60[IVAS_REVERB_DEFAULT_S_N_BANDS] =

const float ivas_reverb_default_small_DSR[IVAS_REVERB_DEFAULT_S_N_BANDS] =
{
#ifdef FIX_1452_DEFAULT_REVERB
    6.977828e-06f, 2.937305e-06f, 1.893479e-06f, 1.720667e-06f, 2.123368e-06f, 2.534581e-06f, 2.783227e-06f, 3.439731e-06f, 3.878745e-06f, 3.982148e-06f,
    3.536177e-06f, 3.048233e-06f, 2.492192e-06f, 2.053972e-06f, 1.635640e-06f, 1.290742e-06f, 1.063885e-06f, 8.678735e-07f, 7.750435e-07f, 8.864112e-07f,
    1.009722e-06f, 1.229591e-06f, 1.404202e-06f, 1.560211e-06f, 1.544859e-06f, 1.499566e-06f, 1.373403e-06f, 1.176021e-06f, 1.041313e-06f, 9.137224e-07f,
    8.158574e-07f, 7.161031e-07f, 6.204702e-07f, 5.695733e-07f, 4.978614e-07f, 4.351658e-07f, 3.994684e-07f, 3.529545e-07f, 3.272181e-07f, 2.985224e-07f,
    2.757639e-07f, 2.543491e-07f, 2.325021e-07f, 2.108694e-07f, 1.887674e-07f, 1.680334e-07f, 1.489201e-07f, 1.388874e-07f, 1.311031e-07f, 1.241593e-07f,
    1.198245e-07f, 1.144179e-07f, 1.097161e-07f, 1.072108e-07f, 1.037510e-07f, 1.023455e-07f, 1.000682e-07f, 9.837678e-08f, 9.865947e-08f, 9.809443e-08f
#else
    1.562141e-05f, 7.104127e-06f, 4.699859e-06f, 4.302786e-06f, 5.277136e-06f, 6.382504e-06f, 7.237492e-06f, 9.198124e-06f, 1.073813e-05f, 1.148954e-05f,
    1.063691e-05f, 9.580873e-06f, 8.187593e-06f, 7.045559e-06f, 5.871790e-06f, 4.857175e-06f, 4.194530e-06f, 3.594923e-06f, 3.377501e-06f, 4.063327e-06f,
    4.885563e-06f, 6.276646e-06f, 7.591577e-06f, 8.950862e-06f, 9.394771e-06f, 9.701081e-06f, 9.456415e-06f, 8.555601e-06f, 8.035221e-06f, 7.461511e-06f,
    6.976915e-06f, 6.454842e-06f, 5.885498e-06f, 5.657134e-06f, 5.205549e-06f, 4.791783e-06f, 4.635302e-06f, 4.326645e-06f, 4.245139e-06f, 4.107671e-06f,
    4.033808e-06f, 3.961318e-06f, 3.862554e-06f, 3.742024e-06f, 3.559007e-06f, 3.379882e-06f, 3.192690e-06f, 3.129763e-06f, 3.129763e-06f, 3.129763e-06f,
    3.129763e-06f, 3.129763e-06f, 3.129763e-06f, 3.129763e-06f, 3.129763e-06f, 3.129763e-06f, 3.129763e-06f, 3.129763e-06f, 3.129763e-06f, 3.129763e-06f
#endif
};

const float ivas_reverb_default_medium_fc[IVAS_REVERB_DEFAULT_M_N_BANDS] =
@@ -402,6 +411,16 @@ const float ivas_reverb_default_medium_RT60[IVAS_REVERB_DEFAULT_M_N_BANDS] =

const float ivas_reverb_default_medium_DSR[IVAS_REVERB_DEFAULT_M_N_BANDS] =
{
#ifdef FIX_1452_DEFAULT_REVERB
    4.958384e-06f, 5.196441e-06f, 5.510329e-06f, 5.927908e-06f,
    6.428805e-06f, 7.094248e-06f, 7.986350e-06f, 9.063827e-06f,
    1.044713e-05f, 1.244016e-05f, 1.478258e-05f, 1.367982e-05f,
    1.226229e-05f, 1.043673e-05f, 8.328062e-06f, 6.098873e-06f,
    5.155923e-06f, 4.055231e-06f, 3.827632e-06f, 4.114328e-06f,
    4.998400e-06f, 5.861536e-06f, 7.821971e-06f, 8.193953e-06f,
    5.489165e-06f, 2.755238e-06f, 2.238094e-06f, 3.695543e-06f,
    1.862081e-06f, 7.825131e-07f, 4.032049e-07f
#else
    1.488034e-05f, 1.521853e-05f, 1.565818e-05f, 1.623310e-05f,
    1.690948e-05f, 1.778877e-05f, 1.893862e-05f, 2.029138e-05f,
    2.198233e-05f, 2.434965e-05f, 2.705517e-05f, 2.518051e-05f,
@@ -410,6 +429,7 @@ const float ivas_reverb_default_medium_DSR[IVAS_REVERB_DEFAULT_M_N_BANDS] =
    9.803470e-06f, 1.171147e-05f, 1.607462e-05f, 1.776450e-05f,
    1.271521e-05f, 6.951610e-06f, 6.154952e-06f, 1.181682e-05f,
    7.084896e-06f, 3.571991e-06f, 2.210372e-06f
#endif
};

const float ivas_reverb_default_large_fc[IVAS_REVERB_DEFAULT_L_N_BANDS] =
Loading