From 6632b160f635faf1ce78d724a53c3de7470c5733 Mon Sep 17 00:00:00 2001 From: Tapani Pihlajakuja Date: Fri, 25 Apr 2025 19:35:34 +0300 Subject: [PATCH 1/7] Implements system for setting default reverb parameters per format. --- lib_com/ivas_cnst.h | 2 ++ lib_dec/ivas_init_dec.c | 16 +++++++-- lib_rend/ivas_prot_rend.h | 5 +++ lib_rend/ivas_render_config.c | 50 ++++++++++++++++++++++++++++ lib_rend/ivas_rom_rend.c | 61 +++++++++++++++++++++++++++++++++++ lib_rend/ivas_rom_rend.h | 8 +++++ 6 files changed, 139 insertions(+), 3 deletions(-) diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h index d2c2db4900..db09b1e299 100755 --- a/lib_com/ivas_cnst.h +++ b/lib_com/ivas_cnst.h @@ -1579,6 +1579,8 @@ typedef enum #define RV_LENGTH_NR_FC ( RV_FILTER_MAX_FFT_SIZE / 2 ) + 1 #define RV_LENGTH_NR_FC_16KHZ ( RV_FILTER_MAX_FFT_SIZE / 4 ) + 1 #define IVAS_REVERB_DEFAULT_N_BANDS 31 +#define IVAS_REVERB_MASA_DEFAULT_N_BANDS 60 +#define IVAS_REVERB_MC_DEFAULT_N_BANDS 60 #define LR_IAC_LENGTH_NR_FC ( RV_LENGTH_NR_FC ) #define LR_IAC_LENGTH_NR_FC_16KHZ ( RV_LENGTH_NR_FC_16KHZ ) diff --git a/lib_dec/ivas_init_dec.c b/lib_dec/ivas_init_dec.c index 0d3610065b..e9651425cb 100644 --- a/lib_dec/ivas_init_dec.c +++ b/lib_dec/ivas_init_dec.c @@ -1377,16 +1377,26 @@ ivas_error ivas_init_decoder( } } - /*--------------------------------------------------------------------* - * Allocate and initialize HRTF Statistics handle - *--------------------------------------------------------------------*/ + /*--------------------------------------------------------------------------* + * Allocate and initialize HRTF Statistics handle, get default reverb values + *--------------------------------------------------------------------------*/ if ( st_ivas->hOutSetup.output_config == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) { + /* Init HRTF statistics */ if ( ( error = ivas_HRTF_statistics_init( &st_ivas->hHrtfStatistics, output_Fs ) ) != IVAS_ERR_OK ) { return error; } + + /* Get default reverb values based on format, if custom values were not given */ + if ( st_ivas->hDecoderConfig->Opt_RendConfigCustom == 0 ) + { + if ( ( error = ivas_render_config_change_defaults( st_ivas->hRenderConfig, st_ivas->ivas_format ) ) != IVAS_ERR_OK ) + { + return error; + } + } } /*-----------------------------------------------------------------* diff --git a/lib_rend/ivas_prot_rend.h b/lib_rend/ivas_prot_rend.h index 121d912881..d420695474 100644 --- a/lib_rend/ivas_prot_rend.h +++ b/lib_rend/ivas_prot_rend.h @@ -1344,6 +1344,11 @@ ivas_error ivas_render_config_init_from_rom( RENDER_CONFIG_HANDLE *hRenderConfig /* i/o: Renderer config handle */ ); +ivas_error ivas_render_config_change_defaults( + RENDER_CONFIG_HANDLE hRenderConfig, /* i/o: Renderer config handle */ + IVAS_FORMAT ivas_format /* i: IVAS format */ +); + /*----------------------------------------------------------------------------------* * Quaternion operations diff --git a/lib_rend/ivas_render_config.c b/lib_rend/ivas_render_config.c index c3a39b426e..dad30ed241 100644 --- a/lib_rend/ivas_render_config.c +++ b/lib_rend/ivas_render_config.c @@ -48,6 +48,12 @@ #define IVAS_REVERB_DEFAULT_PRE_DELAY 0.016f #define IVAS_REVERB_DEFAULT_INPUT_DELAY 0.1f +#define IVAS_REVERB_MASA_DEFAULT_PRE_DELAY 0.0125f +#define IVAS_REVERB_MASA_DEFAULT_INPUT_DELAY 0.0f + +#define IVAS_REVERB_MC_DEFAULT_PRE_DELAY 0.0125f +#define IVAS_REVERB_MC_DEFAULT_INPUT_DELAY 0.0f + #define IVAS_REVERB_DEFAULT_USE_ER 0 @@ -150,3 +156,47 @@ ivas_error ivas_render_config_init_from_rom( return IVAS_ERR_OK; } + + +/*-------------------------------------------------------------------* + * ivas_render_config_change_defaults() + * + * Changes default values from ROM, based on the IVAS format + *-------------------------------------------------------------------*/ + +ivas_error ivas_render_config_change_defaults( + RENDER_CONFIG_HANDLE hRenderConfig, /* i/o: Renderer config handle */ + IVAS_FORMAT ivas_format /* i: IVAS format */ +) +{ + if ( ivas_format == MASA_FORMAT ) + { + hRenderConfig->roomAcoustics.nBands = IVAS_REVERB_MASA_DEFAULT_N_BANDS; + hRenderConfig->roomAcoustics.acousticPreDelay = IVAS_REVERB_MASA_DEFAULT_PRE_DELAY; + hRenderConfig->roomAcoustics.inputPreDelay = IVAS_REVERB_MASA_DEFAULT_INPUT_DELAY; + 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 ); + set_zero( &hRenderConfig->roomAcoustics.pAcoustic_dsr[0], CLDFB_NO_CHANNELS_MAX ); + + mvr2r( ivas_reverb_masa_default_fc, hRenderConfig->roomAcoustics.pFc_input, IVAS_REVERB_MASA_DEFAULT_N_BANDS ); + mvr2r( ivas_reverb_masa_default_RT60, hRenderConfig->roomAcoustics.pAcoustic_rt60, IVAS_REVERB_MASA_DEFAULT_N_BANDS ); + mvr2r( ivas_reverb_masa_default_DSR, hRenderConfig->roomAcoustics.pAcoustic_dsr, IVAS_REVERB_MASA_DEFAULT_N_BANDS ); + } + else if ( ivas_format == MC_FORMAT ) + { + hRenderConfig->roomAcoustics.nBands = IVAS_REVERB_MC_DEFAULT_N_BANDS; + hRenderConfig->roomAcoustics.acousticPreDelay = IVAS_REVERB_MC_DEFAULT_PRE_DELAY; + hRenderConfig->roomAcoustics.inputPreDelay = IVAS_REVERB_MC_DEFAULT_INPUT_DELAY; + 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 ); + set_zero( &hRenderConfig->roomAcoustics.pAcoustic_dsr[0], CLDFB_NO_CHANNELS_MAX ); + + mvr2r( ivas_reverb_mc_default_fc, hRenderConfig->roomAcoustics.pFc_input, IVAS_REVERB_MC_DEFAULT_N_BANDS ); + mvr2r( ivas_reverb_mc_default_RT60, hRenderConfig->roomAcoustics.pAcoustic_rt60, IVAS_REVERB_MC_DEFAULT_N_BANDS ); + mvr2r( ivas_reverb_mc_default_DSR, hRenderConfig->roomAcoustics.pAcoustic_dsr, IVAS_REVERB_MC_DEFAULT_N_BANDS ); + } + + return IVAS_ERR_OK; +} diff --git a/lib_rend/ivas_rom_rend.c b/lib_rend/ivas_rom_rend.c index bf6776ab04..24a88ecc94 100644 --- a/lib_rend/ivas_rom_rend.c +++ b/lib_rend/ivas_rom_rend.c @@ -380,6 +380,67 @@ const float ivas_reverb_default_DSR[IVAS_REVERB_DEFAULT_N_BANDS] = 6.2001e-08f, 2.8483e-08f, 2.6267e-08f }; +const float ivas_reverb_masa_default_fc[IVAS_REVERB_MASA_DEFAULT_N_BANDS] = +{ + 200.0f, 600.0f, 1000.0f, 1400.0f, 1800.0f, 2200.0f, 2600.0f, 3000.0f, 3400.0f, 3800.0f, + 4200.0f, 4600.0f, 5000.0f, 5400.0f, 5800.0f, 6200.0f, 6600.0f, 7000.0f, 7400.0f, 7800.0f, + 8200.0f, 8600.0f, 9000.0f, 9400.0f, 9800.0f, 10200.0f, 10600.0f, 11000.0f, 11400.0f, 11800.0f, + 12200.0f, 12600.0f, 13000.0f, 13400.0f, 13800.0f, 14200.0f, 14600.0f, 15000.0f, 15400.0f, 15800.0f, + 16200.0f, 16600.0f, 17000.0f, 17400.0f, 17800.0f, 18200.0f, 18600.0f, 19000.0f, 19400.0f, 19800.0f, + 20200.0f, 20600.0f, 21000.0f, 21400.0f, 21800.0f, 22200.0f, 22600.0f, 23000.0f, 23400.0f, 23800.0f +}; + +const float ivas_reverb_masa_default_RT60[IVAS_REVERB_MASA_DEFAULT_N_BANDS] = +{ + 0.300000f, 0.273750f, 0.265941f, 0.263784f, 0.265572f, 0.261790f, 0.252988f, 0.245801f, 0.237429f, 0.228169f, + 0.219536f, 0.211116f, 0.203262f, 0.196144f, 0.189161f, 0.182436f, 0.176237f, 0.170114f, 0.164250f, 0.158791f, + 0.153349f, 0.148312f, 0.143266f, 0.138398f, 0.133929f, 0.129493f, 0.125309f, 0.121833f, 0.118321f, 0.115130f, + 0.112655f, 0.109958f, 0.107465f, 0.105311f, 0.103006f, 0.100783f, 0.098629f, 0.096469f, 0.094335f, 0.092217f, + 0.090115f, 0.088057f, 0.086034f, 0.084061f, 0.082327f, 0.080552f, 0.078876f, 0.077614f, 0.076203f, 0.074918f, + 0.074102f, 0.073068f, 0.072153f, 0.071659f, 0.070969f, 0.070686f, 0.070224f, 0.069878f, 0.069936f, 0.069820f +}; + +const float ivas_reverb_masa_default_DSR[IVAS_REVERB_MASA_DEFAULT_N_BANDS] = +{ + 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 +}; + +const float ivas_reverb_mc_default_fc[IVAS_REVERB_MC_DEFAULT_N_BANDS] = +{ + 200.0f, 600.0f, 1000.0f, 1400.0f, 1800.0f, 2200.0f, 2600.0f, 3000.0f, 3400.0f, 3800.0f, + 4200.0f, 4600.0f, 5000.0f, 5400.0f, 5800.0f, 6200.0f, 6600.0f, 7000.0f, 7400.0f, 7800.0f, + 8200.0f, 8600.0f, 9000.0f, 9400.0f, 9800.0f, 10200.0f, 10600.0f, 11000.0f, 11400.0f, 11800.0f, + 12200.0f, 12600.0f, 13000.0f, 13400.0f, 13800.0f, 14200.0f, 14600.0f, 15000.0f, 15400.0f, 15800.0f, + 16200.0f, 16600.0f, 17000.0f, 17400.0f, 17800.0f, 18200.0f, 18600.0f, 19000.0f, 19400.0f, 19800.0f, + 20200.0f, 20600.0f, 21000.0f, 21400.0f, 21800.0f, 22200.0f, 22600.0f, 23000.0f, 23400.0f, 23800.0f +}; + +const float ivas_reverb_mc_default_RT60[IVAS_REVERB_MC_DEFAULT_N_BANDS] = +{ + 0.400000f, 0.370000f, 0.361076f, 0.358610f, 0.360654f, 0.356331f, 0.346272f, 0.338059f, 0.328491f, 0.317907f, + 0.308041f, 0.298419f, 0.289442f, 0.281307f, 0.273326f, 0.265641f, 0.258557f, 0.251559f, 0.244857f, 0.238618f, + 0.232398f, 0.226642f, 0.220876f, 0.215312f, 0.210205f, 0.205135f, 0.200353f, 0.196380f, 0.192367f, 0.188720f, + 0.185892f, 0.182809f, 0.179960f, 0.177499f, 0.174864f, 0.172323f, 0.169862f, 0.167393f, 0.164954f, 0.162534f, + 0.160132f, 0.157780f, 0.155467f, 0.153213f, 0.151231f, 0.149203f, 0.147286f, 0.145845f, 0.144232f, 0.142763f, + 0.141831f, 0.140649f, 0.139604f, 0.139039f, 0.138250f, 0.137927f, 0.137399f, 0.137004f, 0.137070f, 0.136937f +}; + +const float ivas_reverb_mc_default_DSR[IVAS_REVERB_MC_DEFAULT_N_BANDS] = +{ + 2.705517e-05f, 1.205788e-05f, 7.921604e-06f, 7.237642e-06f, 8.891490e-06f, 1.071545e-05f, 1.204347e-05f, 1.518662e-05f, 1.755462e-05f, 1.855867e-05f, + 1.697032e-05f, 1.508359e-05f, 1.271521e-05f, 1.079401e-05f, 8.865647e-06f, 7.221897e-06f, 6.140750e-06f, 5.175824e-06f, 4.778731e-06f, 5.648105e-06f, + 6.661798e-06f, 8.394316e-06f, 9.940707e-06f, 1.146325e-05f, 1.176827e-05f, 1.186537e-05f, 1.128682e-05f, 9.990709e-06f, 9.163022e-06f, 8.314448e-06f, + 7.627883e-06f, 6.903900e-06f, 6.161279e-06f, 5.807365e-06f, 5.227551e-06f, 4.705133e-06f, 4.448539e-06f, 4.053002e-06f, 3.877406e-06f, 3.653874e-06f, + 3.490109e-06f, 3.330512e-06f, 3.151909e-06f, 2.961156e-06f, 2.737213e-06f, 2.520732e-06f, 2.309620e-06f, 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, + 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, 2.210372e-06f +}; + + /*----------------------------------------------------------------------------------* * Renderer SBA & MC enc/dec matrices *----------------------------------------------------------------------------------*/ diff --git a/lib_rend/ivas_rom_rend.h b/lib_rend/ivas_rom_rend.h index 927287ecd9..4033175785 100644 --- a/lib_rend/ivas_rom_rend.h +++ b/lib_rend/ivas_rom_rend.h @@ -117,6 +117,14 @@ extern const float ivas_reverb_default_fc[]; extern const float ivas_reverb_default_RT60[]; extern const float ivas_reverb_default_DSR[]; +extern const float ivas_reverb_masa_default_fc[]; +extern const float ivas_reverb_masa_default_RT60[]; +extern const float ivas_reverb_masa_default_DSR[]; + +extern const float ivas_reverb_mc_default_fc[]; +extern const float ivas_reverb_mc_default_RT60[]; +extern const float ivas_reverb_mc_default_DSR[]; + /*----------------------------------------------------------------------------------* * Renderer SBA & MC enc/dec matrices *----------------------------------------------------------------------------------*/ -- GitLab From 7420c51acf249dab4a58439ec637f0612f0c7b61 Mon Sep 17 00:00:00 2001 From: Marek Szczerba Date: Wed, 22 Oct 2025 09:46:20 +0200 Subject: [PATCH 2/7] Clang related editorials --- lib_rend/ivas_render_config.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_rend/ivas_render_config.c b/lib_rend/ivas_render_config.c index dad30ed241..855cc8c9e7 100644 --- a/lib_rend/ivas_render_config.c +++ b/lib_rend/ivas_render_config.c @@ -48,10 +48,10 @@ #define IVAS_REVERB_DEFAULT_PRE_DELAY 0.016f #define IVAS_REVERB_DEFAULT_INPUT_DELAY 0.1f -#define IVAS_REVERB_MASA_DEFAULT_PRE_DELAY 0.0125f +#define IVAS_REVERB_MASA_DEFAULT_PRE_DELAY 0.0125f #define IVAS_REVERB_MASA_DEFAULT_INPUT_DELAY 0.0f -#define IVAS_REVERB_MC_DEFAULT_PRE_DELAY 0.0125f +#define IVAS_REVERB_MC_DEFAULT_PRE_DELAY 0.0125f #define IVAS_REVERB_MC_DEFAULT_INPUT_DELAY 0.0f #define IVAS_REVERB_DEFAULT_USE_ER 0 -- GitLab From efc7a668019b9589aa6a33f1bcab21acda4f125b Mon Sep 17 00:00:00 2001 From: Marek Szczerba Date: Mon, 27 Oct 2025 13:39:48 +0100 Subject: [PATCH 3/7] Revised version with default room sizes, medium room resampled to 1/3 octave grid with limited low-frequency resonances, refactoring. --- lib_com/ivas_cnst.h | 12 +++-- lib_dec/ivas_init_dec.c | 16 +++++- lib_rend/ivas_render_config.c | 98 ++++++++++++++++++++--------------- lib_rend/ivas_rom_rend.c | 60 +++++++++++---------- lib_rend/ivas_rom_rend.h | 19 +++---- 5 files changed, 124 insertions(+), 81 deletions(-) diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h index 0d526822a5..37a9c14070 100755 --- a/lib_com/ivas_cnst.h +++ b/lib_com/ivas_cnst.h @@ -1584,13 +1584,19 @@ typedef enum #define RV_FILTER_MAX_HISTORY ( 512 - 160 ) /* for longest history */ #define RV_LENGTH_NR_FC ( RV_FILTER_MAX_FFT_SIZE / 2 ) + 1 #define RV_LENGTH_NR_FC_16KHZ ( RV_FILTER_MAX_FFT_SIZE / 4 ) + 1 -#define IVAS_REVERB_DEFAULT_N_BANDS 31 -#define IVAS_REVERB_MASA_DEFAULT_N_BANDS 60 -#define IVAS_REVERB_MC_DEFAULT_N_BANDS 60 +#define IVAS_REVERB_DEFAULT_L_N_BANDS 31 +#define IVAS_REVERB_DEFAULT_M_N_BANDS 31 +#define IVAS_REVERB_DEFAULT_S_N_BANDS 60 #define LR_IAC_LENGTH_NR_FC ( RV_LENGTH_NR_FC ) #define LR_IAC_LENGTH_NR_FC_16KHZ ( RV_LENGTH_NR_FC_16KHZ ) +typedef enum +{ + REVERB_DEFAULT_SMALL, + REVERB_DEFAULT_MEDIUM, + REVERB_DEFAULT_LARGE +} IVAS_ReverbDefaultSize; /*----------------------------------------------------------------------------------* * FB mixer constants diff --git a/lib_dec/ivas_init_dec.c b/lib_dec/ivas_init_dec.c index a7d36cd621..5db909920e 100644 --- a/lib_dec/ivas_init_dec.c +++ b/lib_dec/ivas_init_dec.c @@ -1396,7 +1396,21 @@ ivas_error ivas_init_decoder( /* Get default reverb values based on format, if custom values were not given */ if ( st_ivas->hDecoderConfig->Opt_RendConfigCustom == 0 ) { - if ( ( error = ivas_render_config_change_defaults( st_ivas->hRenderConfig, st_ivas->ivas_format ) ) != IVAS_ERR_OK ) + IVAS_ReverbDefaultSize defaultReverbSize; + + switch ( st_ivas->ivas_format ) + { + case MASA_FORMAT: + defaultReverbSize = REVERB_DEFAULT_SMALL; + break; + case MC_FORMAT: + defaultReverbSize = REVERB_DEFAULT_MEDIUM; + break; + default: + defaultReverbSize = REVERB_DEFAULT_LARGE; + } + + if ( ( error = ivas_render_config_change_defaults( st_ivas->hRenderConfig, defaultReverbSize ) ) != IVAS_ERR_OK ) { return error; } diff --git a/lib_rend/ivas_render_config.c b/lib_rend/ivas_render_config.c index 855cc8c9e7..c345acd5cf 100644 --- a/lib_rend/ivas_render_config.c +++ b/lib_rend/ivas_render_config.c @@ -45,14 +45,14 @@ * Local constants *-----------------------------------------------------------------------*/ -#define IVAS_REVERB_DEFAULT_PRE_DELAY 0.016f -#define IVAS_REVERB_DEFAULT_INPUT_DELAY 0.1f +#define IVAS_REVERB_DEFAULT_L_PRE_DELAY 0.016f +#define IVAS_REVERB_DEFAULT_L_INPUT_DELAY 0.1f -#define IVAS_REVERB_MASA_DEFAULT_PRE_DELAY 0.0125f -#define IVAS_REVERB_MASA_DEFAULT_INPUT_DELAY 0.0f +#define IVAS_REVERB_DEFAULT_S_PRE_DELAY 0.0125f +#define IVAS_REVERB_DEFAULT_S_INPUT_DELAY 0.0f -#define IVAS_REVERB_MC_DEFAULT_PRE_DELAY 0.0125f -#define IVAS_REVERB_MC_DEFAULT_INPUT_DELAY 0.0f +#define IVAS_REVERB_DEFAULT_M_PRE_DELAY 0.0125f +#define IVAS_REVERB_DEFAULT_M_INPUT_DELAY 0.0f #define IVAS_REVERB_DEFAULT_USE_ER 0 @@ -119,17 +119,17 @@ ivas_error ivas_render_config_init_from_rom( #ifdef DEBUGGING ( *hRenderConfig )->renderer_type_override = IVAS_RENDER_TYPE_OVERRIDE_NONE; #endif - ( *hRenderConfig )->roomAcoustics.nBands = IVAS_REVERB_DEFAULT_N_BANDS; - ( *hRenderConfig )->roomAcoustics.acousticPreDelay = IVAS_REVERB_DEFAULT_PRE_DELAY; - ( *hRenderConfig )->roomAcoustics.inputPreDelay = IVAS_REVERB_DEFAULT_INPUT_DELAY; + ( *hRenderConfig )->roomAcoustics.nBands = IVAS_REVERB_DEFAULT_L_N_BANDS; + ( *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; 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 ); - mvr2r( ivas_reverb_default_fc, ( *hRenderConfig )->roomAcoustics.pFc_input, IVAS_REVERB_DEFAULT_N_BANDS ); - mvr2r( ivas_reverb_default_RT60, ( *hRenderConfig )->roomAcoustics.pAcoustic_rt60, IVAS_REVERB_DEFAULT_N_BANDS ); - mvr2r( ivas_reverb_default_DSR, ( *hRenderConfig )->roomAcoustics.pAcoustic_dsr, IVAS_REVERB_DEFAULT_N_BANDS ); + mvr2r( ivas_reverb_default_large_fc, ( *hRenderConfig )->roomAcoustics.pFc_input, IVAS_REVERB_DEFAULT_L_N_BANDS ); + mvr2r( ivas_reverb_default_large_RT60, ( *hRenderConfig )->roomAcoustics.pAcoustic_rt60, IVAS_REVERB_DEFAULT_L_N_BANDS ); + mvr2r( ivas_reverb_default_large_DSR, ( *hRenderConfig )->roomAcoustics.pAcoustic_dsr, IVAS_REVERB_DEFAULT_L_N_BANDS ); for ( i = 0; i < MAX_NUM_OBJECTS; i++ ) { @@ -161,41 +161,57 @@ ivas_error ivas_render_config_init_from_rom( /*-------------------------------------------------------------------* * ivas_render_config_change_defaults() * - * Changes default values from ROM, based on the IVAS format + * Changes default values from ROM *-------------------------------------------------------------------*/ ivas_error ivas_render_config_change_defaults( - RENDER_CONFIG_HANDLE hRenderConfig, /* i/o: Renderer config handle */ - IVAS_FORMAT ivas_format /* i: IVAS format */ + RENDER_CONFIG_HANDLE hRenderConfig, /* i/o: Renderer config handle */ + IVAS_ReverbDefaultSize reverbDefault /* i: IVAS format */ ) { - if ( ivas_format == MASA_FORMAT ) + switch ( reverbDefault ) { - hRenderConfig->roomAcoustics.nBands = IVAS_REVERB_MASA_DEFAULT_N_BANDS; - hRenderConfig->roomAcoustics.acousticPreDelay = IVAS_REVERB_MASA_DEFAULT_PRE_DELAY; - hRenderConfig->roomAcoustics.inputPreDelay = IVAS_REVERB_MASA_DEFAULT_INPUT_DELAY; - 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 ); - set_zero( &hRenderConfig->roomAcoustics.pAcoustic_dsr[0], CLDFB_NO_CHANNELS_MAX ); - - mvr2r( ivas_reverb_masa_default_fc, hRenderConfig->roomAcoustics.pFc_input, IVAS_REVERB_MASA_DEFAULT_N_BANDS ); - mvr2r( ivas_reverb_masa_default_RT60, hRenderConfig->roomAcoustics.pAcoustic_rt60, IVAS_REVERB_MASA_DEFAULT_N_BANDS ); - mvr2r( ivas_reverb_masa_default_DSR, hRenderConfig->roomAcoustics.pAcoustic_dsr, IVAS_REVERB_MASA_DEFAULT_N_BANDS ); - } - else if ( ivas_format == MC_FORMAT ) - { - hRenderConfig->roomAcoustics.nBands = IVAS_REVERB_MC_DEFAULT_N_BANDS; - hRenderConfig->roomAcoustics.acousticPreDelay = IVAS_REVERB_MC_DEFAULT_PRE_DELAY; - hRenderConfig->roomAcoustics.inputPreDelay = IVAS_REVERB_MC_DEFAULT_INPUT_DELAY; - 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 ); - set_zero( &hRenderConfig->roomAcoustics.pAcoustic_dsr[0], CLDFB_NO_CHANNELS_MAX ); - - mvr2r( ivas_reverb_mc_default_fc, hRenderConfig->roomAcoustics.pFc_input, IVAS_REVERB_MC_DEFAULT_N_BANDS ); - mvr2r( ivas_reverb_mc_default_RT60, hRenderConfig->roomAcoustics.pAcoustic_rt60, IVAS_REVERB_MC_DEFAULT_N_BANDS ); - mvr2r( ivas_reverb_mc_default_DSR, hRenderConfig->roomAcoustics.pAcoustic_dsr, IVAS_REVERB_MC_DEFAULT_N_BANDS ); + case REVERB_DEFAULT_SMALL: + hRenderConfig->roomAcoustics.nBands = IVAS_REVERB_DEFAULT_S_N_BANDS; + 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; + 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 ); + + mvr2r( ivas_reverb_default_small_fc, hRenderConfig->roomAcoustics.pFc_input, IVAS_REVERB_DEFAULT_S_N_BANDS ); + mvr2r( ivas_reverb_default_small_RT60, hRenderConfig->roomAcoustics.pAcoustic_rt60, IVAS_REVERB_DEFAULT_S_N_BANDS ); + mvr2r( ivas_reverb_default_small_DSR, hRenderConfig->roomAcoustics.pAcoustic_dsr, IVAS_REVERB_DEFAULT_S_N_BANDS ); + break; + case REVERB_DEFAULT_MEDIUM: + hRenderConfig->roomAcoustics.nBands = IVAS_REVERB_DEFAULT_M_N_BANDS; + 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; + 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 ); + + mvr2r( ivas_reverb_default_medium_fc, hRenderConfig->roomAcoustics.pFc_input, IVAS_REVERB_DEFAULT_M_N_BANDS ); + mvr2r( ivas_reverb_default_medium_RT60, hRenderConfig->roomAcoustics.pAcoustic_rt60, IVAS_REVERB_DEFAULT_M_N_BANDS ); + mvr2r( ivas_reverb_default_medium_DSR, hRenderConfig->roomAcoustics.pAcoustic_dsr, IVAS_REVERB_DEFAULT_M_N_BANDS ); + break; + case REVERB_DEFAULT_LARGE: + hRenderConfig->roomAcoustics.nBands = IVAS_REVERB_DEFAULT_L_N_BANDS; + 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; + 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 ); + + mvr2r( ivas_reverb_default_large_fc, hRenderConfig->roomAcoustics.pFc_input, IVAS_REVERB_DEFAULT_L_N_BANDS ); + mvr2r( ivas_reverb_default_large_RT60, hRenderConfig->roomAcoustics.pAcoustic_rt60, IVAS_REVERB_DEFAULT_L_N_BANDS ); + mvr2r( ivas_reverb_default_large_DSR, hRenderConfig->roomAcoustics.pAcoustic_dsr, IVAS_REVERB_DEFAULT_L_N_BANDS ); + break; + default: + return IVAS_ERR_ACOUSTIC_ENVIRONMENT_MISSING; } return IVAS_ERR_OK; diff --git a/lib_rend/ivas_rom_rend.c b/lib_rend/ivas_rom_rend.c index 03725cb852..d878c16c3b 100644 --- a/lib_rend/ivas_rom_rend.c +++ b/lib_rend/ivas_rom_rend.c @@ -346,7 +346,7 @@ const float t_design_11_elevation[70] = * Reverberator ROM tables *-----------------------------------------------------------------------*/ -const float ivas_reverb_default_fc[IVAS_REVERB_DEFAULT_N_BANDS] = +const float ivas_reverb_default_large_fc[IVAS_REVERB_DEFAULT_L_N_BANDS] = { 20.0f, 25.0f, 31.5f, 40.0f, 50.0f, 63.0f, 80.0f, 100.0f, @@ -358,7 +358,7 @@ const float ivas_reverb_default_fc[IVAS_REVERB_DEFAULT_N_BANDS] = 12500.0f, 16000.0f, 20000.0f }; -const float ivas_reverb_default_RT60[IVAS_REVERB_DEFAULT_N_BANDS] = +const float ivas_reverb_default_large_RT60[IVAS_REVERB_DEFAULT_L_N_BANDS] = { 1.3622f, 1.4486f, 1.3168f, 1.5787f, 1.4766f, 1.3954f, 1.2889f, 1.3462f, @@ -370,7 +370,7 @@ const float ivas_reverb_default_RT60[IVAS_REVERB_DEFAULT_N_BANDS] = 0.71945f, 0.61682f, 0.60031f }; -const float ivas_reverb_default_DSR[IVAS_REVERB_DEFAULT_N_BANDS] = +const float ivas_reverb_default_large_DSR[IVAS_REVERB_DEFAULT_L_N_BANDS] = { 1.8811e-08f, 2.1428e-08f, 1.3972e-08f, 1.51e-08f, 1.287e-08f, 1.8747e-08f, 2.413e-08f, 3.9927e-08f, @@ -382,7 +382,7 @@ const float ivas_reverb_default_DSR[IVAS_REVERB_DEFAULT_N_BANDS] = 6.2001e-08f, 2.8483e-08f, 2.6267e-08f }; -const float ivas_reverb_masa_default_fc[IVAS_REVERB_MASA_DEFAULT_N_BANDS] = +const float ivas_reverb_default_small_fc[IVAS_REVERB_DEFAULT_S_N_BANDS] = { 200.0f, 600.0f, 1000.0f, 1400.0f, 1800.0f, 2200.0f, 2600.0f, 3000.0f, 3400.0f, 3800.0f, 4200.0f, 4600.0f, 5000.0f, 5400.0f, 5800.0f, 6200.0f, 6600.0f, 7000.0f, 7400.0f, 7800.0f, @@ -392,7 +392,7 @@ const float ivas_reverb_masa_default_fc[IVAS_REVERB_MASA_DEFAULT_N_BANDS] = 20200.0f, 20600.0f, 21000.0f, 21400.0f, 21800.0f, 22200.0f, 22600.0f, 23000.0f, 23400.0f, 23800.0f }; -const float ivas_reverb_masa_default_RT60[IVAS_REVERB_MASA_DEFAULT_N_BANDS] = +const float ivas_reverb_default_small_RT60[IVAS_REVERB_DEFAULT_S_N_BANDS] = { 0.300000f, 0.273750f, 0.265941f, 0.263784f, 0.265572f, 0.261790f, 0.252988f, 0.245801f, 0.237429f, 0.228169f, 0.219536f, 0.211116f, 0.203262f, 0.196144f, 0.189161f, 0.182436f, 0.176237f, 0.170114f, 0.164250f, 0.158791f, @@ -402,7 +402,7 @@ const float ivas_reverb_masa_default_RT60[IVAS_REVERB_MASA_DEFAULT_N_BANDS] = 0.074102f, 0.073068f, 0.072153f, 0.071659f, 0.070969f, 0.070686f, 0.070224f, 0.069878f, 0.069936f, 0.069820f }; -const float ivas_reverb_masa_default_DSR[IVAS_REVERB_MASA_DEFAULT_N_BANDS] = +const float ivas_reverb_default_small_DSR[IVAS_REVERB_DEFAULT_S_N_BANDS] = { 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, @@ -412,34 +412,40 @@ const float ivas_reverb_masa_default_DSR[IVAS_REVERB_MASA_DEFAULT_N_BANDS] = 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 }; -const float ivas_reverb_mc_default_fc[IVAS_REVERB_MC_DEFAULT_N_BANDS] = +const float ivas_reverb_default_medium_fc[IVAS_REVERB_DEFAULT_M_N_BANDS] = { - 200.0f, 600.0f, 1000.0f, 1400.0f, 1800.0f, 2200.0f, 2600.0f, 3000.0f, 3400.0f, 3800.0f, - 4200.0f, 4600.0f, 5000.0f, 5400.0f, 5800.0f, 6200.0f, 6600.0f, 7000.0f, 7400.0f, 7800.0f, - 8200.0f, 8600.0f, 9000.0f, 9400.0f, 9800.0f, 10200.0f, 10600.0f, 11000.0f, 11400.0f, 11800.0f, - 12200.0f, 12600.0f, 13000.0f, 13400.0f, 13800.0f, 14200.0f, 14600.0f, 15000.0f, 15400.0f, 15800.0f, - 16200.0f, 16600.0f, 17000.0f, 17400.0f, 17800.0f, 18200.0f, 18600.0f, 19000.0f, 19400.0f, 19800.0f, - 20200.0f, 20600.0f, 21000.0f, 21400.0f, 21800.0f, 22200.0f, 22600.0f, 23000.0f, 23400.0f, 23800.0f + 20.0f, 25.0f, 31.5f, 40.0f, + 50.0f, 63.0f, 80.0f, 100.0f, + 125.0f, 160.0f, 200.0f, 250.0f, + 315.0f, 400.0f, 500.0f, 630.0f, + 800.0f, 1000.0f, 1250.0f, 1600.0f, + 2000.0f, 2500.0f, 3150.0f, 4000.0f, + 5000.0f, 6300.0f, 8000.0f, 10000.0f, + 12500.0f, 16000.0f, 20000.0f }; -const float ivas_reverb_mc_default_RT60[IVAS_REVERB_MC_DEFAULT_N_BANDS] = +const float ivas_reverb_default_medium_RT60[IVAS_REVERB_DEFAULT_M_N_BANDS] = { - 0.400000f, 0.370000f, 0.361076f, 0.358610f, 0.360654f, 0.356331f, 0.346272f, 0.338059f, 0.328491f, 0.317907f, - 0.308041f, 0.298419f, 0.289442f, 0.281307f, 0.273326f, 0.265641f, 0.258557f, 0.251559f, 0.244857f, 0.238618f, - 0.232398f, 0.226642f, 0.220876f, 0.215312f, 0.210205f, 0.205135f, 0.200353f, 0.196380f, 0.192367f, 0.188720f, - 0.185892f, 0.182809f, 0.179960f, 0.177499f, 0.174864f, 0.172323f, 0.169862f, 0.167393f, 0.164954f, 0.162534f, - 0.160132f, 0.157780f, 0.155467f, 0.153213f, 0.151231f, 0.149203f, 0.147286f, 0.145845f, 0.144232f, 0.142763f, - 0.141831f, 0.140649f, 0.139604f, 0.139039f, 0.138250f, 0.137927f, 0.137399f, 0.137004f, 0.137070f, 0.136937f + 0.30000000f, 0.31111111f, 0.32222222f, 0.33333333f, + 0.34444444f, 0.35555556f, 0.36666667f, 0.37777778f, + 0.38888889f, 0.39555556f, 0.40000000f, 0.36107600f, + 0.35861000f, 0.36065400f, 0.35633100f, 0.34627200f, + 0.33805900f, 0.32849100f, 0.31790700f, 0.30804100f, + 0.29841900f, 0.28944200f, 0.28130700f, 0.27332600f, + 0.26564100f, 0.25855700f, 0.25155900f, 0.24485700f, + 0.23861800f, 0.23239800f, 0.22664200f }; -const float ivas_reverb_mc_default_DSR[IVAS_REVERB_MC_DEFAULT_N_BANDS] = +const float ivas_reverb_default_medium_DSR[IVAS_REVERB_DEFAULT_M_N_BANDS] = { - 2.705517e-05f, 1.205788e-05f, 7.921604e-06f, 7.237642e-06f, 8.891490e-06f, 1.071545e-05f, 1.204347e-05f, 1.518662e-05f, 1.755462e-05f, 1.855867e-05f, - 1.697032e-05f, 1.508359e-05f, 1.271521e-05f, 1.079401e-05f, 8.865647e-06f, 7.221897e-06f, 6.140750e-06f, 5.175824e-06f, 4.778731e-06f, 5.648105e-06f, - 6.661798e-06f, 8.394316e-06f, 9.940707e-06f, 1.146325e-05f, 1.176827e-05f, 1.186537e-05f, 1.128682e-05f, 9.990709e-06f, 9.163022e-06f, 8.314448e-06f, - 7.627883e-06f, 6.903900e-06f, 6.161279e-06f, 5.807365e-06f, 5.227551e-06f, 4.705133e-06f, 4.448539e-06f, 4.053002e-06f, 3.877406e-06f, 3.653874e-06f, - 3.490109e-06f, 3.330512e-06f, 3.151909e-06f, 2.961156e-06f, 2.737213e-06f, 2.520732e-06f, 2.309620e-06f, 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, - 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, 2.210372e-06f + 2.705517e-05f, 1.205788e-05f, 7.921604e-06f, 7.237642e-06f, + 8.891490e-06f, 1.071545e-05f, 1.204347e-05f, 1.518662e-05f, + 1.755462e-05f, 1.855867e-05f, 2.210372e-06f, 2.210372e-06f, + 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, + 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, + 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, + 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, + 2.210372e-06f, 2.210372e-06f, 2.210372e-06f }; diff --git a/lib_rend/ivas_rom_rend.h b/lib_rend/ivas_rom_rend.h index 4033175785..880408e69d 100644 --- a/lib_rend/ivas_rom_rend.h +++ b/lib_rend/ivas_rom_rend.h @@ -113,17 +113,18 @@ extern const float t_design_11_elevation[70]; * Reverberator ROM tables *-----------------------------------------------------------------------*/ -extern const float ivas_reverb_default_fc[]; -extern const float ivas_reverb_default_RT60[]; -extern const float ivas_reverb_default_DSR[]; +extern const float ivas_reverb_default_small_fc[]; +extern const float ivas_reverb_default_small_RT60[]; +extern const float ivas_reverb_default_small_DSR[]; -extern const float ivas_reverb_masa_default_fc[]; -extern const float ivas_reverb_masa_default_RT60[]; -extern const float ivas_reverb_masa_default_DSR[]; +extern const float ivas_reverb_default_medium_fc[]; +extern const float ivas_reverb_default_medium_RT60[]; +extern const float ivas_reverb_default_medium_DSR[]; + +extern const float ivas_reverb_default_large_fc[]; +extern const float ivas_reverb_default_large_RT60[]; +extern const float ivas_reverb_default_large_DSR[]; -extern const float ivas_reverb_mc_default_fc[]; -extern const float ivas_reverb_mc_default_RT60[]; -extern const float ivas_reverb_mc_default_DSR[]; /*----------------------------------------------------------------------------------* * Renderer SBA & MC enc/dec matrices -- GitLab From a516fe3354f55d6c8d7ddef759c85c096dede16d Mon Sep 17 00:00:00 2001 From: Marek Szczerba Date: Mon, 27 Oct 2025 13:47:40 +0100 Subject: [PATCH 4/7] Minor refactoring --- lib_rend/ivas_rom_rend.c | 72 ++++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/lib_rend/ivas_rom_rend.c b/lib_rend/ivas_rom_rend.c index d878c16c3b..c6432fdf38 100644 --- a/lib_rend/ivas_rom_rend.c +++ b/lib_rend/ivas_rom_rend.c @@ -346,42 +346,6 @@ const float t_design_11_elevation[70] = * Reverberator ROM tables *-----------------------------------------------------------------------*/ -const float ivas_reverb_default_large_fc[IVAS_REVERB_DEFAULT_L_N_BANDS] = -{ - 20.0f, 25.0f, 31.5f, 40.0f, - 50.0f, 63.0f, 80.0f, 100.0f, - 125.0f, 160.0f, 200.0f, 250.0f, - 315.0f, 400.0f, 500.0f, 630.0f, - 800.0f, 1000.0f, 1250.0f, 1600.0f, - 2000.0f, 2500.0f, 3150.0f, 4000.0f, - 5000.0f, 6300.0f, 8000.0f, 10000.0f, - 12500.0f, 16000.0f, 20000.0f -}; - -const float ivas_reverb_default_large_RT60[IVAS_REVERB_DEFAULT_L_N_BANDS] = -{ - 1.3622f, 1.4486f, 1.3168f, 1.5787f, - 1.4766f, 1.3954f, 1.2889f, 1.3462f, - 1.0759f, 1.0401f, 1.097f, 1.085f, - 1.091f, 1.0404f, 1.0499f, 1.0699f, - 1.1028f, 1.1714f, 1.1027f, 1.0666f, - 1.055f, 1.0553f, 1.0521f, 1.0569f, - 1.0421f, 0.97822f, 0.80487f, 0.75944f, - 0.71945f, 0.61682f, 0.60031f -}; - -const float ivas_reverb_default_large_DSR[IVAS_REVERB_DEFAULT_L_N_BANDS] = -{ - 1.8811e-08f, 2.1428e-08f, 1.3972e-08f, 1.51e-08f, - 1.287e-08f, 1.8747e-08f, 2.413e-08f, 3.9927e-08f, - 8.9719e-08f, 1.902e-07f, 3.702e-07f, 6.1341e-07f, - 7.1432e-07f, 6.5331e-07f, 4.6094e-07f, 5.4683e-07f, - 7.0134e-07f, 6.856e-07f, 7.114e-07f, 6.9604e-07f, - 5.2939e-07f, 5.699e-07f, 6.1773e-07f, 5.7488e-07f, - 4.7748e-07f, 2.7213e-07f, 1.3681e-07f, 1.0941e-07f, - 6.2001e-08f, 2.8483e-08f, 2.6267e-08f -}; - const float ivas_reverb_default_small_fc[IVAS_REVERB_DEFAULT_S_N_BANDS] = { 200.0f, 600.0f, 1000.0f, 1400.0f, 1800.0f, 2200.0f, 2600.0f, 3000.0f, 3400.0f, 3800.0f, @@ -448,6 +412,42 @@ const float ivas_reverb_default_medium_DSR[IVAS_REVERB_DEFAULT_M_N_BANDS] = 2.210372e-06f, 2.210372e-06f, 2.210372e-06f }; +const float ivas_reverb_default_large_fc[IVAS_REVERB_DEFAULT_L_N_BANDS] = +{ + 20.0f, 25.0f, 31.5f, 40.0f, + 50.0f, 63.0f, 80.0f, 100.0f, + 125.0f, 160.0f, 200.0f, 250.0f, + 315.0f, 400.0f, 500.0f, 630.0f, + 800.0f, 1000.0f, 1250.0f, 1600.0f, + 2000.0f, 2500.0f, 3150.0f, 4000.0f, + 5000.0f, 6300.0f, 8000.0f, 10000.0f, + 12500.0f, 16000.0f, 20000.0f +}; + +const float ivas_reverb_default_large_RT60[IVAS_REVERB_DEFAULT_L_N_BANDS] = +{ + 1.3622f, 1.4486f, 1.3168f, 1.5787f, + 1.4766f, 1.3954f, 1.2889f, 1.3462f, + 1.0759f, 1.0401f, 1.097f, 1.085f, + 1.091f, 1.0404f, 1.0499f, 1.0699f, + 1.1028f, 1.1714f, 1.1027f, 1.0666f, + 1.055f, 1.0553f, 1.0521f, 1.0569f, + 1.0421f, 0.97822f, 0.80487f, 0.75944f, + 0.71945f, 0.61682f, 0.60031f +}; + +const float ivas_reverb_default_large_DSR[IVAS_REVERB_DEFAULT_L_N_BANDS] = +{ + 1.8811e-08f, 2.1428e-08f, 1.3972e-08f, 1.51e-08f, + 1.287e-08f, 1.8747e-08f, 2.413e-08f, 3.9927e-08f, + 8.9719e-08f, 1.902e-07f, 3.702e-07f, 6.1341e-07f, + 7.1432e-07f, 6.5331e-07f, 4.6094e-07f, 5.4683e-07f, + 7.0134e-07f, 6.856e-07f, 7.114e-07f, 6.9604e-07f, + 5.2939e-07f, 5.699e-07f, 6.1773e-07f, 5.7488e-07f, + 4.7748e-07f, 2.7213e-07f, 1.3681e-07f, 1.0941e-07f, + 6.2001e-08f, 2.8483e-08f, 2.6267e-08f +}; + /*----------------------------------------------------------------------------------* * Renderer SBA & MC enc/dec matrices -- GitLab From d655d8c1e1f0d21528e6560f27a9c19e8af70bed Mon Sep 17 00:00:00 2001 From: Marek Szczerba Date: Tue, 28 Oct 2025 14:50:50 +0100 Subject: [PATCH 5/7] Updated ROM tables for medium sized room --- lib_rend/ivas_rom_rend.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/lib_rend/ivas_rom_rend.c b/lib_rend/ivas_rom_rend.c index c6432fdf38..726ec105d5 100644 --- a/lib_rend/ivas_rom_rend.c +++ b/lib_rend/ivas_rom_rend.c @@ -390,26 +390,26 @@ const float ivas_reverb_default_medium_fc[IVAS_REVERB_DEFAULT_M_N_BANDS] = const float ivas_reverb_default_medium_RT60[IVAS_REVERB_DEFAULT_M_N_BANDS] = { - 0.30000000f, 0.31111111f, 0.32222222f, 0.33333333f, - 0.34444444f, 0.35555556f, 0.36666667f, 0.37777778f, - 0.38888889f, 0.39555556f, 0.40000000f, 0.36107600f, - 0.35861000f, 0.36065400f, 0.35633100f, 0.34627200f, - 0.33805900f, 0.32849100f, 0.31790700f, 0.30804100f, - 0.29841900f, 0.28944200f, 0.28130700f, 0.27332600f, - 0.26564100f, 0.25855700f, 0.25155900f, 0.24485700f, - 0.23861800f, 0.23239800f, 0.22664200f + 0.22000000f, 0.22500000f, 0.23150000f, 0.24000000f, + 0.25000000f, 0.26300000f, 0.28000000f, 0.30000000f, + 0.32500000f, 0.36000000f, 0.40000000f, 0.39625000f, + 0.39137500f, 0.38500000f, 0.37750000f, 0.36933070f, + 0.36553800f, 0.36107600f, 0.35953475f, 0.35963200f, + 0.35849250f, 0.34878675f, 0.33447100f, 0.31297400f, + 0.28944200f, 0.26387000f, 0.23550800f, 0.20767000f, + 0.18357975f, 0.16133300f, 0.14229700f }; const float ivas_reverb_default_medium_DSR[IVAS_REVERB_DEFAULT_M_N_BANDS] = { - 2.705517e-05f, 1.205788e-05f, 7.921604e-06f, 7.237642e-06f, - 8.891490e-06f, 1.071545e-05f, 1.204347e-05f, 1.518662e-05f, - 1.755462e-05f, 1.855867e-05f, 2.210372e-06f, 2.210372e-06f, - 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, - 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, - 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, - 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, 2.210372e-06f, - 2.210372e-06f, 2.210372e-06f, 2.210372e-06f + 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, + 2.274345e-05f, 1.955652e-05f, 1.580720e-05f, 1.174766e-05f, + 9.989742e-06f, 7.921604e-06f, 7.494128e-06f, 8.064566e-06f, + 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 }; const float ivas_reverb_default_large_fc[IVAS_REVERB_DEFAULT_L_N_BANDS] = -- GitLab From 889e5dd8496620348a125a27f2e63941fc3f0ad2 Mon Sep 17 00:00:00 2001 From: Marek Szczerba Date: Tue, 28 Oct 2025 15:40:46 +0100 Subject: [PATCH 6/7] Cleanup and refactoring --- lib_com/ivas_cnst.h | 8 ++++---- lib_dec/ivas_init_dec.c | 8 ++++---- lib_rend/ivas_prot_rend.h | 2 +- lib_rend/ivas_render_config.c | 12 ++++++------ 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h index 37a9c14070..3a6894d435 100755 --- a/lib_com/ivas_cnst.h +++ b/lib_com/ivas_cnst.h @@ -1593,10 +1593,10 @@ typedef enum typedef enum { - REVERB_DEFAULT_SMALL, - REVERB_DEFAULT_MEDIUM, - REVERB_DEFAULT_LARGE -} IVAS_ReverbDefaultSize; + DEFAULT_REVERB_SMALL, + DEFAULT_REVERB_MEDIUM, + DEFAULT_REVERB_LARGE +} IVAS_DefaultReverbSize; /*----------------------------------------------------------------------------------* * FB mixer constants diff --git a/lib_dec/ivas_init_dec.c b/lib_dec/ivas_init_dec.c index 5db909920e..7db484b0db 100644 --- a/lib_dec/ivas_init_dec.c +++ b/lib_dec/ivas_init_dec.c @@ -1396,18 +1396,18 @@ ivas_error ivas_init_decoder( /* Get default reverb values based on format, if custom values were not given */ if ( st_ivas->hDecoderConfig->Opt_RendConfigCustom == 0 ) { - IVAS_ReverbDefaultSize defaultReverbSize; + IVAS_DefaultReverbSize defaultReverbSize; switch ( st_ivas->ivas_format ) { case MASA_FORMAT: - defaultReverbSize = REVERB_DEFAULT_SMALL; + defaultReverbSize = DEFAULT_REVERB_SMALL; break; case MC_FORMAT: - defaultReverbSize = REVERB_DEFAULT_MEDIUM; + defaultReverbSize = DEFAULT_REVERB_MEDIUM; break; default: - defaultReverbSize = REVERB_DEFAULT_LARGE; + defaultReverbSize = DEFAULT_REVERB_LARGE; } if ( ( error = ivas_render_config_change_defaults( st_ivas->hRenderConfig, defaultReverbSize ) ) != IVAS_ERR_OK ) diff --git a/lib_rend/ivas_prot_rend.h b/lib_rend/ivas_prot_rend.h index 27f921e488..894821855d 100644 --- a/lib_rend/ivas_prot_rend.h +++ b/lib_rend/ivas_prot_rend.h @@ -1345,7 +1345,7 @@ ivas_error ivas_render_config_init_from_rom( ivas_error ivas_render_config_change_defaults( RENDER_CONFIG_HANDLE hRenderConfig, /* i/o: Renderer config handle */ - IVAS_FORMAT ivas_format /* i: IVAS format */ + IVAS_DefaultReverbSize reverbDefault /* i: Reverb default size */ ); diff --git a/lib_rend/ivas_render_config.c b/lib_rend/ivas_render_config.c index c345acd5cf..50094cf79a 100644 --- a/lib_rend/ivas_render_config.c +++ b/lib_rend/ivas_render_config.c @@ -165,13 +165,13 @@ ivas_error ivas_render_config_init_from_rom( *-------------------------------------------------------------------*/ ivas_error ivas_render_config_change_defaults( - RENDER_CONFIG_HANDLE hRenderConfig, /* i/o: Renderer config handle */ - IVAS_ReverbDefaultSize reverbDefault /* i: IVAS format */ + RENDER_CONFIG_HANDLE hRenderConfig, /* i/o: Renderer config handle */ + IVAS_DefaultReverbSize defaultReverbSize /* i: Reverb default size */ ) { - switch ( reverbDefault ) + switch ( defaultReverbSize ) { - case REVERB_DEFAULT_SMALL: + case DEFAULT_REVERB_SMALL: hRenderConfig->roomAcoustics.nBands = IVAS_REVERB_DEFAULT_S_N_BANDS; hRenderConfig->roomAcoustics.acousticPreDelay = IVAS_REVERB_DEFAULT_S_PRE_DELAY; hRenderConfig->roomAcoustics.inputPreDelay = IVAS_REVERB_DEFAULT_S_INPUT_DELAY; @@ -184,7 +184,7 @@ ivas_error ivas_render_config_change_defaults( mvr2r( ivas_reverb_default_small_RT60, hRenderConfig->roomAcoustics.pAcoustic_rt60, IVAS_REVERB_DEFAULT_S_N_BANDS ); mvr2r( ivas_reverb_default_small_DSR, hRenderConfig->roomAcoustics.pAcoustic_dsr, IVAS_REVERB_DEFAULT_S_N_BANDS ); break; - case REVERB_DEFAULT_MEDIUM: + case DEFAULT_REVERB_MEDIUM: hRenderConfig->roomAcoustics.nBands = IVAS_REVERB_DEFAULT_M_N_BANDS; hRenderConfig->roomAcoustics.acousticPreDelay = IVAS_REVERB_DEFAULT_M_PRE_DELAY; hRenderConfig->roomAcoustics.inputPreDelay = IVAS_REVERB_DEFAULT_M_INPUT_DELAY; @@ -197,7 +197,7 @@ ivas_error ivas_render_config_change_defaults( mvr2r( ivas_reverb_default_medium_RT60, hRenderConfig->roomAcoustics.pAcoustic_rt60, IVAS_REVERB_DEFAULT_M_N_BANDS ); mvr2r( ivas_reverb_default_medium_DSR, hRenderConfig->roomAcoustics.pAcoustic_dsr, IVAS_REVERB_DEFAULT_M_N_BANDS ); break; - case REVERB_DEFAULT_LARGE: + case DEFAULT_REVERB_LARGE: hRenderConfig->roomAcoustics.nBands = IVAS_REVERB_DEFAULT_L_N_BANDS; hRenderConfig->roomAcoustics.acousticPreDelay = IVAS_REVERB_DEFAULT_L_PRE_DELAY; hRenderConfig->roomAcoustics.inputPreDelay = IVAS_REVERB_DEFAULT_L_INPUT_DELAY; -- GitLab From d20927898c39ed6b1c67debb84912508db470d3e Mon Sep 17 00:00:00 2001 From: Tapani Pihlajakuja Date: Wed, 29 Oct 2025 14:35:38 +0200 Subject: [PATCH 7/7] Add default selection for rest of the spatial formats. --- lib_dec/ivas_init_dec.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib_dec/ivas_init_dec.c b/lib_dec/ivas_init_dec.c index 7db484b0db..c89bde525e 100644 --- a/lib_dec/ivas_init_dec.c +++ b/lib_dec/ivas_init_dec.c @@ -1400,12 +1400,24 @@ ivas_error ivas_init_decoder( switch ( st_ivas->ivas_format ) { + case ISM_FORMAT: + defaultReverbSize = DEFAULT_REVERB_MEDIUM; + break; + case SBA_FORMAT: + defaultReverbSize = DEFAULT_REVERB_SMALL; + break; case MASA_FORMAT: defaultReverbSize = DEFAULT_REVERB_SMALL; break; case MC_FORMAT: defaultReverbSize = DEFAULT_REVERB_MEDIUM; break; + case MASA_ISM_FORMAT: + defaultReverbSize = DEFAULT_REVERB_MEDIUM; + break; + case SBA_ISM_FORMAT: + defaultReverbSize = DEFAULT_REVERB_MEDIUM; + break; default: defaultReverbSize = DEFAULT_REVERB_LARGE; } -- GitLab