Commit 8becc955 authored by Jan Kiene's avatar Jan Kiene
Browse files

Merge branch 'main' into ci/deduplicate-renderer-tests

parents a5ae2ffe d6ad357d
Loading
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 )

+3 −1
Original line number Diff line number Diff line
@@ -176,6 +176,8 @@
#define FIX_FLOAT_1569_REND_RENDER_CONFIG_CHECKS        /* Nokia: float issue 1569: fix render config checks in renderer */
#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 ########################### */

+19 −0
Original line number Diff line number Diff line
@@ -153,10 +153,29 @@ ivas_error ISAR_PRE_REND_open(
        }
        else
        {
#ifndef FIX_1576_LCLD_CRASH_DIFFERENT_CODEC_ISAR_FRAME_SIZE
            int16_t iNumBlocksPerFrame;
            iNumBlocksPerFrame = ( CLDFB_NO_COL_MAX * pSplitRendConfig->codec_frame_size_ms ) / 20;
#else
            int16_t iNumBlocksPerFrame, iNumLCLDIterationsPerFrame;
            if ( pSplitRendConfig->codec_frame_size_ms > 0 )
            {
                iNumLCLDIterationsPerFrame = (int16_t) pSplitRendConfig->isar_frame_size_ms / ( pSplitRendConfig->codec_frame_size_ms );
                iNumLCLDIterationsPerFrame = max( 1, iNumLCLDIterationsPerFrame );
                iNumBlocksPerFrame = CLDFB_NO_COL_MAX * pSplitRendConfig->codec_frame_size_ms / 20;
            }
            else
            {
                iNumLCLDIterationsPerFrame = 1;
                iNumBlocksPerFrame = CLDFB_NO_COL_MAX;
            }
#endif

#ifndef FIX_1576_LCLD_CRASH_DIFFERENT_CODEC_ISAR_FRAME_SIZE
            if ( ( error = isar_splitBinLCLDEncOpen( &hSplitBinRend->hSplitBinLCLDEnc, output_Fs, BINAURAL_CHANNELS, isar_get_lcld_bitrate( pSplitRendConfig->splitRendBitRate, hSplitBinRend->multiBinPoseData.poseCorrectionMode ), iNumBlocksPerFrame, 1 ) ) != IVAS_ERR_OK )
#else
            if ( ( error = isar_splitBinLCLDEncOpen( &hSplitBinRend->hSplitBinLCLDEnc, output_Fs, BINAURAL_CHANNELS, isar_get_lcld_bitrate( pSplitRendConfig->splitRendBitRate, hSplitBinRend->multiBinPoseData.poseCorrectionMode ), iNumBlocksPerFrame, iNumLCLDIterationsPerFrame ) ) != IVAS_ERR_OK )
#endif
            {
                return error;
            }
+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 );
Loading