From 645b65da401cf0b0997125dc5d1d013f3b829ee0 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Thu, 10 Oct 2024 13:20:27 +0200 Subject: [PATCH 01/11] comment unsupported testcases + EXT -> native mode --- tests/test_be_for_jbm_neutral_dly_profile.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/test_be_for_jbm_neutral_dly_profile.py b/tests/test_be_for_jbm_neutral_dly_profile.py index 61bb168a2f..743a4e0cfb 100644 --- a/tests/test_be_for_jbm_neutral_dly_profile.py +++ b/tests/test_be_for_jbm_neutral_dly_profile.py @@ -17,7 +17,7 @@ DTX_OFF = "DTX_OFF" # TODO: Clarify if this should also be tested with DTX, see #1122 TESTCASES = [ # stereo - ["stereo", 32000, "EXT", "DTX_OFF"], + ["stereo", 32000, "STEREO", "DTX_OFF"], ["stereo", 48000, "MONO", "DTX_OFF"], ["stereo", 16400, "5_1", "DTX_OFF"], ["stereo", 256000, "7_1_4", "DTX_OFF"], @@ -42,21 +42,21 @@ TESTCASES = [ # McMasa ["MC_5_1", 16400, "BINAURAL_ROOM_IR", "DTX_OFF"], ["MC_7_1_4", 80000, "mono", "DTX_OFF"], - ["MC_5_1_2", 24400, "EXT", "DTX_OFF"], + ["MC_5_1_2", 24400, "5_1_2", "DTX_OFF"], # paramMC ["MC_5_1_2", 48000, "BINAURAL", "DTX_OFF"], - ["MC_7_1", 80000, "EXT", "DTX_OFF"], + ["MC_7_1", 80000, "7_1", "DTX_OFF"], ["MC_7_1_4", 128000, "FOA", "DTX_OFF"], # paramUpmix ["MC_7_1_4", 160000, "stereo", "DTX_OFF"], # discrete MC ["MC_5_1_2", 512000, "BINAURAL_ROOM_REVERB", "DTX_OFF"], - ["MC_7_1", 128000, "EXT", "DTX_OFF"], + ["MC_7_1", 128000, "7_1", "DTX_OFF"], ["MC_7_1_4", 256000, "5_1", "DTX_OFF"], # SBA ["HOA3", 64000, "BINAURAL", "DTX_OFF"], ["FOA", 256000, "BINAURAL_ROOM_REVERB", "DTX_OFF"], - ["HOA2", 80000, "EXT", "DTX_OFF"], + ["HOA2", 80000, "HOA2", "DTX_OFF"], ["HOA3", 512000, "5_1_4", "DTX_OFF"], ["FOA", 80000, "stereo", "DTX_OFF"], # OMASA @@ -64,11 +64,11 @@ TESTCASES = [ ["OMASA_ISM2", 24400, "MONO", "DTX_OFF"], ["OMASA_ISM3", 80000, "7_1_4", "DTX_OFF"], ["OMASA_ISM4", 64000, "HOA3", "DTX_OFF"], - ["OMASA_ISM2", 32000, "EXT", "DTX_OFF"], + # ["OMASA_ISM2", 32000, "EXT", "DTX_OFF"], # OSBA ["OSBA_ISM2_HOA2", 64000, "BINAURAL_ROOM_IR", "DTX_OFF"], - ["OSBA_ISM4_FOA", 512000, "BINAURAL_ROOM_REVERB", "DTX_OFF"], - ["OSBA_ISM3_HOA3", 128000, "EXT", "DTX_OFF"], + # ["OSBA_ISM4_FOA", 512000, "BINAURAL_ROOM_REVERB", "DTX_OFF"], + # ["OSBA_ISM3_HOA3", 128000, "EXT", "DTX_OFF"], ["OSBA_ISM2_HOA3", 96000, "5_1", "DTX_OFF"], ["OSBA_ISM1_HOA2", 32000, "mono", "DTX_OFF"], ] -- GitLab From 1ee0caf00bdcc65cbaaee21824b8e9d57126c719 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Fri, 25 Oct 2024 10:58:19 +0200 Subject: [PATCH 02/11] add self test case for 7_1_4 with JBM --- scripts/config/self_test.prm | 5 +++++ scripts/config/self_test_ltv.prm | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/scripts/config/self_test.prm b/scripts/config/self_test.prm index e8ba281af6..b1396d1955 100644 --- a/scripts/config/self_test.prm +++ b/scripts/config/self_test.prm @@ -1594,6 +1594,11 @@ networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0 ../IVAS_dec -Tracefile tracefile_dec -VOIP 7_1_4 48 netsimoutput testv/stv51MC48c.wav_MC51_384000_48-48_7_1_4_JBM5.tst +// Multi-channel 7_1_4 at 256 kbps, 48kHz in, 48kHz out, 7_1_4 out, JBM Prof 5 +../IVAS_cod -mc 7_1_4 256000 48 testv/stv714MC48c.wav bit +networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0 +../IVAS_dec -Tracefile tracefile_dec -VOIP 7_1_4 48 netsimoutput testv/stv714MC48c.wav_MC714_256000_48-48_7_1_4_JBM5.tst + // MASA 1dir 1TC bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 32kHz out, 5_1 out, JBM Prof 5 ../IVAS_cod -masa 1 testv/stv1MASA1TC48n.met ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/stv1MASA1TC48n.wav bit networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0 diff --git a/scripts/config/self_test_ltv.prm b/scripts/config/self_test_ltv.prm index fcd95ac2f0..68279e45fb 100644 --- a/scripts/config/self_test_ltv.prm +++ b/scripts/config/self_test_ltv.prm @@ -1599,6 +1599,11 @@ networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0 ../IVAS_dec -Tracefile tracefile_dec -VOIP 7_1_4 48 netsimoutput testv/ltv48_MC51.wav_MC51_384000_48-48_7_1_4_JBM5.tst +// Multi-channel 7_1_$ at 256 kbps, 48kHz in, 48kHz out, 7_1_4 out, JBM Prof 5 +../IVAS_cod -mc 7_1_4 256000 48 testv/ltv48_MC714.wav bit +networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0 +../IVAS_dec -Tracefile tracefile_dec -VOIP 7_1_4 48 netsimoutput testv/ltv48_MC714.wav_MC714_256000_48-48_7_1_4_JBM5.tst + // MASA 1TC bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 32kHz out, 5_1 out, JBM Prof 5 ../IVAS_cod -masa 1 testv/ltv48_MASA1TC.met ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/ltv48_MASA1TC.wav bit networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0 -- GitLab From 6861d798cc2996caed1fd1aa3e1fb22c93154b65 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Tue, 5 Nov 2024 14:56:19 +0100 Subject: [PATCH 03/11] merge main --- .gitlab-ci.yml | 45 +- apps/decoder.c | 554 ++++++++++--- apps/encoder.c | 8 + apps/renderer.c | 8 + lib_com/common_api_types.h | 19 + lib_com/ivas_cnst.h | 4 + lib_com/ivas_error.h | 7 + lib_com/ivas_prot.h | 75 +- lib_com/ivas_spar_com.c | 4 + lib_com/options.h | 22 +- lib_com/prot.h | 11 + lib_com/tools.c | 40 + lib_dec/ivas_binRenderer_internal.c | 35 +- lib_dec/ivas_init_dec.c | 464 ++++++++++- lib_dec/ivas_ism_dec.c | 79 +- lib_dec/ivas_ism_param_dec.c | 26 +- lib_dec/ivas_ism_renderer.c | 1 + lib_dec/ivas_jbm_dec.c | 60 +- lib_dec/ivas_masa_dec.c | 34 +- lib_dec/ivas_mc_param_dec.c | 14 +- lib_dec/ivas_mc_paramupmix_dec.c | 6 +- lib_dec/ivas_mct_dec.c | 36 +- lib_dec/ivas_mdct_core_dec.c | 9 + lib_dec/ivas_objectRenderer_internal.c | 11 + lib_dec/ivas_omasa_dec.c | 30 +- lib_dec/ivas_osba_dec.c | 53 ++ lib_dec/ivas_output_config.c | 4 - lib_dec/ivas_sba_dec.c | 15 +- lib_dec/ivas_stat_dec.h | 3 + lib_dec/ivas_stereo_dft_plc.c | 12 + lib_dec/lib_dec.c | 753 ++++++++++++++---- lib_dec/lib_dec.h | 79 +- lib_dec/tonalMDCTconcealment.c | 4 + lib_enc/ivas_cpe_enc.c | 4 + lib_enc/ivas_init_enc.c | 7 + lib_enc/ivas_ism_enc.c | 4 + lib_enc/ivas_masa_enc.c | 7 - lib_enc/ivas_sce_enc.c | 4 + lib_enc/ivas_stat_enc.h | 5 + lib_enc/lib_enc.c | 20 + lib_enc/lib_enc.h | 7 + lib_isar/lib_isar_post_rend.c | 4 + lib_rend/ivas_dirac_dec_binaural_functions.c | 45 +- lib_rend/ivas_objectRenderer.c | 1 + lib_rend/ivas_objectRenderer_sources.c | 17 +- lib_rend/ivas_prot_rend.h | 17 +- lib_rend/ivas_render_config.c | 4 + lib_rend/ivas_reverb.c | 77 +- lib_rend/lib_rend.c | 80 +- lib_util/hrtf_file_reader.c | 17 +- lib_util/hrtf_file_reader.h | 6 +- lib_util/render_config_reader.c | 16 + readme.txt | 16 +- scripts/IvasBuildAndRunChecks.py | 39 +- scripts/batch_comp_audio.py | 3 +- scripts/parse_xml_report.py | 12 +- scripts/pyivastest/IvasSvnBuilder.py | 44 +- scripts/smoke_test_complexity_basop.sh | 235 ++++++ scripts/ssnr.py | 60 +- scripts/tools/Darwin/wav-diff | Bin 1568936 -> 1568936 bytes scripts/tools/Linux/wav-diff | Bin 862528 -> 866624 bytes scripts/tools/Win32/wav-diff.exe | 4 +- .../test_param_file.py | 5 +- tests/codec_be_on_mr_nonselection/test_sba.py | 23 +- tests/conftest.py | 71 +- tests/constants.py | 7 +- tests/test_26444.py | 3 +- 67 files changed, 2861 insertions(+), 528 deletions(-) create mode 100755 scripts/smoke_test_complexity_basop.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 625a3cc8bc..f1328069a6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -24,11 +24,14 @@ variables: - 'ivas-conformance' - 'ivas-conformance-linux' - 'check-float-reference' + - 'check-clipping' - 'test-branch-vs-input-passthrough' + GIT_CLEAN_FLAGS: -ffdxq TESTCASE_TIMEOUT_STV_SANITIZERS: 180 - TESTCASE_TIMEOUT_LTV_SANITIZERS: 1200 + TESTCASE_TIMEOUT_LTV_SANITIZERS: 2400 BASOP_REFERENCE_BRANCH: "ivas-float-update" + SCALE_FACTOR: "3.162" default: @@ -70,6 +73,9 @@ workflow: - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'check-float-reference' variables: IVAS_PIPELINE_NAME: 'check-float-reference: $CI_COMMIT_BRANCH' + - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'check-clipping' + variables: + IVAS_PIPELINE_NAME: 'Check core input clipping: $CI_COMMIT_BRANCH' - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'test-branch-vs-input-passthrough' variables: IVAS_PIPELINE_NAME: 'Pass-through comparison vs input: $CI_COMMIT_BRANCH' @@ -125,6 +131,11 @@ stages: # automatically disable #DEBUGGING macro in options.h using /**/-comment - sed -i.bak -e "s/^[[:space:]]*\(#define[[:space:]]*DEBUGGING\)/\/\*\1\*\//g" lib_com/options.h +.enable-debugging-macro: &enable-debugging-macro +# automatically enable #DEBUGGING macro in options.h using either /**/-comment or //-comment + - sed -i.bak -e "s/\/\*\ *\(#define\ *DEBUGGING\ *\)\*\//\1/g" lib_com/options.h + - sed -i.bak -e "s/\/\/\ *\(#define\ *DEBUGGING\ *\)/\1/g" lib_com/options.h + .merge-request-comparison-setup-codec: &merge-request-comparison-setup-codec ### build test binaries, initial clean for paranoia reasons - *disable-debugging-macro @@ -268,6 +279,7 @@ stages: when: never - if: $MANUAL_PIPELINE_TYPE == 'check-float-reference' when: never + - if: $MANUAL_PIPELINE_TYPE == 'check-clipping' - if: $MANUAL_PIPELINE_TYPE == 'test-branch-vs-input-passthrough' when: never - when: on_success @@ -1644,6 +1656,36 @@ test-long-self-test: junit: - report-junit-ltv.xml +check-clipping: + tags: + - ivas-linux + stage: test + timeout: "30 minutes" + rules: + - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'check-clipping' + allow_failure: + exit_codes: + - 123 + script: + - *print-common-info + - *enable-debugging-macro + - make -j + - tests/scale_pcm.py ./scripts/testv/ $SCALE_FACTOR # Default: 3.162 (+10 dB). Can be set in manual trigger. + - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR -v --update_ref 1 --html=report.html --self-contained-html --junit-xml=report-junit.xml --ref_encoder_path ./IVAS_cod --ref_decoder_path ./IVAS_dec + - python3 scripts/parse_xml_report.py report-junit.xml report.csv --clipping + artifacts: + name: "check-clipping--sha-$CI_COMMIT_SHORT_SHA--results" + when: always + expire_in: 2 weeks + paths: + - report-junit.xml + - report.html + - report.csv + expose_as: "check-clipping results" + reports: + junit: + - report-junit.xml + test-branch-vs-input-passthrough: tags: - ivas-linux @@ -1679,6 +1721,7 @@ test-branch-vs-input-passthrough: junit: - report-junit.xml + # --------------------------------------------------------------- # Scheduled jobs on main # --------------------------------------------------------------- diff --git a/apps/decoder.c b/apps/decoder.c index 681939cde2..c2c64e6ade 100644 --- a/apps/decoder.c +++ b/apps/decoder.c @@ -54,11 +54,6 @@ #include "debug.h" #endif #include "wmc_auto.h" -#ifdef OBJ_EDITING_API -#ifdef OBJ_EDITING_EXAMPLE -#include -#endif -#endif #define WMC_TOOL_SKIP @@ -155,12 +150,33 @@ typedef struct AcousticEnvironmentSequence aeSequence; bool dpidEnabled; uint16_t directivityPatternId[IVAS_MAX_NUM_OBJECTS]; -#ifdef OBJ_EDITING_EXAMPLE +#ifdef OBJ_EDITING_COMMANDLINE bool objEditEnabled; #endif } DecArguments; +#ifdef FIX_HRTF_LOAD +typedef struct +{ + hrtfFileReader *hrtfReader; + char *hrtfFileName; + + IVAS_DEC_HRTF_HANDLE *hHrtfTD; + IVAS_DEC_HRTF_CREND_HANDLE *hSetOfHRTF; + IVAS_DEC_HRTF_STATISTICS_HANDLE *hHrtfStatistics; + + IVAS_BIN_RENDERER_TYPE binaural_renderer; + IVAS_BIN_RENDERER_TYPE binaural_renderer_old; + IVAS_BIN_RENDERER_TYPE binaural_renderer_sec; + IVAS_BIN_RENDERER_TYPE binaural_renderer_sec_old; + + IVAS_AUDIO_CONFIG intern_audio_config; + int16_t room_reverb_flag; + +} IVAS_DEC_HRTF_BINARY_WRAPPER; + +#endif /*------------------------------------------------------------------------------------------* * Local functions prototypes @@ -168,14 +184,23 @@ typedef struct static bool parseCmdlIVAS_dec( int16_t argc, char **argv, DecArguments *arg ); static void usage_dec( void ); +#ifdef FIX_HRTF_LOAD +static ivas_error decodeG192( DecArguments arg, BS_READER_HANDLE hBsReader, IVAS_DEC_HRTF_BINARY_WRAPPER *hHrtf, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, ISAR_SPLIT_REND_BITS_DATA *splitRendBits, IVAS_DEC_HANDLE hIvasDec, int16_t *pcmBuf ); +static ivas_error decodeVoIP( DecArguments arg, BS_READER_HANDLE hBsReader, IVAS_DEC_HRTF_BINARY_WRAPPER *hHrtf, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, IVAS_DEC_HANDLE hIvasDec ); +static ivas_error IVAS_DEC_LoadHrtfFromFile( IVAS_DEC_HRTF_BINARY_WRAPPER *hHrtfBinary, IVAS_DEC_HANDLE hIvasDec, const int32_t output_Fs ); +#else static ivas_error decodeG192( DecArguments arg, BS_READER_HANDLE hBsReader, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, ISAR_SPLIT_REND_BITS_DATA *splitRendBits, IVAS_DEC_HANDLE hIvasDec, int16_t *pcmBuf ); static ivas_error decodeVoIP( DecArguments arg, BS_READER_HANDLE hBsReader, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, IVAS_DEC_HANDLE hIvasDec ); - +#endif #ifdef DEBUGGING static ivas_error printBitstreamInfoVoip( DecArguments arg, BS_READER_HANDLE hBsReader, IVAS_DEC_HANDLE hIvasDec ); static int16_t app_own_random( int16_t *seed ); static IVAS_DEC_FORCED_REND_MODE parseForcedRendModeDec( char *forcedRendModeChar ); #endif +#ifdef OBJ_EDITING_EXAMPLE +static void do_object_editing( IVAS_EDITABLE_PARAMETERS *editableParameters ); +#endif + /*------------------------------------------------------------------------------------------* * main() @@ -205,9 +230,13 @@ int main( RenderConfigReader *renderConfigReader = NULL; int16_t *pcmBuf = NULL; IVAS_RENDER_FRAMESIZE asked_frame_size; +#ifdef FIX_HRTF_LOAD + IVAS_DEC_HRTF_BINARY_WRAPPER hHrtfBinary; +#else IVAS_DEC_HRTF_HANDLE *hHrtfTD = NULL; IVAS_DEC_HRTF_CREND_HANDLE *hSetOfHRTF = NULL; IVAS_DEC_HRTF_STATISTICS_HANDLE *hHrtfStatistics = NULL; +#endif #ifdef DEBUGGING int32_t noClipping; int32_t cnt_frames_limited; @@ -224,6 +253,12 @@ int main( reset_mem( USE_BYTES ); #endif +#ifdef FIX_HRTF_LOAD + hHrtfBinary.hHrtfTD = NULL; /* just to avoid compilation warning */ + hHrtfBinary.hSetOfHRTF = NULL; /* just to avoid compilation warning */ + hHrtfBinary.hHrtfStatistics = NULL; /* just to avoid compilation warning */ +#endif + splitRendBits.bits_buf = splitRendBitsBuf; /*------------------------------------------------------------------------------------------* @@ -408,27 +443,6 @@ int main( } } -#ifndef FIX_1158_FASTCONV_REVERB_HRTF - /*------------------------------------------------------------------------------------------* - * Open renderer configuration reader file - *------------------------------------------------------------------------------------------*/ - - if ( arg.renderConfigEnabled ) - { - /* sanity check */ - if ( arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM && arg.non_diegetic_pan_enabled == false ) - { - fprintf( stderr, "\nError: Renderer configuration file cannot be used in this output configuration.\n\n" ); - goto cleanup; - } - - if ( ( error = RenderConfigReader_open( arg.renderConfigFilename, &renderConfigReader ) ) != IVAS_ERR_OK ) - { - fprintf( stderr, "\nError: Can't open Renderer configuration file %s \n\n", arg.renderConfigFilename ); - goto cleanup; - } - } -#endif /*------------------------------------------------------------------------------------------* * Configure the decoder @@ -437,8 +451,13 @@ int main( asked_frame_size = arg.renderFramesize; uint16_t aeID = arg.aeSequence.count > 0 ? arg.aeSequence.pID[0] : 65535; +#ifdef OBJ_EDITING_COMMANDLINE + if ( ( error = IVAS_DEC_Configure( hIvasDec, arg.output_Fs, arg.outputConfig, arg.tsmEnabled, arg.renderFramesize, arg.customLsOutputEnabled, arg.hrtfReaderEnabled, arg.enableHeadRotation, arg.enableExternalOrientation, arg.orientation_tracking, arg.renderConfigEnabled, arg.non_diegetic_pan_enabled, arg.non_diegetic_pan_gain, + arg.dpidEnabled, aeID, arg.objEditEnabled, arg.delayCompensationEnabled ) ) != IVAS_ERR_OK ) +#else if ( ( error = IVAS_DEC_Configure( hIvasDec, arg.output_Fs, arg.outputConfig, arg.tsmEnabled, arg.renderFramesize, arg.customLsOutputEnabled, arg.hrtfReaderEnabled, arg.enableHeadRotation, arg.enableExternalOrientation, arg.orientation_tracking, arg.renderConfigEnabled, arg.non_diegetic_pan_enabled, arg.non_diegetic_pan_gain, arg.dpidEnabled, aeID, arg.delayCompensationEnabled ) ) != IVAS_ERR_OK ) +#endif { fprintf( stderr, "\nConfigure failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; @@ -591,15 +610,11 @@ int main( } } #else -#ifdef FIX_VOIP_FUNCTIONS if ( ( error = IVAS_DEC_PrintConfig( hIvasDec, 1, arg.voipMode ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nIVAS_DEC_PrintConfig failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } -#else - IVAS_DEC_PrintConfig( hIvasDec, 1, arg.voipMode ); -#endif #endif /*-------------------------------------------------------------------* @@ -624,13 +639,11 @@ int main( goto cleanup; } -#ifdef FIX_1158_FASTCONV_REVERB_HRTF if ( ( error = RenderConfigReader_open( arg.renderConfigFilename, &renderConfigReader ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError: Can't open Renderer configuration file %s \n\n", arg.renderConfigFilename ); goto cleanup; } -#endif if ( RenderConfigReader_read( renderConfigReader, arg.renderConfigFilename, &renderConfig ) != IVAS_ERR_OK ) { @@ -731,6 +744,14 @@ int main( if ( arg.hrtfReaderEnabled ) { +#ifdef FIX_HRTF_LOAD + hHrtfBinary.hrtfReader = hrtfReader; + hHrtfBinary.hrtfFileName = arg.hrtfFileName; + hHrtfBinary.binaural_renderer = IVAS_BIN_RENDERER_TYPE_NONE; + hHrtfBinary.binaural_renderer_sec = IVAS_BIN_RENDERER_TYPE_NONE; + hHrtfBinary.room_reverb_flag = 0; + hHrtfBinary.intern_audio_config = IVAS_AUDIO_CONFIG_INVALID; +#else if ( ( error = IVAS_DEC_GetHrtfHandle( hIvasDec, &hHrtfTD ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nIVAS_DEC_GetHrtfHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); @@ -827,6 +848,7 @@ int main( destroy_hrtf_statistics( hHrtfStatistics ); } } +#endif } /*------------------------------------------------------------------------------------------* @@ -848,11 +870,19 @@ int main( if ( arg.voipMode ) { +#ifdef FIX_HRTF_LOAD + error = decodeVoIP( arg, hBsReader, &hHrtfBinary, headRotReader, externalOrientationFileReader, refRotReader, referenceVectorReader, hIvasDec ); +#else error = decodeVoIP( arg, hBsReader, headRotReader, externalOrientationFileReader, refRotReader, referenceVectorReader, hIvasDec ); +#endif } else { +#ifdef FIX_HRTF_LOAD + error = decodeG192( arg, hBsReader, &hHrtfBinary, headRotReader, externalOrientationFileReader, refRotReader, referenceVectorReader, &splitRendBits, hIvasDec, pcmBuf ); +#else error = decodeG192( arg, hBsReader, headRotReader, externalOrientationFileReader, refRotReader, referenceVectorReader, &splitRendBits, hIvasDec, pcmBuf ); +#endif } if ( error == IVAS_ERR_OK || error == IVAS_ERR_END_OF_FILE ) @@ -868,7 +898,11 @@ int main( } else { +#ifdef FIX_HRTF_LOAD + fprintf( stderr, "\nDecoding finished prematurely: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); +#else fprintf( stdout, "Decoding finished prematurely\n\n" ); +#endif goto cleanup; } @@ -904,6 +938,11 @@ cleanup: #endif if ( arg.hrtfReaderEnabled ) { +#ifdef FIX_HRTF_LOAD + destroy_td_hrtf( hHrtfBinary.hHrtfTD ); + destroy_SetOfHRTF( hHrtfBinary.hSetOfHRTF ); + destroy_hrtf_statistics( hHrtfBinary.hHrtfStatistics ); +#else IVAS_DEC_GetHrtfHandle( hIvasDec, &hHrtfTD ); destroy_td_hrtf( hHrtfTD ); @@ -912,6 +951,7 @@ cleanup: IVAS_DEC_GetHrtfStatisticsHandle( hIvasDec, &hHrtfStatistics ); destroy_hrtf_statistics( hHrtfStatistics ); +#endif } IVAS_DEC_Close( &hIvasDec ); @@ -1119,11 +1159,10 @@ static bool parseCmdlIVAS_dec( arg->directivityPatternId[i] = 65535; } -#ifdef OBJ_EDITING_EXAMPLE +#ifdef OBJ_EDITING_COMMANDLINE arg->objEditEnabled = false; -#endif - +#endif /*-----------------------------------------------------------------* * Initialization *-----------------------------------------------------------------*/ @@ -1576,8 +1615,7 @@ static bool parseCmdlIVAS_dec( i += tmp; } - -#ifdef OBJ_EDITING_EXAMPLE +#ifdef OBJ_EDITING_COMMANDLINE else if ( strcmp( argv_to_upper, "-OBJ_EDIT" ) == 0 ) { arg->objEditEnabled = true; @@ -1785,13 +1823,13 @@ static void usage_dec( void ) fprintf( stdout, "-aeid ID | File : Acoustic environment ID (number > 0)\n" ); fprintf( stdout, " alternatively, it can be a text file where each line contains \"ID duration\"\n" ); fprintf( stdout, " for BINAURAL_ROOM_REVERB output configuration.\n" ); +#ifdef OBJ_EDITING_COMMANDLINE + fprintf( stdout, "-obj_edit : Enable objects editing\n" ); +#endif fprintf( stdout, "-level level : Complexity level, level = (1, 2, 3), will be defined after characterisation. \n" ); fprintf( stdout, " Currently, all values default to level 3 (full functionality).\n" ); fprintf( stdout, "-q : Quiet mode, no frame counter\n" ); fprintf( stdout, " default is deactivated\n" ); -#ifdef OMASA_OBJECT_EDITING - fprintf( stdout, "-obj_edit : enable object editing\n" ); -#endif #ifdef DEBUG_MODE_INFO #ifdef DEBUG_MODE_INFO_TWEAK fprintf( stdout, "-info : specify subfolder name for debug output\n" ); @@ -2104,6 +2142,9 @@ static ivas_error initOnFirstGoodFrame( static ivas_error decodeG192( DecArguments arg, BS_READER_HANDLE hBsReader, +#ifdef FIX_HRTF_LOAD + IVAS_DEC_HRTF_BINARY_WRAPPER *hHrtfBinary, +#endif RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, @@ -2159,10 +2200,6 @@ static ivas_error decodeG192( return error; } -#ifdef OBJ_EDITING_API - IVAS_EDITABLE_PARAMETERS editableParameters; -#endif - IVAS_RENDER_CONFIG_DATA renderConfig; RenderConfigReader *renderConfigReader = NULL; @@ -2463,6 +2500,10 @@ static ivas_error decodeG192( } } #endif +#ifdef FIX_HRTF_LOAD + /* Feed into decoder and decode transport channels */ + if ( ( error = IVAS_DEC_FeedFrame_Serial( hIvasDec, bit_stream, num_bits, bfi ) ) != IVAS_ERR_OK ) +#else /* Feed into decoder */ if ( ( error = IVAS_DEC_FeedFrame_Serial( hIvasDec, bit_stream, num_bits, bfi #ifdef OBJ_EDITING_API @@ -2471,79 +2512,77 @@ static ivas_error decodeG192( splitRendBits #endif ) ) != IVAS_ERR_OK ) +#endif { fprintf( stderr, "\nError: could not feed frame to decoder: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } -#ifdef OBJ_EDITING_API -#ifdef OBJ_EDITING_EXAMPLE - if ( arg.objEditEnabled ) + +#ifdef FIX_HRTF_LOAD + /* Read main parameters from the bitstream to set-up the decoder */ + hHrtfBinary->binaural_renderer_old = hHrtfBinary->binaural_renderer; + hHrtfBinary->binaural_renderer_sec_old = hHrtfBinary->binaural_renderer_sec; + if ( ( error = IVAS_DEC_ReadFormat( hIvasDec, &hHrtfBinary->binaural_renderer, &hHrtfBinary->binaural_renderer_sec, &hHrtfBinary->room_reverb_flag, &hHrtfBinary->intern_audio_config ) ) != IVAS_ERR_OK ) { + return error; + } - /* Do object info editing here */ - /* get object parameters */ - if ( ( error = IVAS_DEC_GetEditableParameters( hIvasDec, &editableParameters ) ) != IVAS_ERR_OK ) + /* Placeholder for memory reallocation */ + /* ... */ + + /* Load HRTF binary file data */ + if ( arg.hrtfReaderEnabled ) + { + if ( ( error = IVAS_DEC_LoadHrtfFromFile( hHrtfBinary, hIvasDec, arg.output_Fs ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "\nError: could not get the editable parameters: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); + fprintf( stderr, "\nIVAS_DEC_LoadHrtfFromFile failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } + } - /* edit object parameters...*/ - - /* put the objects equally spaced at the horizontal plane */ - /* and play a little bit with the gains... */ - int16_t obj_idx, non_diegetic_obj_idx; - int16_t num_nondiegetic_objects; + /* decode transport channels, do TSM and feed to renderer */ + if ( ( error = IVAS_DEC_GetSamplesDecoder( hIvasDec, isSplitRend, splitRendBits ) ) != IVAS_ERR_OK ) + { + return error; + } - num_nondiegetic_objects = 0; - for ( obj_idx = 0; obj_idx < editableParameters.num_obj; obj_idx++ ) - { - if ( !editableParameters.ism_metadata[obj_idx].non_diegetic_flag ) - { - num_nondiegetic_objects++; - } - } - if ( num_nondiegetic_objects ) - { - float start_angle, angle_inc; - angle_inc = 360.0f / (float) num_nondiegetic_objects; - start_angle = angle_inc / 2.0f; - for ( obj_idx = 0, non_diegetic_obj_idx = 0; obj_idx < editableParameters.num_obj; obj_idx++ ) - { - if ( !editableParameters.ism_metadata[obj_idx].non_diegetic_flag ) - { - editableParameters.ism_metadata[obj_idx].elevation = 0.0f; - editableParameters.ism_metadata[obj_idx].azimuth = start_angle + (float) non_diegetic_obj_idx * angle_inc; - non_diegetic_obj_idx++; - } - } - } +#endif +#ifdef OBJ_EDITING_API + /* Object metadata editing */ + if ( arg.objEditEnabled ) + { + IVAS_EDITABLE_PARAMETERS editableParameters; - /* breakover object gains */ - for ( obj_idx = 0; obj_idx < editableParameters.num_obj; obj_idx++ ) + /* get object parameters */ + if ( ( error = IVAS_DEC_GetEditableParameters( hIvasDec, &editableParameters ) ) != IVAS_ERR_OK ) { - editableParameters.ism_metadata[obj_idx].gain = 0.5f + (float) ( ( frame + obj_idx * 50 ) % 250 ) / 250.0f; + fprintf( stderr, "\nError: could not get the editable parameters: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); + return error; } - editableParameters.gain_bed = 0.5f; + /* Do object metadata editing here ... */ +#ifdef OBJ_EDITING_EXAMPLE + do_object_editing( &editableParameters ); - /* set new object parameters*/ +#endif + /* set new object parameters */ if ( ( error = IVAS_DEC_SetEditableParameters( hIvasDec, editableParameters ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError: could not set the editable parameters: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); - goto cleanup; + return error; } } -#endif + /* Do the final preparations needed for rendering */ if ( ( error = IVAS_DEC_PrepareRenderer( hIvasDec ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError: could not prepare the renderer: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } -#endif } +#endif + /* Render */ if ( isSplitRend ) { if ( ( error = IVAS_DEC_GetSplitBinauralBitstream( hIvasDec, (void *) ( pcmBuf + nOutChannels * nSamplesRendered ), splitRendBits, &nSamplesRendered_loop, &needNewFrame ) ) != IVAS_ERR_OK ) @@ -2557,14 +2596,24 @@ static ivas_error decodeG192( } else { - if ( ( error = IVAS_DEC_GetSamples( hIvasDec, nSamplesToRender, IVAS_DEC_PCM_INT16, (void *) ( pcmBuf + nOutChannels * nSamplesRendered ), &nSamplesRendered_loop, &needNewFrame ) ) != IVAS_ERR_OK ) +#ifdef OBJ_EDITING_API + if ( ( error = IVAS_DEC_GetSamplesRenderer( hIvasDec, nSamplesToRender, IVAS_DEC_PCM_INT16, (void *) ( pcmBuf + nOutChannels * nSamplesRendered ), &nSamplesRendered_loop, &needNewFrame ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "\nError in IVAS_DEC_GetSamples: %s\n", IVAS_DEC_GetErrorMessage( error ) ); + fprintf( stderr, "\nError in IVAS_DEC_GetSamplesRenderer(): %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } +#else + if ( ( error = IVAS_DEC_GetSamples( hIvasDec, nSamplesToRender, IVAS_DEC_PCM_INT16, (void *) ( pcmBuf + nOutChannels * nSamplesRendered ), &nSamplesRendered_loop, &needNewFrame ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError in IVAS_DEC_GetSamples: %s\n", IVAS_DEC_GetErrorMessage( error ) ); + goto cleanup; + } +#endif + nSamplesRendered += nSamplesRendered_loop; nSamplesToRender -= nSamplesRendered_loop; } + if ( needNewFrame ) { frame++; @@ -3041,6 +3090,9 @@ static ivas_error writeJbmTraceFileFrameWrapper( const void *data, void *writer static ivas_error decodeVoIP( DecArguments arg, BS_READER_HANDLE hBsReader, +#ifdef FIX_HRTF_LOAD + IVAS_DEC_HRTF_BINARY_WRAPPER *hHrtf, +#endif RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, @@ -3091,6 +3143,10 @@ static ivas_error decodeVoIP( int16_t vec_pos_update, vec_pos_len; int16_t nOutSamples = 0; +#ifdef FIX_HRTF_LOAD + bool bitstreamReadDone = false; +#endif + #ifdef OBJ_EDITING_API bool parameterAvailableForEditing = false; uint16_t nSamplesRendered = 0; @@ -3381,30 +3437,90 @@ static ivas_error decodeVoIP( while ( nSamplesRendered < nOutSamples ) { #endif - #ifdef SUPPORT_JBM_TRACEFILE - if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, systemTime_ms, writeJbmTraceFileFrameWrapper, jbmTraceWriter +#ifdef FIX_HRTF_LOAD #ifdef OBJ_EDITING_API - , - &nSamplesRendered, ¶meterAvailableForEditing + if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, writeJbmTraceFileFrameWrapper, jbmTraceWriter, &bitstreamReadDone, &nSamplesRendered, ¶meterAvailableForEditing, systemTime_ms ) ) != IVAS_ERR_OK ) +#else + if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, writeJbmTraceFileFrameWrapper, jbmTraceWriter, &bitstreamReadDone, systemTime_ms ) ) != IVAS_ERR_OK ) +#endif +#else +#ifdef OBJ_EDITING_API + if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, writeJbmTraceFileFrameWrapper, jbmTraceWriter, &nSamplesRendered, ¶meterAvailableForEditing, systemTime_ms ) ) != IVAS_ERR_OK ) +#else + if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, writeJbmTraceFileFrameWrapper, jbmTraceWriter, systemTime_ms ) ) != IVAS_ERR_OK ) +#endif +#endif +#else +#ifdef FIX_HRTF_LOAD +#ifdef OBJ_EDITING_API + if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, &bitstreamReadDone, &nSamplesRendered, ¶meterAvailableForEditing, systemTime_ms ) ) != IVAS_ERR_OK ) +#else + if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, &bitstreamReadDone, systemTime_ms ) ) != IVAS_ERR_OK ) #endif - ) ) != IVAS_ERR_OK ) #else - if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, systemTime_ms, &nSamplesRendered, ¶meterAvailableForEditing #ifdef OBJ_EDITING_API - & nSamplesRendered, - ¶meterAvailableForEditing + if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, systemTime_ms, &nSamplesRendered, ¶meterAvailableForEditing ) ) != IVAS_ERR_OK ) +#else + if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, systemTime_ms ) ) != IVAS_ERR_OK ) +#endif #endif - ) ) != IVAS_ERR_OK ) #endif { fprintf( stderr, "\nError in IVAS_DEC_VoIP_GetSamples: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } +#ifdef FIX_HRTF_LOAD + + if ( bitstreamReadDone == true ) + { + /* Read main parameters from the bitstream to set-up the decoder */ + hHrtf->binaural_renderer_old = hHrtf->binaural_renderer; + hHrtf->binaural_renderer_sec_old = hHrtf->binaural_renderer_sec; + if ( ( error = IVAS_DEC_ReadFormat( hIvasDec, &hHrtf->binaural_renderer, &hHrtf->binaural_renderer_sec, &hHrtf->room_reverb_flag, &hHrtf->intern_audio_config ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* Placeholder for memory reallocation */ + /* ... */ + + /* Load HRTF binary file data */ + if ( arg.hrtfReaderEnabled ) + { + if ( ( error = IVAS_DEC_LoadHrtfFromFile( hHrtf, hIvasDec, arg.output_Fs ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nIVAS_DEC_LoadHrtfFromFile failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); + goto cleanup; + } + } + } + +#endif #ifdef OBJ_EDITING_API - if ( parameterAvailableForEditing == true ) + /* Object metadata editing */ + if ( arg.objEditEnabled && parameterAvailableForEditing == true ) { - /* do the object editing here */ + IVAS_EDITABLE_PARAMETERS editableParameters; + + /* get object parameters */ + if ( ( error = IVAS_DEC_GetEditableParameters( hIvasDec, &editableParameters ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError: could not get the editable parameters: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); + return error; + } + + /* Do object metadata editing here ... */ +#ifdef OBJ_EDITING_EXAMPLE + do_object_editing( &editableParameters ); + +#endif + /* set new object parameters */ + if ( ( error = IVAS_DEC_SetEditableParameters( hIvasDec, editableParameters ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError: could not set the editable parameters: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); + return error; + } } } /* while ( nSamplesRendered < nOutSamples ) */ #endif @@ -3690,6 +3806,60 @@ cleanup: return error; } +#ifdef OBJ_EDITING_EXAMPLE + +/*---------------------------------------------------------------------* + * do_object_editing() + * + * Example function to edit objects parameters + *---------------------------------------------------------------------*/ + +static void do_object_editing( + IVAS_EDITABLE_PARAMETERS *editableParameters ) +{ + /* put the objects equally spaced at the horizontal plane */ + /* and play a little bit with the gains... */ + int16_t obj_idx, non_diegetic_obj_idx; + int16_t num_nondiegetic_objects; + + num_nondiegetic_objects = 0; + for ( obj_idx = 0; obj_idx < editableParameters->num_obj; obj_idx++ ) + { + if ( !editableParameters->ism_metadata[obj_idx].non_diegetic_flag ) + { + num_nondiegetic_objects++; + } + } + + if ( num_nondiegetic_objects ) + { + float start_angle, angle_inc; + angle_inc = 360.0f / (float) num_nondiegetic_objects; + start_angle = angle_inc / 2.0f; + for ( obj_idx = 0, non_diegetic_obj_idx = 0; obj_idx < editableParameters->num_obj; obj_idx++ ) + { + if ( !editableParameters->ism_metadata[obj_idx].non_diegetic_flag ) + { + editableParameters->ism_metadata[obj_idx].elevation = 0.0f; + editableParameters->ism_metadata[obj_idx].azimuth = start_angle + (float) non_diegetic_obj_idx * angle_inc; + non_diegetic_obj_idx++; + } + } + } + + /* breakover object gains */ + for ( obj_idx = 0; obj_idx < editableParameters->num_obj; obj_idx++ ) + { + editableParameters->ism_metadata[obj_idx].gain = 0.5f + (float) ( ( frame + obj_idx * 50 ) % 250 ) / 250.0f; + } + + editableParameters->gain_bed = 0.5f; + + + return; +} + +#endif #ifdef DEBUGGING @@ -3715,4 +3885,182 @@ static IVAS_DEC_FORCED_REND_MODE parseForcedRendModeDec( } #endif +#ifdef FIX_HRTF_LOAD + +/*---------------------------------------------------------------------* + * IVAS_DEC_LoadHrtfFromFile() + * + * + *---------------------------------------------------------------------*/ + +static ivas_error IVAS_DEC_LoadHrtfFromFile( + IVAS_DEC_HRTF_BINARY_WRAPPER *hHrtfBinary, + IVAS_DEC_HANDLE hIvasDec, + const int32_t output_Fs ) +{ + ivas_error error; + IVAS_BIN_RENDERER_TYPE binaural_renderer, binaural_renderer_sec; + + if ( hHrtfBinary == NULL || hIvasDec == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + binaural_renderer = hHrtfBinary->binaural_renderer; + binaural_renderer_sec = hHrtfBinary->binaural_renderer_sec; + + if ( ( binaural_renderer != hHrtfBinary->binaural_renderer_old ) || + ( binaural_renderer_sec != hHrtfBinary->binaural_renderer_sec_old ) || + ( binaural_renderer == IVAS_BIN_RENDERER_TYPE_DEFAULT ) ) + { + /*------------------------------------------------------------------------------------------* + * Release HRTF binary data + *------------------------------------------------------------------------------------------*/ + + if ( !( binaural_renderer == IVAS_BIN_RENDERER_TYPE_TDREND || binaural_renderer == IVAS_BIN_RENDERER_TYPE_DEFAULT ) && binaural_renderer_sec != IVAS_BIN_RENDERER_TYPE_TDREND && hHrtfBinary->hHrtfTD != NULL ) + { + destroy_td_hrtf( hHrtfBinary->hHrtfTD ); + } + + if ( !( binaural_renderer == IVAS_BIN_RENDERER_TYPE_CREND || binaural_renderer == IVAS_BIN_RENDERER_TYPE_DEFAULT ) && hHrtfBinary->hSetOfHRTF != NULL ) + { + destroy_SetOfHRTF( hHrtfBinary->hSetOfHRTF ); + } + + if ( ( error = IVAS_DEC_HRTF_binary_close( hIvasDec, hHrtfBinary->binaural_renderer_old ) ) != IVAS_ERR_OK ) + { + return error; + } + + /*------------------------------------------------------------------------------------------* + * Load HRTF binary data + *------------------------------------------------------------------------------------------*/ + + if ( ( error = IVAS_DEC_HRTF_binary_open( hIvasDec, binaural_renderer ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( ( error = IVAS_DEC_HRTF_binary_open( hIvasDec, binaural_renderer_sec ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( binaural_renderer == IVAS_BIN_RENDERER_TYPE_TDREND || binaural_renderer_sec == IVAS_BIN_RENDERER_TYPE_TDREND || binaural_renderer == IVAS_BIN_RENDERER_TYPE_DEFAULT ) + { + if ( ( error = IVAS_DEC_GetHrtfHandle( hIvasDec, &hHrtfBinary->hHrtfTD ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nIVAS_DEC_GetHrtfHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); + return error; + } + + if ( ( error = load_HRTF_binary( *hHrtfBinary->hHrtfTD, hHrtfBinary->hrtfReader ) ) != IVAS_ERR_OK ) + { + if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) + { + fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", hHrtfBinary->hrtfFileName ); + return error; + } + else + { + destroy_td_hrtf( hHrtfBinary->hHrtfTD ); + } + } + } + + if ( binaural_renderer == IVAS_BIN_RENDERER_TYPE_CREND || binaural_renderer == IVAS_BIN_RENDERER_TYPE_DEFAULT ) + { + if ( ( error = IVAS_DEC_GetHrtfCRendHandle( hIvasDec, &hHrtfBinary->hSetOfHRTF ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nIVAS_DEC_GetHrtfCRendHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); + return error; + } + + if ( ( error = create_SetOfHRTF_from_binary( *hHrtfBinary->hSetOfHRTF, hHrtfBinary->hrtfReader, output_Fs ) ) != IVAS_ERR_OK ) + { + if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) + { + fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", hHrtfBinary->hrtfFileName ); + return error; + } + else + { + destroy_SetOfHRTF( hHrtfBinary->hSetOfHRTF ); + } + } + } + + if ( binaural_renderer == IVAS_BIN_RENDERER_TYPE_FASTCONV || binaural_renderer == IVAS_BIN_RENDERER_TYPE_DEFAULT ) + { + IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv = NULL; + if ( ( error = IVAS_DEC_GetHrtfFastConvHandle( hIvasDec, &hHrtfFastConv ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nIVAS_DEC_GetHrtfFastConvHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); + return error; + } + + if ( ( error = load_fastconv_HRTF_from_binary( *hHrtfFastConv, hHrtfBinary->room_reverb_flag, hHrtfBinary->intern_audio_config, hHrtfBinary->hrtfReader ) ) != IVAS_ERR_OK ) + { + if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) + { + fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", hHrtfBinary->hrtfFileName ); + return error; + } + else + { + destroy_fastconv_hrtf( hHrtfFastConv ); + } + } + } + + if ( binaural_renderer == IVAS_BIN_RENDERER_TYPE_PARAMBIN || binaural_renderer == IVAS_BIN_RENDERER_TYPE_DEFAULT ) + { + IVAS_DEC_HRTF_PARAMBIN_HANDLE *hHrtfParambin = NULL; + if ( ( error = IVAS_DEC_GetHrtfParamBinHandle( hIvasDec, &hHrtfParambin ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nIVAS_DEC_GetHrtfParamBinHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); + return error; + } + + if ( ( error = load_parambin_HRTF_from_binary( *hHrtfParambin, hHrtfBinary->hrtfReader ) ) != IVAS_ERR_OK ) + { + if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) + { + fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", hHrtfBinary->hrtfFileName ); + return error; + } + else + { + destroy_parambin_hrtf( hHrtfParambin ); + } + } + } + } + + if ( hHrtfBinary->hHrtfStatistics == NULL ) + { + if ( ( error = IVAS_DEC_GetHrtfStatisticsHandle( hIvasDec, &hHrtfBinary->hHrtfStatistics ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nIVAS_DEC_GetHrtfHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); + return error; + } + + if ( ( error = load_reverb_binary( *hHrtfBinary->hHrtfStatistics, output_Fs, hHrtfBinary->hrtfReader ) ) != IVAS_ERR_OK ) + { + if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) + { + fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", hHrtfBinary->hrtfFileName ); + return error; + } + else + { + destroy_hrtf_statistics( hHrtfBinary->hHrtfStatistics ); + } + } + } + + return IVAS_ERR_OK; +} +#endif + #undef WMC_TOOL_SKIP diff --git a/apps/encoder.c b/apps/encoder.c index f64986ec84..4caa60803d 100644 --- a/apps/encoder.c +++ b/apps/encoder.c @@ -195,6 +195,8 @@ int main( #ifdef DEBUG_SBA int16_t numTransportChannels = 1; #endif + int32_t noClipping; + float maxOverload, minOverload; #endif #ifdef DEBUGGING @@ -792,6 +794,12 @@ int main( } #ifdef DEBUGGING + if ( ( noClipping = IVAS_ENC_GetNoCLipping( hIvasEnc, &maxOverload, &minOverload ) ) > 0 ) + { + fprintf( stdout, "Core input overload detected: %d samples!!!\n", noClipping ); + fprintf( stdout, "Max overload value: %f \n", maxOverload ); + fprintf( stdout, "Min overload value: %f \n\n", minOverload ); + } print_snr(); #endif /*------------------------------------------------------------------------------------------* diff --git a/apps/renderer.c b/apps/renderer.c index 5ca8e170fe..767d4bb60d 100644 --- a/apps/renderer.c +++ b/apps/renderer.c @@ -615,7 +615,11 @@ static int16_t get_cldfb_in_flag( int16_t cldfb_in_flag; cldfb_in_flag = 0; +#ifdef FIX_HRTF_LOAD + if ( renderConfig->split_rend_config.rendererSelection == IVAS_BIN_RENDERER_TYPE_FASTCONV ) +#else if ( renderConfig->split_rend_config.rendererSelection == ISAR_SPLIT_REND_RENDERER_SELECTION_FASTCONV ) +#endif { #ifdef DEBUGGING cldfb_in_flag = 1; @@ -945,7 +949,11 @@ int main( goto cleanup; } +#ifdef FIX_HRTF_LOAD + if ( ( error = load_fastconv_HRTF_from_binary( *hHrtfFastConv, 0, IVAS_AUDIO_CONFIG_INVALID, hrtfFileReader ) ) != IVAS_ERR_OK ) +#else if ( ( error = load_fastconv_HRTF_from_binary( *hHrtfFastConv, hrtfFileReader ) ) != IVAS_ERR_OK ) +#endif { if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) { diff --git a/lib_com/common_api_types.h b/lib_com/common_api_types.h index 7890d25379..c0123bf7fd 100644 --- a/lib_com/common_api_types.h +++ b/lib_com/common_api_types.h @@ -140,6 +140,7 @@ typedef struct _IVAS_EDITABLE_PARAMETERS int16_t num_obj; IVAS_ISM_METADATA ism_metadata[IVAS_MAX_NUM_OBJECTS]; float gain_bed; + } IVAS_EDITABLE_PARAMETERS; #endif @@ -213,6 +214,18 @@ typedef struct _IVAS_JBM_TRACE_DATA } IVAS_JBM_TRACE_DATA; +#ifdef FIX_HRTF_LOAD +typedef enum _ivas_binaural_renderer_type +{ + IVAS_BIN_RENDERER_TYPE_NONE, + IVAS_BIN_RENDERER_TYPE_CREND, + IVAS_BIN_RENDERER_TYPE_FASTCONV, + IVAS_BIN_RENDERER_TYPE_PARAMBIN, + IVAS_BIN_RENDERER_TYPE_TDREND, + IVAS_BIN_RENDERER_TYPE_DEFAULT, + +} IVAS_BIN_RENDERER_TYPE; +#endif /*----------------------------------------------------------------------------------* * Split rendering API constants, structures, and enums @@ -251,6 +264,7 @@ typedef enum } ISAR_SPLIT_REND_CODEC; +#ifndef FIX_HRTF_LOAD typedef enum { ISAR_SPLIT_REND_RENDERER_SELECTION_CREND, @@ -260,6 +274,7 @@ typedef enum ISAR_SPLIT_REND_RENDERER_SELECTION_DEFAULT, } ISAR_SPLIT_REND_RENDERER_SELECTION; +#endif typedef struct _ISAR_SPLIT_REND_BITS_DATA { @@ -291,7 +306,11 @@ typedef struct _ISAR_SPLIT_REND_CONFIG int16_t codec_frame_size_ms; /* Codec frame size in milliseconds, only relevant with LC3plus */ ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode; ISAR_SPLIT_REND_CODEC codec; +#ifdef FIX_HRTF_LOAD + IVAS_BIN_RENDERER_TYPE rendererSelection; +#else ISAR_SPLIT_REND_RENDERER_SELECTION rendererSelection; +#endif int16_t lc3plus_highres; } ISAR_SPLIT_REND_CONFIG_DATA, *ISAR_SPLIT_REND_CONFIG_HANDLE; diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h index 105c0e8057..4e6ad47f24 100755 --- a/lib_com/ivas_cnst.h +++ b/lib_com/ivas_cnst.h @@ -233,7 +233,11 @@ typedef enum #define SID_MDCT_STEREO 0x1 /* 1| 0| 0 */ #define SID_ISM 0x2 /* 0| 1| 0 */ #define SID_MASA_1TC 0x3 /* 1| 1| 0 */ +#ifdef FIX_1209_SID_SIGNALING +/*reserved*/ /*0x4*/ /* 0| 0| 1 */ +#else #define SID_MULTICHANNEL 0x4 /* 0| 0| 1 */ +#endif #define SID_SBA_1TC 0x5 /* 1| 0| 1 */ #define SID_SBA_2TC 0x6 /* 0| 1| 1 */ #define SID_MASA_2TC 0x7 /* 1| 1| 1 */ diff --git a/lib_com/ivas_error.h b/lib_com/ivas_error.h index 11727c4e5d..905be753a5 100644 --- a/lib_com/ivas_error.h +++ b/lib_com/ivas_error.h @@ -77,6 +77,9 @@ typedef enum IVAS_ERR_EXT_ORIENTATION_NOT_SUPPORTED, IVAS_ERR_DIRECTIVITY_NOT_SUPPORTED, IVAS_ERR_ACOUSTIC_ENVIRONMENT_NOT_SUPPORTED, +#ifdef OBJ_EDITING_API + IVAS_ERR_OBJECTS_EDITING_NOT_SUPPORTED, +#endif IVAS_ERR_INVALID_HRTF, IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA, IVAS_ERR_INVALID_INPUT_FORMAT, @@ -254,6 +257,10 @@ static inline const char *ivas_error_to_string( ivas_error error_code ) return "Directivity not supported"; case IVAS_ERR_ACOUSTIC_ENVIRONMENT_NOT_SUPPORTED: return "Acoustic environment not supported"; +#ifdef OBJ_EDITING_API + case IVAS_ERR_OBJECTS_EDITING_NOT_SUPPORTED: + return "Objects editing not supported"; +#endif case IVAS_ERR_INVALID_HRTF: return "Unsupported HRTF filter set"; case IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA: diff --git a/lib_com/ivas_prot.h b/lib_com/ivas_prot.h index 700a9cc75c..847cb924f4 100755 --- a/lib_com/ivas_prot.h +++ b/lib_com/ivas_prot.h @@ -318,11 +318,20 @@ ivas_error ivas_dec( int16_t *data /* o : output synthesis signal */ ); +#ifdef FIX_HRTF_LOAD +ivas_error ivas_dec_get_format( + Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ +); + +#endif ivas_error ivas_dec_setup( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ +#ifndef FIX_HRTF_LOAD + , uint16_t *nSamplesRendered, /* o : number of samples flushed from the previous frame (JBM) */ const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ void *data /* o : output synthesis signal */ +#endif ); ivas_error create_sce_dec( @@ -660,10 +669,13 @@ ivas_error ivas_mc_enc_config( ivas_error ivas_mc_dec_config( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - const int16_t idx, /* i : LS config. index */ + const int16_t idx /* i : LS config. index */ +#ifndef FIX_HRTF_LOAD + , uint16_t *nSamplesRendered, /* o : samples flushed from last frame (JBM) */ const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ void *data /* o : output synthesis signal */ + #endif ); /*! r: MC format mode (MCT, McMASA, ParamMC) */ @@ -810,7 +822,7 @@ void ivas_jbm_dec_feed_tc_to_renderer( ); #ifdef OBJ_EDITING_API -void ivas_jbm_dec_prepare_renderer( +void ivas_dec_prepare_renderer( Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ ); #endif @@ -1024,11 +1036,6 @@ ivas_error ivas_ism_metadata_dec( DEC_CORE_HANDLE st0 /* i : core-coder handle */ ); -#ifdef OBJ_EDITING_API -void ivas_ism_renderer_update_md( - Decoder_Struct *st_ivas /* i/o: main IVAS decoder handle */ -); -#endif /*----------------------------------------------------------------------------------* * Parametric ISM prototypes @@ -1077,10 +1084,13 @@ ivas_error ivas_ism_enc_config( ivas_error ivas_ism_dec_config( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - const ISM_MODE last_ism_mode, /* i/o: last ISM mode */ + const ISM_MODE last_ism_mode /* i/o: last ISM mode */ +#ifndef FIX_HRTF_LOAD + , uint16_t *nSamplesRendered, /* o : number of samples flushed on renderer change*/ const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ void *data /* o : output synthesis signal */ +#endif ); ivas_error ivas_param_ism_dec_open( @@ -1099,18 +1109,18 @@ void ivas_ism_dec_digest_tc( void ivas_param_ism_dec_digest_tc( Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - const uint16_t nCldfbSlots, /* i : number of CLFBS slots in the transport channels */ + const uint16_t nCldfbSlots, /* i : number of CLDFB slots in transport channels */ float *transport_channels_f[] /* i : synthesized core-coder transport channels/DirAC output */ ); #ifdef OBJ_EDITING_API void ivas_param_ism_dec_dequant_md( - Decoder_Struct *st_ivas + Decoder_Struct *st_ivas /* i/o: IVAS decoder handle */ ); void ivas_param_ism_dec_prepare_renderer( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - const uint16_t nCldfbSlots /* i : number of CLFBS slots in the transport channels */ + Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ + const uint16_t nCldfbSlots /* i : number of CLDFB slots in transport channels */ ); #endif @@ -3471,10 +3481,13 @@ void ivas_sba_set_cna_cng_flag( ); ivas_error ivas_sba_dec_reconfigure( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ +#ifndef FIX_HRTF_LOAD + , uint16_t *nSamplesFlushed, /* o : number of samples flushed */ const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ void *data /* o : output synthesis signal */ +#endif ); ivas_error ivas_sba_digest_tc( @@ -3793,7 +3806,7 @@ void ivas_mc_paramupmix_dec_read_BS( void ivas_mc_paramupmix_dec_digest_tc( Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - const uint8_t nCldfbSlots, /* i : number of CLFBS slots in the transport channels */ + const uint8_t nCldfbSlots, /* i : number of CLDFB slots in transport channels */ const int16_t nSamplesForRendering /* i : number of samples provided */ ); @@ -3863,14 +3876,14 @@ void ivas_param_mc_dec_read_BS( void ivas_param_mc_dec_digest_tc( Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - const uint8_t nCldfbSlots, /* i : number of CLFBS slots in the transport channels */ - float *transport_channels_f[] /* i : synthesized core-coder transport channels/DirAC output*/ + const uint8_t nCldfbSlots, /* i : number of CLDFB slots in transport channels */ + float *transport_channels_f[] /* i/o: synthesized core-coder transport channels/DirAC output*/ ); #ifdef OBJ_EDITING_API void ivas_param_mc_dec_prepare_renderer( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - const uint8_t nCldfbSlots /* i : number of CLFBS slots in the transport channels */ + Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ + const uint8_t nCldfbSlots /* i : number of CLDFB slots in the transport channels */ ); #endif @@ -4929,10 +4942,13 @@ void ivas_masa_enc_reconfigure( ); ivas_error ivas_masa_dec_reconfigure( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ +#ifndef FIX_HRTF_LOAD + , uint16_t *nSamplesRendered, /* o : number of samples flushed from the previous frame (JBM) */ const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ void *data /* o : output synthesis signal */ + #endif ); ivas_error ivas_masa_encode( @@ -5609,6 +5625,18 @@ ivas_error ivas_osba_render_sf( float *output_f[] /* o : rendered time signal */ ); +#ifdef OBJ_EDITING_API +void ivas_osba_stereo_add_channels( + float *tc_f[], /* i : transport channels */ + float *output_f[], /* i/o: output channels */ + const float gain, /* i : gain bed value */ + const int16_t nchan_out, /* i : number of output channels */ + const int16_t nchan_ism, /* i : number of ISM channels */ + const int16_t ism_mode, /* i : ISM mode */ + const int16_t n_samples_to_render /* i : output frame length per channel */ +); +#endif + void ivas_osba_data_close( SBA_ISM_DATA_HANDLE *hSbaIsmData /* i/o: OSBA rendering handle */ ); @@ -5617,6 +5645,8 @@ ISM_MODE ivas_osba_ism_mode_select( const int32_t ivas_total_brate, /* i : IVAS total bitrate */ const int16_t nchan_ism /* i : number of input ISM's */ ); + + /*----------------------------------------------------------------------------------* * OMASA prototypes *---------------------------------------------------------------------------------*/ @@ -5634,10 +5664,13 @@ ivas_error ivas_omasa_enc_config( ); ivas_error ivas_omasa_dec_config( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ +#ifndef FIX_HRTF_LOAD + , uint16_t *nSamplesRendered, /* o : number of samples flushed from the previous frame (JBM) */ const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ void *data /* o : output synthesis signal */ +#endif ); void ivas_omasa_set_config( diff --git a/lib_com/ivas_spar_com.c b/lib_com/ivas_spar_com.c index 5496768821..d8ec6d0ff5 100644 --- a/lib_com/ivas_spar_com.c +++ b/lib_com/ivas_spar_com.c @@ -1257,7 +1257,11 @@ static void ivas_calc_mat_inv( int16_t sign = 1; ivas_calc_mat_det( dbl_in_re, dim, &det_re ); +#ifdef NONBE_FIX_1213_SBA_DET_MAT_INV_3BY3 + det = det_re > 0 ? 1 / max( IVAS_DBL_EPS, det_re ) : 1 / min( det_re, -IVAS_DBL_EPS ); +#else det = det_re > 0 ? 1 / max( IVAS_DBL_EPS, det_re ) : min( det_re, -IVAS_DBL_EPS ); +#endif for ( i = 0; i < dim; i++ ) { diff --git a/lib_com/options.h b/lib_com/options.h index 926960226d..b82706a7eb 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -157,9 +157,11 @@ #define OBJ_EDITING_INTERFACE /* Interface for object editing */ #ifdef OBJ_EDITING_INTERFACE #define OBJ_EDITING_API /* object editing changes related to the API */ +#define OBJ_EDITING_COMMANDLINE /* obj editing command-line option */ #define OBJ_EDITING_EXAMPLE /* obj editing example code in decoder.c */ #define OMASA_OBJECT_EDITING /* Nokia: object editing interface for OMASA */ #define OBJ_EDITING_PARAMISM_BIN /* Nokia: object editing for ParamISM to binaural */ +#define FIX_BRATE_SWITCHING /* VA: fix bitrate switching cases in OMASA and OSBA */ #endif /* ################### Start BE switches ################################# */ @@ -169,20 +171,34 @@ #define TMP_FIX_1119_SPLIT_RENDERING_VOIP /* FhG: Add error check for unsupported config: split rendering with VoIP mode */ -#define FIX_1158_FASTCONV_REVERB_HRTF /* Philips: issue 1158: Rendering with FastConv to BINAURAL_ROOM_REVERB uses BRIR convolution instead of HRTF */ #define FIX_587_DEFAULT_REVERB /* Philips: issue 587: inconsistent default reverb parameters across renderers */ -#define FIX_VOIP_FUNCTIONS /* VA: fix data type mismatch in IVAS_DEC_VoIP_SetScale() + add sanity checks to API functions */ + +#define FIX_HRTF_LOAD /* VA: issue 1187: fix memory issue when HRTFs are loaded from a binary file */ +#define FIX_1209_SID_SIGNALING /* VA: issue 1209: remove dead code in IVAS SID signaling */ + /* #################### End BE switches ################################## */ /* #################### Start NON-BE switches ############################ */ + +#define NONBE_FIX_1213_SBA_DET_MAT_INV_3BY3 /*Dolby: issue 1213: fix for inverse of det < 0*/ + /* any switch which is non-be wrt selection floating point code */ /* all switches in this category should start with "NONBE_" */ -#define NONBE_FIX_1174_MCMASA_LBR_LOOP_ERROR /* Nokia: Fix issue 1174 by removing the unnecessary inner loop causing problems. */ #define NONBE_FIX_1176_OSBA_REVERB_JBM_ASAN_ERROR /* Ericsson: Issue 1176, fix in TDREND_firfilt for subframes shorter than the filter length */ +#define NONBE_FIX_1197_OMASA_META_BUFFER /* Nokia: OMASA ISM_MASA_MODE_PARAM_ONE_OBJ history zero in rateswitching */ +#define NONBE_FIX_1212_TONAL_MDCT_CONCEALMENT /* FhG: Fix issue 1212, zero IGF spec also in 1st concealed frame */ + + +#define FIX_1139_REV_COLORATION_SHORT_T60 /* Nokia,FhG: Fix issue 1139, prevent sound coloration artefacts at very low reverberation times */ +#define NONBE_FIX_1208_DFT_STEREO_PLC_BURST /* Ericsson: Issue 1208, fix for overflow of sample offset counter for burst error in DFT Stereo PLC. */ +#define FIX_1206_ZERO_OUT_IMDCT_BUFFERS_FOR_MCT_IGNORE /* FhG: zero out all relevant imdct buffers in MCT decoding of channels with mct_chan_mode == MCT_CHAN_MODE_IGNORE */ +#define NONBE_1199_OMASA_JBM_BRATE_SW_FLUSH /* VA: issue 1199: fix bug in renderer flush in OMASA JBM bitrate switching */ +#define NONBE_1200_ISM_JBM_BRATE_SW_FLUSH /* VA: issue 1200: fix bug in renderer flush in ISM JBM bitrate switching */ + /* ##################### End NON-BE switches ########################### */ diff --git a/lib_com/prot.h b/lib_com/prot.h index c8f70bb4fc..1df0eb7838 100644 --- a/lib_com/prot.h +++ b/lib_com/prot.h @@ -222,6 +222,17 @@ void mvs2s( const int16_t n /* i : vector size */ ); +#ifdef DEBUGGING +/*! r: number of overload samples */ +uint32_t check_clipping( + const float x[], /* i : input vector */ + const int16_t n, /* i : vector size */ + float *maxOverload, /* i/o: max overload value */ + float *minOverload /* i/o: max overload value */ +); + +#endif +/*! r: number of clipped samples */ uint32_t mvr2s( const float x[], /* i : input vector */ int16_t y[], /* o : output vector */ diff --git a/lib_com/tools.c b/lib_com/tools.c index 9dfa8b9f81..b235d5d499 100644 --- a/lib_com/tools.c +++ b/lib_com/tools.c @@ -373,6 +373,46 @@ void mvs2s( return; } +#ifdef DEBUGGING +/*! r: number of overload samples */ +uint32_t check_clipping( + const float x[], /* i : input vector */ + const int16_t n, /* i : vector size */ + float *maxOverload, /* i/o: max overload value */ + float *minOverload /* i/o: max overload value */ +) +{ + int16_t i; + float temp; + uint32_t noClipping = 0; + + for ( i = 0; i < n; i++ ) + { + temp = x[i]; + + if ( temp >= ( MAX16B_FLT + 0.5f ) ) + { + noClipping++; + if ( temp > *maxOverload ) + { + *maxOverload = temp; + } + } + else if ( temp <= ( MIN16B_FLT - 0.5f ) ) + { + noClipping++; + if ( temp < *minOverload ) + { + *minOverload = temp; + } + } + } + + return noClipping; +} + +#endif +/*! r: number of clipped samples */ uint32_t mvr2s( const float x[], /* i : input vector */ int16_t y[], /* o : output vector */ diff --git a/lib_dec/ivas_binRenderer_internal.c b/lib_dec/ivas_binRenderer_internal.c index 7bab860ae7..269c6bff98 100644 --- a/lib_dec/ivas_binRenderer_internal.c +++ b/lib_dec/ivas_binRenderer_internal.c @@ -1144,6 +1144,13 @@ ivas_error ivas_binRenderer_open( hBinRenderer->render_lfe = 1; } +#ifdef FIX_HRTF_LOAD + if ( st_ivas->hHrtfFastConv == NULL && st_ivas->hDecoderConfig->Opt_HRTF_binary ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL, "HRTF binary file present but not used in FastConv renderer" ); + } +#endif + /* Load HRTF tables */ if ( ( error = ivas_binaural_hrtf_open( &st_ivas->hHrtfFastConv, st_ivas->hIntSetup.output_config, st_ivas->renderer_type ) ) != IVAS_ERR_OK ) { @@ -1219,9 +1226,33 @@ ivas_error ivas_binRenderer_open( { #ifdef FIX_587_DEFAULT_REVERB pRoomAcoustics = ( st_ivas->hOutSetup.output_config == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ? &( st_ivas->hRenderConfig->roomAcoustics ) : NULL; - if ( ( error = ivas_binaural_reverb_init( &( hBinRenderer->hReverb ), st_ivas->hHrtfStatistics, hBinRenderer->conv_band, hBinRenderer->timeSlots, pRoomAcoustics, st_ivas->hDecoderConfig->output_Fs, st_ivas->hHrtfFastConv->fastconvReverberationTimes, st_ivas->hHrtfFastConv->fastconvReverberationEneCorrections ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_binaural_reverb_init( &( hBinRenderer->hReverb ), + st_ivas->hHrtfStatistics, + hBinRenderer->conv_band, + hBinRenderer->timeSlots, + pRoomAcoustics, + st_ivas->hDecoderConfig->output_Fs, + st_ivas->hHrtfFastConv->fastconvReverberationTimes, + st_ivas->hHrtfFastConv->fastconvReverberationEneCorrections +#ifdef FIX_1139_REV_COLORATION_SHORT_T60 + , + hBinRenderer->earlyPartEneCorrection +#endif + ) ) != IVAS_ERR_OK ) #else - if ( ( error = ivas_binaural_reverb_init( &( hBinRenderer->hReverb ), st_ivas->hHrtfStatistics, hBinRenderer->conv_band, hBinRenderer->timeSlots, &( st_ivas->hRenderConfig->roomAcoustics ), st_ivas->hDecoderConfig->output_Fs, st_ivas->hHrtfFastConv->fastconvReverberationTimes, st_ivas->hHrtfFastConv->fastconvReverberationEneCorrections ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_binaural_reverb_init( &( hBinRenderer->hReverb ), + st_ivas->hHrtfStatistics, + hBinRenderer->conv_band, + hBinRenderer->timeSlots, + &( st_ivas->hRenderConfig->roomAcoustics ), + st_ivas->hDecoderConfig->output_Fs, + st_ivas->hHrtfFastConv->fastconvReverberationTimes, + st_ivas->hHrtfFastConv->fastconvReverberationEneCorrections +#ifdef FIX_1139_REV_COLORATION_SHORT_T60 + , + hBinRenderer->earlyPartEneCorrection +#endif + ) ) != IVAS_ERR_OK ) #endif { return error; diff --git a/lib_dec/ivas_init_dec.c b/lib_dec/ivas_init_dec.c index 63f3cc026d..0984693976 100644 --- a/lib_dec/ivas_init_dec.c +++ b/lib_dec/ivas_init_dec.c @@ -89,6 +89,378 @@ static AUDIO_CONFIG ivas_set_audio_config_from_sba_order( return output_config; } +#ifdef FIX_HRTF_LOAD + +/*---------------------------------------------------------------------* + * ivas_dec_get_format( ) + * + * Read main parameters from the bitstream to set-up the decoder: + * - IVAS format + * - IVAS format specific signaling + *---------------------------------------------------------------------*/ + +ivas_error ivas_dec_get_format( + Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ +) +{ + int16_t k, idx, num_bits_read; + int16_t nchan_ism, element_mode_flag; + int16_t sba_order, sba_planar, sba_analysis_order; + int32_t ivas_total_brate; + uint16_t *bit_stream_orig; + AUDIO_CONFIG signaled_config; +#ifdef FIX_1209_SID_SIGNALING + ivas_error error; +#endif + + num_bits_read = 0; + element_mode_flag = 0; + + ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate; + bit_stream_orig = st_ivas->bit_stream; + + /*-------------------------------------------------------------------* + * Read IVAS format + *-------------------------------------------------------------------*/ + +#ifdef FIX_1209_SID_SIGNALING + if ( ( error = ivas_read_format( st_ivas, &num_bits_read ) ) != IVAS_ERR_OK ) + { + return error; + } +#else + ivas_read_format( st_ivas, &num_bits_read ); +#endif + + if ( st_ivas->ini_frame > 0 && st_ivas->ivas_format != st_ivas->last_ivas_format && + !( st_ivas->ivas_format == MASA_FORMAT && st_ivas->last_ivas_format == MASA_ISM_FORMAT ) && + !( st_ivas->ivas_format == MASA_ISM_FORMAT && st_ivas->last_ivas_format == MASA_FORMAT ) ) + { +#ifdef DEBUGGING + fprintf( stderr, "\nError: Changing the number of ISMs is not supported!\n" ); +#endif + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Wrong number of objects signalled!" ); + } + + /*-------------------------------------------------------------------* + * Read other signaling (ISM/MC mode, number of channels, etc.) + *-------------------------------------------------------------------*/ + + if ( is_DTXrate( ivas_total_brate ) == 0 ) + { + /*-------------------------------------------------------------------* + * Read IVAS format related signaling: + * - in ISM : read number of objects + * - in SBA : read SBA planar flag and SBA order + * - in MASA : read number of TC + * - in MC : read LS setup + *-------------------------------------------------------------------*/ + + if ( st_ivas->ivas_format == STEREO_FORMAT ) + { + element_mode_flag = 1; + } + else if ( st_ivas->ivas_format == ISM_FORMAT ) + { + /* read the number of objects */ + nchan_ism = 1; + k = (int16_t) ( ( ivas_total_brate / FRAMES_PER_SEC ) - 1 ); + while ( st_ivas->bit_stream[k] && nchan_ism < MAX_NUM_OBJECTS ) + { + nchan_ism++; + k--; + } + + if ( st_ivas->ini_frame > 0 && nchan_ism != st_ivas->nchan_ism ) + { +#ifdef DEBUGGING + fprintf( stderr, "\nError: Changing the number of ISMs is not supported!\n" ); +#endif + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Wrong number of objects signalled!" ); + } + + st_ivas->nchan_ism = nchan_ism; + st_ivas->ism_mode = ivas_ism_mode_select( nchan_ism, ivas_total_brate ); + + st_ivas->nchan_transport = nchan_ism; + if ( st_ivas->ism_mode == ISM_MODE_PARAM ) + { + st_ivas->nchan_transport = MAX_PARAM_ISM_WAVE; + } + } + else if ( st_ivas->ivas_format == SBA_FORMAT ) + { + /* read Ambisonic (SBA) planar flag */ + sba_planar = st_ivas->bit_stream[num_bits_read]; + num_bits_read += SBA_PLANAR_BITS; + + if ( st_ivas->ini_frame > 0 && sba_planar != st_ivas->sba_planar ) + { +#ifdef DEBUGGING + fprintf( stderr, "\nError: Changing the SBA planar/3D layout is not supported!\n" ); +#endif + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Wrong SBA planar flag signalled!" ); + } + + /* read Ambisonic (SBA) order */ + sba_order = st_ivas->bit_stream[num_bits_read + 1]; + sba_order += 2 * st_ivas->bit_stream[num_bits_read]; + + if ( st_ivas->ini_frame > 0 && sba_order != st_ivas->sba_order ) + { +#ifdef DEBUGGING + fprintf( stderr, "\nError: Changing the SBA order is not supported!\n" ); +#endif + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Wrong SBA order signalled!" ); + } + + sba_analysis_order = ivas_sba_get_analysis_order( ivas_total_brate, sba_order ); + st_ivas->nchan_transport = ivas_get_sba_num_TCs( ivas_total_brate, sba_analysis_order ); + } + else if ( st_ivas->ivas_format == MASA_FORMAT ) + { + /* read number of MASA transport channels */ + if ( st_ivas->bit_stream[( ivas_total_brate / FRAMES_PER_SEC ) - 1] ) + { + st_ivas->nchan_transport = 2; + element_mode_flag = 1; + } + else + { + st_ivas->nchan_transport = 1; + } + + /* this should be non-zero if original input format was MASA_ISM_FORMAT */ + st_ivas->ism_mode = ISM_MODE_NONE; + nchan_ism = st_ivas->bit_stream[( ivas_total_brate / FRAMES_PER_SEC ) - 3] + 2 * st_ivas->bit_stream[( ivas_total_brate / FRAMES_PER_SEC ) - 2]; + + if ( nchan_ism > 0 ) + { + /* the input_ivas_format should be MASA_ISM_FORMAT, but we cannot initialize it now */ + /* info about the number of objects: + '00' - MASA format at the encoder + '01' - MASA_ISM_FORMAT at the encoder, with 4 objects + '10' - MASA_ISM_FORMAT at the encoder, with 3 objects + '11' - MASA_ISM_FORMAT at the encoder, with 1 or 2 objects + reading if 1 or 2 objects is performed later + */ + nchan_ism = 5 - nchan_ism; + if ( st_ivas->nchan_transport == 1 && nchan_ism == 2 ) + { + nchan_ism = 1; + } + + /* for MASA_ISM_FORMAT at input the number of MASA transport channels is always 2 and the corresponding bit is not used here*/ + st_ivas->nchan_transport = 2; + element_mode_flag = 1; + } + + if ( st_ivas->ini_frame > 0 && nchan_ism != st_ivas->nchan_ism ) + { +#ifdef DEBUGGING + fprintf( stderr, "\nError: Changing the number of ISMs is not supported!\n" ); +#endif + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Wrong number of objects signalled!" ); + } + + st_ivas->nchan_ism = nchan_ism; + } + else if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) + { + st_ivas->nchan_transport = 2; /* always 2 MASA transport channels */ + + /* the number of objects are written at the end of the bitstream */ + nchan_ism = 2 * st_ivas->bit_stream[ivas_total_brate / FRAMES_PER_SEC - 1] + st_ivas->bit_stream[ivas_total_brate / FRAMES_PER_SEC - 2] + 1; + st_ivas->ism_mode = ivas_omasa_ism_mode_select( ivas_total_brate, nchan_ism ); + + if ( st_ivas->ini_frame > 0 && nchan_ism != st_ivas->nchan_ism ) + { +#ifdef DEBUGGING + fprintf( stderr, "\nError: Changing the number of ISMs is not supported!\n" ); +#endif + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Wrong number of objects signalled!" ); + } + + st_ivas->nchan_ism = nchan_ism; + } + else if ( st_ivas->ivas_format == SBA_ISM_FORMAT ) + { + /* the number of objects is written at the end of the bitstream, in the SBA metadata */ + nchan_ism = 2 * st_ivas->bit_stream[ivas_total_brate / FRAMES_PER_SEC - 1] + st_ivas->bit_stream[ivas_total_brate / FRAMES_PER_SEC - 2] + 1; + + if ( st_ivas->ini_frame > 0 && nchan_ism != st_ivas->nchan_ism ) + { +#ifdef DEBUGGING + fprintf( stderr, "\nError: Changing the number of ISMs is not supported!\n" ); +#endif + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Wrong number of objects signalled!" ); + } + + st_ivas->nchan_ism = nchan_ism; + + /* read Ambisonic (SBA) planar flag */ + /*sba_planar = st_ivas->bit_stream[num_bits_read];*/ + num_bits_read += SBA_PLANAR_BITS; + + /* read Ambisonic (SBA) order (0 for signaling OSBA format at low bitrates)*/ + sba_order = st_ivas->bit_stream[num_bits_read + 1]; + sba_order += 2 * st_ivas->bit_stream[num_bits_read]; + num_bits_read += SBA_ORDER_BITS; + + /* read the real Ambisonic order when the above bits are used to signal OSBA format */ + if ( ivas_total_brate < IVAS_24k4 ) + { + sba_order = st_ivas->bit_stream[num_bits_read + 1]; + sba_order += 2 * st_ivas->bit_stream[num_bits_read]; + num_bits_read += SBA_ORDER_BITS; + } + + if ( st_ivas->ini_frame > 0 && sba_order != st_ivas->sba_order ) + { +#ifdef DEBUGGING + fprintf( stderr, "\nError: Changing the SBA order is not supported!\n" ); +#endif + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Wrong SBA order signalled!" ); + } + + st_ivas->ism_mode = ivas_osba_ism_mode_select( ivas_total_brate, st_ivas->nchan_ism ); + + sba_analysis_order = ivas_sba_get_analysis_order( ivas_total_brate, sba_order ); + st_ivas->nchan_transport = ivas_get_sba_num_TCs( ivas_total_brate, sba_analysis_order ); + } + else if ( st_ivas->ivas_format == MC_FORMAT ) + { + /* read MC configuration */ + idx = 0; + for ( k = 0; k < MC_LS_SETUP_BITS; k++ ) + { + if ( st_ivas->bit_stream[num_bits_read + k] ) + { + idx += 1 << ( MC_LS_SETUP_BITS - 1 - k ); + } + } + num_bits_read += MC_LS_SETUP_BITS; + + signaled_config = ivas_mc_map_ls_setup_to_output_config( idx ); + + if ( st_ivas->ini_frame > 0 && st_ivas->transport_config != signaled_config ) + { +#ifdef DEBUGGING + fprintf( stderr, "\nError: Switching of MC configurations is not supported!\n" ); +#endif + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "wrong MC configuration signalled!" ); + } + + st_ivas->mc_mode = ivas_mc_mode_select( ivas_mc_map_output_config_to_mc_ls_setup( signaled_config ), st_ivas->hDecoderConfig->ivas_total_brate ); + st_ivas->transport_config = signaled_config; + } + + /*-------------------------------------------------------------------* + * Read element mode + *-------------------------------------------------------------------*/ + + if ( st_ivas->ini_frame == 0 && element_mode_flag ) + { + /* read stereo technology info */ + if ( ivas_total_brate < MIN_BRATE_MDCT_STEREO ) + { + /* 1 bit */ + if ( st_ivas->bit_stream[num_bits_read] ) + { + st_ivas->element_mode_init = 1 + IVAS_CPE_DFT; + } + else + { + st_ivas->element_mode_init = 0 + IVAS_CPE_DFT; + } + } + else + { + st_ivas->element_mode_init = IVAS_CPE_MDCT; + } + } + } + else if ( ivas_total_brate == IVAS_SID_5k2 ) + { + switch ( st_ivas->sid_format ) + { + case SID_DFT_STEREO: + st_ivas->element_mode_init = IVAS_CPE_DFT; + break; + case SID_MDCT_STEREO: + st_ivas->element_mode_init = IVAS_CPE_MDCT; + break; + case SID_ISM: + st_ivas->element_mode_init = IVAS_SCE; + break; + case SID_MASA_1TC: + st_ivas->element_mode_init = IVAS_SCE; + st_ivas->nchan_transport = 1; + break; + case SID_MASA_2TC: + if ( st_ivas->bit_stream[ivas_total_brate / FRAMES_PER_SEC - 1 - SID_FORMAT_NBITS] == 1 ) + { + st_ivas->element_mode_init = IVAS_CPE_MDCT; + } + else + { + st_ivas->element_mode_init = IVAS_CPE_DFT; + } + st_ivas->nchan_transport = 2; + break; + case SID_SBA_1TC: + st_ivas->element_mode_init = IVAS_SCE; + break; + case SID_SBA_2TC: + st_ivas->element_mode_init = IVAS_CPE_MDCT; + break; + } + + if ( st_ivas->ivas_format == ISM_FORMAT ) + { + /* read the number of objects */ + nchan_ism = 1; + k = (int16_t) ( ( ivas_total_brate / FRAMES_PER_SEC ) - 1 - SID_FORMAT_NBITS ); + while ( st_ivas->bit_stream[k] && nchan_ism < MAX_NUM_OBJECTS ) + { + nchan_ism++; + k--; + } + k--; + + if ( st_ivas->ini_frame > 0 && nchan_ism != st_ivas->nchan_ism ) + { +#ifdef DEBUGGING + fprintf( stderr, "\nError: Changing the number of ISMs is not supported!\n" ); +#endif + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Wrong number of objects signalled!" ); + } + + st_ivas->nchan_ism = nchan_ism; + + /* read ism_mode */ + st_ivas->ism_mode = ISM_MODE_DISC; + if ( nchan_ism > 2 ) + { + k -= nchan_ism; /* SID metadata flags */ + idx = st_ivas->bit_stream[k]; + st_ivas->ism_mode = (ISM_MODE) ( idx + 1 ); + } + + st_ivas->nchan_transport = nchan_ism; + if ( st_ivas->ism_mode == ISM_MODE_PARAM ) + { + st_ivas->nchan_transport = MAX_PARAM_ISM_WAVE; + } + } + } + + st_ivas->bit_stream = bit_stream_orig; + + return IVAS_ERR_OK; +} + +#endif /*-------------------------------------------------------------------* * ivas_dec_setup() @@ -97,10 +469,13 @@ static AUDIO_CONFIG ivas_set_audio_config_from_sba_order( *-------------------------------------------------------------------*/ ivas_error ivas_dec_setup( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ +#ifndef FIX_HRTF_LOAD + , uint16_t *nSamplesRendered, /* o : number of samples flushed from the previous frame (JBM) */ const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ void *data /* o : output synthesis signal */ +#endif ) { int16_t k, idx, num_bits_read; @@ -120,7 +495,14 @@ ivas_error ivas_dec_setup( * Read IVAS format *-------------------------------------------------------------------*/ +#ifdef FIX_1209_SID_SIGNALING + if ( ( error = ivas_read_format( st_ivas, &num_bits_read ) ) != IVAS_ERR_OK ) + { + return error; + } +#else ivas_read_format( st_ivas, &num_bits_read ); +#endif /*-------------------------------------------------------------------* * Read other signling (ISM/MC mode, number of channels, etc.) @@ -154,7 +536,11 @@ ivas_error ivas_dec_setup( st_ivas->nchan_ism = nchan_ism; +#ifdef FIX_HRTF_LOAD + if ( ( error = ivas_ism_dec_config( st_ivas, st_ivas->ism_mode ) ) != IVAS_ERR_OK ) +#else if ( ( error = ivas_ism_dec_config( st_ivas, st_ivas->ism_mode, nSamplesRendered, pcm_resolution, data ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -172,7 +558,11 @@ ivas_error ivas_dec_setup( num_bits_read += SBA_ORDER_BITS; if ( st_ivas->ini_frame > 0 && ivas_total_brate != st_ivas->last_active_ivas_total_brate && ivas_total_brate > IVAS_SID_5k2 ) { +#ifdef FIX_HRTF_LOAD + if ( ( error = ivas_sba_dec_reconfigure( st_ivas ) ) != IVAS_ERR_OK ) +#else if ( ( error = ivas_sba_dec_reconfigure( st_ivas, nSamplesRendered, pcm_resolution, data ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -199,6 +589,9 @@ ivas_error ivas_dec_setup( } /* this should be non-zero if original input format was MASA_ISM_FORMAT */ +#ifdef NONBE_1199_OMASA_JBM_BRATE_SW_FLUSH + st_ivas->ism_mode = ISM_MODE_NONE; +#endif st_ivas->nchan_ism = st_ivas->bit_stream[( ivas_total_brate / FRAMES_PER_SEC ) - 3] + 2 * st_ivas->bit_stream[( ivas_total_brate / FRAMES_PER_SEC ) - 2]; if ( st_ivas->nchan_ism > 0 ) @@ -216,6 +609,7 @@ ivas_error ivas_dec_setup( { st_ivas->nchan_ism = 1; } + /* for MASA_ISM_FORMAT at input the number of MASA transport channels is always 2 and the corresponding bit is not used here*/ st_ivas->nchan_transport = 2; element_mode_flag = 1; @@ -234,8 +628,11 @@ ivas_error ivas_dec_setup( } else { - +#ifdef FIX_HRTF_LOAD + if ( ( error = ivas_masa_dec_reconfigure( st_ivas ) ) != IVAS_ERR_OK ) +#else if ( ( error = ivas_masa_dec_reconfigure( st_ivas, nSamplesRendered, pcm_resolution, data ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -243,7 +640,11 @@ ivas_error ivas_dec_setup( } else { +#ifdef FIX_HRTF_LOAD + if ( ( error = ivas_omasa_dec_config( st_ivas ) ) != IVAS_ERR_OK ) +#else if ( ( error = ivas_omasa_dec_config( st_ivas, nSamplesRendered, pcm_resolution, data ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -264,7 +665,11 @@ ivas_error ivas_dec_setup( /* reconfigure in case a change of operation mode is detected */ if ( ( ivas_total_brate > IVAS_SID_5k2 && ivas_total_brate != st_ivas->hDecoderConfig->last_ivas_total_brate ) || ( st_ivas->ini_active_frame == 0 ) ) { +#ifdef FIX_HRTF_LOAD + if ( ( error = ivas_omasa_dec_config( st_ivas ) ) != IVAS_ERR_OK ) +#else if ( ( error = ivas_omasa_dec_config( st_ivas, nSamplesRendered, pcm_resolution, data ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -292,9 +697,14 @@ ivas_error ivas_dec_setup( st_ivas->sba_order += 2 * st_ivas->bit_stream[num_bits_read]; num_bits_read += SBA_ORDER_BITS; } + if ( st_ivas->ini_frame > 0 && ivas_total_brate != st_ivas->last_active_ivas_total_brate ) { +#ifdef FIX_HRTF_LOAD + if ( ( error = ivas_sba_dec_reconfigure( st_ivas ) ) != IVAS_ERR_OK ) +#else if ( ( error = ivas_sba_dec_reconfigure( st_ivas, nSamplesRendered, pcm_resolution, data ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -340,7 +750,11 @@ ivas_error ivas_dec_setup( num_bits_read += MC_LS_SETUP_BITS; /* select MC format mode; reconfigure the MC format decoder */ +#ifdef FIX_HRTF_LOAD + if ( ( error = ivas_mc_dec_config( st_ivas, idx ) ) != IVAS_ERR_OK ) +#else if ( ( error = ivas_mc_dec_config( st_ivas, idx, nSamplesRendered, pcm_resolution, data ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -425,7 +839,11 @@ ivas_error ivas_dec_setup( st_ivas->hDecoderConfig->ivas_total_brate = IVAS_24k4; } +#ifdef FIX_HRTF_LOAD + if ( ( error = ivas_sba_dec_reconfigure( st_ivas ) ) != IVAS_ERR_OK ) +#else if ( ( error = ivas_sba_dec_reconfigure( st_ivas, nSamplesRendered, pcm_resolution, data ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -435,6 +853,14 @@ ivas_error ivas_dec_setup( } } +#ifdef NONBE_1199_OMASA_JBM_BRATE_SW_FLUSH + if ( st_ivas->ini_frame > 0 && st_ivas->ivas_format == MASA_FORMAT ) + { + st_ivas->nchan_ism = 0; + st_ivas->ism_mode = ISM_MODE_NONE; + } + +#endif if ( st_ivas->ivas_format == ISM_FORMAT ) { ISM_MODE last_ism_mode = st_ivas->ism_mode; @@ -471,7 +897,11 @@ ivas_error ivas_dec_setup( last_ism_mode = st_ivas->ism_mode; } +#ifdef FIX_HRTF_LOAD + if ( ( error = ivas_ism_dec_config( st_ivas, last_ism_mode ) ) != IVAS_ERR_OK ) +#else if ( ( error = ivas_ism_dec_config( st_ivas, last_ism_mode, nSamplesRendered, pcm_resolution, data ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -599,6 +1029,15 @@ static ivas_error ivas_read_format( if ( st_ivas->sba_order == 0 ) { st_ivas->ivas_format = SBA_ISM_FORMAT; + +#ifdef FIX_HRTF_LOAD + /* read the real Ambisonic order when the above bits are used to signal OSBA format */ + if ( ivas_total_brate < IVAS_24k4 ) + { + st_ivas->sba_order = st_ivas->bit_stream[*num_bits_read + 2 + SBA_PLANAR_BITS + SBA_ORDER_BITS]; + st_ivas->sba_order += 2 * st_ivas->bit_stream[*num_bits_read + 1 + SBA_PLANAR_BITS + SBA_ORDER_BITS]; + } +#endif } } ( *num_bits_read )++; @@ -626,11 +1065,12 @@ static ivas_error ivas_read_format( break; case SID_ISM: st_ivas->ivas_format = ISM_FORMAT; - break; +#ifndef FIX_1209_SID_SIGNALING case SID_MULTICHANNEL: st_ivas->ivas_format = MC_FORMAT; break; +#endif case SID_SBA_1TC: st_ivas->ivas_format = SBA_FORMAT; st_ivas->element_mode_init = IVAS_SCE; @@ -655,7 +1095,9 @@ static ivas_error ivas_read_format( } break; default: +#ifndef FIX_1209_SID_SIGNALING /* This should actually be impossible, since only 3 bits are read, so if this happens something is broken */ +#endif return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Invalid value %c found in SID format field.", st_ivas->sid_format ); } @@ -842,6 +1284,7 @@ ivas_error ivas_init_decoder_front( } } +#ifndef FIX_HRTF_LOAD /*-------------------------------------------------------------------* * Allocate HRTF binary handle *--------------------------------------------------------------------*/ @@ -872,7 +1315,7 @@ ivas_error ivas_init_decoder_front( return error; } } - +#endif /*-------------------------------------------------------------------* * Allocate and initialize Binaural Renderer configuration handle *--------------------------------------------------------------------*/ @@ -2908,6 +3351,19 @@ static ivas_error doSanityChecks_IVAS( } } +#ifdef OBJ_EDITING_COMMANDLINE + if ( st_ivas->hDecoderConfig->Opt_ObjEdit_on ) + { +#ifdef FIX_BRATE_SWITCHING + if ( !( st_ivas->ivas_format == ISM_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT || st_ivas->ivas_format == MASA_ISM_FORMAT || ( st_ivas->ivas_format == MASA_FORMAT && st_ivas->nchan_ism > 0 ) ) ) +#else + if ( !( st_ivas->ivas_format == ISM_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT || st_ivas->ivas_format == MASA_ISM_FORMAT ) ) +#endif + { + return IVAS_ERROR( IVAS_ERR_OBJECTS_EDITING_NOT_SUPPORTED, "Wrong set-up: Obect editing is not supported in this IVAS format." ); + } + } +#endif #ifdef DEBUGGING if ( ( st_ivas->hDecoderConfig->force_rend == FORCE_TD_RENDERER ) && ( ( st_ivas->ivas_format != MC_FORMAT && st_ivas->ivas_format != ISM_FORMAT ) || ( output_config != IVAS_AUDIO_CONFIG_BINAURAL && output_config != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || ( st_ivas->ivas_format == ISM_FORMAT && st_ivas->ism_mode == ISM_MODE_PARAM ) || ( st_ivas->ivas_format == MC_FORMAT && st_ivas->mc_mode != MC_MODE_MCT ) ) ) { diff --git a/lib_dec/ivas_ism_dec.c b/lib_dec/ivas_ism_dec.c index 36945f8155..bd0e7075e6 100644 --- a/lib_dec/ivas_ism_dec.c +++ b/lib_dec/ivas_ism_dec.c @@ -47,12 +47,15 @@ *-------------------------------------------------------------------------*/ static ivas_error ivas_ism_bitrate_switching_dec( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - const int16_t nchan_transport_old, /* i : last number of transport channels */ - const ISM_MODE last_ism_mode, /* i : last ISM mode */ + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + const int16_t nchan_transport_old, /* i : last number of transport channels */ + const ISM_MODE last_ism_mode /* i : last ISM mode */ +#ifndef FIX_HRTF_LOAD + , uint16_t *nSamplesRendered, /* o : number of samples rendered */ const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ void *data /* o : output synthesis signal */ +#endif ) { ivas_error error; @@ -64,11 +67,15 @@ static ivas_error ivas_ism_bitrate_switching_dec( int16_t tc_nchan_allocate_new; int16_t tc_granularity_new; int16_t nchan_out_buff, nchan_out_buff_old; +#ifndef FIX_HRTF_LOAD AUDIO_CONFIG intern_config_old; IVAS_OUTPUT_SETUP hIntSetupOld; RENDERER_TYPE renderer_type_old; +#endif +#ifndef FIX_HRTF_LOAD error = IVAS_ERR_OK; +#endif nCPE_old = st_ivas->nCPE; nSCE_old = st_ivas->nSCE; @@ -104,12 +111,14 @@ static ivas_error ivas_ism_bitrate_switching_dec( return error; } +#ifndef FIX_HRTF_LOAD /* save old IntSetup, might be needed for JBM flushing...*/ intern_config_old = st_ivas->intern_config; hIntSetupOld = st_ivas->hIntSetup; tc_granularity_new = 1; renderer_type_old = st_ivas->renderer_type; +#endif /*-----------------------------------------------------------------* * Initialize the needed renderer struct and destroy the unnecessary renderer struct *-----------------------------------------------------------------*/ @@ -124,7 +133,9 @@ static ivas_error ivas_ism_bitrate_switching_dec( ivas_output_init( &( st_ivas->hIntSetup ), st_ivas->hDecoderConfig->output_config ); } +#ifndef NONBE_1200_ISM_JBM_BRATE_SW_FLUSH { +#endif /* transfer subframe info from DirAC or ParamMC to central tc buffer */ /* only do this if we are not having done everything already in the TC decoding part and having only played out from the TC buffer */ if ( last_ism_mode == ISM_MODE_PARAM && st_ivas->hSpatParamRendCom != NULL && st_ivas->hTcBuffer->tc_buffer_mode != TC_BUFFER_MODE_BUFFER ) @@ -142,10 +153,23 @@ static ivas_error ivas_ism_bitrate_switching_dec( if ( tc_granularity_new < st_ivas->hTcBuffer->n_samples_granularity ) { - if ( ( error = ivas_jbm_dec_flush_renderer( st_ivas, tc_granularity_new, renderer_type_old, intern_config_old, &hIntSetupOld, MC_MODE_NONE, last_ism_mode, nSamplesRendered, pcm_resolution, data ) ) != IVAS_ERR_OK ) - { - return error; - } +#ifdef FIX_HRTF_LOAD + /* flush already done in IVAS_DEC_ReadFormat() */ +#else +#ifdef NONBE_1200_ISM_JBM_BRATE_SW_FLUSH + /* write back info for correct rendering of the flushable samples */ + int16_t nchan_transport_ref = st_ivas->nchan_transport; + st_ivas->nchan_transport = nchan_transport_old; + +#endif + if ( ( error = ivas_jbm_dec_flush_renderer( st_ivas, tc_granularity_new, renderer_type_old, intern_config_old, &hIntSetupOld, MC_MODE_NONE, last_ism_mode, nSamplesRendered, pcm_resolution, data ) ) != IVAS_ERR_OK ) + { + return error; + } +#ifdef NONBE_1200_ISM_JBM_BRATE_SW_FLUSH + st_ivas->nchan_transport = nchan_transport_ref; +#endif +#endif } /* JBM: when granularity goes up set samples to discard at the beginning of the frame */ else if ( tc_granularity_new > st_ivas->hTcBuffer->n_samples_granularity ) @@ -155,7 +179,9 @@ static ivas_error ivas_ism_bitrate_switching_dec( return error; } } +#ifndef NONBE_1200_ISM_JBM_BRATE_SW_FLUSH } +#endif if ( st_ivas->ism_mode != last_ism_mode ) { @@ -177,9 +203,11 @@ static ivas_error ivas_ism_bitrate_switching_dec( { /* close the parametric binaural renderer */ ivas_dirac_dec_close_binaural_data( st_ivas->hDiracDecBin ); + #ifdef OBJ_EDITING_PARAMISM_BIN /* Close omasa data struct (used for object editing) */ ivas_omasa_data_close( &st_ivas->hMasaIsmData ); + #endif /* Open the TD Binaural renderer */ if ( st_ivas->hHrtfTD == NULL || st_ivas->hBinRendererTd == NULL ) @@ -311,19 +339,26 @@ static ivas_error ivas_ism_bitrate_switching_dec( * floating-point output audio buffers *-----------------------------------------------------------------*/ +#ifndef NONBE_1200_ISM_JBM_BRATE_SW_FLUSH { +#endif nchan_out_buff = ivas_get_nchan_buffers_dec( st_ivas, -1, -1 ); if ( ( error = ivas_output_buff_dec( st_ivas->p_output_f, nchan_out_buff_old, nchan_out_buff ) ) != IVAS_ERR_OK ) { return error; } +#ifndef NONBE_1200_ISM_JBM_BRATE_SW_FLUSH } +#endif /*-----------------------------------------------------------------* * JBM TC buffers *-----------------------------------------------------------------*/ + +#ifndef NONBE_1200_ISM_JBM_BRATE_SW_FLUSH { +#endif int16_t tc_nchan_full_new; DECODER_TC_BUFFER_HANDLE hTcBuffer; @@ -359,9 +394,15 @@ static ivas_error ivas_ism_bitrate_switching_dec( mvs2s( st_ivas->hTcBuffer->subframe_nbslots, st_ivas->hSpatParamRendCom->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); } +#ifndef NONBE_1200_ISM_JBM_BRATE_SW_FLUSH } +#endif +#ifdef FIX_HRTF_LOAD + return IVAS_ERR_OK; +#else return error; +#endif } @@ -373,18 +414,23 @@ static ivas_error ivas_ism_bitrate_switching_dec( *-------------------------------------------------------------------------*/ ivas_error ivas_ism_dec_config( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - const ISM_MODE last_ism_mode, /* i/o: last ISM mode */ + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + const ISM_MODE last_ism_mode /* i/o: last ISM mode */ +#ifndef FIX_HRTF_LOAD + , uint16_t *nSamplesRendered, /* o : number of samples flushed when the renderer granularity changes */ const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ void *data /* o : output synthesis signal */ +#endif ) { int32_t ivas_total_brate; ivas_error error; int16_t nchan_transport_old; +#ifndef FIX_HRTF_LOAD error = IVAS_ERR_OK; +#endif ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate; /* Assumes that num of input objects are constant */ @@ -413,9 +459,13 @@ ivas_error ivas_ism_dec_config( if ( st_ivas->ini_active_frame != 0 ) { /* ISM bit-rate switching */ - if ( ( st_ivas->ism_mode != last_ism_mode ) || ( st_ivas->hDecoderConfig->ivas_total_brate != st_ivas->hDecoderConfig->last_ivas_total_brate ) ) + if ( ( st_ivas->ism_mode != last_ism_mode ) || ( ivas_total_brate != st_ivas->hDecoderConfig->last_ivas_total_brate ) ) { +#ifdef FIX_HRTF_LOAD + if ( ( error = ivas_ism_bitrate_switching_dec( st_ivas, nchan_transport_old, last_ism_mode ) ) != IVAS_ERR_OK ) +#else if ( ( error = ivas_ism_bitrate_switching_dec( st_ivas, nchan_transport_old, last_ism_mode, nSamplesRendered, pcm_resolution, data ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -437,7 +487,12 @@ ivas_error ivas_ism_dec_config( /* ISM mode switching */ if ( st_ivas->ism_mode != last_ism_mode ) { + +#ifdef FIX_HRTF_LOAD + if ( ( error = ivas_ism_bitrate_switching_dec( st_ivas, nchan_transport_old, last_ism_mode ) ) != IVAS_ERR_OK ) +#else if ( ( error = ivas_ism_bitrate_switching_dec( st_ivas, nchan_transport_old, last_ism_mode, nSamplesRendered, pcm_resolution, data ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -463,5 +518,9 @@ ivas_error ivas_ism_dec_config( break; } +#ifdef FIX_HRTF_LOAD + return IVAS_ERR_OK; +#else return error; +#endif } diff --git a/lib_dec/ivas_ism_param_dec.c b/lib_dec/ivas_ism_param_dec.c index ace799d92e..db93983e59 100644 --- a/lib_dec/ivas_ism_param_dec.c +++ b/lib_dec/ivas_ism_param_dec.c @@ -802,9 +802,9 @@ void ivas_ism_dec_digest_tc( *-------------------------------------------------------------------------*/ void ivas_param_ism_dec_digest_tc( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - const uint16_t nCldfbSlots, /* i : number of CLFBS slots in the transport channels */ - float *transport_channels_f[] /* i : synthesized core-coder transport channels/DirAC output */ + Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ + const uint16_t nCldfbSlots, /* i : number of CLDFB slots in transport channels */ + float *transport_channels_f[] /* i/o: synthesized core-coder transport channels/DirAC output */ ) { #ifndef OBJ_EDITING_API @@ -850,8 +850,8 @@ void ivas_param_ism_dec_digest_tc( nchan_out = st_ivas->hIntSetup.nchan_out_woLFE + st_ivas->hIntSetup.num_lfe; nchan_out_woLFE = st_ivas->hIntSetup.nchan_out_woLFE; } -#endif +#endif push_wmops( "ivas_param_ism_dec_digest_tc" ); #ifndef OBJ_EDITING_API @@ -929,8 +929,8 @@ void ivas_param_ism_dec_digest_tc( } } } -#endif +#endif if ( st_ivas->hDecoderConfig->Opt_tsm ) { /*TODO : FhG to check*/ @@ -944,7 +944,6 @@ void ivas_param_ism_dec_digest_tc( { if ( st_ivas->hDecoderConfig->Opt_tsm ) { - float RealBuffer[CLDFB_NO_CHANNELS_MAX]; float ImagBuffer[CLDFB_NO_CHANNELS_MAX]; @@ -952,8 +951,8 @@ void ivas_param_ism_dec_digest_tc( mvr2r( RealBuffer, &hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc[slot_idx * hSpatParamRendCom->num_freq_bands * nchan_transport + ch * hSpatParamRendCom->num_freq_bands], hSpatParamRendCom->num_freq_bands ); mvr2r( ImagBuffer, &hParamIsmDec->hParamIsmRendering->Cldfb_ImagBuffer_tc[slot_idx * hSpatParamRendCom->num_freq_bands * nchan_transport + ch * hSpatParamRendCom->num_freq_bands], hSpatParamRendCom->num_freq_bands ); } - #ifndef OBJ_EDITING_API + ivas_param_ism_collect_slot( hParamIsmDec, &hParamIsmDec->hParamIsmRendering->Cldfb_RealBuffer_tc[slot_idx * hSpatParamRendCom->num_freq_bands * nchan_transport + ch * hSpatParamRendCom->num_freq_bands], &hParamIsmDec->hParamIsmRendering->Cldfb_ImagBuffer_tc[slot_idx * hSpatParamRendCom->num_freq_bands * nchan_transport + ch * hSpatParamRendCom->num_freq_bands], ch, ref_power, cx_diag ); #endif } @@ -978,13 +977,14 @@ void ivas_param_ism_dec_digest_tc( #ifdef OBJ_EDITING_API /*-------------------------------------------------------------------------* - * ivas_param_ism_dec_prepare_renderer() + * ivas_param_ism_dec_dequant_md() * * *-------------------------------------------------------------------------*/ void ivas_param_ism_dec_dequant_md( - Decoder_Struct *st_ivas ) + Decoder_Struct *st_ivas /* i/o: IVAS decoder handle */ +) { /* De-quantization */ if ( !( st_ivas->hDecoderConfig->ivas_total_brate == IVAS_SID_5k2 || st_ivas->hDecoderConfig->ivas_total_brate == FRAME_NO_DATA ) ) @@ -1009,8 +1009,8 @@ void ivas_param_ism_dec_dequant_md( *-------------------------------------------------------------------------*/ void ivas_param_ism_dec_prepare_renderer( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - const uint16_t nCldfbSlots /* i : number of CLFBS slots in the transport channels */ + Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ + const uint16_t nCldfbSlots /* i : number of CLDFB slots in transport channels */ ) { int16_t ch, nchan_transport, nchan_out, nchan_out_woLFE, i; @@ -1134,6 +1134,7 @@ void ivas_param_ism_dec_prepare_renderer( } #endif + /*-------------------------------------------------------------------------* * ivas_ism_param_dec_tc_gain_ajust() * @@ -1450,8 +1451,8 @@ void ivas_param_ism_params_to_masa_param_mapping( { st_ivas->hISMDTX.dtx_flag = 1; } -#endif +#endif if ( st_ivas->hISMDTX.dtx_flag ) { float energy_ratio; @@ -1524,6 +1525,7 @@ void ivas_param_ism_params_to_masa_param_mapping( hSpatParamRendCom->surroundingCoherence[sf_idx][bin_idx] = 0.0; } } + #ifdef OBJ_EDITING_PARAMISM_BIN for ( obj = 0; obj < st_ivas->nchan_ism; obj++ ) { diff --git a/lib_dec/ivas_ism_renderer.c b/lib_dec/ivas_ism_renderer.c index 9b882089b1..4e4fb628a4 100644 --- a/lib_dec/ivas_ism_renderer.c +++ b/lib_dec/ivas_ism_renderer.c @@ -247,6 +247,7 @@ void ivas_ism_render_sf( rotateAziEle( st_ivas->hIsmMetaData[i]->last_azimuth, st_ivas->hIsmMetaData[i]->last_elevation, &azimuth, &elevation, st_ivas->hCombinedOrientationData->Rmat[st_ivas->hCombinedOrientationData->subframe_idx], st_ivas->hIntSetup.is_planar_setup ); #endif } + if ( st_ivas->hEFAPdata != NULL ) { efap_determine_gains( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains[i], azimuth, elevation, EFAP_MODE_EFAP ); diff --git a/lib_dec/ivas_jbm_dec.c b/lib_dec/ivas_jbm_dec.c index 29b2cd1403..f096ff4116 100644 --- a/lib_dec/ivas_jbm_dec.c +++ b/lib_dec/ivas_jbm_dec.c @@ -150,6 +150,7 @@ ivas_error ivas_jbm_dec_tc( } ivas_ism_dtx_limit_noise_energy_for_near_silence( st_ivas->hSCE, st_ivas->hISMDTX.sce_id_dtx, st_ivas->nchan_transport ); + #ifdef OBJ_EDITING_API ivas_param_ism_dec_dequant_md( st_ivas ); #endif @@ -160,6 +161,7 @@ ivas_error ivas_jbm_dec_tc( { return error; } + #ifdef OBJ_EDITING_API ivas_param_ism_dec_dequant_md( st_ivas ); #endif @@ -1248,36 +1250,15 @@ ivas_error ivas_jbm_dec_render( /* add already rendered SBA part */ #ifdef OBJ_EDITING_API - if ( st_ivas->ivas_format == SBA_ISM_FORMAT && st_ivas->ism_mode == ISM_SBA_MODE_DISC ) - { - float gain = st_ivas->hSbaIsmData->gain_bed; - if ( gain != 1.0f && gain >= 0.0f ) - { - int16_t i; - for ( n = 0; n < nchan_out; n++ ) - { - for ( i = 0; i < *nSamplesRendered; i++ ) - { - p_output[n][i] += p_tc[n + st_ivas->nchan_ism][i] * gain; - } - } - } - else - { - for ( n = 0; n < nchan_out; n++ ) - { - v_add( p_output[n], p_tc[n + st_ivas->nchan_ism], p_output[n], *nSamplesRendered ); - } - } - } - else -#endif + ivas_osba_stereo_add_channels( p_tc, p_output, st_ivas->hSbaIsmData->gain_bed, nchan_out, st_ivas->nchan_ism, st_ivas->ism_mode, *nSamplesRendered ); +#else { for ( n = 0; n < nchan_out; n++ ) { v_add( p_output[n], p_tc[n + st_ivas->nchan_ism], p_output[n], *nSamplesRendered ); } } +#endif } else if ( st_ivas->renderer_type == RENDERER_OSBA_AMBI || st_ivas->renderer_type == RENDERER_OSBA_LS || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { @@ -1547,7 +1528,7 @@ ivas_error ivas_jbm_dec_render( /*--------------------------------------------------------------------------* - * ivas_jbm_dec_dec_flush_renderer() + * ivas_jbm_dec_flush_renderer() * * Flush samples if renderer granularity changes on a bitrate change *--------------------------------------------------------------------------*/ @@ -2999,20 +2980,21 @@ void ivas_jbm_masa_sf_to_sf_map( return; } + #ifdef OBJ_EDITING_API /*--------------------------------------------------------------------------* - * ivas_jbm_dec_prepare_renderer() + * ivas_dec_prepare_renderer() * - * prepare IVAS JBM renderer routine + * prepare IVAS renderer routine *--------------------------------------------------------------------------*/ -void ivas_jbm_dec_prepare_renderer( +void ivas_dec_prepare_renderer( Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ ) { int16_t n, n_render_timeslots; - push_wmops( "ivas_jbm_dec_prepare_renderer" ); + push_wmops( "ivas_dec_prepare_renderer" ); n_render_timeslots = st_ivas->hTcBuffer->n_samples_available / st_ivas->hTcBuffer->n_samples_granularity; @@ -3031,7 +3013,6 @@ void ivas_jbm_dec_prepare_renderer( } else if ( st_ivas->ivas_format == ISM_FORMAT ) { - /* Rendering */ if ( st_ivas->ism_mode == ISM_MODE_PARAM ) { if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC ) @@ -3055,7 +3036,6 @@ void ivas_jbm_dec_prepare_renderer( } else if ( st_ivas->ivas_format == SBA_ISM_FORMAT ) { - if ( st_ivas->ism_mode == ISM_SBA_MODE_DISC ) { ivas_ism_dec_digest_tc( st_ivas ); @@ -3118,18 +3098,20 @@ void ivas_jbm_dec_prepare_renderer( if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_DIRAC ) { - int16_t num_objects; + int16_t nchan_transport_ism; + /* Delay the signal to match CLDFB delay. Delay the whole buffer. */ - num_objects = 0; + nchan_transport_ism = 0; if ( ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) && st_ivas->renderer_type != RENDERER_BINAURAL_PARAMETRIC ) { - num_objects = 1; + nchan_transport_ism = 1; } else if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC ) { - num_objects = st_ivas->nchan_ism; + nchan_transport_ism = st_ivas->nchan_ism; } - for ( n = 0; n < num_objects; n++ ) + + for ( n = 0; n < nchan_transport_ism; n++ ) { if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC && st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC ) { @@ -3147,12 +3129,14 @@ void ivas_jbm_dec_prepare_renderer( v_multc( st_ivas->hTcBuffer->tc[CPE_CHANNELS + n], OMASA_TDREND_MATCHING_GAIN, st_ivas->hTcBuffer->tc[CPE_CHANNELS + n], st_ivas->hTcBuffer->n_samples_available ); #endif } + if ( st_ivas->hDecoderConfig->output_config != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && st_ivas->hDecoderConfig->output_config != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) { delay_signal( st_ivas->hTcBuffer->tc[CPE_CHANNELS + n], st_ivas->hTcBuffer->n_samples_available, st_ivas->hMasaIsmData->delayBuffer[n], st_ivas->hMasaIsmData->delayBuffer_size ); } } #ifdef OMASA_OBJECT_EDITING + if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC && st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC ) { int16_t tcBufferSize; @@ -3160,9 +3144,9 @@ void ivas_jbm_dec_prepare_renderer( if ( st_ivas->hMasaIsmData->masa_gain_is_edited ) { - for ( int16_t ch = 0; ch < 2; ch++ ) + for ( n = 0; n < BINAURAL_CHANNELS; n++ ) { - v_multc( st_ivas->hTcBuffer->tc[ch], st_ivas->hMasaIsmData->gain_masa_edited, st_ivas->hTcBuffer->tc[ch], tcBufferSize ); + v_multc( st_ivas->hTcBuffer->tc[n], st_ivas->hMasaIsmData->gain_masa_edited, st_ivas->hTcBuffer->tc[n], tcBufferSize ); } } } diff --git a/lib_dec/ivas_masa_dec.c b/lib_dec/ivas_masa_dec.c index 2335f14147..26732a868b 100644 --- a/lib_dec/ivas_masa_dec.c +++ b/lib_dec/ivas_masa_dec.c @@ -151,12 +151,28 @@ ivas_error ivas_masa_decode( { if ( !( ivas_format == MC_FORMAT && st_ivas->mc_mode == MC_MODE_MCMASA ) ) { +#if ( defined FIX_HRTF_LOAD || defined NONBE_1199_OMASA_JBM_BRATE_SW_FLUSH ) + if ( ivas_format == MASA_FORMAT ) + { + /* re-read the number of objects, needed in case of bad frame */ + ch = 5 - ( st_ivas->bit_stream[( ivas_total_brate / FRAMES_PER_SEC ) - 3] + 2 * st_ivas->bit_stream[( ivas_total_brate / FRAMES_PER_SEC ) - 2] ); + + if ( ch == 5 ) + { + ch = 0; + } + st_ivas->nchan_ism = ch; + } + + if ( ivas_format == MASA_FORMAT && st_ivas->nchan_ism > 0 ) +#else if ( ivas_format == MASA_FORMAT ) { /* re-read the number of objects, needed in case of bad frame */ st_ivas->nchan_ism = 5 - ( st_ivas->bit_stream[( ivas_total_brate / FRAMES_PER_SEC ) - 3] + 2 * st_ivas->bit_stream[( ivas_total_brate / FRAMES_PER_SEC ) - 2] ); } if ( ivas_format == MASA_FORMAT && st_ivas->nchan_ism != 5 ) +#endif { /* there was OMASA in the input */ hMasa->config.input_ivas_format = MASA_ISM_FORMAT; @@ -1305,10 +1321,13 @@ static int16_t decode_lfe_to_total_energy_ratio( *-------------------------------------------------------------------*/ ivas_error ivas_masa_dec_reconfigure( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ +#ifndef FIX_HRTF_LOAD + , uint16_t *nSamplesRendered, /* o : number of samples flushed from the previous frame (JBM) */ const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ void *data /* o : output synthesis signal */ +#endif ) { int16_t n, tmp, num_bits; @@ -1321,8 +1340,9 @@ ivas_error ivas_masa_dec_reconfigure( int16_t pos_idx; int32_t ism_total_brate; +#ifndef FIX_HRTF_LOAD error = IVAS_ERR_OK; - +#endif ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate; last_ivas_total_brate = st_ivas->hDecoderConfig->last_ivas_total_brate; @@ -1470,6 +1490,7 @@ ivas_error ivas_masa_dec_reconfigure( ivas_masa_set_elements( ivas_total_brate, st_ivas->mc_mode, st_ivas->nchan_transport, st_ivas->hQMetaData, &tmp, &tmp, &tmp, st_ivas->ivas_format, st_ivas->ism_mode, ism_total_brate ); +#ifndef NONBE_1199_OMASA_JBM_BRATE_SW_FLUSH if ( st_ivas->ivas_format == MASA_FORMAT ) { if ( st_ivas->hDecoderConfig->output_config != IVAS_AUDIO_CONFIG_EXTERNAL ) @@ -1481,6 +1502,7 @@ ivas_error ivas_masa_dec_reconfigure( st_ivas->ism_mode = ISM_MODE_NONE; } +#endif { int16_t tc_nchan_to_allocate; int16_t tc_nchan_transport; @@ -1517,10 +1539,14 @@ ivas_error ivas_masa_dec_reconfigure( { if ( n_samples_granularity < st_ivas->hTcBuffer->n_samples_granularity ) { +#ifdef FIX_HRTF_LOAD + /* flush already done in IVAS_DEC_ReadFormat() */ +#else if ( ( error = ivas_jbm_dec_flush_renderer( st_ivas, n_samples_granularity, st_ivas->renderer_type, st_ivas->intern_config, &st_ivas->hIntSetup, MC_MODE_NONE, ISM_MASA_MODE_DISC, nSamplesRendered, pcm_resolution, data ) ) != IVAS_ERR_OK ) { return error; } +#endif } } } @@ -1561,7 +1587,11 @@ ivas_error ivas_masa_dec_reconfigure( } } +#ifdef FIX_HRTF_LOAD + return IVAS_ERR_OK; +#else return error; +#endif } diff --git a/lib_dec/ivas_mc_param_dec.c b/lib_dec/ivas_mc_param_dec.c index 934fc6fac2..59d3c1cb79 100644 --- a/lib_dec/ivas_mc_param_dec.c +++ b/lib_dec/ivas_mc_param_dec.c @@ -1322,8 +1322,8 @@ void ivas_param_mc_dec_read_BS( void ivas_param_mc_dec_digest_tc( Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - const uint8_t nCldfbSlots, /* i : number of CLFBS slots in the transport channels */ - float *transport_channels_f[] /* i : synthesized core-coder transport channels/DirAC output */ + const uint8_t nCldfbSlots, /* i : number of CLDFB slots in transport channels */ + float *transport_channels_f[] /* i/o: synthesized core-coder transport channels/DirAC output */ ) { PARAM_MC_DEC_HANDLE hParamMC; @@ -1349,8 +1349,8 @@ void ivas_param_mc_dec_digest_tc( /* format converter */ int16_t channel_active[MAX_OUTPUT_CHANNELS]; IVAS_OUTPUT_SETUP *hSynthesisOutputSetup; -#endif +#endif hParamMC = st_ivas->hParamMC; assert( hParamMC ); @@ -1524,6 +1524,7 @@ void ivas_param_mc_dec_digest_tc( return; } + #ifdef OBJ_EDITING_API /*------------------------------------------------------------------------- * ivas_param_mc_dec_prepare_renderer() @@ -1532,8 +1533,8 @@ void ivas_param_mc_dec_digest_tc( *------------------------------------------------------------------------*/ void ivas_param_mc_dec_prepare_renderer( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - const uint8_t nCldfbSlots /* i : number of CLFBS slots in the transport channels */ + Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ + const uint8_t nCldfbSlots /* i : number of CLDFB slots in transport channels */ ) { PARAM_MC_DEC_HANDLE hParamMC; @@ -1605,7 +1606,6 @@ void ivas_param_mc_dec_prepare_renderer( ivas_param_mc_dec_compute_interpolator( hParamMC->hMetadataPMC->bAttackPresent, hParamMC->hMetadataPMC->attackIndex, nCldfbSlots, hParamMC->h_output_synthesis_params.interpolator ); - /* loop over two bands at a time */ for ( param_band_idx = 0; param_band_idx < hParamMC->num_param_bands_synth; param_band_idx += 2 ) { @@ -1628,6 +1628,7 @@ void ivas_param_mc_dec_prepare_renderer( { continue; } + ivas_dirac_dec_output_synthesis_cov_param_mc_collect_slot( &hParamMC->Cldfb_RealBuffer_tc[slot_idx * hParamMC->num_freq_bands * nchan_transport], &hParamMC->Cldfb_ImagBuffer_tc[slot_idx * hParamMC->num_freq_bands * nchan_transport], is_next_band ? cx_next_band : cx, @@ -1680,6 +1681,7 @@ void ivas_param_mc_dec_prepare_renderer( { continue; } + /* generate mixing matrices */ ivas_param_mc_get_mixing_matrices( hParamMC, hSynthesisOutputSetup, diff --git a/lib_dec/ivas_mc_paramupmix_dec.c b/lib_dec/ivas_mc_paramupmix_dec.c index 41cdf081fb..0748d26bec 100644 --- a/lib_dec/ivas_mc_paramupmix_dec.c +++ b/lib_dec/ivas_mc_paramupmix_dec.c @@ -186,9 +186,9 @@ void ivas_mc_paramupmix_dec_read_BS( *------------------------------------------------------------------------*/ void ivas_mc_paramupmix_dec_digest_tc( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - const uint8_t nCldfbSlots, /* i : number of CLFBS slots in the transport channels*/ - const int16_t nSamplesForRendering /* i : number of samples provided */ + Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ + const uint8_t nCldfbSlots, /* i : number of CLDFB slots in transport channels */ + const int16_t nSamplesForRendering /* i : number of samples provided */ ) { MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix; diff --git a/lib_dec/ivas_mct_dec.c b/lib_dec/ivas_mct_dec.c index 08e2de73cd..fe2ca5dbaa 100644 --- a/lib_dec/ivas_mct_dec.c +++ b/lib_dec/ivas_mct_dec.c @@ -54,7 +54,11 @@ * Local function prototypes *-----------------------------------------------------------------------*/ +#ifdef FIX_HRTF_LOAD +static ivas_error ivas_mc_dec_reconfig( Decoder_Struct *st_ivas ); +#else static ivas_error ivas_mc_dec_reconfig( Decoder_Struct *st_ivas, uint16_t *nSamplesRendered, const PCM_RESOLUTION pcm_resolution, void *data ); +#endif /*--------------------------------------------------------------------------* @@ -661,11 +665,14 @@ void ivas_mct_dec_close( /*! r : MC format mode */ ivas_error ivas_mc_dec_config( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - const int16_t idx, /* i : LS config. index */ + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + const int16_t idx /* i : LS config. index */ +#ifndef FIX_HRTF_LOAD + , uint16_t *nSamplesRendered, /* o : samples flushed from last frame (JBM) */ const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ void *data /* o : output synthesis signal */ +#endif ) { AUDIO_CONFIG signaled_config; @@ -700,7 +707,11 @@ ivas_error ivas_mc_dec_config( { if ( st_ivas->hDecoderConfig->last_ivas_total_brate != st_ivas->hDecoderConfig->ivas_total_brate || last_mc_mode != st_ivas->mc_mode ) { +#ifdef FIX_HRTF_LOAD + if ( ( error = ivas_mc_dec_reconfig( st_ivas ) ) != IVAS_ERR_OK ) +#else if ( ( error = ivas_mc_dec_reconfig( st_ivas, nSamplesRendered, pcm_resolution, data ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -721,10 +732,13 @@ ivas_error ivas_mc_dec_config( *-------------------------------------------------------------------------*/ static ivas_error ivas_mc_dec_reconfig( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ +#ifndef FIX_HRTF_LOAD + , uint16_t *nSamplesRendered, /* o : number of samples flushed from the last frame (JBM) */ const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ void *data /* o : output synthesis signal */ +#endif ) { int16_t nchan_transport_old, nSCE_old, nCPE_old, sba_dirac_stereo_flag_old, nchan_hp20_old; @@ -738,11 +752,15 @@ static ivas_error ivas_mc_dec_reconfig( int16_t tc_nchan_tc_new; int16_t tc_nchan_allocate_new; int16_t tc_granularity_new; +#ifndef FIX_HRTF_LOAD AUDIO_CONFIG intern_config_old; IVAS_OUTPUT_SETUP hIntSetupOld; +#endif int16_t nchan_out_buff_old, nchan_out_buff; +#ifndef FIX_HRTF_LOAD error = IVAS_ERR_OK; +#endif ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate; nchan_transport_old = st_ivas->nchan_transport; nchan_out_buff_old = ivas_get_nchan_buffers_dec( st_ivas, -1, -1 ); @@ -770,11 +788,13 @@ static ivas_error ivas_mc_dec_reconfig( } st_ivas->sba_dirac_stereo_flag = ivas_get_sba_dirac_stereo_flag( st_ivas ); +#ifndef FIX_HRTF_LOAD /* save old IntSetup, might be needed for JBM flushing...*/ intern_config_old = st_ivas->intern_config; hIntSetupOld = st_ivas->hIntSetup; tc_granularity_new = 1; +#endif /* renderer might have changed, reselect */ renderer_type_old = st_ivas->renderer_type; ivas_renderer_select( st_ivas ); @@ -808,10 +828,14 @@ static ivas_error ivas_mc_dec_reconfig( tc_granularity_new = ivas_jbm_dec_get_render_granularity( st_ivas->renderer_type, st_ivas->ivas_format, st_ivas->mc_mode, st_ivas->hDecoderConfig->output_Fs ); if ( tc_granularity_new < st_ivas->hTcBuffer->n_samples_granularity ) { +#ifdef FIX_HRTF_LOAD + /* flush already done in IVAS_DEC_ReadFormat() */ +#else if ( ( error = ivas_jbm_dec_flush_renderer( st_ivas, tc_granularity_new, renderer_type_old, intern_config_old, &hIntSetupOld, last_mc_mode, ISM_MODE_NONE, nSamplesRendered, pcm_resolution, data ) ) != IVAS_ERR_OK ) { return error; } +#endif } /* JBM: when granularity goes up set samples to discard at the beginning of the frame */ else if ( tc_granularity_new > st_ivas->hTcBuffer->n_samples_granularity ) @@ -1299,7 +1323,6 @@ static ivas_error ivas_mc_dec_reconfig( /*-----------------------------------------------------------------* * JBM TC buffers *-----------------------------------------------------------------*/ - { int16_t tc_nchan_full_new; DECODER_TC_BUFFER_HANDLE hTcBuffer; @@ -1362,7 +1385,6 @@ static ivas_error ivas_mc_dec_reconfig( } } - /*-----------------------------------------------------------------* * floating-point output audio buffers *-----------------------------------------------------------------*/ @@ -1374,5 +1396,9 @@ static ivas_error ivas_mc_dec_reconfig( return error; } +#ifdef FIX_HRTF_LOAD + return IVAS_ERR_OK; +#else return error; +#endif } diff --git a/lib_dec/ivas_mdct_core_dec.c b/lib_dec/ivas_mdct_core_dec.c index 3f8ff738c7..e07b44da03 100644 --- a/lib_dec/ivas_mdct_core_dec.c +++ b/lib_dec/ivas_mdct_core_dec.c @@ -865,6 +865,15 @@ void ivas_mdct_core_reconstruct( { set_f( &synth[k * L_frame[ch]], 0.f, L_frame[ch] ); set_f( &synthFB[k * L_frame[ch]], 0.f, L_frameTCX[ch] ); +#ifdef FIX_1206_ZERO_OUT_IMDCT_BUFFERS_FOR_MCT_IGNORE + /* Note: these buffers are not subframe-based, hence no indexing with k */ + set_f( &st->hHQ_core->old_outLB[0], 0.f, L_frame[ch] ); + set_f( &st->hHQ_core->old_out[0], 0.f, L_frameTCX[ch] ); + set_f( &st->hTcxDec->syn_Overl[0], 0.f, L_frame[ch] / 2 ); + set_f( &st->hTcxDec->syn_OverlFB[0], 0.f, L_frameTCX[ch] / 2 ); + set_f( &st->hTcxDec->syn_Overl_TDAC[0], 0.f, L_frame[ch] / 2 ); + set_f( &st->hTcxDec->syn_Overl_TDACFB[0], 0.f, L_frameTCX[ch] / 2 ); +#endif } } diff --git a/lib_dec/ivas_objectRenderer_internal.c b/lib_dec/ivas_objectRenderer_internal.c index 77d89242a9..0e6c1025df 100644 --- a/lib_dec/ivas_objectRenderer_internal.c +++ b/lib_dec/ivas_objectRenderer_internal.c @@ -61,6 +61,15 @@ ivas_error ivas_td_binaural_open( num_src = st_ivas->nchan_ism; } +#ifdef FIX_HRTF_LOAD + if ( st_ivas->hHrtfTD == NULL && st_ivas->hDecoderConfig->Opt_HRTF_binary && + ( st_ivas->ivas_format != SBA_ISM_FORMAT ) // ToDo: temporary hack to avoid ASAN errors -> see issue #1202 + ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL, "HRTF binary file present but not used in TD renderer" ); + } +#endif + return ivas_td_binaural_open_unwrap( &st_ivas->hHrtfTD, st_ivas->hDecoderConfig->output_Fs, num_src, st_ivas->ivas_format, st_ivas->transport_config, st_ivas->hRenderConfig->directivity, st_ivas->hRenderConfig->distAtt, st_ivas->hTransSetup, &st_ivas->hBinRendererTd, &st_ivas->binaural_latency_ns ); } @@ -171,6 +180,7 @@ ivas_error ivas_td_binaural_renderer_sf( c_indx++; } } + if ( subframe_idx == ism_md_subframe_update_jbm ) { #ifdef OBJ_EDITING_API @@ -178,6 +188,7 @@ ivas_error ivas_td_binaural_renderer_sf( { ISM_METADATA_FRAME ismMetaData[MAX_NUM_OBJECTS]; ISM_METADATA_HANDLE hIsmMetaData[MAX_NUM_OBJECTS]; + for ( nS = 0; nS < nchan_ism; nS++ ) { ismMetaData[nS].azimuth = st_ivas->hIsmMetaData[nS]->edited_azimuth; diff --git a/lib_dec/ivas_omasa_dec.c b/lib_dec/ivas_omasa_dec.c index 3ab3757688..439a6baba1 100644 --- a/lib_dec/ivas_omasa_dec.c +++ b/lib_dec/ivas_omasa_dec.c @@ -220,10 +220,13 @@ void ivas_omasa_data_close( *--------------------------------------------------------------------------*/ ivas_error ivas_omasa_dec_config( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ +#ifndef FIX_HRTF_LOAD + , uint16_t *nSamplesRendered, /* o : number of samples flushed from the previous frame (JBM) */ const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ void *data /* o : output synthesis signal */ +#endif ) { #ifdef OMASA_OBJECT_EDITING @@ -271,7 +274,11 @@ ivas_error ivas_omasa_dec_config( { st_ivas->hCPE[0]->nchan_out = 1; } +#ifdef FIX_HRTF_LOAD + else if ( ( error = ivas_masa_dec_reconfigure( st_ivas ) ) != IVAS_ERR_OK ) +#else else if ( ( error = ivas_masa_dec_reconfigure( st_ivas, nSamplesRendered, pcm_resolution, data ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -424,6 +431,24 @@ ivas_error ivas_omasa_dec_config( ivas_omasa_separate_object_renderer_close( st_ivas ); } +#ifdef NONBE_FIX_1197_OMASA_META_BUFFER + if ( st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ && st_ivas->hMasaIsmData != NULL ) /* this structure is in use only in ISM_MASA_MODE_PARAM_ONE_OBJ */ + { + MASA_ISM_DATA_HANDLE hMasaIsmData = st_ivas->hMasaIsmData; + for ( int16_t obj_idx = 0; obj_idx < MAX_NUM_OBJECTS; obj_idx++ ) + { + set_s( hMasaIsmData->azimuth_ism[obj_idx], 0, MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR ); + set_s( hMasaIsmData->elevation_ism[obj_idx], 0, MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR ); + for ( int16_t sf = 0; sf < MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR; sf++ ) + { + set_zero( hMasaIsmData->energy_ratio_ism[obj_idx][sf], CLDFB_NO_CHANNELS_MAX ); + } + } + set_s( hMasaIsmData->azimuth_separated_ism, 0, MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR ); + set_s( hMasaIsmData->elevation_separated_ism, 0, MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR ); + } +#endif + if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC ) { if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC ) @@ -547,7 +572,6 @@ ivas_error ivas_omasa_dec_config( } } - return IVAS_ERR_OK; } @@ -776,6 +800,7 @@ void ivas_omasa_dirac_rend_jbm( for ( n = 0; n < st_ivas->nchan_ism; n++ ) { mvr2r( &output_f[n + CPE_CHANNELS][st_ivas->hTcBuffer->n_samples_rendered], data_separated_objects[n], *nSamplesRendered ); + #ifdef OMASA_OBJECT_EDITING /* Gain discrete objects, if edited */ if ( st_ivas->hMasaIsmData->ism_gain_is_edited[n] ) @@ -784,6 +809,7 @@ void ivas_omasa_dirac_rend_jbm( } #endif } + #ifdef OMASA_OBJECT_EDITING /* Gain MASA part, if edited */ if ( st_ivas->hMasaIsmData->masa_gain_is_edited ) diff --git a/lib_dec/ivas_osba_dec.c b/lib_dec/ivas_osba_dec.c index eaf5d11a7e..bb5f547beb 100644 --- a/lib_dec/ivas_osba_dec.c +++ b/lib_dec/ivas_osba_dec.c @@ -300,3 +300,56 @@ ivas_error ivas_osba_render_sf( return IVAS_ERR_OK; } + + +#ifdef OBJ_EDITING_API +/*-------------------------------------------------------------------------* + * ivas_osba_stereo_add_channels() + * + * + *-------------------------------------------------------------------------*/ + +void ivas_osba_stereo_add_channels( + float *tc_f[], /* i : transport channels */ + float *output_f[], /* i/o: output channels */ + const float gain, /* i : gain bed value */ + const int16_t nchan_out, /* i : number of output channels */ + const int16_t nchan_ism, /* i : number of ISM channels */ + const int16_t ism_mode, /* i : ISM mode */ + const int16_t n_samples_to_render /* i : output frame length per channel */ +) +{ + int16_t n; + + if ( ism_mode == ISM_SBA_MODE_DISC ) + { + if ( gain != 1.0f && gain >= 0.0f ) + { + int16_t i; + for ( n = 0; n < nchan_out; n++ ) + { + for ( i = 0; i < n_samples_to_render; i++ ) + { + output_f[n][i] += tc_f[n + nchan_ism][i] * gain; + } + } + } + else + { + for ( n = 0; n < nchan_out; n++ ) + { + v_add( output_f[n], tc_f[n + nchan_ism], output_f[n], n_samples_to_render ); + } + } + } + else + { + for ( n = 0; n < nchan_out; n++ ) + { + v_add( output_f[n], tc_f[n + nchan_ism], output_f[n], n_samples_to_render ); + } + } + + return; +} +#endif diff --git a/lib_dec/ivas_output_config.c b/lib_dec/ivas_output_config.c index a3e62b9702..11e23d0b7b 100644 --- a/lib_dec/ivas_output_config.c +++ b/lib_dec/ivas_output_config.c @@ -141,11 +141,7 @@ void ivas_renderer_select( { *internal_config = IVAS_AUDIO_CONFIG_HOA3; -#ifdef FIX_1158_FASTCONV_REVERB_HRTF if ( output_config == IVAS_AUDIO_CONFIG_BINAURAL || output_config == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB || output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) -#else - if ( output_config == IVAS_AUDIO_CONFIG_BINAURAL || output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) -#endif { *renderer_type = RENDERER_BINAURAL_FASTCONV; } diff --git a/lib_dec/ivas_sba_dec.c b/lib_dec/ivas_sba_dec.c index 9a6df407d4..0f3dfba4c0 100644 --- a/lib_dec/ivas_sba_dec.c +++ b/lib_dec/ivas_sba_dec.c @@ -101,10 +101,13 @@ void ivas_sba_set_cna_cng_flag( *-------------------------------------------------------------------*/ ivas_error ivas_sba_dec_reconfigure( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ +#ifndef FIX_HRTF_LOAD + , uint16_t *nSamplesFlushed, /* o : number of samples flushed */ const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ void *data /* o : output synthesis signal */ +#endif ) { int16_t nchan_transport_old, nSCE_old, nCPE_old, nchan_hp20_old; @@ -161,7 +164,9 @@ ivas_error ivas_sba_dec_reconfigure( st_ivas->sba_analysis_order = ivas_sba_get_analysis_order( ivas_total_brate, st_ivas->sba_order ); +#ifndef FIX_HRTF_LOAD *nSamplesFlushed = 0; +#endif granularity_new = st_ivas->hTcBuffer->n_samples_granularity; /* we may need to flush only for binaural and OSBA and TSM */ @@ -209,6 +214,9 @@ ivas_error ivas_sba_dec_reconfigure( /* flush renderer on granularity change form 5ms to 1.25ms, again only possible for binaural rendering */ if ( granularity_new < st_ivas->hTcBuffer->n_samples_granularity ) { +#ifdef FIX_HRTF_LOAD + /* flush already done in IVAS_DEC_ReadFormat() */ +#else /* write back info for correct rendering of the flushable samples */ st_ivas->sba_analysis_order = sba_analysis_order_old_flush; st_ivas->hDecoderConfig->ivas_total_brate = last_ivas_total_brate; @@ -221,6 +229,7 @@ ivas_error ivas_sba_dec_reconfigure( /* restore correct values for the current frame*/ st_ivas->sba_analysis_order = ivas_sba_get_analysis_order( ivas_total_brate, st_ivas->sba_order ); st_ivas->hDecoderConfig->ivas_total_brate = ivas_total_brate; +#endif } else if ( granularity_new > st_ivas->hTcBuffer->n_samples_granularity ) { @@ -658,7 +667,11 @@ ivas_error ivas_sba_dec_reconfigure( return error; } +#ifdef FIX_HRTF_LOAD + return IVAS_ERR_OK; +#else return error; +#endif } diff --git a/lib_dec/ivas_stat_dec.h b/lib_dec/ivas_stat_dec.h index 2515b1cc99..9ed05b1ae2 100644 --- a/lib_dec/ivas_stat_dec.h +++ b/lib_dec/ivas_stat_dec.h @@ -1028,6 +1028,9 @@ typedef struct decoder_config_structure int16_t Opt_ExternalOrientation; /* indicates whether external orientations are used */ int16_t Opt_dpid_on; /* indicates whether Directivity pattern option is used */ int16_t Opt_aeid_on; /* indicates whether Acoustic environment option is used */ +#ifdef OBJ_EDITING_COMMANDLINE + int16_t Opt_ObjEdit_on; /* indicates whether object editing option is used */ +#endif #ifdef DEBUGGING /* temp. development parameters */ int16_t force_rend; /* forced TD/CLDFB binaural renderer (for ISM and MC) */ diff --git a/lib_dec/ivas_stereo_dft_plc.c b/lib_dec/ivas_stereo_dft_plc.c index 31f86bc348..30fb49f4ce 100644 --- a/lib_dec/ivas_stereo_dft_plc.c +++ b/lib_dec/ivas_stereo_dft_plc.c @@ -80,6 +80,9 @@ void stereo_dft_res_ecu( float fac; float trigo_dec[STEREO_DFT32MS_N_8k / 2 + 1]; int16_t trigo_step; +#ifdef NONBE_FIX_1208_DFT_STEREO_PLC_BURST + int16_t time_offs; +#endif set_zero( pDFT_RES, L_FRAME8k ); @@ -106,7 +109,12 @@ void stereo_dft_res_ecu( if ( k == 0 ) { mvr2r( pDFT_RES, res_buf, L_FRAME8k ); +#ifdef NONBE_FIX_1208_DFT_STEREO_PLC_BURST + time_offs = min( MAX16B, hStereoDft->time_offs + output_frame ); + stereo_dft_res_subst_spec( hStereoDft, res_buf, DFT_PRED_RES, time_offs, L_res, L_FRAME8k, k, num_plocs, plocs, plocsi, FALSE ); +#else stereo_dft_res_subst_spec( hStereoDft, res_buf, DFT_PRED_RES, hStereoDft->time_offs + output_frame, L_res, L_FRAME8k, k, num_plocs, plocs, plocsi, FALSE ); +#endif rfft( res_buf, trigo_dec, L_FRAME8k, +1 ); @@ -133,7 +141,11 @@ void stereo_dft_res_ecu( } /*in case of burst error*/ +#ifdef NONBE_FIX_1208_DFT_STEREO_PLC_BURST + hStereoDft->time_offs = min( MAX16B, hStereoDft->time_offs + L_FRAME8k ); +#else hStereoDft->time_offs += L_FRAME8k; +#endif } set_zero( DFT_PRED_RES, 2 * L_res ); diff --git a/lib_dec/lib_dec.c b/lib_dec/lib_dec.c index fdfb1ab55b..66d70060c8 100644 --- a/lib_dec/lib_dec.c +++ b/lib_dec/lib_dec.c @@ -103,8 +103,6 @@ struct IVAS_DEC uint16_t nSamplesFlushed; void *flushbuffer; IVAS_DEC_PCM_TYPE pcmType; - bool hasEditableParameters; - bool enableParameterEditing; bool hasBeenPreparedRendering; #endif }; @@ -122,7 +120,11 @@ static ivas_error evs_dec_main( Decoder_Struct *st_ivas, const int16_t nOutSampl static ivas_error input_format_API_to_internal( IVAS_DEC_INPUT_FORMAT input_format, int16_t *bitstream_format_internal, int16_t *sdp_hf_only, const bool is_voip_enabled ); static void init_decoder_config( DECODER_CONFIG_HANDLE hDecoderConfig ); static ivas_error IVAS_DEC_VoIP_reconfigure( IVAS_DEC_HANDLE hIvasDec, const uint16_t nTransportChannels, const uint16_t l_ts ); +#ifdef FIX_HRTF_LOAD +static ivas_error IVAS_DEC_Setup( IVAS_DEC_HANDLE hIvasDec, uint16_t *nTcBufferGranularity, uint8_t *nTransportChannels ); +#else static ivas_error IVAS_DEC_Setup( IVAS_DEC_HANDLE hIvasDec, uint16_t *nTcBufferGranularity, uint8_t *nTransportChannels, uint8_t *nOutChannels, uint16_t *nSamplesRendered, const IVAS_DEC_PCM_TYPE pcmType, void *data ); +#endif static ivas_error IVAS_DEC_GetTcSamples( IVAS_DEC_HANDLE hIvasDec, float *pcmBuf, int16_t *nOutSamples ); static ivas_error IVAS_DEC_RendererFeedTcSamples( IVAS_DEC_HANDLE hIvasDec, const int16_t nSamplesForRendering, int16_t *nSamplesResidual, float *pcmBuf ); static ivas_error IVAS_DEC_GetRenderedSamples( IVAS_DEC_HANDLE hIvasDec, const uint16_t nSamplesForRendering, uint16_t *nSamplesRendered, uint16_t *nSamplesAvailableNext, const IVAS_DEC_PCM_TYPE pcmType, void *pcmBuf ); @@ -188,8 +190,6 @@ ivas_error IVAS_DEC_Open( hIvasDec->flushbuffer = NULL; hIvasDec->pcmType = IVAS_DEC_PCM_INVALID; hIvasDec->nSamplesFlushed = 0; - hIvasDec->hasEditableParameters = false; - hIvasDec->enableParameterEditing = false; hIvasDec->hasBeenPreparedRendering = false; #endif @@ -323,6 +323,9 @@ static void init_decoder_config( hDecoderConfig->Opt_ExternalOrientation = 0; hDecoderConfig->Opt_dpid_on = 0; hDecoderConfig->Opt_aeid_on = 0; +#ifdef OBJ_EDITING_COMMANDLINE + hDecoderConfig->Opt_ObjEdit_on = 0; +#endif return; } @@ -365,12 +368,14 @@ void IVAS_DEC_Close( { free( ( *phIvasDec )->apaExecBuffer ); } + #ifdef OBJ_EDITING_API if ( ( *phIvasDec )->flushbuffer != NULL ) { free( ( *phIvasDec )->flushbuffer ); } #endif + free( *phIvasDec ); *phIvasDec = NULL; phIvasDec = NULL; @@ -437,16 +442,16 @@ ivas_error IVAS_DEC_Configure( const float non_diegetic_pan_gain, /* i : non diegetic panning gain */ const bool dpidEnabled, /* i : enable directivity pattern option */ const uint16_t acousticEnvironmentId, /* i : Acoustic environment ID */ - const bool delayCompensationEnabled /* i : enable delay compensation */ +#ifdef OBJ_EDITING_COMMANDLINE + const bool objEditEnabled, /* i : enable object editing */ +#endif + const bool delayCompensationEnabled /* i : enable delay compensation */ ) { Decoder_Struct *st_ivas; DECODER_CONFIG_HANDLE hDecoderConfig; ivas_error error; -#ifndef FIX_VOIP_FUNCTIONS - error = IVAS_ERR_OK; -#endif if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) { return IVAS_ERR_UNEXPECTED_NULL_POINTER; @@ -498,6 +503,9 @@ ivas_error IVAS_DEC_Configure( hDecoderConfig->Opt_ExternalOrientation = enableExternalOrientation; hDecoderConfig->Opt_dpid_on = (int16_t) dpidEnabled; hDecoderConfig->Opt_aeid_on = acousticEnvironmentId != 65535 ? TRUE : FALSE; +#ifdef OBJ_EDITING_COMMANDLINE + hDecoderConfig->Opt_ObjEdit_on = (int16_t) objEditEnabled; +#endif if ( renderFramesize == IVAS_RENDER_FRAMESIZE_UNKNOWN ) { @@ -544,16 +552,16 @@ ivas_error IVAS_DEC_Configure( if ( tsmEnabled && ( outputConfig == IVAS_AUDIO_CONFIG_BINAURAL || outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM || outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR || outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) { hIvasDec->flushbuffer = (void *) malloc( CPE_CHANNELS * hIvasDec->nSamplesFrame / IVAS_MAX_PARAM_SPATIAL_SUBFRAMES * sizeof( int16_t ) ); + if ( hIvasDec->flushbuffer == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate JBM flush buffer" ); + } hIvasDec->pcmType = IVAS_DEC_PCM_INT16; set_s( (int16_t *) hIvasDec->flushbuffer, 0, CPE_CHANNELS * hIvasDec->nSamplesFrame / IVAS_MAX_PARAM_SPATIAL_SUBFRAMES ); } #endif -#ifdef FIX_VOIP_FUNCTIONS return IVAS_ERR_OK; -#else - return error; -#endif } @@ -749,9 +757,6 @@ ivas_error IVAS_DEC_EnableVoIP( { DECODER_CONFIG_HANDLE hDecoderConfig; ivas_error error; -#ifndef FIX_VOIP_FUNCTIONS - error = IVAS_ERR_OK; -#endif if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) { @@ -819,11 +824,7 @@ ivas_error IVAS_DEC_EnableVoIP( } #endif -#ifdef FIX_VOIP_FUNCTIONS return IVAS_ERR_OK; -#else - return error; -#endif } @@ -837,11 +838,16 @@ ivas_error IVAS_DEC_FeedFrame_Serial( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ uint16_t *serial, /* i : buffer containing serial input bitstream. Each bit should be stored as a single uint16_t value */ const uint16_t num_bits, /* i : number of bits in input bitstream */ - int16_t bfi /* i : bad frame indicator flag */ +#ifdef FIX_HRTF_LOAD + int16_t bfi /* i : bad frame indicator flag */ +#else #ifdef OBJ_EDITING_API - , - int16_t isSplitRend, - ISAR_SPLIT_REND_BITS_DATA *splitRendBits + int16_t bfi, /* i : bad frame indicator flag */ + const int16_t isSplitRend, /* i : split rendering enabled flag */ + ISAR_SPLIT_REND_BITS_DATA *splitRendBits /* o : output split rendering bits */ +#else + int16_t bfi /* i : bad frame indicator flag */ +#endif #endif ) { @@ -919,15 +925,192 @@ ivas_error IVAS_DEC_FeedFrame_Serial( hIvasDec->nSamplesRendered = 0; hIvasDec->nSamplesAvailableNext = hIvasDec->nSamplesFrame; +#ifndef FIX_HRTF_LOAD #ifdef OBJ_EDITING_API - /* Decode TCs, do TSM and feed to renderer. - If TSM is generally enabled, we have to wait for the first good frame. - Otherwise, we directly decode the first frame in any case. - */ + /* Decode TCs, do TSM and feed to renderer */; + if ( ( error = IVAS_DEC_GetSamplesDecoder( hIvasDec, isSplitRend, splitRendBits ) ) != IVAS_ERR_OK ) + { + return error; + } + +#endif +#endif + return IVAS_ERR_OK; +} + +#ifdef FIX_HRTF_LOAD + +/*---------------------------------------------------------------------* + * IVAS_DEC_ReadFormat( ) + * + * Read main parameters from the bitstream to set-up the decoder: + * - IVAS fromat + * - IVAS format specific signaling + *---------------------------------------------------------------------*/ + +ivas_error IVAS_DEC_ReadFormat( + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + IVAS_BIN_RENDERER_TYPE *binaural_renderer, /* o : binaural renderer type */ + IVAS_BIN_RENDERER_TYPE *binaural_renderer_sec, /* o : secondary binaural renderer type */ + int16_t *room_reverb_flag, /* o : room reverb flag */ + IVAS_AUDIO_CONFIG *intern_audio_config /* o : internal audio configuration */ +) +{ + ivas_error error; + Decoder_Struct *st_ivas; + IVAS_FORMAT ivas_format_old; + ISM_MODE ism_mode_old; + MC_MODE mc_mode_old; + int16_t nchan_transport_old; + AUDIO_CONFIG intern_config_old, transport_config_old; + RENDERER_TYPE renderer_type_old; + + if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + st_ivas = hIvasDec->st_ivas; + ivas_format_old = st_ivas->ivas_format; + ism_mode_old = st_ivas->ism_mode; + mc_mode_old = st_ivas->mc_mode; + nchan_transport_old = st_ivas->nchan_transport; + intern_config_old = st_ivas->intern_config; + transport_config_old = st_ivas->transport_config; + renderer_type_old = st_ivas->renderer_type; + + if ( st_ivas->ivas_format == MONO_FORMAT ) + { + return IVAS_ERR_OK; + } + + if ( st_ivas->bfi == 0 ) + { + if ( ( error = ivas_dec_get_format( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( ivas_format_old != st_ivas->ivas_format && st_ivas->ini_frame > 0 && !( st_ivas->ivas_format == MASA_FORMAT || st_ivas->ivas_format == MASA_ISM_FORMAT ) ) + { + return ( IVAS_ERROR( IVAS_ERR_INVALID_INPUT_FORMAT, "IVAS format switching is not allowed." ) ); + } + + ivas_renderer_select( st_ivas ); + + switch ( st_ivas->renderer_type ) + { + case RENDERER_BINAURAL_OBJECTS_TD: + *binaural_renderer = IVAS_BIN_RENDERER_TYPE_TDREND; + break; + case RENDERER_BINAURAL_MIXER_CONV: + case RENDERER_BINAURAL_MIXER_CONV_ROOM: + *binaural_renderer = IVAS_BIN_RENDERER_TYPE_CREND; + break; + case RENDERER_BINAURAL_FASTCONV: + *binaural_renderer = IVAS_BIN_RENDERER_TYPE_FASTCONV; + + if ( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) + { + *room_reverb_flag = 1; + } + + break; + case RENDERER_BINAURAL_FASTCONV_ROOM: + *binaural_renderer = IVAS_BIN_RENDERER_TYPE_FASTCONV; + *room_reverb_flag = 1; + break; + case RENDERER_BINAURAL_PARAMETRIC: + case RENDERER_BINAURAL_PARAMETRIC_ROOM: + *binaural_renderer = IVAS_BIN_RENDERER_TYPE_PARAMBIN; + break; + default: + *binaural_renderer = IVAS_BIN_RENDERER_TYPE_NONE; + break; + } + + *binaural_renderer_sec = IVAS_BIN_RENDERER_TYPE_NONE; + if ( st_ivas->ivas_format == MASA_ISM_FORMAT && st_ivas->ism_mode == ISM_MASA_MODE_DISC && st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL ) + { + *binaural_renderer_sec = IVAS_BIN_RENDERER_TYPE_TDREND; + } + + *intern_audio_config = st_ivas->intern_config; + + if ( ( renderer_type_old != st_ivas->renderer_type && renderer_type_old != RENDERER_DISABLE ) || + ( st_ivas->ini_active_frame > 0 && ( st_ivas->ivas_format == MASA_FORMAT || st_ivas->ivas_format == MASA_ISM_FORMAT ) && st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC && st_ivas->ism_mode != ISM_MASA_MODE_DISC ) ) + { + /* JBM: when granularity goes down (e.g. Discrete ISM with TD Obj Renderer -> ParamISM with binaural fastconv + render what still fits in the new granularity */ + int16_t tc_granularity_new = ivas_jbm_dec_get_render_granularity( st_ivas->renderer_type, st_ivas->ivas_format, st_ivas->mc_mode, st_ivas->hDecoderConfig->output_Fs ); +#ifdef NONBE_1200_ISM_JBM_BRATE_SW_FLUSH + st_ivas->nchan_transport = nchan_transport_old; +#else + // st_ivas->nchan_transport = nchan_transport_old; // ToDo: temporarily deactivated to keep FIX_HRTF_LOAD bit-exact but this is likely a bug in the main -> see issue #1200 +#endif +#ifndef NONBE_1199_OMASA_JBM_BRATE_SW_FLUSH + if ( st_ivas->ivas_format == MASA_FORMAT ) + { + st_ivas->nchan_ism = 0; // ToDo: temporary hack to keep FIX_HRTF_LOAD bit-exact but this is likely a bug in the main -> see issue #1199 + } + +#endif + if ( tc_granularity_new < st_ivas->hTcBuffer->n_samples_granularity ) + { + if ( ( error = ivas_jbm_dec_flush_renderer( st_ivas, tc_granularity_new, renderer_type_old, intern_config_old, &st_ivas->hIntSetup, mc_mode_old, ism_mode_old, &hIvasDec->nSamplesFlushed, pcm_type_API_to_internal( hIvasDec->pcmType ), hIvasDec->flushbuffer ) ) != IVAS_ERR_OK ) + { + return error; + } + } + } + } + + st_ivas->ism_mode = ism_mode_old; + st_ivas->mc_mode = mc_mode_old; + st_ivas->nchan_transport = nchan_transport_old; + st_ivas->intern_config = intern_config_old; + st_ivas->transport_config = transport_config_old; + st_ivas->renderer_type = renderer_type_old; + + return IVAS_ERR_OK; +} + +#endif +#if ( defined FIX_HRTF_LOAD || defined OBJ_EDITING_API ) + +/*---------------------------------------------------------------------* + * IVAS_DEC_GetSamplesDecoder( ) + * + * Main function to decode transport channels, do TSM and feed to renderer. + *---------------------------------------------------------------------*/ + +ivas_error IVAS_DEC_GetSamplesDecoder( + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + const int16_t isSplitRend, /* i : split rendering enabled flag */ + ISAR_SPLIT_REND_BITS_DATA *splitRendBits /* o : output split rendering bits */ +) +{ + ivas_error error; + + if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + /* If TSM is generally enabled, we have to wait for the first good frame. + Otherwise, we directly decode the first frame in any case. */ +#ifdef FIX_HRTF_LOAD + if ( !hIvasDec->isInitialized || hIvasDec->hasBeenFedFrame ) +#else if ( ( hIvasDec->st_ivas->hDecoderConfig->Opt_tsm && hIvasDec->hasBeenFedFirstGoodFrame ) || !hIvasDec->st_ivas->hDecoderConfig->Opt_tsm ) +#endif { uint16_t l_ts, nTimeScalerOutSamples; +#ifdef FIX_HRTF_LOAD + uint8_t nTransportChannels; +#else uint8_t nTransportChannels, nOutChannels; +#endif int16_t nResidualSamples, nSamplesTcsScaled, nOutSamplesElse; if ( isSplitRend ) @@ -938,7 +1121,11 @@ ivas_error IVAS_DEC_FeedFrame_Serial( } } +#ifdef FIX_HRTF_LOAD + if ( ( error = IVAS_DEC_Setup( hIvasDec, &l_ts, &nTransportChannels ) ) != IVAS_ERR_OK ) +#else if ( ( error = IVAS_DEC_Setup( hIvasDec, &l_ts, &nTransportChannels, &nOutChannels, &hIvasDec->nSamplesFlushed, hIvasDec->pcmType, hIvasDec->flushbuffer ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -995,6 +1182,8 @@ ivas_error IVAS_DEC_FeedFrame_Serial( } hIvasDec->hasBeenFedFrame = false; } + +#ifdef OBJ_EDITING_API hIvasDec->hasBeenPreparedRendering = false; if ( hIvasDec->st_ivas->hIsmMetaData[0] ) @@ -1045,6 +1234,7 @@ ivas_error IVAS_DEC_FeedFrame_Serial( return IVAS_ERR_OK; } +#endif #ifdef OBJ_EDITING_API /*---------------------------------------------------------------------* @@ -1052,18 +1242,31 @@ ivas_error IVAS_DEC_FeedFrame_Serial( * * *---------------------------------------------------------------------*/ + ivas_error IVAS_DEC_GetEditableParameters( - IVAS_DEC_HANDLE hIvasDec, - IVAS_EDITABLE_PARAMETERS *hIvasEditableParameters ) + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + IVAS_EDITABLE_PARAMETERS *hIvasEditableParameters /* o : object editing parameters handle */ +) { - ivas_error error; - int16_t dirac_read_idx; + int16_t dirac_read_idx, obj; + + if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL || hIvasEditableParameters == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } +#ifdef FIX_BRATE_SWITCHING + if ( !( hIvasDec->st_ivas->ivas_format == ISM_FORMAT || + hIvasDec->st_ivas->ivas_format == SBA_ISM_FORMAT || + hIvasDec->st_ivas->ivas_format == MASA_ISM_FORMAT || + ( hIvasDec->st_ivas->ivas_format == MASA_FORMAT && hIvasDec->st_ivas->nchan_ism > 0 ) ) ) +#else if ( !( hIvasDec->st_ivas->ivas_format == ISM_FORMAT || ( hIvasDec->st_ivas->ivas_format == SBA_ISM_FORMAT && hIvasDec->st_ivas->ism_mode == ISM_SBA_MODE_DISC ) || ( hIvasDec->st_ivas->ivas_format == MASA_ISM_FORMAT && ( hIvasDec->st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || hIvasDec->st_ivas->ism_mode == ISM_MASA_MODE_DISC ) ) ) ) +#endif { - return IVAS_ERROR( IVAS_ERR_WRONG_MODE, "Object editing no supported in this operation mode." ); + return IVAS_ERROR( IVAS_ERR_OBJECTS_EDITING_NOT_SUPPORTED, "Object editing is not supported in this operation mode." ); } if ( hIvasEditableParameters == NULL || hIvasDec == NULL || hIvasDec->st_ivas == NULL ) @@ -1077,7 +1280,6 @@ ivas_error IVAS_DEC_GetEditableParameters( { if ( hIvasDec->st_ivas->ism_mode == ISM_MODE_DISC || hIvasDec->st_ivas->ism_mode == ISM_SBA_MODE_DISC ) { - int16_t obj; for ( obj = 0; obj < hIvasEditableParameters->num_obj; obj++ ) { hIvasEditableParameters->ism_metadata[obj].azimuth = hIvasDec->st_ivas->hIsmMetaData[obj]->azimuth; @@ -1088,6 +1290,7 @@ ivas_error IVAS_DEC_GetEditableParameters( hIvasEditableParameters->ism_metadata[obj].gain = hIvasDec->st_ivas->hIsmMetaData[obj]->edited_gain; hIvasEditableParameters->ism_metadata[obj].non_diegetic_flag = hIvasDec->st_ivas->hIsmMetaData[obj]->non_diegetic_flag; } + if ( hIvasDec->st_ivas->ism_mode == ISM_SBA_MODE_DISC ) { hIvasEditableParameters->gain_bed = 1.0f; @@ -1095,7 +1298,6 @@ ivas_error IVAS_DEC_GetEditableParameters( } else if ( hIvasDec->st_ivas->ism_mode == ISM_MODE_PARAM ) { - int16_t obj; for ( obj = 0; obj < hIvasEditableParameters->num_obj; obj++ ) { hIvasEditableParameters->ism_metadata[obj].azimuth = hIvasDec->st_ivas->hParamIsmDec->azimuth_values[obj]; @@ -1107,17 +1309,21 @@ ivas_error IVAS_DEC_GetEditableParameters( hIvasEditableParameters->ism_metadata[obj].non_diegetic_flag = 0; } } + else if ( hIvasDec->st_ivas->ism_mode == ISM_MODE_NONE ) + { + hIvasEditableParameters->num_obj = 0; + } +#ifdef DEBUGGING else { assert( 0 && "This should never happen!" ); } +#endif } #ifdef OMASA_OBJECT_EDITING else if ( hIvasDec->st_ivas->ivas_format == MASA_ISM_FORMAT && ( hIvasDec->st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || hIvasDec->st_ivas->ism_mode == ISM_MASA_MODE_DISC ) ) { /* object editing possible only in two highest OMASA modes */ - int16_t obj; - if ( hIvasDec->st_ivas->ism_mode == ISM_MASA_MODE_DISC ) { for ( obj = 0; obj < hIvasEditableParameters->num_obj; obj++ ) @@ -1164,29 +1370,41 @@ ivas_error IVAS_DEC_GetEditableParameters( } #endif - error = IVAS_ERR_OK; - - return error; + return IVAS_ERR_OK; } + /*---------------------------------------------------------------------* * IVAS_DEC_SetEditableParameters( ) * * Main function to decode to PCM data *---------------------------------------------------------------------*/ + ivas_error IVAS_DEC_SetEditableParameters( - IVAS_DEC_HANDLE hIvasDec, - IVAS_EDITABLE_PARAMETERS hIvasEditableParameters ) + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + IVAS_EDITABLE_PARAMETERS hIvasEditableParameters /* i : object editing parameters handle */ +) { - ivas_error error; - int16_t dirac_read_idx; + int16_t dirac_read_idx, obj; + if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + +#ifdef FIX_BRATE_SWITCHING + if ( !( hIvasDec->st_ivas->ivas_format == ISM_FORMAT || + hIvasDec->st_ivas->ivas_format == SBA_ISM_FORMAT || + hIvasDec->st_ivas->ivas_format == MASA_ISM_FORMAT || + ( hIvasDec->st_ivas->ivas_format == MASA_FORMAT && hIvasDec->st_ivas->nchan_ism > 0 ) ) ) +#else if ( !( hIvasDec->st_ivas->ivas_format == ISM_FORMAT || ( hIvasDec->st_ivas->ivas_format == SBA_ISM_FORMAT && hIvasDec->st_ivas->ism_mode == ISM_SBA_MODE_DISC ) || ( hIvasDec->st_ivas->ivas_format == MASA_ISM_FORMAT && ( hIvasDec->st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || hIvasDec->st_ivas->ism_mode == ISM_MASA_MODE_DISC ) ) ) || hIvasDec->st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_EXTERNAL ) +#endif { - return IVAS_ERROR( IVAS_ERR_WRONG_MODE, "Object editing no supported in this operation mode." ); + return IVAS_ERROR( IVAS_ERR_OBJECTS_EDITING_NOT_SUPPORTED, "Object editing no supported in this operation mode." ); } if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) @@ -1194,8 +1412,6 @@ ivas_error IVAS_DEC_SetEditableParameters( return IVAS_ERR_UNEXPECTED_NULL_POINTER; } - error = IVAS_ERR_OK; - #ifdef DEBUGGING assert( hIvasEditableParameters.num_obj == hIvasDec->st_ivas->nchan_ism ); #endif @@ -1204,7 +1420,6 @@ ivas_error IVAS_DEC_SetEditableParameters( { if ( hIvasDec->st_ivas->ism_mode == ISM_MODE_DISC || hIvasDec->st_ivas->ism_mode == ISM_SBA_MODE_DISC ) { - int16_t obj; for ( obj = 0; obj < hIvasEditableParameters.num_obj; obj++ ) { hIvasDec->st_ivas->hIsmMetaData[obj]->edited_azimuth = hIvasEditableParameters.ism_metadata[obj].azimuth; @@ -1226,7 +1441,6 @@ ivas_error IVAS_DEC_SetEditableParameters( } else if ( hIvasDec->st_ivas->ism_mode == ISM_MODE_PARAM ) { - int16_t obj; for ( obj = 0; obj < hIvasEditableParameters.num_obj; obj++ ) { #ifdef OBJ_EDITING_PARAMISM_BIN @@ -1256,11 +1470,19 @@ ivas_error IVAS_DEC_SetEditableParameters( } #endif } + #ifdef OBJ_EDITING_PARAMISM_BIN /* MASA is not present with the ISM format */ hIvasDec->st_ivas->hMasaIsmData->masa_gain_is_edited = 0u; #endif } + else if ( hIvasDec->st_ivas->ism_mode == ISM_MODE_NONE ) + { + if ( hIvasEditableParameters.num_obj != 0 ) + { + return IVAS_ERR_OBJECTS_EDITING_NOT_SUPPORTED; + } + } else { assert( 0 && "This should never happen!" ); @@ -1269,8 +1491,7 @@ ivas_error IVAS_DEC_SetEditableParameters( #ifdef OMASA_OBJECT_EDITING else if ( hIvasDec->st_ivas->ivas_format == MASA_ISM_FORMAT && ( hIvasDec->st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || hIvasDec->st_ivas->ism_mode == ISM_MASA_MODE_DISC ) ) { - int16_t obj; - int32_t id_th; + int16_t id_th; float threshold_azi, threshold_ele; for ( obj = 0; obj < hIvasEditableParameters.num_obj; obj++ ) @@ -1315,7 +1536,7 @@ ivas_error IVAS_DEC_SetEditableParameters( * which in turn depends from the object priority and importance: * importance -> priority -> number of bits -> elevation resolution -> elevation ring index -> azimuth resolution. * leading to elevation_resolution -> elevation threshold and azimuth resolution -> azimuth threshold */ - id_th = (int) ( fabsf( (float) hIvasDec->st_ivas->hMasaIsmData->elevation_ism[obj][dirac_read_idx] ) / delta_theta_masa[hIvasDec->st_ivas->hMasaIsmData->bits_ism[obj] - 3] + 0.5f ); + id_th = (int16_t) ( fabsf( (float) hIvasDec->st_ivas->hMasaIsmData->elevation_ism[obj][dirac_read_idx] ) / delta_theta_masa[hIvasDec->st_ivas->hMasaIsmData->bits_ism[obj] - 3] + 0.5f ); threshold_azi = 360.0f / (float) no_phi_masa[hIvasDec->st_ivas->hMasaIsmData->bits_ism[obj] - 1][id_th]; threshold_ele = delta_theta_masa[hIvasDec->st_ivas->hMasaIsmData->bits_ism[obj] - 3]; @@ -1387,34 +1608,43 @@ ivas_error IVAS_DEC_SetEditableParameters( } #endif - return error; + return IVAS_ERR_OK; } + /*---------------------------------------------------------------------* * IVAS_DEC_PrepareRenderer( ) * - * prepare IVAS JBM renderer + * prepare IVAS renderer *---------------------------------------------------------------------*/ + ivas_error IVAS_DEC_PrepareRenderer( IVAS_DEC_HANDLE hIvasDec ) { - ivas_error error; - - error = IVAS_ERR_OK; - - if ( hIvasDec == NULL ) + if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } - ivas_jbm_dec_prepare_renderer( hIvasDec->st_ivas ); + ivas_dec_prepare_renderer( hIvasDec->st_ivas ); + hIvasDec->hasBeenPreparedRendering = true; - return error; -} + return IVAS_ERR_OK; +} #endif +#ifdef OBJ_EDITING_API + +/*---------------------------------------------------------------------* + * IVAS_DEC_GetSamplesRenderer( ) + * + * Main function to render the decoded data to output data + *---------------------------------------------------------------------*/ + +ivas_error IVAS_DEC_GetSamplesRenderer( +#else /*---------------------------------------------------------------------* * IVAS_DEC_GetSamples( ) * @@ -1423,6 +1653,7 @@ ivas_error IVAS_DEC_PrepareRenderer( ivas_error IVAS_DEC_GetSamples( +#endif IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ const int16_t nSamplesAsked, /* i : number of samples wanted by the caller */ const IVAS_DEC_PCM_TYPE pcmType, /* i : type for the decoded PCM resolution */ @@ -1450,7 +1681,6 @@ ivas_error IVAS_DEC_GetSamples( nTransportChannels = 0; #endif - if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) { return IVAS_ERR_UNEXPECTED_NULL_POINTER; @@ -1524,9 +1754,9 @@ ivas_error IVAS_DEC_GetSamples( } } #endif +#ifndef OBJ_EDITING_API { /* check if we need to run the setup function, tc decoding and feeding the renderer */ -#ifndef OBJ_EDITING_API if ( !hIvasDec->isInitialized || hIvasDec->hasBeenFedFrame ) { int16_t nResidualSamples, nSamplesTcsScaled; @@ -1589,34 +1819,34 @@ ivas_error IVAS_DEC_GetSamples( hIvasDec->hasBeenFedFrame = false; } #else - nOutChannels = (uint8_t) hIvasDec->st_ivas->hDecoderConfig->nchan_out; - hIvasDec->hasBeenFedFrame = false; - /* check for possible flushed samples from a rate switch */ - if ( hIvasDec->nSamplesFlushed > 0 ) - { - void *pPcmBuffer; + nOutChannels = (uint8_t) hIvasDec->st_ivas->hDecoderConfig->nchan_out; + hIvasDec->hasBeenFedFrame = false; + /* check for possible flushed samples from a rate switch */ + if ( hIvasDec->nSamplesFlushed > 0 ) + { + void *pPcmBuffer; #ifdef DEBUGGING - assert( hIvasDec->pcmType == pcmType ); + assert( hIvasDec->pcmType == pcmType ); #endif - pPcmBuffer = pcm_buffer_offset( pcmBuf, pcmType, nSamplesRendered * nOutChannels ); - if ( pcmType == IVAS_DEC_PCM_INT16 ) - { - mvs2s( (int16_t *) hIvasDec->flushbuffer, pPcmBuffer, hIvasDec->nSamplesFlushed * nOutChannels ); - } - else if ( pcmType == IVAS_DEC_PCM_FLOAT ) - { - mvr2r( (float *) hIvasDec->flushbuffer, pPcmBuffer, hIvasDec->nSamplesFlushed * nOutChannels ); - } + pPcmBuffer = pcm_buffer_offset( pcmBuf, pcmType, nSamplesRendered * nOutChannels ); + if ( pcmType == IVAS_DEC_PCM_INT16 ) + { + mvs2s( (int16_t *) hIvasDec->flushbuffer, pPcmBuffer, hIvasDec->nSamplesFlushed * nOutChannels ); + } + else if ( pcmType == IVAS_DEC_PCM_FLOAT ) + { + mvr2r( (float *) hIvasDec->flushbuffer, pPcmBuffer, hIvasDec->nSamplesFlushed * nOutChannels ); + } #ifdef DEBUGGING - else - { - assert( 0 && "wrong PCM type for the flush buffer!" ); - } -#endif - nSamplesRendered += hIvasDec->nSamplesFlushed; - hIvasDec->nSamplesFlushed = 0; + else + { + assert( 0 && "wrong PCM type for the flush buffer!" ); } #endif + nSamplesRendered += hIvasDec->nSamplesFlushed; + hIvasDec->nSamplesFlushed = 0; + } +#endif /* render IVAS frames directly to the output buffer */ nSamplesToRender = nSamplesAsked - nSamplesRendered; @@ -1636,7 +1866,9 @@ ivas_error IVAS_DEC_GetSamples( { *needNewFrame = false; } +#ifndef OBJ_EDITING_API } +#endif } *nOutSamples = nSamplesRendered; @@ -1679,13 +1911,11 @@ ivas_error IVAS_DEC_GetSplitBinauralBitstream( int16_t ro_md_flag; IVAS_QUATERNION Quaternion; -#ifdef FIX_VOIP_FUNCTIONS if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } -#endif error = IVAS_ERR_OK; st_ivas = hIvasDec->st_ivas; output_config = st_ivas->hDecoderConfig->output_config; @@ -1700,8 +1930,8 @@ ivas_error IVAS_DEC_GetSplitBinauralBitstream( { return error; } -#endif +#endif numPoses = hSplitBinRend->splitrend.multiBinPoseData.num_poses; #ifdef OBJ_EDITING_API @@ -1709,6 +1939,10 @@ ivas_error IVAS_DEC_GetSplitBinauralBitstream( if ( hIvasDec->flushbuffer == NULL ) { hIvasDec->flushbuffer = (void *) malloc( numPoses * BINAURAL_CHANNELS * hIvasDec->nSamplesFrame / IVAS_MAX_PARAM_SPATIAL_SUBFRAMES * sizeof( float ) ); + if ( hIvasDec->flushbuffer == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate flush buffer" ); + } hIvasDec->pcmType = IVAS_DEC_PCM_FLOAT; set_zero( (float *) hIvasDec->flushbuffer, numPoses * BINAURAL_CHANNELS * hIvasDec->nSamplesFrame / IVAS_MAX_PARAM_SPATIAL_SUBFRAMES ); } @@ -1744,11 +1978,19 @@ ivas_error IVAS_DEC_GetSplitBinauralBitstream( } } +#ifdef OBJ_EDITING_API + /* render */ + if ( ( error = IVAS_DEC_GetSamplesRenderer( hIvasDec, numSamplesPerChannelToDecode, IVAS_DEC_PCM_FLOAT, pcmBuf, nOutSamples, needNewFrame ) ) != IVAS_ERR_OK ) + { + return error; + } +#else /* Decode and render */ if ( ( error = IVAS_DEC_GetSamples( hIvasDec, numSamplesPerChannelToDecode, IVAS_DEC_PCM_FLOAT, pcmBuf, nOutSamples, needNewFrame ) ) != IVAS_ERR_OK ) { return error; } +#endif /* change buffer layout */ for ( i = 0; i < numSamplesPerChannelToDecode; ++i ) @@ -1859,30 +2101,38 @@ ivas_error IVAS_DEC_GetSplitBinauralBitstream( *---------------------------------------------------------------------*/ static ivas_error IVAS_DEC_Setup( - IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ - uint16_t *nTcBufferGranularity, /* o : granularity of the TC Buffer */ - uint8_t *nTransportChannels, /* o : number of decoded transport PCM channels */ + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + uint16_t *nTcBufferGranularity, /* o : granularity of the TC Buffer */ + uint8_t *nTransportChannels /* o : number of decoded transport PCM channels */ +#ifndef FIX_HRTF_LOAD + , uint8_t *nOutChannels, /* o : number of decoded out channels (PCM or CLDFB) */ uint16_t *nSamplesRendered, /* o : number of samples flushed from the last frame */ const IVAS_DEC_PCM_TYPE pcmType, /* i : type for the decoded PCM resolution */ void *data /* o : output synthesis signal */ +#endif ) { ivas_error error; +#ifndef FIX_HRTF_LOAD *nSamplesRendered = 0; - +#endif if ( hIvasDec->mode == IVAS_DEC_MODE_EVS ) { if ( hIvasDec->st_ivas->renderer_type == RENDERER_NON_DIEGETIC_DOWNMIX ) { *nTransportChannels = MAX_OUTPUT_CHANNELS_IN_DIEGETIC_PAN; +#ifndef FIX_HRTF_LOAD *nOutChannels = MAX_OUTPUT_CHANNELS_IN_DIEGETIC_PAN; +#endif } else { *nTransportChannels = 1; +#ifndef FIX_HRTF_LOAD *nOutChannels = 1; +#endif } } else @@ -1901,7 +2151,11 @@ static ivas_error IVAS_DEC_Setup( if ( st_ivas->bfi == 0 ) { +#ifdef FIX_HRTF_LOAD + if ( ( error = ivas_dec_setup( st_ivas ) ) != IVAS_ERR_OK ) +#else if ( ( error = ivas_dec_setup( st_ivas, nSamplesRendered, pcm_type_API_to_internal( pcmType ), data ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -1909,8 +2163,9 @@ static ivas_error IVAS_DEC_Setup( *nTransportChannels = (uint8_t) st_ivas->hTcBuffer->nchan_transport_jbm; *nTcBufferGranularity = (uint16_t) st_ivas->hTcBuffer->n_samples_granularity; +#ifndef FIX_HRTF_LOAD *nOutChannels = (uint8_t) st_ivas->hDecoderConfig->nchan_out; - +#endif /*-----------------------------------------------------------------* * ISAR: @@ -2129,13 +2384,11 @@ ivas_error IVAS_DEC_GetFormat( IVAS_DEC_BS_FORMAT *format /* o : format detected from bitstream fed to the decoder */ ) { -#ifdef FIX_VOIP_FUNCTIONS if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } -#endif if ( hIvasDec->hasDecodedFirstGoodFrame ) { *format = mapIvasFormat( hIvasDec->st_ivas->ivas_format ); @@ -2229,13 +2482,11 @@ ivas_error IVAS_DEC_GetNumOutputChannels( int16_t *numOutputChannels /* o : number of PCM output channels */ ) { -#ifdef FIX_VOIP_FUNCTIONS if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } -#endif if ( hIvasDec->hasDecodedFirstGoodFrame ) { *numOutputChannels = hIvasDec->st_ivas->hDecoderConfig->nchan_out; @@ -2319,7 +2570,6 @@ ivas_error IVAS_DEC_GetObjectMetadata( metadata->gainFactor = hIsmMeta->edited_gain; metadata->non_diegetic_flag = hIsmMeta->non_diegetic_flag; } -#ifdef OBJ_EDITING_API else if ( st_ivas->ism_mode == ISM_MODE_PARAM ) { metadata->azimuth = st_ivas->hParamIsmDec->edited_azimuth_values[objectIdx]; @@ -2331,7 +2581,6 @@ ivas_error IVAS_DEC_GetObjectMetadata( metadata->gainFactor = 1.f; metadata->non_diegetic_flag = hIsmMeta->non_diegetic_flag; } -#endif else if ( st_ivas->ism_mode == ISM_SBA_MODE_DISC || st_ivas->ism_mode == ISM_MASA_MODE_DISC ) { metadata->azimuth = st_ivas->hIsmMetaData[objectIdx]->edited_azimuth; @@ -2712,6 +2961,137 @@ ivas_error IVAS_DEC_GetHrtfStatisticsHandle( return IVAS_ERR_OK; } +#ifdef FIX_HRTF_LOAD + +/*---------------------------------------------------------------------* + * IVAS_DEC_HRTF_binary_open( ) + * + * Allocate HRTF binary handles + *---------------------------------------------------------------------*/ + +ivas_error IVAS_DEC_HRTF_binary_open( + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + const IVAS_BIN_RENDERER_TYPE binaural_renderer /* i : binaural renderer type */ +) +{ + ivas_error error; + Decoder_Struct *st_ivas; + + st_ivas = hIvasDec->st_ivas; + + if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + if ( st_ivas->hDecoderConfig->Opt_HRTF_binary ) + { + /* TD binaural renderer */ + if ( ( binaural_renderer == IVAS_BIN_RENDERER_TYPE_TDREND || binaural_renderer == IVAS_BIN_RENDERER_TYPE_DEFAULT ) && st_ivas->hHrtfTD == NULL ) + { + if ( ( error = ivas_HRTF_binary_open( &( st_ivas->hHrtfTD ) ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + /* Crend binaural renderer */ + if ( ( binaural_renderer == IVAS_BIN_RENDERER_TYPE_CREND || binaural_renderer == IVAS_BIN_RENDERER_TYPE_DEFAULT ) && st_ivas->hSetOfHRTF == NULL ) + { + if ( ( error = ivas_HRTF_CRend_binary_open( &( st_ivas->hSetOfHRTF ) ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + /* FastConv binaural renderer */ + if ( ( binaural_renderer == IVAS_BIN_RENDERER_TYPE_FASTCONV || binaural_renderer == IVAS_BIN_RENDERER_TYPE_DEFAULT ) && st_ivas->hHrtfFastConv == NULL ) + { + if ( ( error = ivas_HRTF_fastconv_binary_open( &st_ivas->hHrtfFastConv ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + /* Parametric binaural renderer */ + if ( ( binaural_renderer == IVAS_BIN_RENDERER_TYPE_PARAMBIN || binaural_renderer == IVAS_BIN_RENDERER_TYPE_DEFAULT ) && st_ivas->hHrtfParambin == NULL ) + { + if ( ( error = ivas_HRTF_parambin_binary_open( &st_ivas->hHrtfParambin ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + if ( st_ivas->hHrtfStatistics == NULL ) + { + if ( ( error = ivas_HRTF_statistics_binary_open( &st_ivas->hHrtfStatistics ) ) != IVAS_ERR_OK ) + { + return error; + } + } + } + + return IVAS_ERR_OK; +} + + +/*---------------------------------------------------------------------* + * IVAS_DEC_HRTF_binary_close( ) + * + * + *---------------------------------------------------------------------*/ + +ivas_error IVAS_DEC_HRTF_binary_close( + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + const IVAS_BIN_RENDERER_TYPE binaural_renderer_old /* i : previous binaural renderer type */ +) +{ + Decoder_Struct *st_ivas; + + st_ivas = hIvasDec->st_ivas; + + if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + if ( st_ivas->hDecoderConfig->Opt_HRTF_binary && st_ivas->ini_frame > 0 ) + { + if ( !( binaural_renderer_old == IVAS_BIN_RENDERER_TYPE_TDREND || binaural_renderer_old == IVAS_BIN_RENDERER_TYPE_DEFAULT ) && + ( hIvasDec->st_ivas->ivas_format != SBA_ISM_FORMAT ) // ToDo: temporary hack to avoid ASAN errors -> see issue #1202 + ) + { + ivas_HRTF_binary_close( &st_ivas->hHrtfTD ); + } + + if ( !( binaural_renderer_old == IVAS_BIN_RENDERER_TYPE_CREND || binaural_renderer_old == IVAS_BIN_RENDERER_TYPE_DEFAULT ) ) + { + /* CRend binaural renderer handle */ + ivas_HRTF_CRend_binary_close( &st_ivas->hSetOfHRTF ); + } + + if ( !( binaural_renderer_old == IVAS_BIN_RENDERER_TYPE_FASTCONV || binaural_renderer_old == IVAS_BIN_RENDERER_TYPE_DEFAULT ) ) + { + /* Fastconv HRTF memories */ + ivas_binaural_hrtf_close( &st_ivas->hHrtfFastConv ); + + /* Fastconv HRTF filters */ + ivas_HRTF_fastconv_binary_close( &st_ivas->hHrtfFastConv ); + } + + if ( !( binaural_renderer_old == IVAS_BIN_RENDERER_TYPE_PARAMBIN || binaural_renderer_old == IVAS_BIN_RENDERER_TYPE_DEFAULT ) ) + { + + /* Parametric binauralizer HRTF filters */ + ivas_HRTF_parambin_binary_close( &st_ivas->hHrtfParambin ); + } + } + + return IVAS_ERR_OK; +} + +#endif + /*---------------------------------------------------------------------* * copyRendererConfigStruct( ) * @@ -2782,6 +3162,13 @@ ivas_error IVAS_DEC_GetRenderConfig( return copyRendererConfigStruct( hIvasDec->st_ivas->hRenderConfig, hRCout ); } + +/*---------------------------------------------------------------------* + * IVAS_DEC_GetDefaultRenderConfig( ) + * + * + *---------------------------------------------------------------------*/ + /*! r: error code*/ ivas_error IVAS_DEC_GetDefaultRenderConfig( IVAS_RENDER_CONFIG_HANDLE hRCout /* o : Render config handle */ @@ -2877,7 +3264,19 @@ ivas_error IVAS_DEC_FeedRenderConfig( if ( hIvasDec->st_ivas->hDiracDecBin[0] != NULL && hIvasDec->st_ivas->hDiracDecBin[0]->hReverb != NULL ) { ivas_binaural_reverb_close( &( hIvasDec->st_ivas->hDiracDecBin[0]->hReverb ) ); - if ( ( error = ivas_binaural_reverb_init( &( hIvasDec->st_ivas->hDiracDecBin[0]->hReverb ), hIvasDec->st_ivas->hHrtfStatistics, hIvasDec->st_ivas->hSpatParamRendCom->num_freq_bands, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( hRenderConfig->roomAcoustics ), hIvasDec->st_ivas->hDecoderConfig->output_Fs, NULL, NULL ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_binaural_reverb_init( &( hIvasDec->st_ivas->hDiracDecBin[0]->hReverb ), + hIvasDec->st_ivas->hHrtfStatistics, + hIvasDec->st_ivas->hSpatParamRendCom->num_freq_bands, + CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, + &( hRenderConfig->roomAcoustics ), + hIvasDec->st_ivas->hDecoderConfig->output_Fs, + NULL, + NULL +#ifdef FIX_1139_REV_COLORATION_SHORT_T60 + , + NULL +#endif + ) ) != IVAS_ERR_OK ) { return error; } @@ -2886,7 +3285,19 @@ ivas_error IVAS_DEC_FeedRenderConfig( if ( hIvasDec->st_ivas->hBinRenderer != NULL && hIvasDec->st_ivas->hBinRenderer->hReverb != NULL ) { ivas_binaural_reverb_close( &( hIvasDec->st_ivas->hBinRenderer->hReverb ) ); - if ( ( error = ivas_binaural_reverb_init( &( hIvasDec->st_ivas->hBinRenderer->hReverb ), hIvasDec->st_ivas->hHrtfStatistics, hIvasDec->st_ivas->hBinRenderer->conv_band, hIvasDec->st_ivas->hBinRenderer->timeSlots, &( hRenderConfig->roomAcoustics ), hIvasDec->st_ivas->hDecoderConfig->output_Fs, NULL, NULL ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_binaural_reverb_init( &( hIvasDec->st_ivas->hBinRenderer->hReverb ), + hIvasDec->st_ivas->hHrtfStatistics, + hIvasDec->st_ivas->hBinRenderer->conv_band, + hIvasDec->st_ivas->hBinRenderer->timeSlots, + &( hRenderConfig->roomAcoustics ), + hIvasDec->st_ivas->hDecoderConfig->output_Fs, + NULL, + NULL +#ifdef FIX_1139_REV_COLORATION_SHORT_T60 + , + NULL +#endif + ) ) != IVAS_ERR_OK ) { return error; } @@ -3089,13 +3500,11 @@ ivas_error IVAS_DEC_VoIP_FeedFrame( int16_t partialCopyFrameType, partialCopyOffset; int16_t result; -#ifdef FIX_VOIP_FUNCTIONS if ( hIvasDec == NULL || hIvasDec->hVoIP == NULL || au == NULL ) { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } -#endif if ( auSize == 0 ) { return IVAS_ERR_OK; /* ignore empty/NO_DATA frame - shouldn't be transmitted in RTP */ @@ -3162,6 +3571,7 @@ ivas_error IVAS_DEC_VoIP_FeedFrame( return IVAS_ERR_OK; } + /*---------------------------------------------------------------------* * IVAS_DEC_VoIP_SetScale( ) * @@ -3174,22 +3584,12 @@ ivas_error IVAS_DEC_VoIP_SetScale( const int16_t scale /* i : TSM scale to set in percent of the default frame size */ ) { -#ifdef FIX_VOIP_FUNCTIONS if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } -#else - ivas_error error; - - error = IVAS_ERR_OK; -#endif -#ifdef FIX_VOIP_FUNCTIONS if ( hIvasDec->st_ivas->hDecoderConfig->Opt_tsm == 0 ) -#else - if ( hIvasDec->st_ivas->hDecoderConfig->Opt_tsm == false ) -#endif { return IVAS_ERR_TSM_NOT_ENABLED; } @@ -3199,11 +3599,7 @@ ivas_error IVAS_DEC_VoIP_SetScale( hIvasDec->tsm_max_scaling = maxScaling; } -#ifdef FIX_VOIP_FUNCTIONS return IVAS_ERR_OK; -#else - return error; -#endif } @@ -3227,13 +3623,11 @@ ivas_error IVAS_DEC_TSM_SetQuality( const float quality /* i : target TSM quality */ ) { -#ifdef FIX_VOIP_FUNCTIONS if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } -#endif if ( !hIvasDec->st_ivas->hDecoderConfig->Opt_tsm ) { return IVAS_ERR_TSM_NOT_ENABLED; @@ -3254,21 +3648,22 @@ ivas_error IVAS_DEC_TSM_SetQuality( *---------------------------------------------------------------------*/ ivas_error IVAS_DEC_VoIP_GetSamples( - IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ - uint16_t nSamplesPerChannel, /* i : number of samples per channel requested to be written to output buffer */ - const IVAS_DEC_PCM_TYPE pcmType, /* i : type for the decoded PCM resolution */ - void *pcmBuf, /* o : output synthesis signal */ - const uint32_t systemTimestamp_ms /* i : current system timestamp */ + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + uint16_t nSamplesPerChannel, /* i : number of samples per channel requested to be written to output buffer */ + const IVAS_DEC_PCM_TYPE pcmType, /* i : type for the decoded PCM resolution */ + void *pcmBuf, /* o : output synthesis signal */ #ifdef SUPPORT_JBM_TRACEFILE - , JbmTraceFileWriterFn jbmWriterFn, - void *jbmWriter + void *jbmWriter, +#endif +#ifdef FIX_HRTF_LOAD + bool *bitstreamReadDone, /* o : flag indicating that bitstream was read */ #endif #ifdef OBJ_EDITING_API - , - uint16_t *nSamplesRendered, - bool *parametersAvailableForEditing + uint16_t *nSamplesRendered, /* o : number of samples rendered */ + bool *parametersAvailableForEditing, /* o : indicates whether objects editing is available */ #endif + const uint32_t systemTimestamp_ms /* i : current system timestamp */ ) { Decoder_Struct *st_ivas; @@ -3284,13 +3679,11 @@ ivas_error IVAS_DEC_VoIP_GetSamples( #endif uint8_t nOutChannels; -#ifdef FIX_VOIP_FUNCTIONS if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL || hIvasDec->hVoIP == NULL ) { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } -#endif st_ivas = hIvasDec->st_ivas; hDecoderConfig = st_ivas->hDecoderConfig; hVoIP = hIvasDec->hVoIP; @@ -3385,28 +3778,35 @@ ivas_error IVAS_DEC_VoIP_GetSamples( bsCompactToSerial( dataUnit->data, hIvasDec->hVoIP->bs_conversion_buf, dataUnit->dataSize ); - - if ( ( error = IVAS_DEC_FeedFrame_Serial( hIvasDec, hIvasDec->hVoIP->bs_conversion_buf, dataUnit->dataSize, 0 -#if defined( OBJ_EDITING_API ) - , - 0, - 0 +#ifdef FIX_HRTF_LOAD + if ( ( error = IVAS_DEC_FeedFrame_Serial( hIvasDec, hIvasDec->hVoIP->bs_conversion_buf, dataUnit->dataSize, 0 ) ) != IVAS_ERR_OK ) +#else +#ifdef OBJ_EDITING_API + if ( ( error = IVAS_DEC_FeedFrame_Serial( hIvasDec, hIvasDec->hVoIP->bs_conversion_buf, dataUnit->dataSize, 0, 0, 0 ) ) != IVAS_ERR_OK ) +#else + if ( ( error = IVAS_DEC_FeedFrame_Serial( hIvasDec, hIvasDec->hVoIP->bs_conversion_buf, dataUnit->dataSize, 0 ) ) != IVAS_ERR_OK ) +#endif #endif - ) ) != IVAS_ERR_OK ) { return error; } +#ifdef FIX_HRTF_LOAD + + *bitstreamReadDone = true; +#endif } else if ( hIvasDec->hasDecodedFirstGoodFrame ) { /* Decoder has been initialized with first good frame - do PLC */ - if ( ( error = IVAS_DEC_FeedFrame_Serial( hIvasDec, hIvasDec->hVoIP->bs_conversion_buf, 0, 1 -#if defined( OBJ_EDITING_API ) - , - 0, - 0 +#ifdef FIX_HRTF_LOAD + if ( ( error = IVAS_DEC_FeedFrame_Serial( hIvasDec, hIvasDec->hVoIP->bs_conversion_buf, 0, 1 ) ) != IVAS_ERR_OK ) +#else +#ifdef OBJ_EDITING_API + if ( ( error = IVAS_DEC_FeedFrame_Serial( hIvasDec, hIvasDec->hVoIP->bs_conversion_buf, 0, 1, 0, 0 ) ) != IVAS_ERR_OK ) +#else + if ( ( error = IVAS_DEC_FeedFrame_Serial( hIvasDec, hIvasDec->hVoIP->bs_conversion_buf, 0, 1 ) ) != IVAS_ERR_OK ) +#endif #endif - ) ) != IVAS_ERR_OK ) { return error; } @@ -3440,14 +3840,22 @@ ivas_error IVAS_DEC_VoIP_GetSamples( JB4_FreeDataUnit( hVoIP->hJBM, dataUnit ); } +#ifdef FIX_HRTF_LOAD + if ( hIvasDec->hasBeenFedFirstGoodFrame && *bitstreamReadDone == true ) + { + /* new bitstream was feeded, return for reconfiguration */ + return IVAS_ERR_OK; + } + +#endif if ( !hIvasDec->hasBeenFedFirstGoodFrame ) { hIvasDec->nSamplesAvailableNext = hIvasDec->nSamplesFrame; hIvasDec->nSamplesRendered = 0; } + #ifdef OBJ_EDITING_API - /* :TODO: only return here if we really have editing initialized */ - if ( hIvasDec->hasBeenFedFirstGoodFrame && hIvasDec->hasEditableParameters == true && hIvasDec->enableParameterEditing == true ) + if ( hIvasDec->hasBeenFedFirstGoodFrame ) { *parametersAvailableForEditing = true; return IVAS_ERR_OK; @@ -3477,6 +3885,27 @@ ivas_error IVAS_DEC_VoIP_GetSamples( { int16_t nSamplesToRender, nSamplesRendered_loop; bool tmp; + +#ifdef FIX_HRTF_LOAD + /* decode TCs, do TSM and prepare the renderer */ + if ( !hIvasDec->isInitialized || hIvasDec->hasBeenFedFrame ) + { + if ( hIvasDec->nSamplesAvailableNext == 0 || hIvasDec->nSamplesAvailableNext == hIvasDec->nSamplesFrame ) + { + uint16_t nSamplesFlushed_ref = hIvasDec->nSamplesFlushed; + + if ( ( error = IVAS_DEC_GetSamplesDecoder( hIvasDec, 0, 0 ) ) != IVAS_ERR_OK ) + { + return error; + } + + hIvasDec->nSamplesFlushed = nSamplesFlushed_ref; + + *bitstreamReadDone = false; + } + } +#endif + #ifdef OBJ_EDITING_API nSamplesToRender = nSamplesPerChannel - *nSamplesRendered; #else @@ -3487,7 +3916,6 @@ ivas_error IVAS_DEC_VoIP_GetSamples( /* check if we still need to prepare the renderer */ if ( hIvasDec->hasBeenPreparedRendering == false ) { - if ( ( error = IVAS_DEC_PrepareRenderer( hIvasDec ) ) != IVAS_ERR_OK ) { return error; @@ -3495,9 +3923,9 @@ ivas_error IVAS_DEC_VoIP_GetSamples( } #endif - /* render IVAS frames directly to the output buffer */ + /* render IVAS frames directly to the output buffer */ #ifdef OBJ_EDITING_API - if ( ( error = IVAS_DEC_GetSamples( hIvasDec, nSamplesToRender, pcmType, pcm_buffer_offset( pcmBuf, pcmType, *nSamplesRendered * nOutChannels ), &nSamplesRendered_loop, &tmp ) ) != IVAS_ERR_OK ) + if ( ( error = IVAS_DEC_GetSamplesRenderer( hIvasDec, nSamplesToRender, pcmType, pcm_buffer_offset( pcmBuf, pcmType, *nSamplesRendered * nOutChannels ), &nSamplesRendered_loop, &tmp ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_GetSamples( hIvasDec, nSamplesToRender, pcmType, pcm_buffer_offset( pcmBuf, pcmType, nSamplesRendered * nOutChannels ), &nSamplesRendered_loop, &tmp ) ) != IVAS_ERR_OK ) #endif @@ -3561,13 +3989,11 @@ ivas_error IVAS_DEC_Flush( uint16_t nSamplesToRender; uint16_t nSamplesFlushedLocal; -#ifdef FIX_VOIP_FUNCTIONS if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } -#endif *nSamplesFlushed = min( nSamplesPerChannel, hIvasDec->nSamplesAvailableNext ); nSamplesToRender = (uint16_t) *nSamplesFlushed; @@ -3596,13 +4022,11 @@ bool IVAS_DEC_VoIP_IsEmpty( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ const int16_t nSamplesAsked ) { -#ifdef FIX_VOIP_FUNCTIONS if ( hIvasDec == NULL || hIvasDec->hVoIP == NULL ) { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } -#endif return ( ( JB4_bufferedDataUnits( hIvasDec->hVoIP->hJBM ) == 0 ) && ( hIvasDec->nSamplesAvailableNext < nSamplesAsked ) ); } @@ -3709,11 +4133,7 @@ ivas_error IVAS_DEC_GetJbmData( ) { -#ifdef FIX_VOIP_FUNCTIONS if ( hIvasDec == NULL || hIvasDec->hVoIP == NULL || JbmTraceData == NULL ) -#else - if ( hIvasDec->hVoIP == NULL ) -#endif { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } @@ -4004,6 +4424,13 @@ static ivas_error printConfigInfo_dec( { fprintf( stdout, "Acoustic environment ID:ON\n" ); } +#ifdef OBJ_EDITING_COMMANDLINE + + if ( st_ivas->hDecoderConfig->Opt_ObjEdit_on ) + { + fprintf( stdout, "Objects editing : ON\n" ); + } +#endif } /*-----------------------------------------------------------------* @@ -4025,29 +4452,19 @@ static ivas_error printConfigInfo_dec( * Print decoder set-up info *---------------------------------------------------------------------*/ -#ifdef FIX_VOIP_FUNCTIONS ivas_error IVAS_DEC_PrintConfig( -#else -void IVAS_DEC_PrintConfig( -#endif const IVAS_DEC_HANDLE hIvasDec, const bool quietModeEnabled, const bool voipMode ) { -#ifdef FIX_VOIP_FUNCTIONS if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } -#endif printConfigInfo_dec( hIvasDec->st_ivas, hIvasDec->bitstreamformat, voipMode, quietModeEnabled ); -#ifdef FIX_VOIP_FUNCTIONS return IVAS_ERR_OK; -#else - return; -#endif } diff --git a/lib_dec/lib_dec.h b/lib_dec/lib_dec.h index 50476c964b..fb5cee39fa 100644 --- a/lib_dec/lib_dec.h +++ b/lib_dec/lib_dec.h @@ -123,7 +123,7 @@ ivas_error IVAS_DEC_Configure( const uint32_t sampleRate, /* i : output sampling frequency */ const IVAS_AUDIO_CONFIG outputConfig, /* i : audio configuration */ const bool tsmEnabled, /* i : enable TSM */ - const IVAS_RENDER_FRAMESIZE renderFramesize, /* i : rendering frame size */ + const IVAS_RENDER_FRAMESIZE renderFramesize,/* i : rendering frame size */ const bool customLsOutputEnabled, /* i : enable custom loudspeaker setup handle */ const bool hrtfReaderEnabled, /* i : enable HRTF binary file input */ const bool enableHeadRotation, /* i : enable head rotation for binaural output */ @@ -134,6 +134,9 @@ ivas_error IVAS_DEC_Configure( const float non_diegetic_pan_gain, /* i : non diegetic panning gain */ const bool dpidEnabled, /* i : enable directivity pattern option */ const uint16_t acousticEnvironmentId, /* i : Acoustic environment ID */ +#ifdef OBJ_EDITING_COMMANDLINE + const bool objEditEnabled, /* i : enable object editing */ +#endif const bool delayCompensationEnabled /* i : enable delay compensation */ ); @@ -149,23 +152,47 @@ ivas_error IVAS_DEC_FeedFrame_Serial( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ uint16_t *serial, /* i : buffer containing serial input bitstream. Each bit should be stored as a single uint16_t value */ const uint16_t num_bits, /* i : number of bits in input bitstream */ +#ifdef FIX_HRTF_LOAD + int16_t bfi /* i : bad frame indicator flag */ +#else +#ifdef OBJ_EDITING_API + int16_t bfi, /* i : bad frame indicator flag */ + const int16_t isSplitRend, /* i : split rendering enabled flag */ + ISAR_SPLIT_REND_BITS_DATA *splitRendBits /* o : output split rendering bits */ +#else int16_t bfi /* i : bad frame indicator flag */ -#if defined( OBJ_EDITING_API ) - , - int16_t isSplitRend, - ISAR_SPLIT_REND_BITS_DATA *splitRendBits +#endif #endif ); +#ifdef FIX_HRTF_LOAD +ivas_error IVAS_DEC_ReadFormat( + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + IVAS_BIN_RENDERER_TYPE *binaural_renderer, /* o : binaural renderer type */ + IVAS_BIN_RENDERER_TYPE *binaural_renderer_sec,/* o: secondary binaural renderer type */ + int16_t *room_reverb_flag, /* o : room reverb flag */ + IVAS_AUDIO_CONFIG *intern_audio_config /* o : internal audio configuration */ +); + +#endif +#if( defined FIX_HRTF_LOAD || defined OBJ_EDITING_API) +/*! r: decoder error code */ +ivas_error IVAS_DEC_GetSamplesDecoder( + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + const int16_t isSplitRend, /* i : split rendering enabled flag */ + ISAR_SPLIT_REND_BITS_DATA *splitRendBits /* o : output split rendering bits */ +); + +#endif #ifdef OBJ_EDITING_API ivas_error IVAS_DEC_GetEditableParameters( - IVAS_DEC_HANDLE hIvasDec, - IVAS_EDITABLE_PARAMETERS *hIvasEditableParameters + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + IVAS_EDITABLE_PARAMETERS *hIvasEditableParameters /* o : object editing parameters handle */ ); ivas_error IVAS_DEC_SetEditableParameters( - IVAS_DEC_HANDLE hIvasDec, - IVAS_EDITABLE_PARAMETERS hIvasEditableParameters + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + IVAS_EDITABLE_PARAMETERS hIvasEditableParameters /* i : object editing parameters handle */ ); ivas_error IVAS_DEC_PrepareRenderer( @@ -174,7 +201,11 @@ ivas_error IVAS_DEC_PrepareRenderer( #endif /*! r: decoder error code */ +#ifdef OBJ_EDITING_API +ivas_error IVAS_DEC_GetSamplesRenderer( +#else ivas_error IVAS_DEC_GetSamples( +#endif IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ const int16_t nSamplesAsked, /* i : number of samples wanted by the caller */ const IVAS_DEC_PCM_TYPE pcmType, /* i : type for the decoded PCM resolution */ @@ -299,16 +330,18 @@ ivas_error IVAS_DEC_VoIP_GetSamples( uint16_t nSamplesPerChannel, /* i : number of samples per channel requested to be written to output buffer */ const IVAS_DEC_PCM_TYPE pcmType, /* i : type for the decoded PCM resolution */ void *pcmBuf, /* o : output synthesis signal */ - const uint32_t systemTimestamp_ms /* i : current system timestamp */ #ifdef SUPPORT_JBM_TRACEFILE - , JbmTraceFileWriterFn jbmWriterFn, - void* jbmWriter + JbmTraceFileWriterFn jbmWriterFn, + void *jbmWriter, +#endif +#ifdef FIX_HRTF_LOAD + bool *bitstreamReadDone, /* o : flag indicating that bitstream was read */ #endif #ifdef OBJ_EDITING_API - , - uint16_t *nSamplesRendered, - bool *parametersAvailableForEditing + uint16_t *nSamplesRendered, /* o : number of samples rendered */ + bool *parametersAvailableForEditing, /* o : indicates whether objects editing is available */ #endif + const uint32_t systemTimestamp_ms /* i : current system timestamp */ ); ivas_error IVAS_DEC_Flush( @@ -451,6 +484,18 @@ ivas_error IVAS_DEC_GetHrtfStatisticsHandle( IVAS_DEC_HRTF_STATISTICS_HANDLE **hHrtfStatistics /* o : HRTF statistics handle */ ); +#ifdef FIX_HRTF_LOAD +ivas_error IVAS_DEC_HRTF_binary_open( + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + const IVAS_BIN_RENDERER_TYPE binaural_renderer /* i : binaural renderer type */ +); + +ivas_error IVAS_DEC_HRTF_binary_close( + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + const IVAS_BIN_RENDERER_TYPE binaural_renderer_old /* i : previous binaural renderer type */ +); + +#endif /*! r: error code*/ ivas_error IVAS_DEC_GetRenderConfig( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ @@ -513,11 +558,7 @@ const char *IVAS_DEC_GetErrorMessage( ivas_error error /* i : decoder error code enum */ ); -#ifdef FIX_VOIP_FUNCTIONS ivas_error IVAS_DEC_PrintConfig( -#else -void IVAS_DEC_PrintConfig( -#endif const IVAS_DEC_HANDLE hIvasDec, /* i : IVAS decoder handle */ const bool quietModeEnabled, /* i : quiet mode flag: if true, reduces the amount of config info printed */ const bool voipMode diff --git a/lib_dec/tonalMDCTconcealment.c b/lib_dec/tonalMDCTconcealment.c index 9ed4a298e6..12b5236964 100644 --- a/lib_dec/tonalMDCTconcealment.c +++ b/lib_dec/tonalMDCTconcealment.c @@ -545,7 +545,11 @@ void TonalMDCTConceal_InsertNoise( for ( l = crossOverFreq; l < hTonalMDCTConc->lastBlockData.nSamples; l++ ) { +#ifdef NONBE_FIX_1212_TONAL_MDCT_CONCEALMENT + mdctSpectrum[l] = 0.0f; +#else mdctSpectrum[l] = hTonalMDCTConc->lastBlockData.spectralData[l]; +#endif } } /* actual fadeout is done in this case */ diff --git a/lib_enc/ivas_cpe_enc.c b/lib_enc/ivas_cpe_enc.c index a3a2bec257..292cbd6a5f 100644 --- a/lib_enc/ivas_cpe_enc.c +++ b/lib_enc/ivas_cpe_enc.c @@ -471,6 +471,10 @@ ivas_error ivas_cpe_enc( for ( n = 0; n < n_CoreChannels; n++ ) { +#ifdef DEBUGGING + st_ivas->noClipping += check_clipping( hCPE->hCoreCoder[n]->input, input_frame, &st_ivas->maxOverload, &st_ivas->minOverload ); + +#endif error = pre_proc_front_ivas( NULL, hCPE, hCPE->element_brate, nb_bits_metadata, input_frame, n, old_inp_12k8[n], old_inp_16k[n], &ener[n], &relE[n], A[n], Aw[n], epsP[n], lsp_new[n], lsp_mid[n], &vad_hover_flag[n], &attack_flag[n], realBuffer[n], imagBuffer[n], old_wsp[n], pitch_fr[n], voicing_fr[n], &loc_harm[n], &cor_map_sum[n], &vad_flag_dtx[n], enerBuffer[n], diff --git a/lib_enc/ivas_init_enc.c b/lib_enc/ivas_init_enc.c index 05621dfaaa..c4ad5e3c9c 100644 --- a/lib_enc/ivas_init_enc.c +++ b/lib_enc/ivas_init_enc.c @@ -161,9 +161,11 @@ void ivas_write_format_sid( case ISM_FORMAT: ind = SID_ISM; break; +#ifndef FIX_1209_SID_SIGNALING case MC_FORMAT: ind = SID_MULTICHANNEL; break; +#endif case SBA_FORMAT: switch ( element_mode ) { @@ -410,6 +412,11 @@ ivas_error ivas_init_encoder( st_ivas->nchan_transport = -1; +#ifdef DEBUGGING + st_ivas->noClipping = 0; + st_ivas->maxOverload = 0; + st_ivas->minOverload = 0; +#endif /*-----------------------------------------------------------------* * Allocate floating-point input audio buffers *-----------------------------------------------------------------*/ diff --git a/lib_enc/ivas_ism_enc.c b/lib_enc/ivas_ism_enc.c index 6e2732f44a..c72431bd0b 100644 --- a/lib_enc/ivas_ism_enc.c +++ b/lib_enc/ivas_ism_enc.c @@ -172,6 +172,10 @@ ivas_error ivas_ism_enc( * Front Pre-processing *----------------------------------------------------------------*/ +#ifdef DEBUGGING + st_ivas->noClipping += check_clipping( hSCE->hCoreCoder[0]->input, input_frame, &st_ivas->maxOverload, &st_ivas->minOverload ); + +#endif error = pre_proc_front_ivas( hSCE, NULL, hSCE->element_brate, nb_bits_metadata[sce_id], input_frame, 0, old_inp_12k8[sce_id][0], old_inp_16k[sce_id][0], &ener[sce_id][0], &relE[sce_id][0], A[sce_id][0], Aw[sce_id][0], epsP[sce_id][0], lsp_new[sce_id][0], lsp_mid[sce_id][0], &vad_hover_flag[sce_id][0], &attack_flag[sce_id][0], realBuffer[sce_id][0], imagBuffer[sce_id][0], old_wsp[sce_id][0], pitch_fr[sce_id][0], voicing_fr[sce_id][0], &loc_harm[sce_id][0], &cor_map_sum[sce_id][0], &vad_flag_dtx[sce_id][0], enerBuffer[sce_id][0], diff --git a/lib_enc/ivas_masa_enc.c b/lib_enc/ivas_masa_enc.c index fcaad77e88..47571ae858 100644 --- a/lib_enc/ivas_masa_enc.c +++ b/lib_enc/ivas_masa_enc.c @@ -1765,14 +1765,7 @@ static void reduce_metadata_further( /* Copy spread coherence to the rest of subframes for the coherence coding algorithm. */ for ( sf = 1; sf < MAX_PARAM_SPATIAL_SUBFRAMES; sf++ ) { -#ifdef NONBE_FIX_1174_MCMASA_LBR_LOOP_ERROR hqmetadata->q_direction[0].coherence_band_data[band].spread_coherence[sf] = hqmetadata->q_direction[0].coherence_band_data[band].spread_coherence[0]; -#else - for ( band = 0; band < numCodingBands; band++ ) - { - hqmetadata->q_direction[0].coherence_band_data[band].spread_coherence[sf] = hqmetadata->q_direction[0].coherence_band_data[band].spread_coherence[0]; - } -#endif } /* Surround coherence is already merged through time */ diff --git a/lib_enc/ivas_sce_enc.c b/lib_enc/ivas_sce_enc.c index 8f5d472ea9..257e806195 100644 --- a/lib_enc/ivas_sce_enc.c +++ b/lib_enc/ivas_sce_enc.c @@ -180,6 +180,10 @@ ivas_error ivas_sce_enc( * Front Pre-processing *----------------------------------------------------------------*/ +#ifdef DEBUGGING + st_ivas->noClipping += check_clipping( hSCE->hCoreCoder[0]->input, input_frame, &st_ivas->maxOverload, &st_ivas->minOverload ); + +#endif error = pre_proc_front_ivas( hSCE, NULL, hSCE->element_brate, nb_bits_metadata, input_frame, 0, old_inp_12k8[0], old_inp_16k[0], &ener[0], &relE[0], A[0], Aw[0], epsP[0], lsp_new[0], lsp_mid[0], &vad_hover_flag[0], &attack_flag[0], realBuffer[0], imagBuffer[0], old_wsp[0], pitch_fr[0], voicing_fr[0], &loc_harm[0], &cor_map_sum[0], &vad_flag_dtx[0], enerBuffer[0], diff --git a/lib_enc/ivas_stat_enc.h b/lib_enc/ivas_stat_enc.h index 4bb9a5f417..ad844b95d5 100644 --- a/lib_enc/ivas_stat_enc.h +++ b/lib_enc/ivas_stat_enc.h @@ -1246,6 +1246,11 @@ typedef struct int16_t nCPE; /* number of total CPEs */ SCE_ENC_HANDLE hSCE[MAX_SCE]; /* SCE handles */ CPE_ENC_HANDLE hCPE[MCT_MAX_BLOCKS]; /* CPE handles */ +#ifdef DEBUGGING + int32_t noClipping; /* number of clipped samples */ + float maxOverload; /* Maximum overload value */ + float minOverload; /* Maximum overload value */ +#endif /* multichannel modules */ ISM_METADATA_HANDLE hIsmMetaData[MAX_NUM_OBJECTS]; /* ISM metadata handles (storage for one frame of read ISM metadata) */ diff --git a/lib_enc/lib_enc.c b/lib_enc/lib_enc.c index 23e666a7f0..acc1358db6 100644 --- a/lib_enc/lib_enc.c +++ b/lib_enc/lib_enc.c @@ -2417,3 +2417,23 @@ static void init_encoder_config( return; } + +#ifdef DEBUGGING + +/*---------------------------------------------------------------------* + * IVAS_ENC_GetNoCLipping() + * + * return number of clipped samples + *---------------------------------------------------------------------*/ + +int32_t IVAS_ENC_GetNoCLipping( + IVAS_ENC_HANDLE hIvasEnc, /* i : IVAS encoder handle */ + float *maxOverload, /* o : Max overload value */ + float *minOverload /* o : Min overload value */ +) +{ + *maxOverload = hIvasEnc->st_ivas->maxOverload; + *minOverload = hIvasEnc->st_ivas->minOverload; + return hIvasEnc->st_ivas->noClipping; +} +#endif diff --git a/lib_enc/lib_enc.h b/lib_enc/lib_enc.h index 2f40c1ab1b..7ece666652 100644 --- a/lib_enc/lib_enc.h +++ b/lib_enc/lib_enc.h @@ -383,6 +383,13 @@ void IVAS_ENC_PrintDisclaimer( void ); +#ifdef DEBUGGING +int32_t IVAS_ENC_GetNoCLipping( + IVAS_ENC_HANDLE hIvasEnc, /* i : IVAS encoder handle */ + float *maxOverload, /* o : Max overload value */ + float *minOverload /* o : Min overload value */ +); +#endif /* clang-format on */ #endif /* LIB_ENC_H */ diff --git a/lib_isar/lib_isar_post_rend.c b/lib_isar/lib_isar_post_rend.c index 101768bb34..38c25ff21a 100644 --- a/lib_isar/lib_isar_post_rend.c +++ b/lib_isar/lib_isar_post_rend.c @@ -1116,7 +1116,11 @@ ivas_error ISAR_POST_REND_InitConfig( hIvasRend->splitRenderConfig.isar_frame_size_ms = 0; /* 0 means "use default for selected codec" */ hIvasRend->splitRenderConfig.codec = ISAR_SPLIT_REND_CODEC_DEFAULT; hIvasRend->splitRenderConfig.poseCorrectionMode = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB; +#ifdef FIX_HRTF_LOAD + hIvasRend->splitRenderConfig.rendererSelection = IVAS_BIN_RENDERER_TYPE_DEFAULT; +#else hIvasRend->splitRenderConfig.rendererSelection = ISAR_SPLIT_REND_RENDERER_SELECTION_DEFAULT; +#endif } return IVAS_ERR_OK; diff --git a/lib_rend/ivas_dirac_dec_binaural_functions.c b/lib_rend/ivas_dirac_dec_binaural_functions.c index 4e23dc51e9..19b08dbe81 100644 --- a/lib_rend/ivas_dirac_dec_binaural_functions.c +++ b/lib_rend/ivas_dirac_dec_binaural_functions.c @@ -245,9 +245,33 @@ ivas_error ivas_dirac_dec_init_binaural_data( if ( hDiracDecBin->hReverb == NULL && pos_idx == 0 ) /* open reverb only for the main direction */ { #ifdef FIX_587_DEFAULT_REVERB - if ( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, st_ivas->hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, pRoomAcoustics, output_Fs, ( *phHrtfParambin )->parametricReverberationTimes, ( *phHrtfParambin )->parametricReverberationEneCorrections ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, + st_ivas->hHrtfStatistics, + nBins, + CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, + pRoomAcoustics, + output_Fs, + ( *phHrtfParambin )->parametricReverberationTimes, + ( *phHrtfParambin )->parametricReverberationEneCorrections +#ifdef FIX_1139_REV_COLORATION_SHORT_T60 + , + hDiracDecBin->earlyPartEneCorrection +#endif + ) ) != IVAS_ERR_OK ) #else - if ( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, st_ivas->hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( st_ivas->hRenderConfig->roomAcoustics ), output_Fs, ( *phHrtfParambin )->parametricReverberationTimes, ( *phHrtfParambin )->parametricReverberationEneCorrections ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, + st_ivas->hHrtfStatistics, + nBins, + CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, + &( st_ivas->hRenderConfig->roomAcoustics ), + output_Fs, + ( *phHrtfParambin )->parametricReverberationTimes, + ( *phHrtfParambin )->parametricReverberationEneCorrections +#ifdef FIX_1139_REV_COLORATION_SHORT_T60 + , + hDiracDecBin->earlyPartEneCorrection +#endif + ) ) != IVAS_ERR_OK ) #endif { return error; @@ -1222,6 +1246,7 @@ static void ivas_dirac_dec_binaural_formulate_target_covariance_matrices( uint16_t ismDirIndex; ismDirIndex = dirIndex - hSpatParamRendCom->numParametricDirections; assert( hMasaIsmData != NULL && "hMasaIsmData should not be NULL if we use it" ); + #ifdef OMASA_OBJECT_EDITING if ( hMasaIsmData->ism_dir_is_edited[ismDirIndex] ) { @@ -2991,7 +3016,6 @@ void ivas_omasa_preProcessStereoTransportsForEditedObjects( float masaEneThisCh[2]; float ratioAccNewDivisor; - gainMasaPow2 = 1.0f; if ( masaGainEdited ) { @@ -3025,6 +3049,7 @@ void ivas_omasa_preProcessStereoTransportsForEditedObjects( panGainsOut[ismDirIndex][ch] = panGainsIn[ismDirIndex][ch]; } } + /* Determine pan enes */ for ( ch = 0; ch < 2; ch++ ) { @@ -3193,15 +3218,17 @@ void ivas_omasa_preProcessStereoTransportsForEditedObjects( #endif /* Limit target energies to non-negative values */ - for ( ch = 0; ch < 2; ch++ ) - { - totalTargetEneCh[ch] = max( totalTargetEneCh[ch], 0.0f ); - } - - /* Diffuse ratio accumulation based on gaining */ +#ifdef NONBE_FIX_1197_OMASA_META_BUFFER + /* due to rounding, the sum may exceed 1.0f ever so slightly, so clip it */ + ratioAccOrig = min( ratioAccOrig, 1.0f ); +#endif if ( masaGainEdited ) { +#ifdef NONBE_FIX_1197_OMASA_META_BUFFER + ratioAccNew += gainMasaPow2 * ( 1.0f - ratioAccOrig ); +#else ratioAccNew += gainMasaPow2 * ( 1 - ratioAccOrig ); +#endif } else { diff --git a/lib_rend/ivas_objectRenderer.c b/lib_rend/ivas_objectRenderer.c index dbe5cc8d06..4b1c5764b7 100644 --- a/lib_rend/ivas_objectRenderer.c +++ b/lib_rend/ivas_objectRenderer.c @@ -552,6 +552,7 @@ ivas_error TDREND_Update_object_positions( { return error; } + #ifdef OBJ_EDITING_INTERFACE if ( ( error = TDREND_MIX_SRC_SetGain( hBinRendererTd, nS, hIsmMetaData[nS]->gain ) ) != IVAS_ERR_OK ) { diff --git a/lib_rend/ivas_objectRenderer_sources.c b/lib_rend/ivas_objectRenderer_sources.c index 4f570e6182..6079f93b5b 100644 --- a/lib_rend/ivas_objectRenderer_sources.c +++ b/lib_rend/ivas_objectRenderer_sources.c @@ -106,7 +106,7 @@ ivas_error TDREND_MIX_SRC_SetPos( --------------------------------------------------------------------*/ ivas_error TDREND_MIX_SRC_SetDir( - BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o: TD renderer handle */ + BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o: TD renderer handle */ const int16_t SrcInd, /* i : Source index */ const float *Vec_p /* i : Direction vector */ ) @@ -132,17 +132,18 @@ ivas_error TDREND_MIX_SRC_SetDir( return IVAS_ERR_OK; } + #ifdef OBJ_EDITING_INTERFACE /*-------------------------------------------------------------------* - * TDREND_MIX_SRC_SetSourceGain() + * TDREND_MIX_SRC_SetGain() * * Set source gain --------------------------------------------------------------------*/ ivas_error TDREND_MIX_SRC_SetGain( - BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o: TD renderer handle */ - const int16_t SrcInd, /* i : Source index */ - const float Gain /* i : Gain */ + BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o: TD renderer handle */ + const int16_t SrcInd, /* i : Source index */ + const float Gain /* i : Gain */ ) { TDREND_SRC_SPATIAL_SetGain( hBinRendererTd->Sources[SrcInd], Gain ); @@ -151,6 +152,7 @@ ivas_error TDREND_MIX_SRC_SetGain( } #endif + /*-------------------------------------------------------------------* * TDREND_MIX_SRC_SetDirAtten() * @@ -158,7 +160,7 @@ ivas_error TDREND_MIX_SRC_SetGain( --------------------------------------------------------------------*/ ivas_error TDREND_MIX_SRC_SetDirAtten( - BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o: TD renderer handle */ + BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o: TD renderer handle */ const int16_t SrcInd, /* i : Source index */ const TDREND_DirAtten_t *DirAtten_p /* i : Directional attenuation specifier */ ) @@ -570,9 +572,12 @@ static void TDREND_SRC_SPATIAL_SetGain( ) { Src_p->SrcRend_p->SrcGain_p[0] = Gain; + + return; } #endif + /*-------------------------------------------------------------------* * TDREND_SRC_SPATIAL_GetDirGain() * diff --git a/lib_rend/ivas_prot_rend.h b/lib_rend/ivas_prot_rend.h index 8e6980b054..b3a826e71e 100644 --- a/lib_rend/ivas_prot_rend.h +++ b/lib_rend/ivas_prot_rend.h @@ -722,9 +722,9 @@ ivas_error TDREND_MIX_SRC_SetDir( #ifdef OBJ_EDITING_INTERFACE ivas_error TDREND_MIX_SRC_SetGain( - BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o: TD renderer handle */ - const int16_t SrcInd, /* i : Source index */ - const float Gain /* i : Gain */ + BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o: TD renderer handle */ + const int16_t SrcInd, /* i : Source index */ + const float Gain /* i : Gain */ ); #endif @@ -746,9 +746,9 @@ ivas_error TDREND_MIX_SRC_SetPlayState( #ifdef OBJ_EDITING_API ivas_error TDREND_MIX_SRC_SetSrcGain( - BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o: TD renderer handle */ - const int16_t SrcInd, /* i : Source index */ - const float SrcGain_p /* i : Source gain */ + BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o: TD renderer handle */ + const int16_t SrcInd, /* i : Source index */ + const float SrcGain_p /* i : Source gain */ ); #endif @@ -938,9 +938,12 @@ ivas_error ivas_binaural_reverb_init( const int32_t sampling_rate, /* i : sampling rate */ const float *defaultTimes, /* i : default reverberation times */ const float *defaultEne /* i : default reverberation energies */ + #ifdef FIX_1139_REV_COLORATION_SHORT_T60 + , + float *earlyEne /* i/o: Early part energies to be modified */ + #endif ); - void ivas_binaural_reverb_close( REVERB_STRUCT_HANDLE *hReverb /* i/o: binaural reverb handle */ ); diff --git a/lib_rend/ivas_render_config.c b/lib_rend/ivas_render_config.c index eabaf2d4cb..950e9ee8bf 100644 --- a/lib_rend/ivas_render_config.c +++ b/lib_rend/ivas_render_config.c @@ -148,7 +148,11 @@ ivas_error ivas_render_config_init_from_rom( ( *hRenderConfig )->split_rend_config.codec_frame_size_ms = 0; /* 0 means "use default for selected codec" */ ( *hRenderConfig )->split_rend_config.codec = ISAR_SPLIT_REND_CODEC_DEFAULT; ( *hRenderConfig )->split_rend_config.poseCorrectionMode = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB; +#ifdef FIX_HRTF_LOAD + ( *hRenderConfig )->split_rend_config.rendererSelection = IVAS_BIN_RENDERER_TYPE_DEFAULT; +#else ( *hRenderConfig )->split_rend_config.rendererSelection = ISAR_SPLIT_REND_RENDERER_SELECTION_DEFAULT; +#endif ( *hRenderConfig )->split_rend_config.lc3plus_highres = 0; return IVAS_ERR_OK; diff --git a/lib_rend/ivas_reverb.c b/lib_rend/ivas_reverb.c index eb3c05a0cc..bc3bd4c605 100644 --- a/lib_rend/ivas_reverb.c +++ b/lib_rend/ivas_reverb.c @@ -56,6 +56,10 @@ #define CLDFB_SLOTS_PER_SECOND 800 /* Used for initializing reverb */ +#ifdef FIX_1139_REV_COLORATION_SHORT_T60 +#define REV_TIME_THRESHOLD ( 0.2f ) +#endif + #define INNER_BLK_SIZE 80 /* size of data blocks used for more efficient delay line and IIR filter processing */ /* should be a divisor of the frame length at any sampling rate and an even number*/ #define FFT_FILTER_WND_FLAT_REGION ( 0.40f ) /* flat section (==1) length of FFT filter window, in proportion to overlap */ @@ -254,6 +258,19 @@ static void ivas_binaural_reverb_setReverbTimes( } currentEnergy *= attenuationFactorPerSampleSq; } +#ifdef FIX_1139_REV_COLORATION_SHORT_T60 + /* In some configurations with small T60s it is possible the number of taps randomizes to zero. + Ensure at least 1 filter tap. */ + if ( tap == 0 ) + { + hReverb->tapPhaseShiftType[bin][ch][0] = (int16_t) ( binRend_rand( hReverb ) % 4 ); + hReverb->tapPointersReal[bin][ch][0] = &( hReverb->loopBufReal[bin][0] ); + hReverb->tapPointersImag[bin][ch][0] = &( hReverb->loopBufImag[bin][0] ); + tap = 1; + actualizedEnergy = 1; + } +#endif + hReverb->taps[bin][ch] = tap; /* Number of taps determined at the above random procedure */ } @@ -1864,14 +1881,24 @@ ivas_error ivas_binaural_reverb_init( const int32_t sampling_rate, /* i : sampling rate */ const float *defaultTimes, /* i : default reverberation times */ const float *defaultEne /* i : default reverberation energies */ +#ifdef FIX_1139_REV_COLORATION_SHORT_T60 + , + float *earlyEne /* i/o: Early part energies to be modified */ +#endif ) { ivas_error error; +#ifdef FIX_1139_REV_COLORATION_SHORT_T60 + int16_t preDelay, bin; + float revTimes[CLDFB_NO_CHANNELS_MAX]; + float revEne[CLDFB_NO_CHANNELS_MAX]; +#else const float *revTimes; const float *revEne; float t60[CLDFB_NO_CHANNELS_MAX]; float ene[CLDFB_NO_CHANNELS_MAX]; int16_t preDelay; +#endif error = IVAS_ERR_OK; @@ -1881,10 +1908,22 @@ ivas_error ivas_binaural_reverb_init( if ( ( roomAcoustics != NULL ) && roomAcoustics->override ) #endif { +#ifndef FIX_1139_REV_COLORATION_SHORT_T60 revTimes = t60; revEne = ene; +#endif - if ( ( error = ivas_reverb_prepare_cldfb_params( roomAcoustics, hHrtfStatistics, sampling_rate, t60, ene ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_reverb_prepare_cldfb_params( roomAcoustics, + hHrtfStatistics, + sampling_rate, +#ifdef FIX_1139_REV_COLORATION_SHORT_T60 + revTimes, + revEne +#else + t60, + ene +#endif + ) ) != IVAS_ERR_OK ) { return error; } @@ -1892,11 +1931,47 @@ ivas_error ivas_binaural_reverb_init( } else { +#ifdef FIX_1139_REV_COLORATION_SHORT_T60 + for ( bin = 0; bin < CLDFB_NO_CHANNELS_MAX; bin++ ) + { + revTimes[bin] = defaultTimes[bin]; + revEne[bin] = defaultEne[bin]; + } +#else revTimes = defaultTimes; revEne = defaultEne; +#endif preDelay = 10; } +#ifdef FIX_1139_REV_COLORATION_SHORT_T60 + for ( bin = 0; bin < CLDFB_NO_CHANNELS_MAX; bin++ ) + { + /* Adjust the room effect parameters when the reverberation time is less than a threshold value, to avoid + spectral artefacts with the synthetic reverberator. */ + if ( revTimes[bin] < REV_TIME_THRESHOLD ) + { + float adjustedEarlyEne, adjustedLateEne, adjustedRevTime; + float revTimeModifier, energyModifier; + + /* Adjust reverberation times, higher towards a threshold */ + revTimeModifier = fmaxf( 0.0f, 1.0f - ( revTimes[bin] / REV_TIME_THRESHOLD ) ); + adjustedRevTime = ( 1.0f - revTimeModifier ) * revTimes[bin]; + adjustedRevTime += revTimeModifier * ( revTimes[bin] + REV_TIME_THRESHOLD ) * 0.5f; + energyModifier = ( adjustedRevTime - revTimes[bin] ) / adjustedRevTime; + + /* Adjust early and late energies, by moving late energy to early energy */ + adjustedEarlyEne = earlyEne[bin] + revEne[bin] * energyModifier; + adjustedLateEne = revEne[bin] * ( 1.0f - energyModifier ); + + /* Store adjusted room effect parameters to be used in reverb processing */ + revTimes[bin] = adjustedRevTime; + revEne[bin] = adjustedLateEne; + earlyEne[bin] = adjustedEarlyEne; + } + } +#endif + error = ivas_binaural_reverb_open( hReverbPr, numBins, numCldfbSlotsPerFrame, sampling_rate, revTimes, revEne, preDelay ); return error; diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index 264b68bf12..1d16f0d2f0 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -2509,7 +2509,11 @@ static ivas_error updateSbaPanGains( case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED: case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM: { +#ifdef FIX_HRTF_LOAD + if ( hRendCfg->split_rend_config.rendererSelection == IVAS_BIN_RENDERER_TYPE_FASTCONV ) +#else if ( hRendCfg->split_rend_config.rendererSelection == ISAR_SPLIT_REND_RENDERER_SELECTION_FASTCONV ) +#endif { assert( *rendCtx.pOutSampleRate == 48000 && "split binaural fast conv mode is currently supported with 48k sampling rate only" ); if ( ( error = ivas_rend_openCldfbRend( &inputSba->cldfbRendWrapper, inConfig, outConfig, &rendCtx.pSplitRendWrapper->multiBinPoseData, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) @@ -2529,7 +2533,11 @@ static ivas_error updateSbaPanGains( } case IVAS_AUDIO_CONFIG_BINAURAL: case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB: +#ifdef FIX_HRTF_LOAD + if ( hRendCfg->split_rend_config.rendererSelection == IVAS_BIN_RENDERER_TYPE_FASTCONV ) +#else if ( hRendCfg->split_rend_config.rendererSelection == ISAR_SPLIT_REND_RENDERER_SELECTION_FASTCONV ) +#endif { if ( ( error = ivas_rend_openCldfbRend( &inputSba->cldfbRendWrapper, inConfig, outConfig, &rendCtx.pSplitRendWrapper->multiBinPoseData, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) { @@ -3372,7 +3380,11 @@ static int16_t getCldfbRendFlag( { isCldfbRend = 0; } +#ifdef FIX_HRTF_LOAD + else if ( ( numMasaInputs > 0 ) || ( numSbaInputs > 0 && hIvasRend->hRendererConfig->split_rend_config.rendererSelection == IVAS_BIN_RENDERER_TYPE_FASTCONV ) ) +#else else if ( ( numMasaInputs > 0 ) || ( numSbaInputs > 0 && hIvasRend->hRendererConfig->split_rend_config.rendererSelection == ISAR_SPLIT_REND_RENDERER_SELECTION_FASTCONV ) ) +#endif { isCldfbRend = 1; } @@ -3892,7 +3904,11 @@ ivas_error IVAS_REND_GetDelay( { if ( hIvasRend->splitRendWrapper != NULL && hIvasRend->splitRendWrapper->hBinHrSplitPreRend != NULL ) { +#ifdef FIX_HRTF_LOAD + if ( hIvasRend->hRendererConfig->split_rend_config.rendererSelection == IVAS_BIN_RENDERER_TYPE_FASTCONV ) +#else if ( hIvasRend->hRendererConfig->split_rend_config.rendererSelection == ISAR_SPLIT_REND_RENDERER_SELECTION_FASTCONV ) +#endif { latency_ns = hIvasRend->inputsSba[i].cldfbRendWrapper.binaural_latency_ns; } @@ -4312,7 +4328,19 @@ ivas_error IVAS_REND_FeedRenderConfig( if ( pMasaInput->hMasaExtRend->hDiracDecBin[0] != NULL && pMasaInput->hMasaExtRend->hDiracDecBin[0]->hReverb != NULL ) { ivas_binaural_reverb_close( &pMasaInput->hMasaExtRend->hDiracDecBin[0]->hReverb ); - if ( ( error = ivas_binaural_reverb_init( &pMasaInput->hMasaExtRend->hDiracDecBin[0]->hReverb, hIvasRend->hHrtfs.hHrtfStatistics, pMasaInput->hMasaExtRend->hSpatParamRendCom->num_freq_bands, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( hRenderConfig->roomAcoustics ), *pMasaInput->base.ctx.pOutSampleRate, NULL, NULL ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_binaural_reverb_init( &pMasaInput->hMasaExtRend->hDiracDecBin[0]->hReverb, + hIvasRend->hHrtfs.hHrtfStatistics, + pMasaInput->hMasaExtRend->hSpatParamRendCom->num_freq_bands, + CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, + &( hRenderConfig->roomAcoustics ), + *pMasaInput->base.ctx.pOutSampleRate, + NULL, + NULL +#ifdef FIX_1139_REV_COLORATION_SHORT_T60 + , + NULL +#endif + ) ) != IVAS_ERR_OK ) { return error; } @@ -4321,7 +4349,19 @@ ivas_error IVAS_REND_FeedRenderConfig( if ( pMasaInput->hMasaExtRend->hReverb != NULL ) { ivas_binaural_reverb_close( &pMasaInput->hMasaExtRend->hReverb ); - if ( ( error = ivas_binaural_reverb_init( &pMasaInput->hMasaExtRend->hReverb, hIvasRend->hHrtfs.hHrtfStatistics, pMasaInput->hMasaExtRend->hSpatParamRendCom->num_freq_bands, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( hRenderConfig->roomAcoustics ), *pMasaInput->base.ctx.pOutSampleRate, NULL, NULL ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_binaural_reverb_init( &pMasaInput->hMasaExtRend->hReverb, + hIvasRend->hHrtfs.hHrtfStatistics, + pMasaInput->hMasaExtRend->hSpatParamRendCom->num_freq_bands, + CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, + &( hRenderConfig->roomAcoustics ), + *pMasaInput->base.ctx.pOutSampleRate, + NULL, + NULL +#ifdef FIX_1139_REV_COLORATION_SHORT_T60 + , + NULL +#endif + ) ) != IVAS_ERR_OK ) { return error; } @@ -6540,7 +6580,11 @@ static ivas_error renderSbaToSplitBinaural( push_wmops( "renderSbaToSplitBinaural" ); +#ifdef FIX_HRTF_LOAD + if ( sbaInput->base.ctx.hhRendererConfig[0]->split_rend_config.rendererSelection == IVAS_BIN_RENDERER_TYPE_FASTCONV ) +#else if ( sbaInput->base.ctx.hhRendererConfig[0]->split_rend_config.rendererSelection == ISAR_SPLIT_REND_RENDERER_SELECTION_FASTCONV ) +#endif { renderSbaToMultiBinauralCldfb( sbaInput, Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, 1, getNumSubframesInBuffer( &outAudio, *sbaInput->base.ctx.pOutSampleRate ) ); @@ -6577,7 +6621,11 @@ static ivas_error renderSbaToBinaural( int16_t subframe_idx; push_wmops( "renderSbaToBinaural" ); +#ifdef FIX_HRTF_LOAD + if ( sbaInput->base.ctx.hhRendererConfig[0]->split_rend_config.rendererSelection == IVAS_BIN_RENDERER_TYPE_FASTCONV ) +#else if ( sbaInput->base.ctx.hhRendererConfig[0]->split_rend_config.rendererSelection == ISAR_SPLIT_REND_RENDERER_SELECTION_FASTCONV ) +#endif { float Cldfb_RealBuffer_Binaural[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer_Binaural[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; @@ -8408,9 +8456,33 @@ static ivas_error ivas_masa_ext_rend_parambin_init( if ( hDiracDecBin->hReverb == NULL && pos_idx == 0 ) /* open reverb only for the main direction */ { #ifdef FIX_587_DEFAULT_REVERB - if ( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, pRoomAcoustics, output_Fs, ( *phHrtfParambin )->parametricReverberationTimes, ( *phHrtfParambin )->parametricReverberationEneCorrections ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, + hHrtfStatistics, + nBins, + CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, + pRoomAcoustics, + output_Fs, + ( *phHrtfParambin )->parametricReverberationTimes, + ( *phHrtfParambin )->parametricReverberationEneCorrections +#ifdef FIX_1139_REV_COLORATION_SHORT_T60 + , + hDiracDecBin->earlyPartEneCorrection +#endif + ) ) != IVAS_ERR_OK ) #else - if ( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( hRendCfg->roomAcoustics ), output_Fs, ( *phHrtfParambin )->parametricReverberationTimes, ( *phHrtfParambin )->parametricReverberationEneCorrections ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, + hHrtfStatistics, + nBins, + CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, + &( hRendCfg->roomAcoustics ), + output_Fs, + ( *phHrtfParambin )->parametricReverberationTimes, + ( *phHrtfParambin )->parametricReverberationEneCorrections +#ifdef FIX_1139_REV_COLORATION_SHORT_T60 + , + hDiracDecBin->earlyPartEneCorrection +#endif + ) ) != IVAS_ERR_OK ) #endif { return error; diff --git a/lib_util/hrtf_file_reader.c b/lib_util/hrtf_file_reader.c index 640f2721e6..b4a0b24ea9 100644 --- a/lib_util/hrtf_file_reader.c +++ b/lib_util/hrtf_file_reader.c @@ -1437,6 +1437,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "renderer type not compliant" ); } + /* HRIR */ if ( rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) { @@ -1886,7 +1887,11 @@ static ivas_error create_parambin_HRTF_from_rawdata( ivas_error load_fastconv_HRTF_from_binary( IVAS_DEC_HRTF_FASTCONV_HANDLE hHrtfFastConv, /* i/o: FastConv HRTF handle */ - const hrtfFileReader *hrtfReader /* i : pointer to hrtfFileReader handle */ +#ifdef FIX_HRTF_LOAD + const int16_t room_reverb_flag, /* i : room reverb flag */ + const IVAS_AUDIO_CONFIG intern_audio_config, /* i : internal audio configuration */ +#endif + const hrtfFileReader *hrtfReader /* i : pointer to hrtfFileReader handle */ ) { FILE *f_hrtf; @@ -1934,7 +1939,17 @@ ivas_error load_fastconv_HRTF_from_binary( return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "HRTF binary file not compliant (number of HRTF)" ); } +#ifdef FIX_HRTF_LOAD + if ( ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV && + ( ( hrtf_header.input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA3 && intern_audio_config == IVAS_AUDIO_CONFIG_HOA3 ) || + ( hrtf_header.input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA2 && intern_audio_config == IVAS_AUDIO_CONFIG_HOA2 ) || + ( hrtf_header.input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_FOA && intern_audio_config == IVAS_AUDIO_CONFIG_FOA ) || + ( hrtf_header.input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) ) ) || + ( ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV || hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV_ROOM ) && room_reverb_flag == 1 ) || + ( ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV || hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV_ROOM ) && intern_audio_config == IVAS_AUDIO_CONFIG_INVALID ) ) +#else if ( ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV ) || ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV_ROOM ) ) +#endif { if ( fread( hrtf_data, 1, hrtf_header.data_size, f_hrtf ) != hrtf_header.data_size ) { diff --git a/lib_util/hrtf_file_reader.h b/lib_util/hrtf_file_reader.h index dbb38c3d88..0ea25d323e 100644 --- a/lib_util/hrtf_file_reader.h +++ b/lib_util/hrtf_file_reader.h @@ -132,7 +132,11 @@ void destroy_SetOfHRTF( ivas_error load_fastconv_HRTF_from_binary( IVAS_DEC_HRTF_FASTCONV_HANDLE hHrtfFastConv, /* i/o: FastConv HRTF handle */ - const hrtfFileReader *hrtfReader /* i : pointer to hrtfFileReader handle */ +#ifdef FIX_HRTF_LOAD + const int16_t room_reverb_flag, /* i : room reverb flag */ + IVAS_AUDIO_CONFIG intern_audio_config, /* i : internal audio configuration */ +#endif + const hrtfFileReader *hrtfReader /* i : pointer to hrtfFileReader handle */ ); /*---------------------------------------------------------------------* diff --git a/lib_util/render_config_reader.c b/lib_util/render_config_reader.c index e07660f4d7..8ad75acdd2 100644 --- a/lib_util/render_config_reader.c +++ b/lib_util/render_config_reader.c @@ -2649,19 +2649,35 @@ ivas_error RenderConfigReader_read( { if ( strcmp( pValue, "CREND" ) == 0 ) { +#ifdef FIX_HRTF_LOAD + hRenderConfig->split_rend_config.rendererSelection = IVAS_BIN_RENDERER_TYPE_CREND; +#else hRenderConfig->split_rend_config.rendererSelection = ISAR_SPLIT_REND_RENDERER_SELECTION_CREND; +#endif } else if ( strcmp( pValue, "FASTCONV" ) == 0 ) { +#ifdef FIX_HRTF_LOAD + hRenderConfig->split_rend_config.rendererSelection = IVAS_BIN_RENDERER_TYPE_FASTCONV; +#else hRenderConfig->split_rend_config.rendererSelection = ISAR_SPLIT_REND_RENDERER_SELECTION_FASTCONV; +#endif } else if ( strcmp( pValue, "PARAMBIN" ) == 0 ) { +#ifdef FIX_HRTF_LOAD + hRenderConfig->split_rend_config.rendererSelection = IVAS_BIN_RENDERER_TYPE_PARAMBIN; +#else hRenderConfig->split_rend_config.rendererSelection = ISAR_SPLIT_REND_RENDERER_SELECTION_PARAMBIN; +#endif } else if ( strcmp( pValue, "TDREND" ) == 0 ) { +#ifdef FIX_HRTF_LOAD + hRenderConfig->split_rend_config.rendererSelection = IVAS_BIN_RENDERER_TYPE_TDREND; +#else hRenderConfig->split_rend_config.rendererSelection = ISAR_SPLIT_REND_RENDERER_SELECTION_TDREND; +#endif } else { diff --git a/readme.txt b/readme.txt index e6fbd729ea..fb183d6f9e 100644 --- a/readme.txt +++ b/readme.txt @@ -260,8 +260,8 @@ Usage for IVAS: IVAS_dec.exe [Options] OutputConf Fs bitstream_file output_file Mandatory parameters: --------------------- OutputConf : Output configuration: MONO, STEREO, 5_1, 7_1, 5_1_2, 5_1_4, 7_1_4, FOA, - HOA2, HOA3, BINAURAL, BINAURAL_ROOM_IR, BINAURAL_ROOM_REVERB, - BINAURAL_SPLIT_CODED, BINAURAL_SPLIT_PCM, EXT + HOA2, HOA3, BINAURAL, BINAURAL_ROOM_IR, BINAURAL_ROOM_REVERB, + BINAURAL_SPLIT_CODED, BINAURAL_SPLIT_PCM, EXT By default, channel order and loudspeaker positions are equal to the encoder. For loudspeaker outputs, OutputConf can be a custom loudspeaker layout file. See below for details. @@ -289,7 +289,7 @@ Options: Format files, the magic word in the mime file is used to determine which of the two supported formats is in use. default bitstream file format is G.192 --fr L : render frame size in ms L=(5,10,20), default is 20 +-fr L : render frame size in ms L=(5,10,20), default is 20 -hrtf File : HRTF filter File used in BINAURAL rendering -T File : Head rotation specified by external trajectory File -otr tracking_type : Head orientation tracking type: 'none', 'ref', 'avg', 'ref_vec' @@ -305,8 +305,9 @@ Options: -dpid ID : Directivity pattern ID(s) (space-separated list of up to 4 numbers can be specified) for binaural output configuration -aeid ID | File : Acoustic environment ID (number > 0) or - alternatively, it can be a text file where each line contains "ID duration" - for BINAURAL_ROOM_REVERB output configuration. + alternatively, it can be a text file where each line contains "ID duration" + for BINAURAL_ROOM_REVERB output configuration. +-obj_edit : Enable objects editing -level level : Complexity level, level = (1, 2, 3), will be defined after characterisation. -om File : Coded metadata File for BINAURAL_SPLIT_PCM OutputConf Currently, all values default to level 3 (full functionality). @@ -327,7 +328,7 @@ Options: -of Format : Audio Format of output file Alternatively, it can be a custom loudspeaker layout File -fs : Input sampling rate in kHz (16, 32, 48) - required only with raw PCM inputs --fr L : render frame size in ms L=(5,10,20), default is 20 +-fr L : render frame size in ms L=(5,10,20), default is 20 -hrtf File : Custom HRTF File for binaural rendering (only for binaural outputs) -T File : Head rotation trajectory File for simulation of head tracking (only for binaural outputs) -otr tracking_type : Head orientation tracking type: 'none', 'ref', 'avg' or `ref_vec` or `ref_vec_lev` (only for binaural outputs) @@ -340,8 +341,7 @@ Options: -dpid ID : Directivity pattern ID(s) (space-separated list of up to 4 numbers can be specified) for binaural output configuration -aeid ID | File : Acoustic environment ID (number > 0) - alternatively, it can be a text file where each line contains "ID duration" - for BINAURAL_ROOM_REVERB output configuration. + alternatively, it can be a text file where each line contains "ID duration" for BINAURAL_ROOM_REVERB output configuration. -lp Position : Output LFE position. Comma-delimited triplet of [gain, azimuth, elevation] where gain is linear (like --gain, -g) and azimuth, elevation are in degrees. If specified, overrides the default behavior which attempts to map input to output LFE channel(s) diff --git a/scripts/IvasBuildAndRunChecks.py b/scripts/IvasBuildAndRunChecks.py index c1f31e433d..8ef1548383 100755 --- a/scripts/IvasBuildAndRunChecks.py +++ b/scripts/IvasBuildAndRunChecks.py @@ -32,6 +32,7 @@ import os.path import sys +import platform import pyivastest.constants as constants from pyivastest import IvasScriptsCommon @@ -39,6 +40,19 @@ from pyivastest.IvasSvnBuilder import * RET_CODE_FAILURE = 101 +bin_ext = "" +if platform.system() == "Windows": + bin_ext = ".exe" + +default_encdec_bin_path = constants.WC_BASE_DIR +default_enc = os.path.realpath( + os.path.join(default_encdec_bin_path, "IVAS_cod" + bin_ext) +) +default_dec = os.path.realpath( + os.path.join(default_encdec_bin_path, "IVAS_dec" + bin_ext) +) +default_out = os.path.join(".", "out") # change that to something else? + class IvasBuildAndRunChecks(IvasScriptsCommon.IvasScript): def __init__(self): @@ -100,9 +114,25 @@ class IvasBuildAndRunChecks(IvasScriptsCommon.IvasScript): help="pass the '-s' argument to the wmc tool to only measure memory", action="store_true", ) + self.parser.add_argument( + "--basop", + help="build the basop version for instrumentation", + action="store_true", + ) + self.parser.add_argument( + "-e", + "--enc", + help="Encoder binary to use instead of instrumenting and building it anew", + default=None, + ) + self.parser.add_argument( + "-d", + "--dec", + help="Decoder binary to use instead of instrumenting and building it anew", + default=None, + ) def run(self): - self.parse_args() if self.args["error"] or self.args["exit"]: exit() @@ -142,6 +172,8 @@ class IvasBuildAndRunChecks(IvasScriptsCommon.IvasScript): sample_rate_dec_out=self.args["srout"], enable_logging=True, logger_name="{}.br".format(self.logger.name), + enc_ext=self.args["enc"], + dec_ext=self.args["dec"], ) elif self.args["srcdir"]: @@ -152,6 +184,8 @@ class IvasBuildAndRunChecks(IvasScriptsCommon.IvasScript): sample_rate_dec_out=self.args["srout"], enable_logging=True, logger_name="{}.br".format(self.logger.name), + enc_ext=self.args["enc"], + dec_ext=self.args["dec"], ) modes = self.args["formats"] @@ -165,6 +199,7 @@ class IvasBuildAndRunChecks(IvasScriptsCommon.IvasScript): formats_fname=self.args["format_file"], max_workers=self.args["max_workers"], mem_only=self.args["wmc_tool_mem_only"], + basop=self.args["basop"], ) else: br.add_check( @@ -181,7 +216,7 @@ class IvasBuildAndRunChecks(IvasScriptsCommon.IvasScript): br.build_and_run_dict[check]["analyzer"], self.args ) - if self.args["rebuild"] == True: + if self.args["rebuild"]: br.force_build = True checks_ret_val = list() diff --git a/scripts/batch_comp_audio.py b/scripts/batch_comp_audio.py index 56a6b7d502..7e488fcfbe 100755 --- a/scripts/batch_comp_audio.py +++ b/scripts/batch_comp_audio.py @@ -56,7 +56,8 @@ DIFF_STR = { def main(args): tool = args.tool - if tool != "pyaudio3dtools" and shutil.which(tool) is None: + # check for MLD will be done by the compare() function + if tool == "CompAudio" and shutil.which(tool) is None: print(f"{tool} not in PATH - abort.") sys.exit(-1) diff --git a/scripts/parse_xml_report.py b/scripts/parse_xml_report.py index e0f02238e4..902b31f0ac 100644 --- a/scripts/parse_xml_report.py +++ b/scripts/parse_xml_report.py @@ -67,11 +67,16 @@ if __name__ == "__main__": action="store_true", help="Parse using EVS 26.444 formats", ) + parser.add_argument( + "--clipping", + action="store_true", + help="Extract clipping information. Available if encoder has been run with DEBUGGING active.", + ) parser.add_argument( "--skip_formats", action="store_true", help="Parse without formats and categories. Suitable for general tests which do not match the IVAS categories.", - ) + ) args = parser.parse_args() xml_report = args.xml_report csv_file = args.csv_file @@ -80,6 +85,11 @@ if __name__ == "__main__": if args.evs: FORMATS = EVS_FORMATS CATEGORIES = EVS_CATEGORIES + else: + FORMATS = IVAS_FORMATS + CATEGORIES = IVAS_CATEGORIES + if args.clipping: + PROPERTIES += ["ENC_CORE_OVL","MAX_OVL","MIN_OVL"] if args.skip_formats: FORMATS = NO_FORMATS CATEGORIES = NO_CATEGORIES diff --git a/scripts/pyivastest/IvasSvnBuilder.py b/scripts/pyivastest/IvasSvnBuilder.py index e437843d16..ccd0c68325 100644 --- a/scripts/pyivastest/IvasSvnBuilder.py +++ b/scripts/pyivastest/IvasSvnBuilder.py @@ -227,6 +227,7 @@ class IvasBuilder(IvasBaseClass): defines_to_disable=[], instrumented=False, mem_only=False, + basop=False, ): """ @@ -274,7 +275,11 @@ class IvasBuilder(IvasBaseClass): os.path.join(self.src_dir, "scripts", "prepare_instrumentation.sh") ] if mem_only: + instrument_cmd.append("-m") instrument_cmd.append("mem_only") + if basop: + instrument_cmd.append("-p") + instrument_cmd.append("basop") build_log.write(" ".join(instrument_cmd)) build_log.write("\n") build_result = subprocess.run( @@ -644,6 +649,7 @@ class IvasSvnBuilder(IvasBuilder): defines_to_disable=[], instrumented=False, mem_only=False, + basop=False, ): """ @@ -673,6 +679,7 @@ class IvasSvnBuilder(IvasBuilder): defines_to_disable=defines_to_disable, instrumented=instrumented, mem_only=mem_only, + basop=basop, ) @@ -695,6 +702,8 @@ class IvasBuilderAndRunner(IvasBaseClass): console_logger_level="", logger_name="IvasBuilderAndRunner", log_level=logging.DEBUG, + enc_ext=None, + dec_ext=None, ): super().__init__( enable_logging=enable_logging, @@ -729,6 +738,8 @@ class IvasBuilderAndRunner(IvasBaseClass): self.sample_rate_enc_in = sample_rate_enc_in self.sample_rate_dec_out = sample_rate_dec_out self.force_build = False + self.enc_ext = enc_ext + self.dec_ext = dec_ext @classmethod def fromSvn( @@ -781,6 +792,7 @@ class IvasBuilderAndRunner(IvasBaseClass): max_workers=1, timeout=None, mem_only=False, + basop=False, ): """ @@ -826,6 +838,7 @@ class IvasBuilderAndRunner(IvasBaseClass): self.build_and_run_dict[cfg_name]["instrumented"] = instrumented self.build_and_run_dict[cfg_name]["mem_only"] = mem_only self.build_and_run_dict[cfg_name]["make_options"] = make_options + self.build_and_run_dict[cfg_name]["basop"] = basop else: self.logger.console("Adding config {}".format(cfg_name), logging.INFO) run_dir = os.path.join(self.builder.src_dir, cfg_name) @@ -871,6 +884,7 @@ class IvasBuilderAndRunner(IvasBaseClass): "mem_only": mem_only, "make_options": make_options, "analyzer": new_analyzer, + "basop": basop, } } self.build_and_run_dict.update(cfg_dict) @@ -1054,6 +1068,7 @@ class IvasBuilderAndRunner(IvasBaseClass): defines_to_disable=cfg["defines_to_disable"], instrumented=cfg["instrumented"], mem_only=cfg["mem_only"], + basop=cfg["basop"], ) self.build_and_run_dict[cfg_name]["runner"].encoder = self.builder.encoder self.build_and_run_dict[cfg_name]["runner"].decoder = self.builder.decoder @@ -1079,11 +1094,23 @@ class IvasBuilderAndRunner(IvasBaseClass): if self.builder.src_dir == "": self.builder.get_svn_source() run_dir = os.path.join(self.builder.src_dir, cfg_name) + + # if both encoder and decoder are given as external binaries, create dir and copy both, this skips the build later + if self.dec_ext is not None and self.enc_ext is not None: + os.makedirs(run_dir, exist_ok=True) + shutil.copy( + self.enc_ext, os.path.join(run_dir, os.path.basename(self.enc_ext)) + ) + shutil.copy( + self.dec_ext, os.path.join(run_dir, os.path.basename(self.dec_ext)) + ) + if not os.path.exists(run_dir) or self.force_build: # we have to build first self.build(cfg_name) else: # check if binaries are in the directory + # first, copy external binaries # test for EVS vs IVAS if os.path.exists( os.path.join( @@ -1119,6 +1146,20 @@ class IvasBuilderAndRunner(IvasBaseClass): ) ) self.build(cfg_name) + + # if one of the external binaries was given, copy it over, overwriting the existing one + # we should not get here if both are given, then building is skipped altogether + if self.enc_ext is not None: + shutil.copy( + self.enc_ext, + os.path.join(run_dir, os.path.basename(self.enc_ext)), + ) + if self.dec_ext is not None: + shutil.copy( + self.dec_ext, + os.path.join(run_dir, os.path.basename(self.dec_ext)), + ) + self.build_and_run_dict[cfg_name]["runner"].dir_name = run_dir self.build_and_run_dict[cfg_name]["analyzer"].dir = run_dir self.build_and_run_dict[cfg_name]["runner"].run() @@ -1196,7 +1237,6 @@ class IvasBuilderAndRunner(IvasBaseClass): max_workers=1, usan_supp_file=None, ): - n_cpus = cpu_count() # do not use all cores to avoid weird getting-stuck issues observed on Mac... make_options = ["-j", f"{n_cpus - 2}"] @@ -1255,6 +1295,7 @@ class IvasBuilderAndRunner(IvasBaseClass): formats_fname="", max_workers=1, mem_only=False, + basop=False, ): """ @@ -1288,6 +1329,7 @@ class IvasBuilderAndRunner(IvasBaseClass): formats_fname=formats_fname, max_workers=max_workers, mem_only=mem_only, + basop=basop, ) # TODO: this is used nowhere, is this still needed? diff --git a/scripts/smoke_test_complexity_basop.sh b/scripts/smoke_test_complexity_basop.sh new file mode 100755 index 0000000000..014f67b729 --- /dev/null +++ b/scripts/smoke_test_complexity_basop.sh @@ -0,0 +1,235 @@ +#! /usr/bin/bash + +# (C) 2022-2024 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, +# Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., +# Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, +# Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other +# contributors to this repository. All Rights Reserved. + +# This software is protected by copyright law and by international treaties. +# The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB, +# Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., +# Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, +# Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other +# contributors to this repository retain full ownership rights in their respective contributions in +# the software. This notice grants no license of any kind, including but not limited to patent +# license, nor is any license granted by implication, estoppel or otherwise. + +# Contributors are required to enter into the IVAS codec Public Collaboration agreement before making +# contributions. + +# This software is provided "AS IS", without any express or implied warranties. The software is in the +# development stage. It is intended exclusively for experts who have experience with such software and +# solely for the purpose of inspection. All implied warranties of non-infringement, merchantability +# and fitness for a particular purpose are hereby disclaimed and excluded. + +# Any dispute, controversy or claim arising under or in relation to providing this software shall be +# submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in +# accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and +# the United Nations Convention on Contracts on the International Sales of Goods. + +function usage { + echo + echo "Usage:" + echo " smoke_test_complexity_basop.sh [--max_cores nMaxCores -e encPath -d decPath]" + echo + echo " nMaxCores - the number of CPUs to use (default 42)" + echo " encPath - path to IVAS_cod" + echo " decPath - path to IVAS_dec" + exit +} + +if [ ! -d "lib_com" ]; then + echo "not in root directory! - please run in IVAS root" + exit 1 +fi + +MAX_CORES="42" +ENC_PATH="" +DEC_PATH="" +while getopts ":-:e:d:" OPTIONS; do + case ${OPTIONS} in + -) + case "${OPTARG}" in + max_cores) + MAX_CORES="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 )) + ;; + esac;; + e) + ENC_PATH=${OPTARG} + ;; + d) + DEC_PATH=${OPTARG} + ;; + h | *) + usage + ;; + esac +done + +enc_cmd="" +dec_cmd="" +if [ "$ENC_PATH" != "" ]; then + enc_cmd="-e $ENC_PATH" +fi +if [ "$DEC_PATH" != "" ]; then + dec_cmd="-d $DEC_PATH" +fi + +cfg=./scripts/config/ci_linux_ltv.json +ism_md_cmd="--ism_metadata_files /usr/local/ltv/ltvISM1.csv /usr/local/ltv/ltvISM2.csv /usr/local/ltv/ltvISM3.csv /usr/local/ltv/ltvISM4.csv" +duration_arg="" +complexity_cmd="--checks COMPLEXITY --wmc_tool_mem_only --basop --create_complexity_tables" +max_num_workers="--max_workers $MAX_CORES" + +# prepare combined format test signals +echo "\n======================= 0. preparing combined format test inputs =======================\n\n" +./scripts/prepare_combined_format_inputs.py + +# Modes +mono_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^mono) +FOA_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^FOA) +HOA2_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^HOA2) +HOA3_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^HOA3) +PlanarFOA_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^PlanarFOA) +PlanarHOA2_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^PlanarHOA2) +PlanarHOA3_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^PlanarHOA3) +MASA_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^MASA) +MC_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^MC) +stereo_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^stereo) +stereoDmx_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^StereoDmx) +OMASA_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^OMASA) +OSBA_ISM1_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^OSBA_ISM1) +OSBA_ISM2_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^OSBA_ISM2) +OSBA_ISM3_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^OSBA_ISM3) +OSBA_ISM4_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^OSBA_ISM4) +ISM1_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM1) +ISM2_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM2) +ISM3_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM3) +ISM4_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM4) +ISM_plus1_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM+1) +ISM_plus2_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM+2) +ISM_plus3_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM+3) +ISM_plus4_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM+4) + + +echo "\n======================= 1. Mono =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_mono_no_fec -m $mono_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_mono.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ +echo "\n======================= 2. FOA =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_FOA_no_fec -m $FOA_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_FOA.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ +echo "\n======================= 3. HOA2 =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_HOA2_no_fec -m $HOA2_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_HOA2.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ +echo "\n======================= 4. HOA3 =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_HOA3_no_fec -m $HOA3_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_HOA3.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ +echo "\n======================= 5. PlanarFOA =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_PlanarFOA_no_fec -m $PlanarFOA_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_PlanarFOA.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ +echo "\n======================= 6. PlanarHOA2 =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_PlanarHOA2_no_fec -m $PlanarHOA2_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_PlanarHOA2.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ +echo "\n======================= 7. PlanarHOA3 =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_PlanarHOA3_no_fec -m $PlanarHOA3_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_PlanarHOA3.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ +echo "\n======================= 8. MASA =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_MASA_no_fec -m $MASA_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_MASA.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ +echo "\n======================= 9. MC =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_MC_no_fec -m $MC_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_MC.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ +echo "\n======================= 10. stereo =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_stereo_no_fec -m $stereo_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_stereo.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ +echo "\n======================= 11. stereoDmx =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_stereoDmx_no_fec -m $stereoDmx_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_stereoDmx.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ +echo "\n======================= 12. OMASA =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_OMASA_no_fec -m $OMASA_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_OMASA.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ +echo "\n======================= 13. OSBA ISM1 =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_OSBA_ISM1_no_fec -m $OSBA_ISM1_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_OSBA_ISM1.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ +echo "\n======================= 14. OSBA ISM2 =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_OSBA_ISM2_no_fec -m $OSBA_ISM2_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_OSBA_ISM2.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ +echo "\n======================= 15. OSBA ISM3 =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_OSBA_ISM3_no_fec -m $OSBA_ISM3_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_OSBA_ISM3.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ +echo "\n======================= 16. OSBA ISM4 =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_OSBA_ISM4_no_fec -m $OSBA_ISM4_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_OSBA_ISM4.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ +echo "\n======================= 17. ISM1 =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_ISM1_no_fec -m $ISM1_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM1.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ +echo "\n======================= 18. ISM2 =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_ISM2_no_fec -m $ISM2_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM2.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ +echo "\n======================= 19. ISM3 =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_ISM3_no_fec -m $ISM3_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM3.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ +echo "\n======================= 20. ISM4 =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_ISM4_no_fec -m $ISM4_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM4.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ +echo "\n======================= 21. ISM1 + extended metadata =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_ISM_plus1_no_fec -m $ISM_plus1_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM_plus1.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ +echo "\n======================= 22. ISM2 + extended metadata =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_ISM_plus2_no_fec -m $ISM_plus2_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM_plus2.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ +echo "\n======================= 23. ISM3 + extended metadata =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_ISM_plus3_no_fec -m $ISM_plus3_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM_plus3.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ +echo "\n======================= 24. ISM4 + extended metadata =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $enc_cmd $dec_cmd $complexity_cmd ltv_complexity_ISM_plus4_no_fec -m $ISM_plus4_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM_plus4.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ diff --git a/scripts/ssnr.py b/scripts/ssnr.py index 89ac4c6bf9..3bcd309c1e 100644 --- a/scripts/ssnr.py +++ b/scripts/ssnr.py @@ -4,31 +4,6 @@ import pathlib from pyaudio3dtools import audiofile, audioarray -def main(args): - ref_sig, fs_ref = audiofile.readfile(args.ref_file) - test_sig, fs_test = audiofile.readfile(args.test_file) - - if fs_ref != fs_test: - print("Files need to have same sampling rate!") - return -1 - - len_seg = int(20 * fs_ref / 1000) - print(len_seg, ref_sig.shape, test_sig.shape) - ssnr = audioarray.ssnr( - ref_sig, - test_sig, - len_seg, - args.thresh_low, - args.thresh_high, - args.apply_thresholds_on_ref_only, - ) - - for i, s in enumerate(ssnr, start=1): - print(f"Channel {i}: {s}") - - return 0 - - if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("ref_file", type=pathlib.Path, help="Reference signal wav file") @@ -56,7 +31,40 @@ if __name__ == "__main__": help="Use this to apply the thresholding on signal power to the reference signal only.\n" "This makes the implementation behaviour conform to the MPEG-D conformance spec.", ) + parser.add_argument( + "--print-ctest-measurement", + action="store_true", + default=False, + help="Print easy to parse single SSNR value", + ) args = parser.parse_args() - sys.exit(main(args)) + ref_sig, fs_ref = audiofile.readfile(args.ref_file) + test_sig, fs_test = audiofile.readfile(args.test_file) + + if fs_ref != fs_test: + print("Files need to have same sampling rate!") + sys.exit(1) + + len_seg = int(20 * fs_ref / 1000) + print(len_seg, ref_sig.shape, test_sig.shape) + ssnr = audioarray.ssnr( + ref_sig, + test_sig, + len_seg, + args.thresh_low, + args.thresh_high, + args.apply_thresholds_on_ref_only, + ) + + for i, s in enumerate(ssnr, start=1): + print(f"Channel {i}: {s}") + + if args.print_ctest_measurement: + min_ssnr = ssnr.min() + print( + f'{min_ssnr}' + ) + + sys.exit(0) diff --git a/scripts/tools/Darwin/wav-diff b/scripts/tools/Darwin/wav-diff index 88823c01f9b11a117cee9a8447b8a981bb4ad5a5..7cb4dce0e8abae24311e777219a0a94c950cf2f4 100755 GIT binary patch delta 296311 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%0D2L(%+-oje8imnVJ4^On2yKoW-PY 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%0A)Oz>jW4| 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�YXQn1nGhv&=BHa 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 delta 295201 zcmZ4SFn-0u_zB{S78@mYI0!A!WME)qU|>*q%E@$m0f^FChrgvtV+elfB@MdWb00Ach^24?5jvoUwVKb3T)xg*-$lg98tkVKG_J zP1!VpiGd-)iHE@hECwMKIPowDurn}h@Z@25z`(%3#K6EH!N9<9Banw70;FVerJFr# zL^uz_%87=;lP|bw2&}pCyyU34Axn$-*4Cy2WydCSxLa^C%m*oEU|^Ws=q@=q$vsVM zf)@|N0#*hFO$G)A0R{#Jg8&|e6^t7V4=GN5kj}^S2gdro=z6XNRuvj%E|Eh ziD$DNLy4egcb!DEV~k^*V|?t(@TZd}W*Da{J>_KZ?B1iYfRTa0qxFA@fM@d_l^LK= zDq(%W3X*Kzqw)jH=LM+)`QydgC!7o*bpjwym4L-1m>3vdT!o5jAjAzo;(MP=*3Oh> zTJU7DN2ZO`3SUkJpU(HMAA2_2GeC7SGBCXGdNO%lW&qQV$CE!~N-*7fJee!YN?O7n zL$L?Q$gann)BhjjG+=tnIoE` zujQOR!HHFI`oca=hx&(L=So1FtE2E@Dp+8511Pdfc)h##=yWhJFubS(3s+}A)fK$R z1q*Co7gdC1A&*ia|IRKgFAeUK=}3q6Ra z#q@-JPC2HBoYNcnIprB2Ov;I4>Uc0YAxE4k|H0(S9Bo{I)zc<-1Pg}q19w);~>;M1%dp6fwfL&hi@S^k{CxdUd zxo_*Y5L`xV;p0_Y5A~c=P}Q2`xntqI2b_gD!t3ez%S1b z>e2bsqxD+}A1GaOdUSq|eaU=}lOgsnzdSgY!SbLa$mP*p&k_6b+1<%Z`4K8TcR}XE zQj(6vi)x4fG$rW-yvVvcxh`Lp$@}i)x%uLgujC7uTUfC&@XNP=A`fh>W4L3OW2j?D z@D2_Y28I`votz9Fnn(6?fTC0iWL)b3{+9odlcft5h(0{e&G28`quGMNqto|7DZAnS z7yAxvzEI%6$eD19lYw7@^{M=1$)Y_v=JH$&{DQ3-fBygH*I>1T@GSoP|L@VudRm!_ z!K1Tv$8QkNcJA59jKz6ke?fx1dq4d7|9=+?0|SFc=e-x1;geg7yO?xuP8KYQW_oEb zIj_Wpsq4n%EhV~4*({SEm#8qA-k8i;svs+TgOkCdSJv8qo52HW2s_k}6`_;eO1qeH zu1~&H8qMUYKUu%bh3VwA$)#nwOskkCFDX-DD!DfKRGG4g|22>ydpCUh|9@8n6T}JD z*Ekt`dQDA~xEMTo=Yn0w3pV(^Pv^H6XM-mzmWwj6U7K9kY{7Kq>g4)rRVE#!$@z^+ zY(AaOUc`z{K3FcslzMgY&2mFgg{zzl9-zP!2?7~@m|ugHUutq=o5*B`8aeUR6Brph zdbc|K{r}&ib1scBY;L*qO`t!OmQF9_-A_ z^H68b^np1uLImba<}Y20lez2Ee7QlYdgtzV3QEFTK`F+g^S)2#rx%NyK<+|KL-)>s z9AwHWjc_Yc8Y=Jsr=gYSz|PxKC&-k44(z;pQlNCC?9=(~1p^-=!+r%&hGaPhb)JVe z%z2-MCO5W8Pqu6kXYTK0oLo>}H94!vmZevBo8)BehM@ZWXTVNM_yu+=C<(uK;|>-A zu|0aXf@EHt^aTmcb$AR`1@=+zRIq~1`!94HK$57w$~Xh|)f}W4K=RcuPmt{16(9dk z)-2~`GCnhzyU~jM`)N)Fm(Hb=*EcINZIYOr->9b6&JFWg_i3=#e0pt9*KsrOx7_i7 z`LI|3?nC}|#>pQVtC%jGnmnP?YVxwC08zJ7V8?-c;nBMlQ{2IkarPuQLr*>lj))ks$(NedR8=@(F4Z^*b7@8m z$fdn*FqaBUZfKJMN5z^Jh(q&FOrFqb%Va1znXfe{<<4=ii;&&=(*xw7wJTmB2RulD zPv`p=G1g%9a36pY!;Iq~4W_Sz5k3I5M4>*=as~N-F?q6Khwx;%MuEwHTg8|(kApp8 zD>B)pO-+6m8_Xm7j)6VG-(u$i^TAr~$&GDtOjj!>FKm-!c4`9qf{}G{f2SQ2m+<6@ z_8_LBqm$3HOPjD-qPh)K7C0USyKRmj!flXp7+hRlb^^JLiRb8KqYewEOGhT>bf_{J z2u+^cp(dZq0&`UQ5vZenJHi|l#tBOR;-Bil#pDK1YVMp1rg~X*%O@*#<}$523=Zqx z0+Y{o2FXhw2Dxvp#TVp&1tkwqS+>q>vO|}s%JV}Y_u6{$gWLHPPi2At+u zdj%#}c1>h5Iy9N5dy4d&gJ3g3MW6>fdw^;JV^gqsIS0Y!UFAiXC(ZyWDgV7-v!9`k5DP`Yv- zsMQA2eJqQU;ic!~J^fRe{@YFtp5VlLeGex?>j97M&=dTv{gW3>uov{)!^z;$c@QMz z(Rz}<#eVXq31^vlcTPSyF@k9^%Vg~|Y$Yi$3>h<=!KnC%* zw%ai<_;fD?Mb2ws$2}mMUyFcRM|XCD9CXCD^$CAV5=c?!bC1q@pn~?wPEH1o?!6wL z|NjRynfN`L_d0wA)pe{dns8hUwY>$F^yoYcYTeAAd|`6F=-E_eSi`~tQUkuQYM&f3 zMUBa+b8^j;gCcUm3=E#lH7XnoCC|OPYs>{+Y~MaPaH_g+-*!%h*N;4!Yd0{IaDcLO z?e@vtQ+4Y7LE?`+nrlx$#qG9pGWfPW@#!^v#lXc-BI?um-0{D-XLCIVSi$obvfIIF z1zJ!*lOU*McwxDX85DdQKt)LR+#MjQ*S2L9$cvz+8n~I3I+umPqt`YMEXpr1*=(8} z-whj3UfK&PY+l5inA|k2iivC6qdpMk;i|H0Q>9?kz4`CAeutIpJ5 zG@tA@Q_SMUZ;*iylRyog7tgIhCV}z-e@lT81A}MhRj^4585kH0Z~L~s<)3+gzr$+s zoSB-O%Qr*P@zKfWX1e$n=`k=kb{^Tl)N+!)HC>N^!Q=mNN5(symx~X-jL>6X*bhtJ z?_a##1j;wZJzD?sw|Ih`Tf4xg^P5lSs~1l|QoW{se@#xDCCvN63gMc*$&Itb7(FJ> zn59&|38bn!^g`Y)eV$l|my3X1OprXbJB-d-2 z`48cHa5#EdfgA=d9|ApEFL`u^9w-TLHT(t&0+7GUjTjglJC04hJ6kqMY!k@$9^Ih_ z_*>6{%N{&2K$XWlkX*0nrN3xyS!OwT z$80&qyOXcaR^}}NDe4YA0rIfrWcE4oW-L$$8k)YcC1(W6E zm^pHc&XcR>DD$2JDe4a005WpvQ1HXu{0C^4^X#Sp^*F9Pw-%K7 zUQ4(dzJ0CbxEGc%{=e9@9u(h4LCLJ;u|B8oYKT9DJeB*;?@b|9{8HC+EsYi(WNMV1EO=6h=`YLV$OSTX%RM+4JetAk7)m%mbxQpjPKFJP zovw4>IhzAi+-I!eWH7u9lGyWdjuHcdM=z@|#H4z#Nlcm^lfN!dWZEY)Sz@6B(-HT{ zQ46J*8bCaINsrFG8-D)(|03RVgTx_$E!eP@HbFF{r|44<9mPn1XnlwEz2fv zU*seEIULmAlwJCti@~S!QyQ#S4Xy&$OjcX0p_~R%(doOwqnG#UKTzk)cY(+Lvu7Z{ zqgQs{Kd#Azi?tccC(m81!Wc98&|+1I)Jve0;d=pDA+O#)uF3xw$1r`oI5~ESGV`jx zT$7uZOlC5>I9Xz8sHq9a>|RlW2yTXbrl5Ypz9LSBmlJgu7>>0*c<}!}lTY{B2jBpC z>(jaR1*liv`fl=~rG{QNUxPyn6#L-NYS#c2BCVjR*rU_+f=BmUhQI&+`*i*XWv4wm zIT$=UFF?E4KArzOI&XP&9`xy~UGc(Tvh1=5^L-qUE^aX>_F6BMylSveE_n(~lBaHR zFmxVv?7Rl)%gkH`POzvas$SO$;HdHIqxlnTv23 zY}H{sL=>$$%mj({f}46T9$PXpxEelrdGX!<|Il17k)L>xJD^PKIW%1OtD|dudQA+q>Z-D4RS1CHe0!t}g4<$T9AnJb#TG*O2TotYYEO_trUNzC#dCj)=0gCGL~ zf0vaY1H)&20ba#>lb`O`>tc11g8|%*2G=isy*d^iy?X_~WyZS~vL`{-TthOR8?4-Q z1zhOeiytQ@KigT(RKIC*{4QsvU(+Yc?$FqLW>+bb#M6Fo{sLup$RHLdwZ1stKRI&m zZ9xZ9ZqP6ys0HlN%X?}*$K=1vagAF|Q&T=D_BkwJaANuY|C<>xjaUU5A#UD_X2g`v$x{w1 zG8J}C-hNn#$ro&rqERO&L(A;Do^PmKd?JL?PK&dH)j6fM}aSi!YM zD`+m~O+UD>~H>6xIJ;{0-n_czJ*ql=Z*AxYsc`@5l`1Wt$l$ za~^dUy4DWzSnUBw8NcDhvG&PHN8>qN!9#SSIX@AOHXVvIabS#yU#}g0xfB9pC- zD>6M)oE&>xO5p2B42^6WhR^1(k) zGPZqr3)J-yRn*~Tc){Yw$?(#g3smllMtlQ_+cI9{WY{MOY6?8}NEs-jYy~wX zU(|!RkUV1e?L{Gi=g|#O5C;|#{jST+@Op(uuc(;`H^V+laL%&*bd!tWg)hiy4V(-N z8yGuUK^2WhukDXJAoug$`ohH^=F`i{4ff7dkmNpXkaw&CCSN(BF80xfli{TbCj*1y z9?*1w;cbsz*1dY5R%eDI$b`;Tu)B}9f~#z>ou(7?K+QF9AiOx@&B^fcI0q=mY_%Xk zX$W$jGRTf{km0L17#MtdS!e5TGrSh_>3rbXd_=&b`9Ok4r|Sf;_~h9qrKP^raWcHj z+FmnT6=KwVad zm=Q>9D@aU%fuWuOA}9wETnH6}igAI&dQru`>2or?tV9)i1QJU{6*~tK3q%#$1roDG z6_Z~E64Yb|1v9w)4IMoJ568anY?>^3x`8P@WAgOV`t{QqIT=7b%+C8Sc7Ft=Pe>!Q zcPprWv6BlFK%K`wdo1Yj*gS;4XX3Y=70LG25V z&en|o|Nn1bd@bbD%lcA}o8dLPPcQ2aJ#GfW10LPID?ojMO!U1Zs8l%)>bBqUnEdICR((G>G4W3Pzy(UFyFP-vi zi%AL`3@@*OCVM-tgA8#3*>e=ZHv;ju!ubDQD1rD(SwN-je~@}15PvF29x@Z=F?se` zewj`6@MydKo&y|%&@SN$hsnpzS}Lx&4ssT+nI<>Lk@G_Q}f#F4hECa*KU}kU|8|0w_AQ@*6zgP5(4mZO-XdeA@nTz4& zLQu3q#9uqVPz7m~V2%apg{Di}6<5J-(KZCTI*b@G#~uu(R!kU z_r?9d$@4FYaj83lh9Qo>_+LGF|3wKQe^3%Q{}a^P{O;5F@5NS)$uBR;cr3dN4rT{E za4;)^Gv-uKy9gYhFJ8EDGVpVIb{_ZW-3tp37L zzDMW1*Xb`(TtMD925m0CNHt<)c=?-^f#HQWvP97T7i+$N%1lWAQs5;A!)w(Snl79S zFI14#{eRI4Q3k3{U%Y(5!2q+ic0C8f%V{8Qes<<$c=678@_{R&OyTP%U%#R&v_qer z;We{o=MkSyaLh=opDcD&tG?$CJ80p^36Jj53oq`k<6wBn$_filP@(st=EZ!tBrB5S z&rci-FVBHuy&f+A6g1Wa88v!w6C@8xEHC0A@*dEhe0{^j|NmdU1bZ74NuVa*iyV;H zRfw43{}*$S44McsXdB2Pafm^N|6kNX6y)d@e}-I#|B` zxJUP11yGByd#lF3|NmbIR)hL|do3VB4j`d_RbZh2h)@Jb=ru$r10qxa68g~(8uZ)S z01@f{2|a}f&436k00~`!2yK7}?f4h)|No2m5W`MD#4do8t$`>5H&wg0z5oeTLR9^L zsA2%EMwm7QY^4BbShahr1W2fP@~Z1<^)V0$(4dq@_f`hbY(gZ&LV%6; z28sOKoEb-#91FxS^kVl@mO70#4?hPr!D8x~VVLLfD|` ziWh}_pt9`$i|%5OtKgR0>ihryC8*l*L|A+bB&H9_6g~Ew3@`OTG2CQ7S?8u&eHTdT zGbH`L&IRe|2A4A)-CIEc^dd_eo(mVesIA~&c)5uIl%J0Ibb`mms-}WMxpsp`_g2sV z_KPeCACzl5Uc^E;2Ryn<8(suJI2Sy+ODDWYUIj`uwJX>?x=Rf@>1dtzb5|w&UE&!SJ#b;tp70{1ud1rlX1(PWu1<6Z7 zz#E`(lAp`LMty+j0ga5mI5z43|CZaO;IVw20!~mV4(jTAbZ-Uq{$DKToCL}c-(Lt8 zOwPZfU*A-~$3%i^S$6|O4S$O)NH@q(m~OTLPGzX&MM&CLplEk0nCx&@jA>WF z+echKKThAcmbDMy<0)les0j5;H4Kq1)L1WSi4iW85n(fmx5(L-4?@d zKAn$Vm=;XFcvqMyA!YKjyV{aJ^Eny5wSr1B7XFr73=9nW!EMH0`IEKo$y=y`8ePpl z{`0p8gSt+ghas|uK*F8(JvxsWUV6cv4;kf-1@*YVniuC!ZoH?>6qi4F-8~8GZ9g!a z33kk-7b^K6XT~OTGcfXRV+~8@W@tIU-}>#}|Nn-!JvwD=lP5FY_jR0?#|d@RsXS0K zjrDC3H-k^N>9Ztm2H)0i{4F++Qu0N99w?(71$E2Bz$y>>biRKfm^ZoqzKP-LT+pZt z$S1!+E5D2lqg1FUEr;8!Q-0q&#|UXEU>b+FW)ypw_DGRdBdW;DJU!30TIbQ^W9^XSc6_hvmmo9*}d-Ftag$1U$P#IXpVgc^rJk;?Zjx z2UhLT$ztTu%bLl;#^BNEV#ML`|Db25uYgCdZCLzdi-+p^q7Y@x77YBYAa8o~+A=|e zj)UsC|IHNwO#H2!U@zLfh@0H^P=zn5@BjZ7TR(%c5NlohjRp<*g2ix$+*xH``kd)z-mwk zKL@e2(cD(S>=VW+Y{bGL_SjW~c z$U5|qbkqyNbUe`GWO&WLAGB&8-067XF9PWo9rNg|J@Fz@fsx^51f<3W3j}}!+(8wk znGq=ef?6kFFSQG^F}&0R^&C5oztn{3u)Prp%5LCH{-2fM<#JFw>?6^7r+y z17k!>7B#0Hnh|jg#Sn$A8|X(ID^H?u(rK;+dj|Y#JxS z%ax!};m+ePEK)fcUVL%J5py1FAa`#AEjCJO-M0K2rj*a!(Z4 zg;yiMp8e19V)Ad$Vrd4C&R-tQ{{+f;JuE*Jad>oIe;JWF`O9-1rkvEtN-sQ^lu{?> zyinmflLF~R_oYmp^+H+PF_n`6c@Wu!fg#|nELo93%vG_U6urju;ZZV z+SUaO3=FSbK~rxkAb(s>oLu_ai0NtKaq{oi4onv>Pquv{DJQoRoJ&4<9C!Tz$t9+bFM*PF?S&VsG$xn4abWD2 zy!DM5Bje;dZ)}*JB}|rjtIWikFxmdChN@};*fwpLZAu8+ZpA}vn-f2|=WP>HUHoK$ zcOo)s@gRRd7I(FRm*+zkcfEQc7eCqIog?$^|16VR-n~?x7zduUD^&$o-k{=ImYb8| zb)rw_2k=NeFUadtVkb{|ucLB@3tR*I+XQm9=(O`(ka3q6B5IrrFZ}=f|Nmka*W@Sf z)wq(e8rW>4-k9{y=ESdcCgR^)*49F||t!qKqpu2X#YXhHNRpl*{ zgFmV;U5=hy`B7JfjT6+osXYO90F&Wu561gGozHwaf4!I!J^9c_b*94{lV5*~VpN~( z_DNgPngcXj08#DPYaQ6?i}1;1U*(y^Stn2b8pX$b z66~TM9=)L_UaXt^|LZrV^svd_zsWI8XPzwn-G@mtY;x*%d8T8bliR*~F!hB_zVKa{ zDKm8P*YD~~4NQ~eepoZHrB9Cj;ifFj%*x>T|7__q{%x)oHZryxD3$T(c0J+IZQ;@F zz~RwrIxlVVkso#CuU94ce69z%W@MBTTv=2($zZydMN@ zS5naAi@)?G{{=x(r#RS3P*Uvr&%yA5KWMV#Z%@Tvft(CJjGsL_V^jp-QQ`w%#whJI zx%qc6Q$XP48^7h43<4+r_#MY|App$V5HPvoPZE<)z~noBWSMjWCjb7U%ET5hS?O;B z(<}eYOa8_(GIje+X8y0uB;z;P;C~3y4d2Oa|I3&r_)h-!UrkZX7nHw_gL-q|vcm2^ zsP+BaqkC%tsQVoGYpN@ws_FwDu=Dv_bHQ`A;E`UrUmOfCR=)oK|202ooRt69)P6>9 zrX}7}?=WV`J@5vF2WU#nvo}UX0#bTyfs|fHyr-uyGAc4H^q$_%$T*iN!+W|K6XSEH zdavpH%#5Z?Y+lpdm>CtAzIjg1U}nr`+Uhy|CNrZElfCD3UKU0LCVkKC`Yep$j7)4E z(>quhJ(Vj#E7d`JCc3y77}6$qbhd(qAwaW&-K8C%B^z1p)4#AX#xU8qPY+^av}fAs zHhnT1qXyGLx9NM?7_*sD+@@=>Glnyrbe-PJ&Zxn((RKP-cE&WOO4sS49E@g6|6Qj0 zaxls=eRA2J!@;P{$mANbeI_SkJsXpe?Q|&tMrD(D&@!RU^PqqTdBwr-Iuo2%zP)e< zabkQr!Nb#5AdWwjqx))lp#Y;gKMP1u(gQNu{{7|j=>Xq(Y z0Ui%2UGU;f=>Pw(IXpX$zSi*UJnGS1+u_k&I^)Gw2S|VQs7Lo+jcn<%c>$!>vAt>D959FE_h(4^WKXip!Fo3_ovSnWaJdQ23}Tp z^!3#jzt}h#UVLSnzEhAfmPx>Rx`Ys;E&ufxP>T8gLeYwo;e{95^b{e+N~ZNz+wTi8 zig7SaH=6!kiqVQm(rCJ|G@}vIcf;xF(u{>nTMVb)l4f*g(lnf|EW>ET#BMk}T!t}; z>9WD}-7<`BOr8eQnPnM`nA8oXo69n0GQH8CzDSnQUnx=_k`h}OxuJ2L01BK=(2NJD zVD;9YE-c4bz{IIPy;Y9UN2yW|s@@QmHb4Ve9&q*9decA4F=jFu=uMB4XAD-FsS8z~ z$O$zc5+*S7yLG2umS>D(iq@TOtiWi;bW>+~u>zwJ({`Qd%M}>AnWA*2nIt7?qJOfG8Ez0?`qnRcp9pRCSk#57%X`f+u}CMIXq z>E0TQa!e0Zre|v~$}nA3nck_vs8>H(1>(fk=vSb+1-u*J;zbV7jy%u+&@s@G3rBDh z0KCp@8;Ea+;4cI56%qVtAif}i-v;6{BKTz>{zve_d$4)+X&`}z2!SvV|006#2I3z? z@XbK{jbJ{gP4Yqw#0RbXg_PVc#6bLsVEO-`F={ptzY)v_tN(U^gW+|_i~2+V|G&qAC%F1_kx?A_lzdS0s?|NjS##Dj_hNYSwslsH~YMiNIZCcM>Q26aOV0!Y~qY%~3|7Ne57 zz74n-K^_Q}fe3-di9uBbs3hT>E~3ro$)u<_Jzks9kX`022g3{Tx6`Ljr zs&UQe1Bv~AQ6x8=PmeKz>44ny3_V6${&ojQ!E;fTli|g$m(#cCF@`Y7$xY|dXLMn@ zAv--lpHYr!hwStMeMVR5a(mF8%;OTE$<^CEAOpX@*eb)x@Z#Q!=@;}FE0|nlr+XPN zu4KxT+5Xi4RL18>PggQxv}bxLH9gsgQG@BC)bw5>#yF;hQq$iWF}g5GN=-L5X4GI} zl$suE%$Uq{MsoTgV@3<60Lkfpj2ZPEChHd_ z5K#qCOAIW^4%%b=LQZ@-ml>l})Q?M`#g)zp9<2vTgg z`!Ciug2r6Is$VpM#2OESb|ix)1)ab-_WO$-QBH;zTOUsUX~w9^{O=;ebVYMUJ*MlT z(*w;Joiiqh;@Ngy3X;UK?K~DL4hj+2#&ISFh8M0-aZr#z#lhRobwxR+$L!*iW)z(+ zVZoTfv`S=hT$TY-g~;RySyn1GBH$1}>=@UE2tfDw>Ib}#5}EuiOO5H1@N_dvMpdT3 z`_p4B8O?QOnEw9{+7a#miZ1Kl|NkTH`<`P8%KNn!UK|wy&G_A$e!!AZ-P&Flvh5h$ z%J+b5Ic`4A5&KdnnSmkpFrq(;v?UoVFOxZ4$%-+AX@k)83MQ>EJJF}NSi+;( znxSNyM|U;H3v;3AAFUYGnfQdJOIb7KG94D2-f7LahgqGUbGnBOW2pWAy&RA!UGQ|{ zyBGDK72TcxU!3HJHfU>ifLdc2?vS$WxJPg8ffrW$K^f=&izWQi@7OTjW>O8DzSEXb zfzv<{)EzOMl0MCeQCxd-7-$9`wEWQZhDWFC29I7=1_e<6%5{gw@m5eX3exXoP3oVn zV#nyqw3ToAL?=ec={j6Ap}__Vqhao&4Vk zoV8zga-%r;g%h%qckO~WS%rIgj3Z+u6T2_O$wIPVCzmCIojeu1TNuU3kEF3V*`*ug zWV7iNPK@GA)44$Ic4S(^IsJ+g<6*|7(`Ps{rZGiuPIF=0&vce!`au^)ai$`U>9<@M z%M^MzKywj3oj*M^4|?!Bo%ZPL?|qS4MY6#@6XO+!%eBg4m|BxidyE zysKinDH7@7M1O>gjI+{E;SX}XCQV>eSe)Aoa2jABeoQ+21`^kI}` zD%0Km!-uhnk?E86_8LD%NoJ<|!PBP)GOl5o%DUY(h*5-*@$vMiV8&CN0fAf$hL>J! z{4-rQgi%Vtbp>dd`dZKkCup!kz_Yj3!ZZ7t1!(d2{~sI-(_=#!eWz~;VYFddGI#o? z5XNYxzu%|(hcfmsHGZFdHNJeYsTXGE3uSPPiV&eTgy)lY0l&R#? z^czu(a!hHTrvHdyv|w`anr;-$c#z5X~HyjMFZ+kTF z1!n}%n(+TGKEIxBn#kxPb~%oV!K1r$!)rbe>Dl?kr3k0=VPt1;FuYjN32L&Q2KV}&z2KSw$>_&CAkhPw8DsnV|No07#p!F37!8;%Y@L2D ziP4Ygz_aOk$&4CIVOyt1Br`fNPMJP4nbBG)!wgjW?FEmocW(tv0KITk0F@QrU-ZA= zV0f`(%k*!_j3I1yUT`qHelQ($pas+37t^y-7}Zox-(dokz_3-R-~t%+%!uL_)3>HD z#xjY#m@bmaxQMCj+VmZ%j58l~?SbCDJeEJ(>O}ow1Ec<>~aS3`S$7 zwNIwc&tMD?{rj4U!J`vYhPr|VP#8RVSx+TQXUSx&Qouvlxw}R`;Vi=Jzv*V@e-R z=gwvfW!^7ZMJrHsyu6Q=JiW%P`C zVE{I5c`z5lKJY4A(?y`H1Uh*Jl-J5zI2c|qm4VU&XaW(urbze7aDX}WhkW02bZ8%zv7ol8NpoF2Wbh3`Sp(+VChKxlbfH2rWrqdC(f-RXbo z86}vU&P*3;U^JBCKf}TB`Y~vaG5m}Y1<)|o_tVo88yL;v_n!vIgGT$ep5|cK%=q#w zcq!`p7t2nA+XA2>^rbSWqU^l?VjE;X3uwP&>o?G{YS4JazZV}XI2c|gurn}xKg^&2 zTJ|ft9(1Bjujw=8>E9X{9hq70uur#YWRz!GY&Si+kugg2dN0V^C?WF4b^57BMop%d z+S9)_GHPh&!<6*4f~PS%U1xaovU1)A2jv2!pscf1L;kMlt8kQV}Z?HOpizoQpCko!t=`j=+L zAf~nh(>+=k6_`{`OwVdz)D>NN1MDK?$YpW?xkzsMsTM|VCU(u~*IO73ISp@uW(Q2C z%1;+;Wt5ZP1#5%MPa?J%eY#&8qk$-2Cx+LAb3k5`n{M02$j>CBKK)P|qlKuIC8)dsS1RB> zsz)#DblK_r?TlJJ+29tk=ugmzJ^U^gJ$hLjJUXX>CILMl`&@lGb2~hGS#Mv3x~8`m zBI!HBqtg{Rjx-%Xj)TULp4#*c?Tlukeij%uua=qqyPZ+C{)j4Qilt=M%Mj4o8MEa7 z|6faZ^xCQ_fWlC;%$$p1UovP~#ik!zxb@nukpvfeQ$RA{4Gf1s)l0AKXL+!WEg*5Q z4lY&wfBL>2Ms23W`=`I| zVRY7>mjiMx=xnOq{RW`E;@><_$8kSsyy3-12pcrY@ZxFS^vGUDJ*lk_G0-r<3(5Cj zwV=U)7jyHbFYINMm(N)N601*mkql<+2X*ORY<~yo@SNA2e!rJdl0Rhyi2wb?y1g6> zFRpiPXYXTFV`S>zJ6*q@@ub9)WKcQ*cgj4DyMm4w1GOvWSxgt0z^Kc}KizHuV<^+f zI|qHA#mcY=Ol%GC{Fby8~Ru zNq=Mq9|V@VbGr8=M%OT%U7#*Nse?y%?Tyz$kcPhisM5Q*6Vxm@4r(hXdv?lscGht~ zcHq7^3Eq|)C*aY11Tn`1ZLhvf<6wAE5i$MQB*rYGoSk5^-F&)pFT56p?mQI$1)2cZ z2+)4>5)E+U_aA6-g=gpVrpb)T?CKyxHib`LGnr9`$s}X?t;viAvPq&W3~AsdN$kro zJ_bm|2p%pyECeAI>k56Y*W9r;8{rz;ta5)3e`nM<8=bJ>fOi!7? zsKoSP^Yo4xjK6s|rh)nz_g^Shb1+PpE|AUW$2?;bq;*)oY5LEZjJ{Gin?PF<;{-tM zEYPgqJ~vQaKmOue)%1i}j2D?)H*Pnc&B)7WWVV5W;q@(#<|7=aQNNcJoS|D?xS&(Z zmn%Sd=S9!j=|yuGmoP2+GF@UWV=dFeb=#-UWn^U(yS0{s!87wH=twco-aTyKGw^yA zPTw?-aiO>JS`LQS*FBn#WT0BIiV183!60@3@=hE zI2c|eteQS=K4TD*&w}Zn<}(&DMSh%~x_~i(Y2)hc#}_cNF*2=OHU0cT#zHSM&=O9N zx4_3MB2x6;|KRed)edIk>}2GhwgeQT$M%EH$9&Pb zWV-MQMoXp@X50N%Fd8s3$t;}Su$obk$$H`R#j6?3xh^dLWuyBqrYxBLWHnyy-&g7{j-ia(?6_dY-Y-wGre>J zqZ-ry+0*B4U@T->H*>ncM#fz+Yi4mUynf)@`UJeo{KAVlvp7KW%b-zJl*kqJ)CHx| zXD=qEaxlDn28zmFQB$zkb5M5@G~zCn%)#*TG+2uDl{Oc{bU{-l;pvu}7UOG%3eJ60JZAxzlimK6!*txfFlgl8|=LIBK-oS0Ne->1??UN zg}?@=;#m;k*KXjYI?sJ#I^Vr8y#T5dA*C!RIlTC?9%6DHL@{XZYtzglQ>^UTi&}K>}#kJ9ox(?k$XIOwx7Ji?=YU zGcnAVK4%N#NhbB$>FHY;EtvkgZC|*Rv4@dAcPiLVkVKd;b-K-VMjNIY_3c&L8O539 zIVXW-U#oc>cLgokfouTr=&fB~c}K?2 zQk=Mb@@`PdoY_BJbT8vJriXpo&+cVZV&rP?g`~{--swO0F}5+q_D*lywt!MhO z{fwzh8@oU$Q)Ig00mhm2d%97R=bCPC@&qjkLrtEMa-dZ4?8U+`#2}6|&{X;a+;pp5@IpBlkwmwH z1Up?PcyxzO@aT@6@j@*OnnahffE@Gg#Zr)JXcFy&sYXen5RJVcb+8obV8Oxg8k$1u zL8oE8&Jz2p$1BomK1s1WV^5qtQ>(z@w0k1(q1-D(G)no%O*(JA56S-|1ZEBf#c zCj+>4dl6s9!LT2+C=!xC8BDjoJHi;w#gtw<-TgeHoOXLD2ZLvKoWSejyFdrnfE-u? z7Ag~Xx&G__|GQYB`6RA%`h@e0BK00H**l;^GC}K!L3)f}qTfKGFq33pq5|Ll|K9~u z%LWtGLKgi{0&+;1z)Kfo(OWRlIH;&B1IW4~FyRW2FwBYTN~SwpU=*pJ0h3*aEZYPV zJ%ucq0~39QEE)zAW%_{>1P(A!Ib=~Sn5Y#QP8qYc;euJiS9vG`>hD-$ur2J4`8BqkVQ|yMBjjxgZA1U z)anB_MrOa~WZ0(x>Q4Q10!`xCu0$7q=(Iid5@R4E(>{yo8!j{YGUZ!L|9_cLn(5Kr z=`vRsBbas^oL+W?aUIi+^66?<8Rs!cluti)m2oyxb=mafYm5aZ$4fat!`dgnCx+#4 zf%cz1_Ut?YUd{39#coJy)$r^NGw|r$3);{0qFi-4`*lVoroz(c+SeInR8z62QB?i^ z-;sZto8@bJP>MAuot|@@QASJ!thCg?vpduRX50gn>GQ5LI;(V>fHv(M_2}mI?7ZdE z?JeQidEE2hd&@LO{=DO9{1yzXKX*=Ny}=mIbYk!Hv>S|znR1J#bKhk2mR2a{V0aB~ zAfrvRu@_G-yvZoX^t@>L#G8!YnXVX3@4CfUrNoiS1v2W^D0eUUOg1-~V{~TH)Z6ZQkCBs!Nh4=^zyroGxeM7a*I_Of+mb!~$OA?TrmF1e{~j>P z*T26HYT8`)=sfhI#Te8&^yp=kmIqZYV6g&Y4u%)jT%f`lyn%Uv1gQE0&%RFuGr{u% zT@s)M-eH)#cGrQ1rtiN9&4LMoCO2NBfELawzsNP?V0g_0U2r*l&O=5)<@x!LzO!T& z2LnW+7c#`bwhd(S{TB>b(=R+^6k|%Onf~G-qg%2^7AU3HIe2!LdAx88|Nq~!xejtb zbe+QsZLp-AN9*kp6_4g>(2>`m+3pv@VCUR_G4cQZ|DN4;pz`|V|4a@@!R^rrT7CIK zwE*H0`^@PRA2C`oUC5k%<`JWgP+ca-EB9ag0Wb5p{~|AQI@e=HS%afupfCfc-uo{q z@C3I@OwSloSdLBj|9^VcGsZ}!>#5U^K4bJ?kq3zgK4)~T zx4Q|k$4{4o;kA`Vuc$6mz!oH+>CtQZ=K!b>5Z(Kf6FSHuY`}rK=sidX?na1@6_+!E zCoZH@I2c|_dvrpFmN&fEF&h%LOdttR0uTntfmc7ygG#+fp8n!FqbyUn;&k>Gj7ePG zphKoRkH4_inO^*YF_0yr@BjblCtfg`%T2uwar#niP{bVe=&jxGV&_tb&6|^^%f4h( zVv<#u?)Z{1i7ODQmQj29+Lw%WEP|)m8K%E~$*9QH0vgTgJpN*e)^w>?jP^{zO4FlX zF}_h{6@}-3C{0iZ*nZv&qC}Tm?p-v!@jc^Yt{)3QquDXM42!1AePEPhI?5NRDN9odh4%cW^iGA z?AUpy@i)_-|No0_yaX+v`ou55x^W2ygOBBlQU%9`f4Zd{Y5d`=_vTLz_{69$+Pas6 z;gb`89LooXmTx6ssaf-AasABbkoPo1XER z@c~m@#B{GOj0>1Pg-?I;g;7VQDIC<+0}Xuex440e|M$>!+*RSzO};W#Fd2kTU-y+! zQ|53OLgiXcP(=Y#xjSt8=dX;}j7)W*(-Xckx-zkcPGA0=F_Gy?$aJnBjE>BSAso{i zdYDC~C;eayV^Rs3zUv30E7RKG>5M-aQ<%zwr>Fm9G*V*>2BjX*01tobJMd!M=b*-< z4FdwANyEB<0!B>htiR1$3ijsAIdPqP4L;l1G2EC2L+zd$pZtkd;=GwLy2 zNSq$`o6(7>$9Vgq-;7t7UCMs3GrVAY^Y8zQKd=A&e{J^SD~Qs6@eV|3_;i9+I9+%V z02;}Zg79X%a02moUYrIgVSRDr_4Hl;8FiSJIZuD_pHYSBgZNZFCIu$Dw5bM6VvcNq z?9egL?pjb^4m8>OLNM*$e~(^BZ&wxE6WI&iXMA!hBx47Ag97F7>)S8N#izD2DRP|i z22YMmn0`Qz(Uij&)Ut+O8BpNOFHHx&J^1-@Rz`;$Q%+F505U z=pcT=2&xf$Aq1yqcRk08b6y^Z%YnMsi)sO10u>Fb!8?3vbjOn=YJq{Q;N`2YXuqAW~NEWIFBF$>d1 zt{~{T887$gdaO*c+6%w1GrU#$?*tu3Uu#OP*m?T2Q{`{3UN&D z|HL6)ub%_*?Ee?yzU&OI;~^bz(CW|^*J{}rUTb@H9)pZea)4ND;J(7Y7rQ`m%%I*- zFC_V7P5|xIt)1`!wDSs7AA$B7f$JlGh|Gl-Vqm@BUtDnIV0iIU5L7P7w=hiSVPmoo zHF5*h^8Y=WK?8B19StuP+&HFxn98Xj z1M8gbI{hIVlOuDNE63#WuX4OAZ9!FcjEcbPqiGW+3w%>yTrs_ro#_Bmxyy8O4kiVz zsWu=5aRRT8PXAcTt~7n}QBDUn7f|ab^nypX?}^p}r3#?ISu>DW=lvIAPek4Q}a7tbQUy_SQCk&*q_S5Af(mR#FgIhh2Rq>r_7Fz|<;;;G_$ zW4L2jaDXEy%d$=};)0z5a?udvWnM3kNU!Z<11?be(ehxaQa5Xw5f{V%1Eszmy|zg) zUxWxg|XUh%J*ZRMd-=o*|zabaHiy&4|<~;sF&JL6iZ6`wv>|}jq z$i)C2MCfGY2kB|Hy$@R4&EE<>kL@_?IYTZ`0r%gd*Y-TfoK<%~Qv`=S{hl}}6 zTSkz{&|v#&z{T)_0qV9hHsD}$ggB~`^??CA*q(xB*_&;z8gMZ%@V96dgVt{M+D5d3 zH1PgB54P?SigkC`LCIor;3W|+r9@DE`u>8;iJjrKD)>wl+dPoPm7vzL0z^O+B;av{ zg#ok<`M5`~Eel8ha?JVv7ay%S7+y%RPyfQtq|0v&S|`j54$s(^@2saA2rwCf1+Rn8 zjyWFta-H?`0s*E1ULWw0x}^=EbSg0YtpJk*lS1Egc0nc&Myu%of=sfER@3tYnIt8x zK(P{g!oxatN2!2EZ|x4y`tgF)|No~i5M(lEw48oJkjb0nWy=5m)76ET{1`2#mkBYc zvJ`>@<_j@3Fj`Dk5N1+fw3zNF%#_KJlng3Jg_-;q&8PnrW|EXN2Tcg2p760wg_;jq zNAxi1|NrUwB1|rf=F>|=m{eJcK>~9{n93N7QwQy)#w6k{?-|D4SZ zI*R7CEu_J{;KiakP$>$U1N{GDnlWfHsdmSUyYK%0e;p1{((s}ltfY3wi(?>RDVT5u zOnCjf|NmWEzJVug!86Bxb<@O|B)CjK3Oet<*k?RlNt{Wa(PVm%IFlYrPyGM?(_6%u zEEtWa?-gf~WibK?+!JStWi*~{Bf%ugXgobif=No)n1jLBTD?>Rvf=MVXWak))7vGO zqP-rlLk_zJ?~HoE^8j2*gCdOa0XxHso{OO60*8G%zrPmp=sXOqNvd9wt9So~V_vSc)v{#=Sl zjpcvz|NqkkrNIK;(oB*pD?kDn(oCW9ci9>CgIo*op&^LN2wK1fB3>xnoqk7}Nr|g3 z4Pws?z3Ch>ObH4{z(>KBE&wI=j`;uoLEG72Muz+cwP!hytO-C z=so-Y|FsfC&w>{hV8Y_hz$vqo1GI+U2h@v#9)h!+k7~En>>>_Q$YRn z_wr0WjM~#}6qsaIF6tz0_z4`~QD>j{=iBqt^5*3QUSD z;vj*a3QS#$TGLw;nffKKp@qRskO1q8q!ZJ1l$a!3JQCO$UQ2=d*R?ZVvqKm=UN}Am zt=fd~j6p|2cGq^ixK#u`<)q=o#UfAuJ%16c!NHI=dB+=NrinMEuT^4-Vqz_v&Z*4g z&!{myQkhA?SOXM*ko~b$;I%KH-36d|SuG7jYCt4|l;HpWr>{|FvS3u7{#2PMndL~( z|Nql{RG5NUazU)cDog<^k|5T16((0E0nh1ns!ZZc{d1-_s4*EceL6k8N0mvHB|7l` z|LI#*nT!}!r@v5TQeghiGY=4bgJ))by=tOsXtK0ssF`zo*93%cwFv zN1dsfQF;0cbtY9^&@_#ftKole_5&xd7k5BnVn_wvX^;Txi;zRptu&al>(!&!8D0l@ zf;KyWlHv>TD0T+J+pirwJCE-Ntr~mH29^V_Oa2|n&aj#BwF)>nfe%dtMFJ?r?RfG2 z&j0@&-L)HD>-%*61}muD@!}R(5S)8n)a8JqW5bKm9Cpz8C!jt38UMxp|9_DRky-H~ zCI=Kz|6e>)oc>FL$(yO9Y`VK9QxK!l^jVrr3XF==cWW|9$|! zcYtT!|GiM~{r`XZ2TdjmM#brxT1d&70RFkAwdhGK<$WL))UjF$7wSeFuglEeS$WV21|%HB&4OLU(;rCWt5*Tqr+6q zC^vnE4wHh$8Fq%(qMn_1zzg}Fy)XswSzqki`|m&KfV88K%>80r==29VOmbp(N_#;YHMS$QaQSndv@yOm0jk3a3xeWAb5?o&HddNtRJ& z`hPtpNlB1~ZuGo)-~Ipp>4y4D=8Q7aGxeG5SyDg(YxJ427^SC+8!*WlOM@~8B(sC= zT!eT4v`sKy8WbVuRrpG`|Np0_8!)*rN>5*7z?8=F%k}^N>0*XVos3e`7Z@_ll{^N@ z>@Pfb{QLi!f4>2!5C_i~tvEJ4%!olR%8l`!8f9rXMk4N?>x%ovvogq{t{S-NTqkhh>KI|Nqk~jG6Ko zC8obHW>PQ{2l)@Y$-kwU8Pw1J4<46z^g12FnJ=|No~am@<_yicY_7%Cw(p zTG#X$W=uD{K@(S?X3H_q2yZX%-%fCaac(lW!hkkgZro>Q0M*#{Kx^}&K{{ApJlO9saYp)6J))-@X@Lq@*o9JWlZEc-40|DPUc%aq9y1Y#NLGf7SVV8bNH4(|Ky;hp}$ zmPv=@gT?><(-rKPJQ;bXXW211FfG!bzQ&G8m1%MF^viZk227QkrnA~Jsj@sW|Nnow zo;}k%M(*in?V0MtxIsPKS_RO$A|B7?S_y^{))(sB(-R$-6dAdvH#;yXv80=)cOON@7Z|-EDc&w%;dn%@bWHrWFdD0`0zr|K-7vCuk5EUabi+t zI%+@tq!W|0?+SZ%hL_hEK+`Wrz!ejyjyVEu%zk^(ZO;xm(-d^@8sttykjZ8Ckj760 z%u3K4D@Y>Ne!8JElNOVq{q$I8CMBk`fzunEnN&2E2ZHMuG0-(Qpu)X`$D{Q=4Yje*n8Ix~q!?Kt@V|7#hj*`Pkoi)9Bv0NG2 zJ&Y{V#od|uBsYReWpJ!O=CIvC0<14CESkR0ok_}Nixr|&?f?}QpuzVYFV^lwE|ur+ z1qVdK3pZa-5dm%~ys!eXJMX_Z!ZcmRgGrK+dAgYglO`kc^aKy46B3~QY3qR!4RFC; z`UE^3`0GU-({u+CVASy#jk|IT%2*jlKeD{3X2eY^Og6W?C+wYRkd!*^xirml-6=Zo7SY2onb*lRL-s zg`rHvOfTL}7Yk$3W&AqbC5$Og@e4bHXY+rSGGWJtT9*Ajy{5|SoDB6sFF}_j`}CTM zvQNJp#&np|&WDr1@Z^j4Z>P@>XUb;U>N1@tf+;{S8FXOjYVeg_2Yh->t68V#Mlekh zJODb8lmjk&gJrrvB-1yhD$nU0QA~kMX-?ClqnJWO1)Mk;UPOEZ-OzHtr#p3qPp_#8 z^YkN8OdW#7j+_iHc7K3K^_q4wZI6v+TFc1v=@}?E6d2!4*NtUT=3MiPo#Ca^zyJTI zAB<&EW6I^3-Wbbd#`t#nj#wsrCRHvFSA1F=lRV?w=?Za7I?S{Fb4>S-V=85;04o)r zem9Qk8j~d}SmE?D@l5iJucyC>XR54!&Cc-pmT%`%k6uxgNt_I?RXjRRc=U=IfY=fq z-L4IujK_Q}zxwjKfA#1UeK`?yV9p0{vU~SJdNVu2Ya5T|y`Yu#45jN|PxR?!4NKu< z*abRL7ChSj&!_X}3+3(Xpz+)<6TwH*?C|M)=hOM}1@Crt2L5_(pI%lKkQR1uf%x91 z6RhRqHn0{hkPHWk%yo#&hh$EMU7#K=!kWDhnQI^!J`_ERAu@YFGQub_^_>u@MIb5A zG0O8%$(_@pFRG5Mt zrZ*=u&0tczJ6$$~Nt^Ncbk7u~2BzXW(@&=`X)#@YGW~lBlNVE+`E=)0CKsV+>+INNQ z?oK|?z)}X2jm!jgh8IU0k=?x=)Nbs&|AO(+^!pi1ngT4Kv1m}0bq=(e;M%(B5}8al z86Qsnl*x3K>Fwm{2eX*=Fg}=Gm(6sXDSgs(_Z+69jQ6JV<}z(!dOKnJ!CaBr0tpSPU8d z|DVoZ#UYPD$&D6wre)@@OrX;4Ors+C0Obtw#YSY)%FsVq-x(~{C zt)NY^9>>9*Rmhq?)`RZT-_|ghF-4Y4SFL4=Wjr^%xt7VE@$B@&wM(hp%=AZfOp}-_>Zh00Gx;b5D|0{&ZF=Ew267@s>w!`$k8W!ZP>SmnEmEHT zq@Kx!@$_`X1}1r?t4hNYh;qJ zI>pWaUjGjs>jZZ;k1;%0y^&jO3RFa`;Pd-U4oD1%3ts~y1IwGt0b2GDh)fB*l74DnS@ zVK-oSt&gPhS1CIK68Ci}J7^&V=txM2$+t?Ut28s|Nb#IyV|X14I;W(2FL-nUdac2i zGt;x0nXH+X3r=6&%;e7$COG{^Gm|2d^O@<=ElloAzfMn2X<@S0*m)Y1WbVTj;I2B& z2AZVz=-vtr?b%@N`xm0erk`$MN*1sS1kHQ4f`Zzkmv!~!>2|G5hn19VIT>Dj`}z+& zPRb<)-aiXkf(bg*7PPoh`q*^kHYP2`qtpG`n8KKTNKIeX#?;2-P_bRFovD?P>7~T< ztsPADjEAP1b~1G{9-Mx#lPQVm=FaJ=T}-Kr2d8&;F-bBWoW8V+Nrmyi^iy3-(eejC z@qU26#aIw@T)<(_c~iYxL8lRcdWBU7rn_`ADKQ;;H$9`9X+Gor=^Q;wJ&gONPwipa z&A4xRU@y}`#=X-&_cD1h?wxMi$CSsoclw$>rY($nrYH6@Ni*)5Ufa)9%eZ^`?|vp% z#@*W;CorioGVYq5F_CGv%uY}%uoZMzw^y&p575~SpbZ0{c6a^G>GqSD!Wnl?pFW9c z8RL%Wc9WUh8Fx%?o6O|NxPAMD$xOQ$8MkfknaZTc$hdX-?rBVZj9aF2O=k*a+_F7k zI@2v?u_U(t|6f1wXa@H;7(g4m-@mZfFg;*4Q&jyYR?tY!v)6aw($hf$XfKYe2bJQ_ zUUz!*iY`+IC2H^p`{Qy@?}`z$sm|7c6_nsa71TMQTOz_L*co1eHf?$I+A2dNPb z!^>z!&>b+K#x=Od_UuJ>3_HV1&~%$eukEZoU@a0>uyus{K(5w+m{$vt{A~%AtY=_& zu@EH74VD!Z1?k}dO@~*5M8AT^<3yi>6mvtGHZPJu5_dq;uooC%o7VY2wx0lLo8tTL z|I2+K*#fxihiG<&m#e@=+5X=Rc3UmTL=DhX;R|JudEg1eUeS7xFvucMPv93QpO^1P zn6omPo#AzwN3ZQkW^l-B>cIl{K1iw0euRVSKuWFmfd;f*D}oPw_2^~23A&l5vlUcb zc=WP92Hjg(-wDZg-QZP@9^F$xx$worGEh6_h1Y6khL=;pU1ZSFWHUUvOE<8$84AgXsF?z0|V$n1oaAbh8Ie!n4w01lGzLAFW_|~;6bQxZ_q&7 z`xh5ivopN-RnE@v;%oVI$@xsuj1kjK=QAY=Tr&d~P@t>*JbGE3cTQh6pXo4@^6%-{ z3z(Xj>f*M4SiqFb$Yl9*dgvmiBP@%vnHi=VE@2X7nx#11V+oT9^9y0W>Dh~!l$i1t zOz&UJq`|mi+EOM_b`DVSzGeCJD~p*TS?qVPL3J%t0O_(}`r$LZZ3$B(lkEKI50@~> zF)o|7lu4d(*>r`aOoj@p=dm;Rbc2u2_vu~>I!wyDx5kvgr}G);ObFj)(+ig}2{Y|j zHoa{rQy=5f>7vV+6r`7eS`3g?PpR5qPkTV_RnA*FJzyDAFXPhb_m(l~F)o?TyPQdm zamjX_v#zoUJS2F3y zBPmn`D+CYKLDh0Cn!aTvQxW6B>FTSP3>X(qk66Vd%eZiQ*(#guVOM}TrgdB zHIpLag6a0FndULQPnmvyHIq0KTix^@tC^CS76wm`UBgt!l-IcZ!WyRQjEr-quUN-a z&Nyeg!g{8uEQ~XzZ`;hI$~b-coy|;PjMKLpZ()*WWSq7=cq>yo3**G;w|6orGftfT zefBvU+7Gn9KOZ`@88Q5%h)?zb{~_fVlO*Gnq%iYD;Wlc zU7#WeG<5Y2G!VPhrFQR*=C+}lYW$c~a38B{SV+v;Mna;eQ$&|5Yy5)W*3&x)5 zMf;gd7<;BK-_NAN*ggHsekKLR?&)v$Gl?^HPiH;A6vfy*J>dY87-RSJ@&ioCj9t@j zA7D~s?3(`f0MjJKuIUpFGSxD6PUkzs5~pKl`*zY=RCp`#MnMP<_MEAWBc@mBTPn&?bA0OVfruA#?G({ zv}4StckPK+pqlT!NAK1XZ~p&(@u7A4xuZ-f60L9*OHaH8sQ@p>+tNCn>ljlxlI+%q z7a&>il$2`g^qI$);u%|}|2)Q|$k;Mn`Z$w1W6N~s<4jSEEz{>6XUb%3p3ZTCX)R;( z^lc}YLKvH-bDv~#XKb1te3HqCv1xnTNv3m*j1AL6Pcx}YM%>_F@Zfj(@nU-e8)(P~ zT*bY6v9e+M)YD8kOxY*5GoNAdWn#)dH$CVa(_yCOW7EaYGr2H5teGBro=L&%!zFfx z1{=l$wVocmdqJ_~(RuF0D^*a(33LXZNAFaS;ERgs|NpQ5+o@Ik(>sRw0j4WTmzE)0-4+e z^>2LC*%@9w0oB-$X$Kn+{|bVy1L7Y6@#`T9WIzI2KmxtCLZ?Avuc9;GazL(rda>Sx zo#Ewl(Dvt6iGTlJ_JUZ|AXYPoRS05%?`BB{vGPHNKyK_huEx&rG9JPQxoSIz?+?;r z3sMPcjJ&8f1~IKcih6A~wShftzyfZ1FfhEh=E%VibU z&63F=(bwR%gy?@}PKJH3)7|%E~;w@iLQy8GwRNm;E}%f|3B7<7=E97vZW!lD^p{{Mf?4W0q(-K+5F|Nj>@2S7``z@t_# z3=T|}yUJwEWUMni`YMxB{d=wd|3T}~!EOYr)&+@hz9@5qI=ve_Kj6{572Gn}KmG52 zkM6yo#cv+nTR|s3zSz_M_y21au!Y^=LtjBd>o3}>*cf1<;E6J@pC|N#wSyMUf?HDt z1t9Z!!S`9eaM=%b=L*o_*cSWQ7+xxal3J(hh1X|6roVpt;*rC2ooh_iHmULd{(E-b zd;P$p7hJQw5CIv}z4rxZWVL%M1E^MH)CN@z;7aR-==8t;UoHTprfi4li?1>1@l+>* z+G(F(KYL;5F#YZ|CY2a(m)Ew5S|pk!UB81 zO}7J}HfIXR&E2&ZUi22TGrZVl&(82-qy6;Q>r4?$38$xTzs_`mY1*mjjW?JonI;{Y z{^tgh9AnXR>6=VyGTiYXC%u0C474Pu54_I$|BH@7kO8*SV{bAYWSVC(UEvm!2-AT# z)6H%%88C^7PtUl;WX4!Hef}+`I;Q!?5b1-jA=2Vv)6;J=*)gf-O<#VS=?7!}^aXdA zOr`TcO)khRqdU@k%A*(O@}_^d!z9UcIA=QdT_z`{?fa+u-(}KgIyYf@!(AqErmxSY z&%DcI%(Ovx`nkJIW-Jyn{{5fMagWJ|F?V|CJtiZ)T<93&25^t=`HT0UbqkR6;{!Qk z%A*^+P}-xHSF(Qk)_Y7&qB#&f;3*}rw*N0`a;Ed#XVS=(1Wl>D2;%;^Y0%;g*s=S& zw<4=wyLI})`%J=2Hx^CbcArU6IvaVe7WrhGY1z|1-DfIv$;LH=sFw{2Ui3K?t!z+l z8foY=bK1ZE)0aPBvXPNsXLzxc6I2tz=2WIH1dmm`c$hi;{{yCM#;obt51Hf{v!-`H zWYT8Ln!f!ZlMa()()6bw(ah77=}b`FLYYtleNXGcJr*jitMMv;11 zJ@0|-0v`q3%lo3+|cRxq91I{n8pCPnd( z-RumG4K{51>(xDa!DSa{#NBs#;0q?<>CVrYgqg&5Pmg%cw2x`!mgy2Nm=q;Vc7b%% zureH|MQC~VLWg&H&jZXbAn7%BZzU(cNk@OPzU%1rf>MbB+evy zefqi2Ou9^M4AXynVA{qQIeq;{rU=H!=^US!%$bg^n(p|C$w2xyI5A@}ebN=M>CA`! z{hhw&6H~eUM{p~xbc08C?TQzBIv@jeEj*xsx>j(F)f>U$(G5QD&eYOOH z0v>b<5=bdS321y6eD2}apy`)?FqulHu7tF^`Fk5d2UJ0}-+|iR(SN2Z|742dTMoJg zy%%iLi{hr~-9MRJ7z4Lo_{n6+GUW60hkuyFr!W7_B+axuar%+pOe*sJpse7!qI*IH69dEdLy!}&SkEPb zJSob$VmkXDCQD|W1ZcQ7pN0h5moK0|)0@8I50f&Z-}F0wn2eaB6Q&FNWirz9V`q3d z2Qtz*N3i2%T0sdZ&Z~q}fUZCL&3BTzDf0-nOec2ga9{lkCKYwdI z8b{Pg>OnXIKjdX9kfw77l+Hzz>h4C<(Q zexGjok4aAqq~Q5`&;{qU8z7yL9WVHOr&s<1ExuSfed#}@Tmc_YiSzBHH%M8p=={0U zmHsoSGnLJq?){%hyZ$E|!%NUO9dtR$_ZOugk!_%=4m6kuN*2i=ktLvpG)M%j@P$7} zYy#Nhwx^ea`wv?Vb1*;-eR?Fu&hWa-qt`Zj8Ayh=>M#drRI~UrD8#3NdhL)=%_?zr ze}>n79=*2C5QRYyh2H22gT$dbcBCQdv>@t~(bZ{*Pjz9|X1Y6NY9X_z-LWZb46oH* z^MMyH)NXjO4a64%^T0<$y;uqoV1;dN1y5v5ngUAF_g~0(O+CWg!_=~9dJrSCI@9L2 z)2kVoBbY5G{+n*d$t=wD_~7){jLf={DewRO_h_zdU?>srXs+#m#KD9Y;hxhCnV9Va z_P+W1-=lLbXit$xFKhpV>Ge#^QWBf9L89P-4(XUQ-GkFNGBN8i&3iZf0TZ(x$RB9-TK{gNIgTxK9^hVP3*i z@@o1n7G__joJrd`S(zmm<%1@2FnnVXVB&B2`0xM!2_C(!4Ic1e&v`x59oU#fm>OPB z4`XB2W%~JQdMg{VE2GQw(`?K^!e2ngxAcmB_`<=k&lJ>#t>d3=z|L&U=rTQpo!N=e zW%_bk%<=Q27^p9G?urg1V$iGg|ty{+It=xhZ~S@g2XrA{~C zWENpOG2Ne+S(}OH#dJRbW+RpvIsg7o*A!*8oW56pnV)Hz*G3O|R#cAt^dKJQL`M7RTX>ig811Hu@-izki6nv@#dL4m^Z;IFEheTX5LfkO zpt!2XcKRP)<~l~(>D7G9i1oD@Z&)1?^Jou3hn(8`LnjwVIwU$Q&dw z`w_Ux)c6m&Ivsv!;otk9RH@8a+u+e#y5dFU{pqYi%msp$pqY!(39mc(w;l566@A~b zy-kQ&o{{NX^YrDy%+8D!(_afSOUamndK=*3%+|nvpj!Sr=x$9=uj1~L>53xE5=^H% zrdx|J`&gPoJP6*`25yx-fAPi)WXV==B=@o|i3F!`@KhP%@Vs^Frymeu)?%7;XZjlv zW=j_FM2NpV8O^2_i!!To8hL;U3RUC2>5D~~mE1v#ds+|hw`4;H*99O)b@}wFe(mJ| zEk}d2FMK*by*OhEvc9wdbl{y&XDR6N4^TPd(aU?teL9aAvoX_N-RX{E%o2>I)1$afF?B|=d_)1)1PT{$%UlqPd6Q*Y&VPc7#8jEwTrUurY=F>O6Gy;6sH3ZvX~K3(P{M!D&Qy3Cg1 zvY-&y`{6HWv>wzV1g(>Jaa?x#L0x7m7Qr?)hVB1#nWLE)rKd+5Fe@@SxJ<7zVD4a) zn$B*>tjc(Dx~?JfQl_YF+pichpI~GZpFY=^S%*=4`YB`P_l(DLK&nPn8)tuQ@UIbE@K6GJV z@aYEk_FqbZdX}x-c9AMKev*_m277+&nPp6=+typWM=`eO%XWk#;)?2gQe(o@cY&iQBsO+b1aZ#4j| zvIV!&SU0y$w=G~6pC0ANtjhFv{q{yjW>rQ;j_J#tnB^HcrXP1=)@0<^{?Un9gpq~4 zfQ?}~rwj8pMz(3L%rcB@(`8+m6RYM zTN#>94$)Z5bJ+Yj`s&F*0oT_GX^L z$n=kG`b!_?6cFw2%iP5CmkrXzkwcm4E-YHwH0_F*1qHnm#j_ zIg0W7^e@58UXJf(fr}T&FfaJT_7|sZ|NVcd1?nPogZ%=^JRZHGIsRb3fG@J?-3k%} zEf#$bv3_d^vmDpQT+n2~{}&JUO}`t$?8d}73luWC(}O~p{X~5H{{06n+u`+X{RUd& z@c+e?uhX}LGV3ts2>hFVGLc!09c1(ixtY@i!k8_YjIF18hcVkSaoA7q3S*8Hf9nIb z9%L^lDF6KbZ+P-W!CR2^meb9{nXMVWOfL>+wqX1`eN8y?GU?Btrt@L&l}U!mpy|;2 z;MJ9nUIc!go*Tg|B{%gM2WZ1|=V6a-29M^$93HI)JosI1l!|-w+EzZBzBGb4fXUrv z`u7OtRwjcf)9WIceHlMZKNHEUDg6-+m&nV__#*fn% zMlmZeewcnJidmWQ!}MoS%%2$FPrn(>Y$-9T_1}NcIolqc_g?r_F)-{0kI6Q@pRN_d zyomAL^s_O{(jM>F7+!`jGcb6-7A3WO1P@a_f6)SxdIFk}fy5Fhae4HL?sh{7roZ4| zvU?5+CbQ{jvCJk+Ma|Ra#4<}VzTLhpmf41p$!fy%FLBH!Od&>~^t+q!_4H@)%!cBx z*}!Wk_kwP#2RBK+zleFw#xT7wgIR34O9Hbjm*3y~{|{+Ty%qsg zH*;Q07f5E7WPCAQE1B6qyvhNKA%7o$44KCGd^$%8vnS*8=|L&X3&bCRcdzdSr6o{0 zf!LRNAEeZ5x_v5hlDIKM1*(g--2&WDRyYEZsuf(|Q}E z*KE3cCbKGgLJ|kVi{e$&y)&7e7#~gV%Vd^id^CMcCbJIX!|69Onadd;P7lmtPG)>K zeQOr8H{*lpjM>ccj1Q(OW;07NKA3Ku%`C_GV0u(Ga|)A~#qqzo&O3d34znfWz3Crwn5DrBE}3gJ z?y-Ru%AfM+we7fwJEP=WoW3cSIe^JZeL71Xb2j7M=>>Vr3XFHBPt0SMWV}0lbsn>u zboE>CRk@(57qu4f3J28!HjF0Is|uI{nUbzdKU=^oCC_$;jlqZUwMXY%@Lh1t;2IK~ z2LHd96vcEu?471J^H@CToU)O=ejsmIQN?RzM9@x%$&l~ z{(_ZZ`paTwEvCkx>7pgfHWJ#kpq@IoEN1|ZRDrzkLjL;n%o1jI#%t3zmM}kOygJ>n zoLP+N`qk+hOPOT^ud;!bPr`fktFBJJSIQj1cy+pQ8M7wi)#>;aDwtInFHbM1V3uUOyuGV}nU#@A zHe>q4N@h{%iy(9M?)U>*7uoXnGHC0@-UFbyspA)?AFO27uCHffcsU(ZQ1yzg4dh^W zabPAJ!^<{^z#NdkdXPXVXd}5UUJbh6Wvr@eP=me)u*r;j*yqRJ;A9PYkFF5_Zm^_1x;pI%QM%#WJuq!`!!Cbj) zHXFms8YTt?!`u5oXMjM)r5@C>F}zHJXo-Pn;q``TDF$ir1eNB~ovWEe>p^O@L0r%^ zC;whd1@WaplbX``fB(M(&At0{E(LY5eY(Na3uch`Pw=!mcvo&RNXJV?XiWlc$-nRi ziGfc30&m59_re~;KMI-zKbrUV|I6K=R%frR!4q}{NsnI9N1hxEkfZ%FK%SikQa3Me z`iE*}sd}RcZ16>YZ$XQ|dqvyf%2h$iL5u!8dPOX@N2$dZ*H=d8^A`~M|q6&upp zTUL;4H^^}CoY{^S^s#_&4kMGQzms7J4@ zw-#8z5xBRLX0kE7wubHtT?#Tz4}9ck>4_K9K|F;Q3Lw3ph`0}G?0|MWetWTJ8XLoF z))!K&xu6dA%k2yd46mUVZiCv>FV>1rUs%hmXwW4ND%19YngK8B#KApPP|KqE5-Y>Y z?W~}EbfDXDz=d4ry%%%dO#f8Ntifa?K3%4cS%&G$&goWl%)w0acTVrGV|HMw6`Ovs zj@eY#O$=lb=$@bxFT5_Yg3h)FH3(kliLo)fTn6qk9|P}}diO&6;&kJBW;Le8iPNL& znH88WicYVsXSUXyA_@u@_&G%~e_wEc#PXOK7+w}KGBCWn2OdcPonQp2t6%VlPIqcx*5G?20tpgO zIdx5BdPM`Xj`xd~fBwJpXJTM@ZS2_z*D*;1(nSXefJ3kmNx%Tqiz+}806WWm`}Fq> z%ucG-Z~lP#=V0IHCxRM--(So;32GpM3GR80?SWUgmoe>nYmBeR_LbnpfBkWytf zXrl+jSFb}~g2uHW&H~%Pw{5yY6SIa%2tv_|A3|)9o$=6O{Dlx3gWA;d zHBYZ;Vm8n-c<}fC%MVCt25hcX9C(f%99VTiY>=b)UzkjpeyfSum`{EyxJv*I2jQ*L zrJI?h`Mzxdi-CjU)t2cl&CI4Y#btm0gGOhLfr}c$|1U0`VFfKDf8lc+=6&!E%I+m*FsDl$0=0SgTh&04 z-Fp}OhAbYr|04U)bjMC+NybCdqdS>v7!OUq(aEgNcyL-5vm)cc?MhwD@r;ZIrZ;sn zdou2yex{o_hjIUO%N}M|#{JXldzgzD_f7xQ!|cPjZ@PUia|YwS=_`7f4N~?(x|gjt zz^BUn2YFR6n~mY+Lm`mU{=e7+Q;-E7{sb%d02%;0AO!BtyqE}6zy=z31r??5UYrLh zm=9G@uy?vmAF~SM-sy>b%oAj8H~#(a*^PFV9LSR|KF*rX+s~ZJ)KxIOq@THg$z$I3 zZ~e^gSs1rXe>R0VT6!BOTuN{F^lk+y_vqal@eR}#e)qyCZhFjAW_6~Ok<(kJGEZRK zI$dlUa~R{+>ABOGWf+;KcTHo~VB9)=^E75H#x2wDO=DJ3*uuu}+Aj@uT^4w;Bk1Vz z-mM@rU(DGuU1>VA8snDfp3|ANnQmO0UN)WCn5kHA`hz*l23#ODpsDYfk<*_}XLe@X zJY91JvoX_!u<3C#n6nu-Pd_z-S%GoW^w%?(Wf?b3=bXtbYq6ROR1VJtxqKJss9sR_ z;?cXm|M@jov%j-3@C&v!`~gpAJ^1|p|1Qw194IOhHcgM4$y~{}ar%v!%&JWHIH&)g z$$Wru!}J5Qm__S1fSW@M;DHvc#0h=P;`>*=d5J&4wuBKe1{HQ#jlwjKc9Ii+k;;3SNKzzfOK338G?N2!W{37u+Dq z4_ul5dyxlH?Fi<)dyxp@n7nx9`S<^8-4~BRlp0v-*$X$2lq8g63F7d)I0RC_`eL`| z-}?Xj+%Ne+Ra525jiA;~=i%4Fl06jEsR?(G1@@9)ootk44;p|>BO znl?RUA+tKu#);E=7cwiu4o7+(AuemvQOz`en?{kxM`()-C{>P`l#ARuI3}b%#f@1w-k~*9$y)ZKM8! zS|7ZPa-dlx)+7~>QBy&4P>|{7%mOyZ;aDD^i45y^5LX{vJY9M@^BTs*(@!jC?q^&) zJz@oOHq%YZ=|@*Er!y5;PS;z>?4`H}WI4h+|3Pb{nyca7dB1S`%$3X+7@2~@rf08a z))Af$8Oy0X!BCP18ghDZZ~pXEtC^Q_`9^|P-rRrDK5u&D8s=0cvG3CltYNN@nz8{@ zW`Yj{aoho_jG-GBa+0?Ptz~9rVp=|BdiZ)~E5 zMw{tx*E3tPxUFGjn69;fS&Jz`e0tahW=p2G4$~)YU=C*znLPc~24)$lS)l&@XOGU< z3m(0$2Ru3uhnW6O z+J12xvl1iY|<79?49nukJ*~D7nFJLzxdlTy?Y;XCu7fa(f!PRj6K^^_A|FIGImXWd4PE_W7qWF zgUqKmJ3(#u_b)U$rzad@p1{~K{o^5KdB%?Ef`^$)ncUi@cN}IuEZok<@cIFG%VY^C z6c4=6YM&l=g!vBBr?=B>jxtxvwt^B7=*AzP&fFcK@kmfN88VW)rFHt1qs)Pft<%+x zF*`A~PR~5XY$w|S(*RS<-=YL*%DgzzGX2OgW;e!`>DmO%UVr-cnbewq+ zlf~=l-;OgEN;V_u2VGeL9RcEKp5AbR8MH?K>IvpV#-{1!Cz)*-o2HkZWOkBl#I9#Y z-XozlRBYs0`@vkqbVZk6zR^PIo-Te1x%KI@@VxJI03TuBVwViPnRR z^FX4_IBUD+63CNhGTZ25wvK$GO4!9K9GmNOf}ODC{2>p$-4 z3KyAWTxVPY&8vg2(whNU*Jk>Z2UIkH*Cm6s$vUwyyo7G8vjm+Y>;n=2ANC2px@IoV z^u~+KGOGVw*cib5QIB5H>d&AV?`JQnK}tba#zO9`iQ$=k=pwUveXtW~))`zlfIAB> znAF)AUdMtOex3JTd{tv(cpZQ=&-?@=V2^Z(&1H~)-isKCzyDvWL$9dW4-%7l;QqsBz`}_ZOC`baj$L_EiXi3BU7rN!sH(zE}l-+S3e6luZ_bq6N z#LoMmI|KGk0I~PpoBr`KvoK@Xbk-}(DvagRwXQHLFqTjEzQQcUSiU{&3bP_3lc~=1 z&a2FJ!ljS|52`8rL1Fr0UFq~&SD8Dwtn?u@MM=r_oNLTAj4Ud5SQ)mzxz5bP$aG}( z^j|laJ(((JPj|h^e3j+XO;(2Ka<`bzG9BDA{p~I0)iU{P46h&a%QIl!HgF|>`Ig(v zj7$+*rf<8$EXS0wWBRo_%+s09Z=arjmsx{p>GtU}?=nwf%$=@tkJ*xG`KIaV_n2jw zc5Iv8c8_@hW6pH-`^*74IUr|)%cfqGTg|^`voXA04cT-q0=hW&#nbHRi|;dQusB{} zWte{cKC`HJHmEWMFTsMeYr!+^z1h=$-)B~4%$_d)fLYvwPac%--o285;v=1Hy68q2Uga)9W5ED=^t@o4()y zv$Vm*PH=MvyfmbHD>xPQ<%2GsLD|(^oexS=-(P&qoc{U&bAU2vUBv^><~j|A5>C(V zI)fKhS!@iR&2j^`}>kYvA z>McMw7Dzo})?&<@?)r#Xo-3p8FSxT_lrcT;5wkC2#`HapnB^HWrr&wQJc}`7dii5! z2c}Zi?K>YcM=&v_P8WK{?8>rr!r%YXqn|NXGNw$w`i$9D}My0xy|2%O!z&mi(==Kx3rcu^q34KqHb2uSGzk1*a3IKYYn7$(T6( z_eMkf=?!Pz%Dqp}Q zMK|O==T06_P5wgY-yhIPa-gfsAO%q&526{i;>Bcd(6X4<0^poh+wr2=d;01(%u2%h z>;L|LZ44HLEHUx(p8ntsvo@EaHzXgPj-4+0mN|+sZhFC6W(mgF>78$x(->o?e}M2f z-!cESh=KU^3}{rbJ9Yz-U%$WThym5-km<_RAO+y=JZLRZL(Fu$_smL6HD9JDy=M-R z(D(xC1-Q=e=neqgKl_~Js^tB(DO&Fu5Kl;F&!5B5&`y;cIP86sl1J{YIN&i9JdhlR!BReQt9PvQv zXTA9QWBSC8%qHoPYz&^=dsG&HYL?djB?6w!dsJqCT8SmBFP4HNoA;>v0P}f4>KH(S z*u7A30VW0ph7z#21W3FTDz1SLHvoypMzT%T$&?lVN%!ti5daMlO7i{tKba>>X1cQl zqoS0BGbnw&fBhJow!tQPfOOu9n7-~4vms-|^ar1qt(8HYy5?%omQL^P8hwiw(GUU9 zmQIjBzzeU4>2{x))fpqEr+sEtWo}evo8GsFQ_I5X?|)!$7 zjBNYA|2-RzM1aTYpT9U$3ChK_7hZe~V`F$Br#$_`XXXkfm&MbwzA(o!JzX^YjuwqW3IsR9k@fYxbP z1hX-`%mMLwS((^DW8vUiSHh*Yr~hEiWnv7Ne)Si#fK>E5b ziq5cZ=l#v>&cx_9J@hZLf`lJ7Ri93>ZtwjITHWF^J?ua8K}PSX5-bXg-cv1Eq?t92 zvrY|XdBEs3-GY&&jnQ-Zenu7rM$hRF7+LZeJ*NjSvDh$rPVZ%6QDyX;zL|+7ozY{u zG&740qsR0JW)>|*kLk_KEP0IX(?2n@I4HV9hP+y0R2dl3CU|tV27pFhK*x%H1D)ZJ z?LIx21+4lI3yXuI8&vfcWvJ=|6xFlcrYp0u5Za3y)NoQnqm_D1E#hTH6`gLv=eMbA~>^v-`jP}!Od03no?WP~( zVUc6BoBn`@rH;{VdOR;jJDH{^RkpM+D^COW6_Ydg=gEASu)@eL+G@w zz3ujTK9*@LOxshYiwm>JGFnVG6=pfiq@un3moUp;My8|H(|?MxbP4RNV`K2>Y?b&8 z8vU~E*4RE-jO7gz6L0zUMoE@9Mp52sHqdzgjX(eYgU_@A4U1_`|02cG!)P$QQJN*1 z>1X@&d(teRQ;}6GNe-Tp4wzKb2+CW!e=vT||yWpHX+ZiyVu&i7u!h0uRPQ>Sxek z$BS<|Aj9{9+~(1{^}>(;|967M_C9+o_2^}dYn{Gcjzv>S2UJdN4Patm@U-6Qz{J2% zDgauY_~K5)^iOgus*F0@CFEJe7+LO3W@VUeq`=b2B-uQDuL6rYiv~#Kg#wE=lV`|w zQ$?0&Mn=u)6O~wYvK$Kj`+xcc6&BIyr7A4e)8{F(crt2Cf1%8xAgzvw5ifRVjDWZM z&sLwVtioc+vLWd2|LF-TEN@s21pfU$JwTP^2BYe9O*IxBX;qM3$Vk;x@TtPzeLCNP zhNk^grx&QP*s{b2{QbXuqZ&&BBa?UFbYTsaSVraPg&Hhsj7rmIXt3C+USMT-ITc(a zf!eM<-K7^^2!q5L!D8V1n3yk2|E<9y&3c}d;brLb{~9b}TBkv5ORy45Q5zBJ~m=i8inVNFm6XAoD%CV-LLebB>kaWfrJ}Z94Gh|4Z=A#uW$t{6|rg4w3@x z-9-@%1c~Z{j0O4I8N^eB^5Dkn9{BTrda@RaP`x-v9@N2snel=ZB=Q(ED)xK-pZ_m! zg3c1@F1-NP`xGR47+v%{NOUc_=uVL6bdXu=K`hX2U6?&!Z_cdW|L6bfD)1=azZZYb zvNF8RebEXMO9Sr}m0Q&S8gcaY%m+8iug7 zfQW0t#r;9zpq9k97gIn+vc8br|L1=_Klgsn8Fi33>YB5xpiS)1LH!rJ;-J;8;EeU+ z;uX-u&5KixfBu6TONRenoU{D%e;-J*;r|zlR9GQbW*Yu~vCZ<&f5UGt<~xEX!zw=i z|No*m6XdA96F&Y2tu$7B4YTG(J!mj<+0p<1UmgU75)VQKB#}ECtPN~LHi|rsSn_jUpyw-fJ{<;d($LfW6 z>aKV_*oOyx{{R0XP#m zx&yO7jq~R(q~zEbUO2;@2zJ&JzrX)qmqN?{+m-U?cn@#2>aYF_c^1`qjy28KZ) zcH0KjPT4yHR8w_tT>uiAp#<)2bU=hAfP|Ks|EUKJDOW(mKvN?xiXh4|AVQ#e^+mlo z*sutQ5U65)kpmI(fCzzV_7{;LA<&5WRtJ#TT1ue6`tQ-b)dIwo26MlAbeGO}!4GCX zf6*z!#=z^@dF1tT5Hat?iWk$<^jH*RWI@ZAstrKr;R<;)S8FhoaD(rjiGBG@X8R&N z78gc!X;3`@YUpu#bXQxvmq&v)=(um||B?*I2@jy+c#;&7#;Yl84CSD!lwP<> zO?NhA@nt*C%JAaHj_K13Sqhm{_fF?DVu_HKgf#m-!Q~OssiPvG9TYl}(;JLfBpD^A z&oW}sVG3iLe!_^woKa$$F^jB;1jq%TN};3zJp2HzOu8gM{zU8xaFIZA(cYx#fyOLi zj1to`j9DBFkFtW64&2@L=RZGazlH~B%*g&IE5nOZ+y4BA?lh`h@uDUXGWg6UzWtUl zizg$W7{tg9Q0UxEm~LpwVk)(bnH6;G+9!TN*N&1o{2jMJt^dyZFLcDFH<+?W${_1W zPhex89Sf9xGcJTt0~JuMiH~kplR8A9^bEd9DHXFnunWmaC(+Gi#}5`^uN>HZch){H{a zyDeBG*$%KWym+#4`YH>S4U9t5qb*r-7zL-Fuw;41D6oCI70X0MmLuh?4AXsVSj<^E zL9BKg7L{Z^Q0N|sKU(M7ZN<+#2XtveWM+V6_eqw>2K{= zOc;5lE7`LsoA7{)11H`DMB+{2LDIN1jE$jO0o1t>0)Hc3EA%C%p$?a$UZ&V zg{6{_ZTeLg7GFlG>B_DwevE9>i(FZ>VkR_#`sCk1^R}U8fB&}}D9QEcwe3j&g(>gi zM(|muQ(8f-#Lx|pxsiDnSs7kuLf3 zEmQKU>B8lW@B+J28DM+zF zoG^u9x{nu&w-f_t5DUxwSl1b*Z}ehW%E&N1+?%C|al`am-YmbF{B7_cE$^MG$YE4<9}H}O9>A!fQR}| zyx0!rA3?tE9;wyAzZzU@gW`{6H8^y8=O99N#f$j0kkCE(2jri_pd{t9_78ZfP#qN3 zprJ1vCXn3y7t0`OJV1MbK)DB02u%9JI^ExoMN9(hifRc+iLC%Fv3dToPOtT2iDCM~ zy8X5viwh&m+hkUT>B<2tubAe$P3I3}(P0v_oo*Y*QpXaQ#L6&ze;|t@~?7C=I^H;4`I<|vQVA=Erew+(>K=X7933SJR0vc9?6o!_;Gqj6iXT7hv}!ISV|Z_Om~Q831a*(eR4F5 zF5~;@2cuc!ZTZ~5wu>%chi+ku-T}%mkc|G~-yBwk7oB~eM0Oa|fAav{B44Qn3e5X2 z4!@f&8^cn?_3yYt=j z&{&qcjBlqK$FZbHy9^uoycyq2SBqz{ zV0<$@KAt5)_BBFNjEaP3vyBQv$rjJ<8WoNgTV7AU63?Q{_>3jwn;q&R8{wR^9l=0>Eh$I#!M#dM@qmx;7GVRcvE|$Wg z&NN?lx_t_ZnACJ#Hik6*{1a*Xw|HlR*(E2^_;2&h*PWi9!eXiO44kJM7(9AiXO!@I zbk}ygI1Li(b)5m4mF92x4C?5E#+0@^n|>vQ#f0(Mbk0;31;%IFwNhD38JT$drYEMc z^fJwwzWqZQ%S1*M?sK5xj=v@O|NsBH85jf^3=cH^2GRU2phHzV@4wJIKYeKiOB7S* z)ai_wEJlKs-Qe~=XaS2$=eHMH-P2t%St6OClVuvy^t02=vsjE6`=)1Qu>>-0 z?3}(gi^U=4f)!|j5>#5gSoeUH0kp{ybbzBrukB8R%oM21A<*b(ukGoNYz(g@J$h}Y zTd^^`7Vzk`?FKQ}J$h}Yeu5hp|6qD#HjA{(16J?}v7n>=K?m|c1`;|EKd8u`FSUWcmAl`}QIh5k?kA=D+{9pD$*4%*6CdVfvOb7JsId3e#E3Sv(l8 zO!q5iiD&vRzkPiFMp3l`I}CjOVsD)w1X^GTWvz zP2W_<@|@{$*7Vu+EV~&`PY-Wk(Pcb6y|sa5I#WXCbh$>BHOxvWOw-Rcvh?T(9|G?c z0i`bR)Zz0N(kDUbVlSxi4)r#u?ag|Um0`MMGK(VUelU;Ttq^C3&U9sGc;WJM`>rOI zTa4lk@}O)9ULFKe^8Y_*%gy2a(^t2!xHDC`O#jltGJ{FMWqMyLizja>cwhBakj*b7 zw?AoRnaRj_WP4pZi!lr1{^^^#SxzwKPp|G_iRA476-=Nrx(>a#+cy1S56ch6z0+^? zvgk7X_216f$0E)o)&uI@fcE4x|6nXR1TKbOl634h@y32GHTbAzofBsMR*~cO^eg1ToN+uD_=@0j@s4~SXO?RBZ(#~;B z5o)mFau#KI^ocWB^rd^Q{Qi%aa|Xo# zWM-E&TVuNH3Kmn=&5SQH!>5bRVliepa_7(g=>i8?q^GCPV%f{J0o14mZEDV(Ua*qI zoc*{eJHv}f52okLX31s>Rh@owHj6UTBDv}RX0uc>smo2ToWtVDbVqjjkvS}eocGzl zu44Ey{ofpxM5eRK+Y{%qh%j=-vx3DNK25Ki$8wW#&Gd-*ER{^&pQc})&tl4Xh8Zjy zy95+}6^yH=cP(I<%DI&ZEb6uxBx*c8dLc^-E}P!Hl*NU`79`-ak40hn=cO#gOvj`k5ick* zy?+_Y1J2YxVC`)$r&lazv0{lj4~Yfw>1UU-m`Zyc!x0ObQlMBcW771T9=d`>pQYm* zBnp(KuUf&fhjG#L^pz|Q60PFw3@-vM{rT^?-#fC+;@Z(%6Q5qwhXT|0uVhJN;t`*o zIG06yy5%aCpPY++fZcKU>2&MWEQw4LM7Pgd&BDXTsr4N!?)_x?<~1x280Uh*y@->; z@KPFoJ}du|>HO~ZW z8(G3RX0kGPbhEDQn{K&@#g=KC&Gd>*EKy8CebcXOV$tNXPXO6_{Dt_;>Fk?XbQxz% zH{Hx4&p2ax=w_A}ju~LRy1mnPZe}TE+SW7OU<->9*Q+>)oe*{rFZE1<9}3tPG&*{J#D9|KIVLD+lAt zH=r``UiP$YEcY3wOn!Z>ky$SxLpj!92g8D30@ zfu>tfxx*I6#?J6UbNZECEY>W4cmMf6U3fQ(JL81u(Ysk(S#m%EOLnu&V|v8`PPWXZ z|5&Hz>|yEQSoW6{QsjV226j-9Q~sBAy4GG66V9?{V7sSZo}Rv!#hfK?=b!)67wu(< zW9*&IxR1r1<;V_5nKPNmmkCnb%=kT>V?WCT4z}OuhF<^0Iz4w9iy`OD$6!N$U6{^t zfW@5U;xR2} zmv&CqImD99JoO*j^jU{k)CBH*XJts!gDnV7n=ow-OF47+ch>1ub67l>dA_qwKRSoS zfRq0L*hvOwr=L5_lF0n`58HO5BP^_poOADiCH9@3?r@alsYoj;!^{82K^v4JJiwip z7saj9EswGMWHg;_e4J$}W6SiD$60FGpZ#ECc(HNwbl(#!(oB1=P0u>P;=$NFee($x zJ?SR!P@`|_6aE%O2k^Kbbbsfers;o9up~0^S1*r0$->CkxIN(%3nwF^!S<}vEVCH- z>cAQy3%F+0Z5KMr;>*lfJw4$9ixOk?^yUjJ_MBCqRD1u$-m2-RFR zwY~QuOCuv=#dQA5EOQwvwy(X+qRhxy2I_e|f3d!7`pqjWy^Lkk)336~GnP$nzsge0 zbgFnd%Qcqc!X>Pbm0Kqu-MIrVR+UV@ca3GHC`badkO;KF4cZ#`Q#`%rI!h8`@$~oC zSppb~r#swWkz_2M9(997mSyU^KmVs!-(YcIESkRO2Fpa2{d52PpB{LVf}p#;oa&9C-PiW|_j6 zK0V_J%R9!j>ETaVHFX*1jO)2~>JSonMX{GZPFn#GYZVY>5cmKc`Y?mz#hFMiEZ$Ig9~jp4<${^=TT zSj<`0c7Y}#-mt_o#!Wx`hQ*KNcjuq~+eP29NHQ|UPS=0OVkR96@;7MchQH;n2q^J^ zW>7%=1iRSj4ewZFS@Jvn{GYz?9ZN7{%=EACShQK*wEy`(UFAJXBxB6N{O|MbKUEVCJ-rvLrG;=*#e z_0Rw5t{+)anY9?8UOf1bMV5Kq|KHOeeq_;NVFW4Q|HR_J7&$%Q6N@U#^p-#Wr&oSr zsbY+n{^b)(C}YHQug@$F?2FE_F}%p_m_G3{%YLSs(CI;6SakTpK~3-{CE#lo{)A2M z`NA@VF>JcxR~C83u<4FpS!@Kt*MT$g3qR0NLah`2P51l5A~AjGSC&dXy-T1b{aVn@ zycd^Rr|W!U(P6ssV|vs#mNdrD=?A~D#IoyMWMg=7vt_#KcNRsaXWyrLd}mq1q`qSM zx9==ZIe)GK8{OqSJ^mz%#PmNuSUO~bz&(vtRnTn$-E%>wuD`5ig6yo|4w}C3CyOLw z(DvOwSyUML0$3RuYELkfN_lj%{&b!G_7{sPmzD%5BOiak6gXYxH;Xz)0BCvHFVLMK zKUu`4C;nzx&*(p0@DGb5qyKj8KPc=`T2=oZG~FD{CLO?mzD zMY;;4l4=B<9MBD30ej4WgYjh{s3!AL**@hj%SI;Q=Sx7nN6`r<*%$JwCsN$sMn3{%guiaG54&cg7r39L$#@h&J1{)0wy+(cO!US>mtUx7C3 zcE0!M-U^xwcyU^YmEmOoSc-N2?dkQ5tV)i?p!Ld~t__GQ#!MUTfJXno>zrQf5oBd} z$q3dW3Ks9Y{~`lq%v%o7%0^Zjh%xmSK+Bv_jgdt%CK6=KJg^o~uz2Ua7pWqw3@^Jt zVx8ALdRedC2A5Z$xet%-sUYfwGe|`SNJTH}b|mS}^U$?)Foja}AeHtYm7p25e=oAW zu`s;U2l0DtpFyH!{V`Yw{uO3rcqs&tY+ekC58hWt*+A!xb)NwFJoEx&q;o3B&{v?7 z?0Rh%E@6d+|9+6}E9?vm;0g>f!u-4bD`;>DG;8|e!&erDms=sa)F7tY9s!%Khhn+~ z$n;)z28I`Y&wu}a*$kSM?p_O8t?bdux_cKmFdqE*|Nmt_D3NJ_)WowRZf^JvIySil zWS1v914BKy8wPPq!B-ZB7r&qV{{PYd>`A6 zE_Mcn4UCcOE{z8CCIkK@Rp z7z7HhKGdXk4G;o)uaeb=VE2GR6H>c=_#zN zHuc#MWvUQmedx;8f-(*h#M+%;YelV&z!LHW0aj$s34Uf_czF$UHb}3n`vPzX*6jw{ z?tc_yJIsaP%(xDsu3jFZFbtwl9Yvub$nrLb!te9J2I@i7{Xc?iASXy&97NrDh&nci zy6Y(F9)c2}84FUV#wUMbVR)$m(K;2P^~^4?o9CivT@KRvhZ!9Fxe#?rAnHm{)YXI3 zU15e>@&Co&kJB01Sw)%Hu1}X>XH}_Z;ALfa*~*NPEY^HvVR%^xG5ygzuty~!roRG5 z2rT5j@Ut?!^hB8c{Y4Q-r#VFD3W(18JHhVXfTD93NGCrt14F$>uWbWF;dY3^4itrx zKnkCO>bhRr2#C6Vh`Iz6by*;Fpqo2AdTk9L>e3^m)9Pm zPyj`t6i8t{Xg$vVQ=k&)>hxp|R_*$A+^h^QjUoD%fI6nVytj9NJ-Fr&avIpi2dZNs zo9qqX`OV-13&YE=pxMY?+cb#oxe(oXD7q^^y3c~P$0Kf3`tqKI;br|!kY-4s{sbhj z5;RrY`5iQ(e+9&!iFBI{xJ=v!5(OPU@6l`fWezwlwINpiIf(3FHjtH|ZShEVWj2BI zx`S-&wcP>MThA-MAMD!$D4I`!5|KPa;ey#9V@2%`ut5jN-|~Q3r(h=!SDM2FL#3W#v>NRK6uB%@Ny}r z2uXYJ`~SQ zmbKf0#93b)yZ`$?Klf|SmoaP%44@e{$R=p;Hs`Fa=})*=jm1TE|NMXLf{+CDhh8Xj zP1oaQ73X8`0)-a%B<>ftb*2Y%vl?@W{etXM4zQm-ftyuZ|6&;ngJKLVcf`}bl=+4NW3tg3u>-~9${3>6oLX6<|!YLdtQS>_t?uw zHc-e+7v^IXm0gkqiJ)~hpw7}U@U3*+!2+Q6MrYD=S3XupCbp949ek|zVy$f~3@Y<)x=iO=rq>IwN*ix#VF91+ z4vJW?vlh01odb5l)E1Bv-@o|l02Tu~@#2^1X9ZYu>y2JPqH>NUE5pkIxOc&7zBPl@ zgB@b^<|(Ilj-RK;3b9IweSPu!KlqFmP_Tk_m3H2H!B{Z8SBTYusl93X zaUoV&*^cM%LhGe4cykXZAi;4S>pz`Qm{m;C)fVE}{pPF;FDFCP7=C+U7X=Bw73R|| zgjuy+UN(YV0Nz)7w-KTx-5l&l$P$$o&m+NQ05~Jvehy}Xw(q`J4^?exK7F|`s~OY! z`P1(UvpVx>K}-b4NZ!Zk1|qCd^-lA__hg*#=-w&-3Jx&8cP}{R-R6N4A6UKC$3Ooa zw==?m=X3)LgKNuw@TJyZJ9jl8Tzl@>Z}8GIkk7%Ad!IqPrfvpyKDd={`2WQ;YnCMN zjJALoE5mDLP^k9q1+V4meFpXoXj2_^V)`g5L4het$Pro3>`i3PS{?GsE2gF%57>&2T6le8hV!Bnf-9(Bt zfRRa~W_z17>kdYybH&>oWLdQtnH(#p=gP54FzRk^lVgoxWI9zo{fRuQCX;>MbbbX^ zGp6+N>Fx@wO-zr=rk_?|)n^LIo&HCGHJB;3Y29R*)bA#g&ZB#W_8KNEIVh@8-0O%G_XAaN`C(s_07gfHHcx+Lh z9;3_}!*s=d`z~cxXGTV~?f+C*QyCerO;1r{)n-(gK0%E&jj2p_x@9Gc*>pX1RwbtC z71M*%SywVDPyeIN8p5bNJy3&Hon?yOpa0WqG+5Iam8U<^U^O&Q0(lU$aDu-Dbo?E- zW$?|X^VN$!kW6>!0uSrb38lOqy|oiwoc09`V`;KxF)B^ppvh_~t%%U90xDHN4L$Id zfPIS7v{-dm1bqJdpKhSV>MN$m%J8xpH2l&GJHPzIi?0gPCu^}Dl~w?+9|4`Rg1j`W z^Y{x(h3UoGtQw4Gr_a%5O{kY=WiUMXa_z7G|6jE3`~Cm5tRv)(ab{o8u}=R%J?gt> zSU}72()NK`E}#GfIXmMfIA`ntRWm%9hyosTRR4?Lvj6|T1nnCFpQ7{r1^0PKZY`Aq zXE?*#FT21S4Uc(DuhwDZ_AWE~^B=T&6_mZf`EF|l3&U$)i0;=Mo}I_`vw|Cp_g>r% zWq}@r(+%F)5N9KhCEy>pqziuqu2HU&vZK@ z)(|sE@ZjdQ!@HRo7#R3nZ-8n7QJ-GhCSG<1u-?~-hPPc?{+GV?>9tkm1>H%&8pk{R zgb}N;;>B22hSw$h+YUGXU@Fb@=rz5Q1nT0{ZUFBBd2wmtbQxn-O>NNlXRm2yGE@#c z_Az-P_!7w-pyFwgM>8lJvA&Rym|kGax{m1{|8xZtR!gSE{L`aNSgn}S`=?JgVbzha z8r@%+>4%~%b&dhUSq9)FP{I(?TJtAR`ql&>Yq%3ydK zvbhwpWxh#dI-5DGk&_7rsNDcMRig{km67o1wY^~k?!kT9z{apo4b*oExDQQNua!MI zAnc2X!>UhRwpiYsG|Eq)9o!;BS3>EpoI5AaQXsE*5gd7EYmZs zSd9f2+<=&sBM1(|hs@L0TCvJ9HO-lR#)>sWKmgpwd=U>C?*Lt4IbG3`RfOvYxXwHN z;)1|*KWo-Yg8ZPeAy(n#Q&5T0E8Dwlx}goL0VDtPBpX&EUOuoHuM2#7Rb`h=UueT> z$jCSSvJI=TBp;|;zW<_Ui=SnU;fSQ%mur@c`#1Ou-xtvwpyiuaSQuW^Uzy(T z#OliV;}gik&tE^Deo%&8l6e9L>*SX?`f5u)fh>LV`aWp&f4CM%&Hon**+FaaFC%KV z>2|KH0n9JhStlpvh%udKpT5$SHI+Goopt)hx6EQp{_N8=-B@**6xgRnxUp(8iL*~{ zbz{w!{_&3mv<8&Jw>wY32XufcWRdBk7xUSs^SiSuIl6+D95)}4K+0A7y+I>spxwGJ z=57WR2ZudCRpdi|P#XkNGQGIs50be5B93)>kvnT8(?{0nZ{1n-nd(@#%XzR$FiNxW zfTpurL8s}Xp72`QGCk0f)spei^lnd9dkLjKEDS!~kV}bt7(u5o`E)*dafW&NBTrU+ zrc~zX!d|SwVgk&d#g!h-kb7uKz_(WXVVYj!#cI!N_?u<=J}*`=nPcD;#gInfThJ&O zv|ab;#XhF#AG}yQnT(mHS9`N6Gx`0RzQCJRis=*M^gZ6J&P;EAPG|ICbzm}zo9^tx zs>;;zb9$B!tCXY$BXqHJtbmW@?^0pt^3z8B>2rNp#Um@${RUmGvV(!Y#Ts;uZg=g0 z7wZ^U8D8rC`~M%>-xFEK!ti4L{NMkPLX}}1DDV!yc7k*icD%6nVqth~0^u!qVdyoT z*OygFS=0;EC;)r;1?PXz(a_)%IbQtr1ZltjqWwS1bT404O(u1Q>7~A`H8#J$gCe_@ z!?Qb90JP-Xw>MS515|y28@F@+voQED{`ToiJ>l6YqtZ~jhk?HZbXcfIujtJ1?Ye%f zER53JY~W}EozmxV96XH=T{u=%H{Hjd)tK?^^ag)c4+)iT;AmR`T73(Sws$_Azh0dC zJNf`D6GZ&Y&+UhTS*scO*N3n& z>;g4fK?R`Evh6;htZx{Z_LOb63TG8yWO`&a-6w)oo%0zRs7f&P@||82!78hl4BGS5 z>AJw9xAg-k&N^LJc=WQaWd#MP>jqRm^OsIP9>HqBSUUYj1gkPr^q1+fk*q6q(mPDydQA+ghqT5^76#C@bspUkp53(^h{!$v zVfy_TR&l0=57U3duxc}%d@)@$merlfpjaO?lNF%B@=HFwrUE{o ziqn+OXZpuj)>Nix&!|J`){cve*@r*{zd_<;7e)L!thwlC!eHIy#MO!tdt_24}GpOwL<*H+za`uuoS zae1?6Fy#gw-LV%ux~nS%qlkha3ZU`Jl7M5i5}e&KHa$&;DPcClpNQ-p3a!Ws=)MHa=LO7 zs|wT7$J0HNSUcpUALG>Y>BYWR(?2A!iZkWEn$DTb>d3U{(R80=Ryii8SJQKnS(TXL z9)YYkjZp`+(YswwV72+wOK@KE?2Hv~+-B!#9m`NE>A1}fG+5nv?}dy6sJ2GZ>dN8L zVItxA-xWMw$vb_zVhXDWljFkfv?f~Xg-4Z#H$!~g%H z|6kmH1}eE~FTA)0679VIBH{V=f>c&6Mkc0L(`(XLvslFZSs13jN@G=I%6>MTH=R|7 z<**+M!*ttp)^f&(>08rTcQEBYot~e;8Z5g79NpmYM^J}?-=leN!#~hzfvhiPKAC<$ zgSCor^Yo}p)>NjsQ>GuxWR+u@{&@PsOjcQ@ipSfsSWhzwE?oHMzh`$S1Ng|GV=oTr zPQR1QI*EN*0vp4NO2O%+IjmkRx!iyLZ$F&Fs=_GHIv=E5461s$_V(|&tmceNerLBE z14WRg{y{;+^mnMp%!I$I%YCDZrY(;Ev}b(qedn!dh}wUcSfmFZSRta?mFx2I?;>W%3$i&@(RMT}S(UW7mW_uup2GiLu@ld|a(k20%DDS%p`Pe8}l zfNt+V9IM4~b9zAus|eGl8`IlLSoNiszXV^i1Ul!@<2d*dKWK6NFJ$_K5>^|LggQ_a z1v|1I)Z&l0FCgY^-%DA&n5wT%cP?Y~Wshh_9XJR27%Hgc+P3Z ziw(`w?aEniGc7(fUAlr*lPT=#bhirD8%*;~PFJX8wO~5ZIz6hAbt+T)<>?MEykiiH8xaa4G@5VT086VysCJpfV6b87m8W>zz%D<`*~Xl89-RM9)Z0@`Ze(LMLX zzyJUFTY{ND^U18O_Moo3>jsZrRyMimIjyWF%0ef=<YTh z5i{sw#uu-TZ$I41D$6Ky=@<)xXK#6eN4M(%&)%Bj2_BuLD?GYGJ6`NKHvLZmg9{2s9erT`u5ZZO-4y2O7nR1kF!% zLoSW!HhB5#@Bja`mFSme$$hH-gGaAz3dA5DGnheDAcM+4eWeZ4&vvs))wAZaFuV+8 zWMDu#G3{d>3&TrWP(1gF@>;Voybu8C(qUv^*ryKm8mo>tsK4zx!=smVi3JBS&wKQ;)&@_X*u$z=Uj;Iv4V1SI#Q*;Py56IgH69cMovs`9fflNG z^s+jLfo-1gGX4Mm|KRym@Dv2d0e^B?7+!mWvm03K#cPm&l}E2_5coI*(PVEnhJBzp z{TGUzEDWy|kdz((Ddpqe4>}PCqIrGpbo*XbDT&8>{``N*0Xl3o#uIdxC-~6O7iT%A z7xuCWi|ycKVR#t}p7=Qq%MmO$r_btTm6dG;$*qFOy$pcR;HlqtFIIhAams3GO8r%gc43B$sgJ*<5lSH7*xcBa_|1TFo z)WJN^nG5Qyf)Dld=$`(dk5$F9LJd5(w8Nu&EBJum3^0H10dOKO-S8sf?yvu^!8b*N z52X9{Li{i@gHLzv3D6u5sQ8B-_R28bx1Uuq>)9b@2FGoTU6kn|NetEkxK1lVL%?qh<&+?`_KP0et8!LhUo!b zEN;>XdqIU0c*~w3Xv-d`go$&EkA3OBce>#O)_IJ{+b>LDRbphCqc#1@MAmvHX|3s{ zlUR+Io@-8DISJHO6xx1z66*s-;llqcpv`rnl@MC?;a`^N`=+pV2wnRJk+=t;W!?U6 zkC@8p!X(u22P`4m0ijht{F=UQI_o@{3%^0)DOb|?^L4L)*%k~})A;jE&3~~>x3}fg zo<4a7YlV;?SSnvu5<;ss{+up5lXb34(l3PeG%y>g{p1g*cE(w(5168VZht(B^&%5f z9`E#Rb6NG|4)C%vcrqUG)I9Fn8~)#Mw+t%-gQwC|ru&Aa!8^b=386KU-UxbuRKQ*7#f@ziMbe09I zdQ4WO+f5d*CNiqN*Fn+CQ3BTcQ3q-ZNbi^8>AM!P>hovA1bsS>zt~nh{l`MqK&I)d zwtFvP{ldhwaQSq{rL0MEf|^jRFY*h(W=Uv*%7x>gUPf-g^n*)T9hpw)LtT---DDZ7 z2@B^&c2MccI+cBU;VRZ&j6xfqgMu($bSH$CReUzRb`5KnkSK&NDhr`yTc2*1T+15B z!lc4IJ!d0pGt+#o=^r<;o@J6;JN>{WRyC#-oYP-`=xv{-3v6bUJ&Zf5<&eDNR4^sFtc^5)L}SQvJJ&N2g~U{IOo`0bcN$$F1oQ$vsp z=;#!XOb!DBgX6bj4kfcadQH{;u}nX(g;ktc^B>FfTU%HalujwJG3?g>4a|Uu7mE|X zfw4u24SGF?P~vu(t*kScn0`#1zHK|JqVrpMs1zv7PsFk?crf1b=&cd_|C+;x@xDiI zjn#jTUeV()RWFu;l=O;jgA0hnO_$oidWY%N12@Ad%uA0 z(wGA(Z&D^tuiMFboGE?scK2PZyO@|(PngcUm(_r&a>8^|5bZu;d-`71pR7ziUDMrn zu_|nDI?UR@%(Sg-I?HiZcc$F7>AuHVRqBHUP`s$)2eL=hl!J|7zaYrtAmW7>L{wb> z>bn=M5CJim0LZ(A5HTj07-(cI79u9b!N#x;WD+RMPx^wauoe9WqUuF2^RqGRlLC3k z5u*4INB|VxKAqQJ$U?-{A;g})-~@}=u6zwLKvb9=ltn=L86o0pk;G*|;x8cZiw@W9=8d4vG>`D8Ddu2PtJ;_ITTQ)?_9o&zk9}7g-IM#A~KczsPFB^ssvS z*^8`AY)qM@(*tj?UT2z6GF|H?YZa47$@FD6S;Ol=rx+k*k_FZv<3wkE12t#9znBQ& zF8T(VfH?M|3BsNHmlcwQKndp^M64br1{zwr1s1cdx(POH&sSE4ec(8|1QD-8h}S~` zX%|GI86g4Dum~dFjwB9_<1UE!QY3M392Z%GIwJ2qdPP6{fx7X9A4F{+Bt6^!iA#gh zgBwUZwO91}S5}7CAs)S=`#@5lK=tW7|3VTZ+iUyu71#@lK~mskE(jJEP5KH75zyG{ z3x8X%k^r#C{}&Iez}!v<*QfK?i*r`f6K=CQF?;=DozA*|RhMa&<@PJLS+_7UiCo{_ zb(i%Llkf(JM*=^xGVGHCIqtma_WTE|KbTZ&-?1X+WiunN>HTk68TJK&+K8RUUnm(( z?|ICsQ2zidXRB}ltRxGh1RUxW5OEbGad65^fQV}%iG$U9K*V*C#KD1X01@{_5(fu5 zXrRNR*VbnJRfNU5AWtwrH2gXX7C-fh6`CbpfQB`CMGHYL1ZBV%#|^iqKVcPSWKuf6 zz2+(FYewOvm%w`Vf%Jd_UQUmB$(qCTA$j_# zm#j`qYm%q)y<)W%bAG`JDL#T;fU?MaPz0aXo*w^-HJC}Har%~5tUgTZ&QE80&6>cJ z(l9;cHLHR4#B*Rv6rZy)>{A3;GF=NKVEYhVyk2Yi{@1K>y!v^d$y||B9=)b2Z>GO` z&8i^A1Q9yu(aZb&HAt4_VC>-u(*stqN^m|r3NnuM=+WtpZ&-twex08_?G0-uQ~vqs zif>uZFuf|A{{Ahi8gu12mgz4yv8pn)Z=Y`ej#W-Q{uwK@D&DFNY9+criXxA0JCANR z4v%gJ36EY=k+a)d-m!8r@?L)m^6)j#0-hGN>9gLmIxtn8+kWRgD>D;+Z4PKq1-x9~ z79$%2e7S%CYwdv-p~}-GKe1Xe+ni#V{&ga29rNy!EYr&-u^KYBpJbW7Y7(nF)9g*t zwLh~uGi9EbUhtWF+HF*8iJ{lcor^zYvGj4!O5Oibbnrx$-?UB$UR z1JqzKy|8?`+ILnPCdrcNDc@NQm@XcfKJ7be0@JiR(|>$tm1jyRo-X-=)t*V<$o8lo ztRjp|X}7l*{A4v`WHP=reeo~W3Qi^PCwh?~Umff3qqx zl^mG@M2n`+`okK-H0}EIAAeYtnSA$em;KASmRY!XKPVP>_v{CC zCI0yI@?JbJ^)8!{@R@^PaoIyK@#}}CD>1UErm#*1)dBez()j<0a)Q~nSp_GvfX>u9 zl*XSgD+(5Se>#mnUsMvzPP>@KuW=%cKO7_ml~22w#-DvTjo*SnR0XW4jFksWTQIOH zPoBP-k!_K||4X10Q+on(xTR0$%NMocETCTWITVQ(>EfVdz~C}{BNLnQ^aV_8OPSPv zOm}ByThH|C`}7~oY%Z!hF0(T1yAB!&=sf-+SrFtk(Vok!4EsR|8JoPX$$<{3lTtm#($gD zxgQ=LqV8bv_oqN%;|*qm{Qmwz8h<`7lz%FXKl^4He;F%;Z^0lN1XgIlz#0i=ygr=9 zfBnG9RjU{n_**~!`~Sc3I0M7`|I;V1vVAreya+1PpZj!Pd+`tAv;P-BBG*BgyoVp; zZreQYf^gA)7g(VKEG_)gcd@aRGUe@g09$ z&hP+FqOb~|pMIO2&5$X9cRC*jo0W_RL}dd)Wrs(n>jaNp)~IvSQ#jZRnXdCppU%PN z%DVtO%5dJJ^Vo}}{L^1@uqiTK5}3}z$(ACUBf!E?`q{(sL#YVpJdc@B=lOIVda;pb zdoL#&Bcsf@V6c-GAS_zp(Fq<-YdJH06&IT!(?qWAce&W?nFJI;vzWcSS)0MJ)U;)~ z4lkR5K>b!w81P=$3Ks3%Ha&-zO)q6r8zSzuLD=B9+tr4MyM17BNZcI)vk`Fz<-_9+ z!na_MJqcE5!N7W8w z%M5a)=sz&`{EI&3=?jF|TA3QHwyO)XDYDe-><7i^yB9J4K*zg_nnJn05U$;RkPYCI z#;qYDTlRs}gSYIhgox|{i+q3aiveuY>U|(B;Gx$Jh=Pp}1)yDiW&fBNAiZtSIs(VA z;OWQ3*+e-jmVts$^x)#{PsQ1`GBRadojymBO@c|JZu&M!HaGFhuB?zA&}(52&_s~~ zhexmJEtl!SQf%f-C$CKRkz$kJ*>;5mGMyLu|H1SINj53AsUQ*F=?f&;M3_`+r!SLY za}$5;g2kv;&eNHt*|d1s?Lj4j2&h{5vuC@NG}~=PKJO|PhKPtBP;z>m0-La~<}7eXw`^i%*ry7rL1%rPzC?j7o-eix;nvWy>4J)E zTV(z>gWUS$wY)>iH>g{MY(bTU?3EeQA1bohaGtdRa~CvE7gS}Fo$jo}Cdm{rV|ttt zn+%i5jOjH>Z1qg{Tc-b2VpC;0Wj$R*ne7x`Q8B`%tm5f^l-ah(h%|z1`j2drx)s>y zms6*oQDL*;d}ImcZfyYBWG0?F6|~)vk%1xYc&o+#|Nog7JbGE9r%sPkWm~{>!gZP& zTM$#il<6UAZ0bz$jniw@*jzP|!JS7@qAt}Uky`z_TBVCb+&Cxb8EM2YOpaeGr3KguB*+aEhagMg`vTQc|U(2_{`VN_a42b ztdq9qX|qW(YSyk`W!MLrDSj~`QeQ=VHn;v4orp{#C1yZNU^|A#tuGY(H2UejW{HPP0 zG;9~al1A{;?XL~k%ot@C7lYjN|Fr@r9XNp9#JW`n93SN!)9sAd>^SovT*u<+twwC- zB0t(eiwe??w|c0*}rDSOco*;q*Bs zZ0<~}+owM@VXI@(Zl9iN%4Wp$y>0qTQ#Ms5wu0#gOxa?Y3frd3o3S->fHpyZkH5(_ zWs{qJ!iw^-OX*rgK=Zxu~v~ z&&sfGCupZ(=kXW8cR^`Ev}Qgl!+ujxj~_(5u)RCI(1J~c$$Rhg=@xA3nbh`9_poGh zQO%gg%CHZ7X>8~57s7YIT5aaBGVE6dX$284{@$Lx(UMJtiTS|v>y~WmnO5ze-eJY& zqN*{Mm0_PXXl%Um_>0T8z*_&zVP)7a2GR;5UhKU!{i79|3e)Dp)5WdX)-%mJJpF_< zn~Um;*{lrvK$`?W-Nnf_!CLpsW@Xq98dL|5tiPzeIo;5PErjW#!1i_*d{XF-%>D||b-BQ!JN5)Oy0S?!GRD~>ExN| zrJighOi!7nzxHHnWGBrYGKz89>-mOKqsQ2yFp=Ed*Q{Z4pAm znoM7ErqA(bQ)Xffn|{!rO_t|g3#@oBIX3;3KU*P_anAJE0Jb`&&DqoM2C(gCvgVsU zFObcMd0!UG^ldNMl$g#3PyZgsCd;#;38wYm;pqxNZ0ek6K&$q8Sr2hd4+vrlW;?;f z%CL)l`i9?ZGSiO+u}LsBb4|Y=#Fi@a7bF2{8~qQEXgN?S;n{8H3F^)Dnojkbo)FBY z;d_x2q!o0XsV8U?L^o&~0=TQU+KGi>7ibyiYXejXUKv(~U7*zSS{zlPm~;EpV79p| zOj$P56=T>$w|7RcU1wsdv7DY1&6dN&XF2^sG@C!uUJH<{1yi%d^ynD2e6Fe*P?PH1 zi>RH`uf(vaYORiAVeqhYS16VB=#JO$=`J^Tk@W%8R=wfV`3aI#n%*-rys$n!T{)J` zU&08azSH-CN2luxkIv8!`z=7pU+Ba1u2?n?op0}$8Nect$tv!-%<#462VQ^%CO~=q z`a5QZ7Yw_n|BGdlV0Syo#PH(buIaLIY}!nE@27jku}O1wJ#!4o9A-Z3*w4~%0I5qcr~`@d(m{fi4BRM64(|peSb53V*=YuX4`)((|r@!9&_rLfa);QfWOl%lh|UICjXv3 zJ&8?`ss8u$T}f=um^yw(n_tt*QrWbb z{{Ni5IF-$Y$@9nbhpB7^O#MHn3#YLqF&+9oy*!Q0f$6Kk^qpyJ+Du{Jr#}PH-ulyp z)7iY4+054B}Ee1M-Q314G#K@!9lU{5{yihpQl^ousJeWf1X~Q!=}yj>(lfVIc#c7 zJ3mdoki%x7Wl{)gt(t&ZtDT=g6aOLyUr+Mwu2t}D{m^y*!sKinCh-Z14Jy({JUn#WK}uPPfcsD`#T-IDJzdn>kal`t;X% zY~D=l@26YjvzaqpdN;i=pG}E7!HAXNwVy|?sf@<-dHHOvOlRLuf11x`%CzYHbeRG+ z4W<(H?QR8Z7nyi{vp|K=DUZ&BFLo`Pu2Kw&M5F2M#caV$T1M076th(`oxHJKvV={D zk!jn@>AIzC`b>Q1?BB^jFcJ)lF&pcL%UD+(9)>3sg;`<&_9 zE7+9z7o~t~{O-|t&G6ETuM4KXtY9pF+e)T=Po_VsVzXy5m!7U(&GwV2;qi2(8nzXjlO(}Gwe1loio~bCs$pBp zBq%j~W-XfxlfB~f?X_%4OzjV+OV_c4iK7o1+)#%92|6Wqx+y?bN2U<#Y?^!;sYI!v!`On(bfyZFX*zIHZkrnxt! zTeq{xGd;dGJ*J&apUL~i^xk$hEhhOJ(|3ZzBd<-r)y|f}RCIm1LkF8H)1Ir-+dJ4) zm^>t>ukB!~U^3^OuHMO}#1wvQx_2jA1e3?r=}SA=6eYQ@L3?wrZ+k-hA?eX;`u^(l z`<-m2OuMg67wckEWn#Lr-L{Ku4x@N+AS=U*f4!hWsSfVzJg(^S0S~ z`l~;Eat~WB)AdW!nR?j*m~8Z?hxD?kGYRWYukB@1U{aTuKEIdEiuW*RytNzL4~z(y z{;ZcxSB436s!p%yA%Eyl!V8HGX4q8nbp1@WgG?JPO#jpe%Fb-yv~v6W^mYAg>zStW zO^=_zcAF{f+;p3XY>SxY-kknmBAXkN8OwByNo+QpKfoPyQ<<~Vb0@LoGfD7Fzc-0( z9#aMP_PWVz!i>_pJy;oDxV3^j298et7A{b`v)A<7sp)H`u-P*)GE9Fvg)NSG;eY1o zepA^Tna(n7pE#9m8MD$69#FZ%dkowcWp#G|@j_34*GIhIY+z=X&^7(xOg7=^3udwj zY_FNgCcwybzzI|roqyp`KYiLPHdiLWBirxJV#{L`J_TCl-7D(k0Q3KY%I$G;*d8$n z{8a$?m)A`Z)FtALQ<@$ypUp@hQW-3|N*OGgt}=bnd^WX|DPKVSf5;%;3^4mP>w+)L z@Ik&MU@^!b-wH4rb&wAt4;n0i4)SdVD=K514W=y^ST}vyF0+6wnwi%&5L6T#2kpR$ zD%;+&m~9r5o}VAccjsQT<%65u;eKExpz*8{h)670x+AwcWfOES?Gy2e%?$XHO4a#iq%0!Fzh$ zDmEFWD5L3fRfe?WAkES+Bki|IyPmd^7Ye?u4B{W z%zF; zvF%mfzlw$7WfCI;gKNtZ{uVnX1_oEd|FA4A>(Of}y=MB7&1||%lb=k#yqWDa)4Ye% z4{Txc;S6{PHn3#XbkVJB3z+y{s-E0?` zzQ}G*+QZhs#1#bEBG`HE#iyw4Z}zc$WU}iAEv`HT8Yk=(-3*GZ&igNR2QxGHGXC|k zeCNaO{?4OU6cmr3X}(1eb;U-YGKW~*eHF=_hh(`>5sag$gWY=Z+B z7)nYV`M0xq^qTsEM4Uh($xsmokVudl14Bt5RKyS@;uFHaP+|`iQ38p$gG6+pBEldM zACNiHAd#J*!0_lb-E@_O!8RxWG-BPrz_8u_4BL4orWJFhE1YL*t}nU_3L8-^9$2Jz zxG^(qVC-=1@aVO*z6O%ymE{5l+%s?wBD4ci95#4@V)czrFY7#5j{zKT=UzPX1c&E* zkgiT>>|OF?W-vVPdWA0|NXHh4lt<^edeEZrZ4eFm-0-M<55Cj!;EOqMOO%i-fyQn< zM4JOQD3yS8fD+2b7a0&?N4T(0=O>@ehc5y=nHgTJhDhE4JK()fXZ?SpNo~@ zwU19PYafW=?9Wm)L^!7gREX&gVGp zdIZu>Ed^a|`l6*0)ZsbYTziDkqxm+2PiO56(0Yr?%IU6`*({jO%S^Ao%qGS3SZ4a{ z%WMWrj(XG2US^xav{-j~_7yfcre@vg-5@$yclzopY@cMz%R$E72m8qI(hCg;7qoL) zxqSN0t898qq6eqHyvnA}{=|uy;l+KY>GIduVwgAur`KL%lLbvH%(=#9#2DdV4FARXw=p#T zVB~KB-6qv~pwu07GIR#fq6m`O59uKD!Kb>no&XP}*xpT_{_+N!8q?PF>4G=el%ys? zlynzJ_;focfcLtBj_bFrOrP$1lg&`*S_w0QNAr;iNPqC~i#nz06K=AJsaH>CVR)_Y z(QC`Q7vx0Vb?o2_$PXTFfo-*%Xg~ezO*Spw)D|WN56GSxEs^Ogx7hrde+sis-!H=< z&deHidV0YvHU(xAPS)vX-*8AwUwwX*IdvlNKnUjQV}Q(mv(@z$?CiZn$0y3o&N4Nn|*>=pGq?!s+wwut_qu zPTz5dO`oZiWBSWGY%cYl1w%R(eIKmxoV^LQWvob@0PK9I<7a4VAa zaSsc_PSCMIFJD0fj)4R~186UALIhTU1VF8*-)Ws0?$!->gouD1eFVi6c4Ilx~D8|b$h(H)f0JQSqCFq_u zk6u;?@HtX&#-2 z`88N&HZn8t3xe|Z1E0;9Cuv+aXaf) z(1w9d*8?8MT|q?~gGaCFC6Mag+66BhjlqRSCuoc6g%{0|5cl_HfjkKkd+@>^Dpmm5{g_RKaq08}&)5v62RvajWYUhA-u#5k zKocaGe8T3%ot(kU@OnDf=;?ChjMdD}Obp-=YVF-@SVpMD zL_u8vW0S+rh`0Gt?=Sc+H{|1Y?3m9AOX%z%i?+7}+Zr8{1%vILE4Pxsi)sXcvh2&XIal2qpDuR}OhRDDw+wKjh$Gs9~i z&_!6fp3VOS%Kd#U{}p+Gf>5Vbs5s?^Pz7s1N#|3ImiN3U%b`1mN%76w-6feep84(+xT z25AG0$$`qM7v?FD3I#gVF%M!`C+pX6Rt9j&?PQe#X*lkB0Tf;E$^GN5(_g+~p({EE(m93C^hvs&YBD|A5@lg+lGJ?fE*5*TzOHK%*^mwSi+;X z_WKKGb7qEy+V2efEue#u$)p3>fzd%!cBwwpkbtPshUQU5{b z!Pwr1^s&wVu|SuddFKEYl6KL`|@An^bc>?;uJX&K`HV33x-6H_pKR91U zf6FE>&({WOR(^l+EsY6$D%%l|`IX>pL(g9@Crn@amQ9ms+xO`=-m-=9YJtuA@xN5% zMQ{9c>vwG7ObiLrr@Uj+wZ9k-%95@Zd^^hpJW#jjd-RGP{RZCH23nROqyY|^UQxy` zP_b_>_%x=yXA_Z|701l*;;|@(iyaVdjz@3l3Xl(5z_+lzt^23Xn5V;pGKnn^$;o%j- z%hi^G==K+si-k+^34E)=8I68dqd-R%qUjlZ~7SK8Xh~E1Uy_cA$pZUz@ ztDzeWN_zYqqTqHg#Lb=eU&us*%8S|t4@ld8@89W;U)aowj9Q5x_hB7ZBWL5Y}1+`M+W(pNSExvWUA6|GXBjM|;L0W@uB;n59Vs}!3xz2GaG zEYsVF>HS~XB=nv}fD%RQ2A|H<9Uh&r2RwRBoyx$$HCrE?LO|Z%0FHwfCmE+-{mLfK zxjPG#oJ}uePXGIrOjIDC zuAn>WK&>7_@R((7!;2g8Ap7rw_Q3eEGBdom@$DzH4Y%P1Xw@?)p2WhZ&-%uu#xyN_ z`k`-Z*1X}Mg9IUi;%9zM=lag(z;uXhy3cpED5eufr?2?V*2v^~bh`Erwgb#((pjb} zCU8oEV($M-&>nG*Uf$><(?x%>>AEJZ1-a|HOXoGilP_v#{rm6Hc%%d52axMUZSJr@ zSK&^Qg-u8EZ)5l9<-Ju0nd9>4<@NtDz5OR!sqoL0pdbA|}7C8!yq&;RB&=m?ABFP_}_|Nlk) z-Rb(j*_4%5z5f3nG$D`Jqky_F_Fz zj^F4Nt^E7*zejH=c%8-C|IA;46sYWV+!;S-QKpu@-JL*zR>IJ`WLJAit^46g+Z zPrg?6=(TNu$aQ;geDL_s$luolF)|k-{GY+2^8};>JiK256dGC}zqKAHiJu;OgH4u6 z%z1jnKQ=jUwwWL=^Dci3&VL+lK}ibMX6TXzmFQsYkm+;Izn}&TsL^uW3F7hNFGN8B z(|P~JdB5oo|FL<9>iUCf`Tt;-qOyyJ%vMT}A?Ehb=g+d059Q>vi{AV*{ zQuUj@_&=K_Q;+}jbN|`YnZiF$|NfuN#Yox@WYqf?!hXyQzMX0t7$JtnIL3kvKJ3ve zy6ib9I~@ldvN2hVnPGC^B@t2SVvsfOUoeL-fwX}}&ZK;|PGjd_=m?2euH@io-MeNHJX#8zx{AC`~|FN*gvI_5D zW|%O2!*{kyrm5Sf-)3b$z$_Dmr9fD{4O}2-ZJH1A0kl9k+k;jh^qhkg2#@%u%doTi zGYP(&p3Baz&VDS7h2h2J#nWfAv%4z(>1Af%*K7rC75C`u1>M8v(d#;)G|&TdyF)K4 z@80Q*9PIwud-i}*7HBvas?_y_M=z@!Xfs@=>kLqz5j67Y(aWm+W_mRTyCVMr@RkTr zbrd?|h4J#~t2x*em^ve-pXFe835Z_w4|Mk|%Lc~ROoj&_V_(Q|Gy4f-15W3?7YBGj zsm%6PI4JmetuBHS+h*_{k-OdHdiCe)7sawC5?l!#rTGgZ1bj1u%0l61+x`yGU7fEyffm*EH zVE&7cxznZi*!M9lc{u$RAG?L#qE1i+&G@{nV!neZp7reVERmcb~&c+w$pd=v)eJn+im~J&%Tb?Qg8e7^qVp^aFP8q@9x2Jbn^E}3Sr&#DkAH(zvYcaKcyayr zbaiQVQ^yDmR`^M$>K@&;JJdl(LH;jci+x#Y405gQGIh{>pua$Q`*`fj1Y>4~7t)-} z3@ryrFC1f?pgw)BG<%e8yb&{lXLF5=0z=7N&+Zx-jTgQ~%nYwDV%aQgVl-VvhFwj9 z#|YHWuU3HEKdS-Gy|FL98BR}{3i-O4Bps*u$CT>Q6r?$F9z_O@I0;Id&O=1A5F1p2yihJ<87eFWB^_i^;RA$s~k; z3X13hdX|)XENla_hYp)82yv zy8aLggW1Vv7AeeWEsd7n8NpbXgtt9H!v(>D@Z)%Ne7l8|$(=GVYjOs>{BdX@bUdIX!ky zP*Ier#~#J_a{3WH_TNmr_0tdPv)3`zexL4Wz+S^7pS*p)0edGS6Q9gvZLG{lw$>~KV>^s#L9%Ev7E$GoJ8nBLq0n#@;_mGK!pBr>=Yj^Do zkM7b1FL*4b2br?#IGi*3`Tw;&NTzo$XnFGs-X2DVmp$NZ_{ThYYiGRJ6VAxs0hMfs z0Hq|*gdwv%;)FfzPWcyahKD7tG;K#T7P&TCj^4 zgFNNY?K{JR-{ph{Xj@3H>2i>2(C{%x^?r!z1s<&jJUS0~^zweoo4x^L_C1y9=RowX zyyJ z1L}eupfz3~y`T|Oklyo8!0tT&*UOeSeF4a({mRq#f#_4Y)9--j66NW?Ky+X3bO}p# z8IPYzEDXCq1I{2*q@RG!n!f@zZ@I#M?L%nbY*tg7hxh4`mu*|Wy>Am+3su^iD_i#Y_o2 z)AgL#!&E$WGJ#Ir0GSJEcbS6(_>qPH)OJo^;lwV(bV6|YF(-CorpMQ&|8`>6XIwO0 z+nL>g-IS*>VN;i(^o#ds@%&VC-F$U z)&UQ`!Nfl=1B;i4d05^m74+!c8vr^3Bb{q{pbNVK)9;7Vi(S~=LzuWAeZKdgdl$Ob zg4Dd$dhv~enV}n0oSgA+7j0+}}24AR^A-lr3M|9k`IbUs&h zMPXk*aM*)P+z(o4{KATJx|1t=uA%HUP*LFlJ|yYF3;u0P3@>IahxXnejTsuVo71n10QT-JYqOeY&_idj->Rw&@ey z*~OXGu}xp)&Mw9Digo%icXkh^ycOF8JlG8wnQB<4J9)CZ$$Vl#IQB*u^pbh{VJ~)PDNqXnRBP-9kAIf%cy{l<0V+Q&n5Qdvvnw;DGf#K*W_M)Q zU}9!?5qNHTuQ&T{rk*L=y?oevIhg8yPQMw#?yY0=lZnBrxyIOnq2z*Bca5>Z3x%Id z46lzs&%^=+ECb}~IF6s&147y7GxEz$`uX3p6M8>j-S_SP!r0lFnM%J*XOCi6WSa72 zx>gjsE|=*SP&48Fi|?POCq}V{F62pEcQe_4obDgX z{)|iU1E{op|3dP^bo)4VU#3MLruW6MOERs0KYe8!y91N!hv~0D{Gj*K+2YyzL=L@U z0<|+_K`!^~u8}o(vEkkH74htb!nN-}XRCx>@MyhM!UYP#oOj#b#IyHuirsy}#Nc`G znF8d1WYE#UJ6@c8GQB^Oy-I+&9u(xR7xptSGBCVIezILMi+v|E(~1WWe;t1S@|WCn z(L8oxu9OE5B_Zj{F!%EbC$dS@QHKhv)J+i&Hu_cAi6-kY9Tz`lv8@a}fmLUw6J zZn--kH`QKvA$n)Ja}m2O)0?vCO-1bPOue_KpDtqeW(q5tE>X;`#Uyfjx=S&;uENt> zAS>?qcK-0`o(ekN(-(9*_tp=f#PI#a@mt#`7PI#=TYkx5VR(@ax~QO6^a6+-4Po1W z%FS-@S#%!VTQfkp(s4c$!%OIV=+unqk>%`4Oq%-BYs=ZioeDBR4Q|L8m}}-SF}!>V z8X)f#1&M>&ToE9>7a?LXnV{z7zZXjuGBLc|3l?LQfSR{P4{TojXUM_hptFl#=!4A5 z0IL%Pi+A3CaT_ES0uj3pQrmg&g*wPQ&{?lOptE~eXMlwv?d$HTpl0?9R*(ug(7+K` zMH!}w#|xMkUjAXIXJGK?74^?%VR%tAj|sAK0@TV-ZDwM4c@Ne=@#wC-@InYAbQ;np z)(0;!7Tuo>8z^y|2a1II9=)Qk6Ih^on-oD#p9RtYK5FSxI;f!sai--z{-!|C*!y(; zN_IiMH*=X7UT1iKl^sZ*u2;#fXuB6AX6ex@S^_f=6uislLLCWqQe+bo!)sBW&e{t; z-L)scB|9h;J2g%3sbsfddUkpGsY-T5ro)$~zpZ4~5;lGJd_5O2p-*ALFbdcNa=yd{<}1NQx&^2)6PrNzgMwWFg?Gty|9|yhLLII#qH~BK#c4Q z)8E#z`!gMTHr=j{-I(dbv+2ck?8bcSo-s4LbOTj}y{x&8m@~B|)Qd$2!=HnVOGIx9((Dla)Nm1a8Q-uxNlP2-giBpmUqzA#ikh zT_<}g)6FB(pLVjVG36hb&fCQ-GZs-@OGwd z_7o;2F}CR$z3gVZ^Fl%H0q>qozBYYzFMA48F6(x|K6Vp+CUu|f?sM6nF@owE{rT)_ zQH<-EK!?43_zOCC5p>ww5713Fuh)S^L6?v~4to;-|)GJo-3ytFJ)I`%2+u)Y$>||7u!m3MtN~!#qhn8|S2^w<^bC%Fukf=c`EFEo~JH(1H8!YnOe3#wI)d9)tjZ`}va zp`G_%#QRUrU&C%FwQV8PxuCNz8TecJKYwBOC+%lcWnUmkUe@$Z|Z~V4N%|U zg=i`h!^@+fg0b_yM=$F#kW?pRw4{3~Xwc+^Fv!lu;MUN8&`4ae7ZbzF$q0Thh~Et6 zKlkbU_QKhViQ#pbPv>`^&ia2Z%s{+M@a3y7zk!nXR_mYtUq`%H2ciOBEC*3uFBX6( zXP?d&uVsBYUw{i=UKy}cdO>dR0F}|XpfVbC&D=2$sLP~MnHXO4LX*q)7pFZzt;d(3 zCFG#aU*~-v*3N$~%(hLJ*u*~1{MbE4hS$s>3DA)u-K85|v~2zHA0`4hVtx@!4cJV> z|1T1^PJg?J-BU?y>yQ5}w@W!d)ltqY(BQycQ2u)%#|bKBzrTo>wLM}pdms~&u<`Vb zj9hBs-R7Y5T!*>|?wRZK7hBnt>%C`y((P_g4*;C+cZ0UEy)cD{a)1WuK*@Nw0H{eL z4-o~O$j4A3NRPqK z|GuqnOL#q6Z-WlB{Qly|l<8A;vKKRbHJ{G8i`}2;-{k30yV#vX3iN;e2Pxw9ZT$~X zxnlD44ZGN#*l#&7F}z4Mn*MVayShN%BqpRidTA4;?d0ra)CGr|OpPIyaJz2L1X?08 z{fs)hm$bknP;LZ|yPzIo_kH5@#69ex(hDZyP|!Yc`bCfe1E_*J4u%o|&u%;T9JTnw z>5hBZJD5IefgPist&hbq$81qU*kQtSiGA#T!XNq})`Cps@a(pGale0h7ACgG(-$0O4`ABzX#1zb?C#7=+4r|wA7@{{&Xia?{q8w- zM<%)2?F#4FEu>je{{8zuJ)we8Mf?sE7T1{zPM`jYT}xtWGAM~vTR;Zq44?_7K6(4i zSM0OdbRWflo8dChX1I*OiwiNJ4g{89-5xW2;Yapl-5?At4p1#1AESh$ddzggPwdII zhoaGK*$@q}1*8QWNb|u;K!aweLDL?+{o*I~5KgA!{@d06usgFUBwc5QwBtJu;rnbpi|}tS`2J1e@zL7)n56lm;)BSWe#}!V$~lY6&thc&ye1rx)I zGM4EXq8!FdyDg^A73FYbs<4>;K$Js-Imv=)dZ8(!u!N5VC`IjF0WY35fQlzGi|I;Y z92sIN=1j2tweaBGVLp9<7>B=9x;Yc_ZCEdQZ9xNh-(M^@o6afD;mX8eK0QF3BTi(6 z856_nJD$y;)Btj>!i#BU(+`Pr%w_s+Iz3T>!$EJWDcB9*wQt}e5;XbyVm?F^bdV~f zI0YRI{G!uz`gsWsDW+W0>8~X?E;7wB*}hMbLz$6jcg6I_QXEH_))`G-CCyP^uWJNK zDYi%3L8IlOy~miL>uzrUVg&6b?X_JEk?DrZ9Q?(|@S;Zl-~Ti{*o-Bl{0;VKe&g|C znIRKH>wyxk7tV%E49ylSrR*NfM?9iq55F)nWI`G|flSR#Um?RG!nESz^nEfMnrgil zL9VFX@FM0X*mlr3RPBcs?_Pl#cK2VbFkoVMaq-V|URe$`Ib}nnaBV&;0h)_Vy$L!D z^!tl=gXw{?94nc645t5)<#1+lH<<1y$8nFTwSBvyJcm6a3LI`sp+~o`RN#O~xbv>aFKOuwkeVajxF-*yfqj%Q3vJ(|-$sBkDUt=60_tjb}|<)jH}_dI{W zqB%W8l_Q?%rpENGsvJH{6E(Iot8r8_GV!TTZ&2sxW@=QM&a1)kmMcaTq~ZIE5Y_3R zmg9B}O^%bSOx)Y2f7as&W-^hV?xD}&&Xl`t`$T;XB_^g!?&(_%Il>q}PUkV=2xa;z zy*=58Bb8aAPXd$x_JXcX2S@eZ1ke?K6%x}Qm~x27CqZO8{`~*X;MsYLzoq;$XfkQ< z1dt+EiS5E>91@I72Sv8)nsYcYGI82YFSOwBWel5MV8J21{gwsCZDxsug4k^676jWM zQ3{a-+W<;{5ToM-xBs-^sAXb2wY}V)!;p#T3D5LZjvQu8Yj~zVa^$!sF^?N;sK-xO zry$_x|Nk#KxTjxm;t-K3g2+~YWcgd#-hsir|Q1{4u>XfXE^{tLa;j0`X5gT+{xrsw2vC^Jp7nm#dyL)`5yXh%Tr-Uq+_ z|9>F~GR_OEOcW&U)A{U$D#$o9h}g*zP^I+Tqq}s%i?txNa$s@R#^UL@IUGt%q7XA9 zW01_8v67MD+{+^xe4}iXsLecPs=C-#{DY|B9x6$mLKM`?`XW;bj`=VC?`{*YCx`-s!q|96<(U zpq13UqVq~%rD+dH@mo+oqt`YPBAE%7%wI8meICay>BC?z9DgCboRQ%*zsLXMphH+o zm>FJFE#Kaf&*8#e}8*|G%6w{ZkQ#v4y!f z1A_;6#%U|KsqQYv$nY98*#v9bi-A@*>v?t_d#&l&c?>4{VR~#ahmPpsFW>)rbnle_ z^}xEfI)FMZ4`ip$E9OwB?-OTWcnKOEej&09oc29>_wE2)Ubb|}|Nk#RYd=6{mV%9z#?lpdnmO%R41Pp1n5m9*u_$ zm>3vdR4@Gh|Mg3c?!6oS{tx^QTG`~a=>PxMp)V#cg}DHn4o$BA1>Ka+AtQVLU2gpUuW{r5|L-^c|7W}T|G(_b|Nljx^sDRt|F6CA|NovF|NmdU@&ErRD81(T z|NqH1{{Jt!@&AA4jsO1}ptSwT|Nrlu`v2c$|NsA=pfrdL!mOwN|Ns5?|9{~p|Nnda z{QqA!0LlPyK-lfc|Nk*h{{QcM^8df_&;S2-L1_>hgkL`S|3B*K|Nl#${{Nrw=>Pxs zP#VMrVUy__%Q*BHWv4$V)$B4t?zD!>nW zbVCOuZwiC>_g^qy*gm(G;~)>yi^J0sx;Q4W?23gobd8d*G<16lrWl4o#oa%^{&U=@28L_1JhAG+P2{=q&7kB)`)Kr(f;n zuxIR;F51JP$SeTTuFohu-KU2`M!}@>|9{`kH?Qw|cH4V)mvg*e?t7EIIJGQqx<@ZZB-`yh|Ng(eIURI88B^PV>4$nbOchewLFT=F{Q$gV zvW(+J2zVUi|BJr;j0`WfcTX4Z<4}^|Jpih!swE(uF$HL6?EC)dfqfjZOgHvVFX-dA z&ZNJ8x@SK}2Gh}f(>M2XBr_%K+b%JIV=fcZ!QIohPvW@G^kCQY8Iw8Und)~<|2diC zq3EOqj12#M=e(Tv8{`Pk#P|#O<9*swCFfuTJ`lE<7S38_Qbrtx$+pFcE*>_PnXQ;@#7l$Dt zHeiusFSbCqbHQ4kzYwhet7ikt{s)Z(30Hs%@?OzTU?u-vBvnD0wbPmAbBHpvuiGv; zpJM{6=-~+^%2kf7bN*>o}yDp3K|6 zXB|flo9L7>kki(@G(b3QVdZw)tsI-UnQGIge>}h;p6H_hvfw+Y+RqFHJ8Kg{Bpf1g z0V49k1Hv@~bDzCf3E|FC0Ih1?3!X4p77BG!D@d^O*o&{>(=!ipNb^Ybfcl+~C6Ch; zJeWiz7WH6DSv@_|_Z;Nd$MmOrdd(q@I;NWL>3JPfs|^v7RZtYr5bOjwmMX zuIaf)IJ)GQ%7C2@8r-W21Ur8==hG)5(w1zaHbb%e1O(`jz7x9!w7E)8$TZsCjc#Gc&vhW@KRC z-^R*P4eH7xdZ4t*qkAsMpw~jXL7mdq;QOIET0sTUVbCyC6!_xff1uk@TUr?z zd^`0#JL5QfJM#oy>w5IsI#e+;y!Z`D!JWrHc>IUhdB1hK@<|RI_FN-Ih8I7Sr-z;7 zux7Fjm_GR=hZ2)(>-6m>Ih5p#!I}=gKHvO$icX z4m({RcpP_q0UdVLRs;FH_P`4vACMdGzc|+d3T#%8_;i11E^!A3OijEnO=rA8ifg}k zbk=V0=w;oj176#^!{fLssJqMH(aZWvb^4T39Lj=QBS6Undc<$+OTCuqCr)v!(n?YS zjRm7D1mwRBngDQJ;Q`+Z7uxZ{=*jdsr#WOC?|@h5Lyk1<6-}EAnpc?$8ix1i6|Fc6 z^1)Qll{Fr{qOXpEuKJt`T5AJ7!m@zFqnGvX#pyp!bLeWN9Ro@Bf;EE9w=4ijDlP$A z+~INDbpj~vJbGEDDNYYK!=c6$_IP^584e4JC1*fZ^g^uQy1-cuUy1dWpy28Sjg%vt$TXX2y5bII;prV`Ii$53!MP13eD2)< zTYwrqjE|@mA27IwZPTi`AwppW`r+D1Z3pf6IYVInQo439#MZRr4Yj zr{|vIh;}@q3W^n2D2Giz4&{PVpdf&S@~uOE{(E$yh4R~T(>c#`7%@$JFx~b%hl191 zIgoJ(Px$oOs$2(ky=zfD;r?KH`+1HyCU)iNF&8+bnVjUNvs~a%V_I~7y3Pd-J*G)Y z5b?9J(_B6Kh^<8F)zcqd;t*vLshi-Lcs_6}vIrNzJR88M-nZv>0>v_=FkLXu1X6T>~w=*Nd zeg*{w28b`#s57DrRZpLAnM00A2dvxC3!*s{uDRL?MY9Z=X3%J1FzA|k(8+48|4UR~ z@KrG~cyzPg&YOPv3Wq$8kRv!KUY~oh!hia=D;z7Ng(?^s3_%CddUS_2yhy7AmG*DF2*EqtsmY0LV;Qx#H<1+l9PYf@CD79cNgI5BNVn||*$ zM+TEw(R7bH9Cr0=yFrCH?{Ze~)*b~eP{j~>0nj6(De2Q$NKE(n{06Qm5HhQ|sN=pMbI+?=3g^?zUQ_vjTB2ebdZ z-V9n=)p_^@*L6-%ad`j5#DeMkcR4~Be@;)i%Mr$Os9^e@yBtQ0>!!cI%aO#Cnm;}G z9)}^*k%H-M_c+{z)~7%!?A8ONg5YB~_f5ZlkE5JPEq{8%eGVBWj+E(T_c`3Sy7EAY z@%xLWyy?g8bEq)|2v2`^pCi8hXD&qiV=g0u;YpwF(j6}k{QLjk@FeKI%a>b0eeGV+ zCU$r_$~R+Vcn!LUnr%BIxER5~6~G1#t^?5EvINQ5vK|3PXbCGb!#?owra@+)fbi@* z;@MsQ-?Q7D-DCQh2OJz+J0^jW*!LF;il^Uuz#*YE4a%=822Hxwg6=+iF(n7&(IcQ< z&WmHL|3KH(zG%qVuJDk9kCERGyj~l+%V6T!?Y56NR2ccCL7OLFyA0yaOfPuMVIW|W z&B*W~+z1q($75gWWl!Jmm?MnIEp|G`6Am@bMOk2%i^onkf5H)?@)5jTy!L`eFSv|< zp?Ml~5oYX#mIEaM9<8^1dQIDzr*D74Va^qi2@1#mF9I^B|9HZoRDTG}{{UH|4_a@0 z7?e@Y7=Z14`4QCC+Hb(f@cObxukGA+a5!xTg%jvlf)}DDAio~-=&t_n(d~@Lin4v6 zaQgp(HJ^duH4kVsqqp|Li*QNM{ZzFNUc3X37JYxgk-^Bx@WRl9k>Q1o$@E1}IsBQ9 zrceL;ltY(EBXhdaGY(Crk37?TpK%0mtxN|w=>Cg^>C=}#*JfQlW@PVg};{{R1iBc3yD`}F4=?2P<% z-$6kKjd;c5+tlDkiuS8Sr7$k#rA^s61(2;fNtELKL0g`rMk%< zP<)iaQY^?r4-cayT3h=+)BnHbFy|6T0(tfS3y!4e4sSS=vZ|86t@~1AkH#aQsT#XWv!HaGqRGhc`T%H^l}9fmcpxY3*A#&oPOd9_ zI!i&VW8U|FK|9|-D=?~lO+WL7Lx(R1v;(3Sd@=D03(e_$pExAk^4cJ2BrKhQ;k7(0 zjjxdU`Tw=li-|g*)N;%NlN#_&h(VG94ZPW1%Ll{ zx_(X!2KfdMA z=fCp;r1toWD=+{4e-Zy`y8b(kCYIkn|3c?_i~oK9@7amAoZuYK^bhYiteFghr|Z7w zkku6eAJWBp`WGlxSaZID(q-re!*4HsYJ)1KBLcCoLw8^7kDFfpp2M7JPu%nk?>Usc z>*E+f%cn~0K`YN<;z1ri4!$tJ@^G0lxDU1*+y?`#J- zJP%sOIxBX%+y@RL{OSg;-ZtvR5Pde_+L#UD7#ndZb!U-N;( zh$|x&lsw+QNQj;O;sb}at|BP9KQUHJ6oE&z4z`u0tC_{d?% zbouA>;*T8ROs9TNKl718LZKy^k)fgX8bgVWPj_mEZ|jp1evjtb2Jo%X&tJI2OlSGT zp%-KI6O`3lH+aA->a2y^;L#hp;6>$LaQl6-M|W)pXmXVYVhHPtThWZ5ld`7lXJCRg zHf%W=AuUHxGr@opoXWhOHGopt`xoaDL51sLju*6PP5J?4qZ0edf?)>SUj8`k7;<&6-F?2A|#l(DFMUewPbA z-Mn-BnHhXrPx^F*&L|P}=r*0=59(fj<8PH_V_#(?8%GZl$NTBezHt~ZZJRS);yXtVlgGR1%f54{GgXF7KmVOWi|JwL z^xxk(Qkb~IrYHX3P+*lQiQ=v0Fx=kxRr}O^eDCU##1o`?&iGfGAD2M0tzF!;xjCRxS|KiYNw4cuR zn?so?GkCi3Zw?J6#o+0&zd2;=ID;7(JbPnQ{(E%FihFeW zruTGFW==K6h0|@AIiqAYcrh}3@chrC;?teGfWLJ&s72Pj*W=s&|1VZg-^9$R!pJuL zIy0w=*_~o0(7l!mUfgi`2kJC{f(^Rj+`tQz^S6RVvOKz{g0GQ>`1OU&bVC+SN3JWL z5RabmoL-$0WW zQxiZ`@7@i6Knttyy*M>Jn3dCof(>$|yWti;HstgL-?tU}a!4L3!jZNbLV%k51XoW}rJ#Luc@}9t5qE?-jlEgo(irv|)QEC#Zdb zs&6Ss-*MJmX44<=a9T1YJ5HD8<&0xebevwz%c;#+HhnoSXCG6l!*p{#PCX`Zhw15j zoQW)3tpEL=UMI<^&eUl?eYqrO?)D^pPCG`XTQ<`d32^>kx??kajv!|yWBYVAAx>Au zh0}e6I5*3=TZ6n2I>V>C^uWulZ$Qx`nt2aY34MQ&$UI$Em{W==cJg#zaZUxs$#Z1Qf!(tRa)8JBe^^XZoBm{kI6G6O*OobbC?G zJf`y&)7Oh~W=QB;fNE>>q$6noPCATY)7`~5RSojY85s<}8G^R7P4MUyH3SXhb=OXK z@#8-O!^?A^RiM41PtGtwx8Nl)OrImhxt__hAL6?D>3QOuwX%kFj0~@3KlA4^e&)~j zWKQER;r&<3$dJZg!pc@RokN0CN44WIv}yxIYxQFWhSwr5SgwBm|C$#(Kmuwmq&}V= zDZ!}}C>RZ@=AOU!Y0bd!@-g_L-(w!VdlNv-HdTI5ZmB&18X=#__V548O^gf-uf0HZ zAbP*!R20ORP1e&BBsit(mqPiyAY+^1#)2kRU+mpl9{Y4wJL({ug z;qCwbFG3Cf{eKC%R{X_m21pHyZlg2Q25pcHT@V}Kxsx{!9GH8-*^_H}u_UJv({&S2 z8Y+-!H-;Dp$u2L#KsJH4N4%KxpJBSO6sJ1w26QprfF1+}^#Q zRjw~2?|`RoL50Q(UL>91ibw{e(+Ct|y%5K6^MXBp0JP4&o(1Cfo1kH9rvD5Kuk%2Y z(DnQf_242R24qur?E&x>On<0`l^_k5{(-jSfg%f(lV21Y{QLj9ERM3z&PDK21o zwJfIz(|i5t8)Z4yF^L;YPn6>{WO|}MeTp2XD$`#5>AU4PHJE08+5S|HlbMOhL}mIb z1{v^rt>IrYD{NR;*?|gqr}KCeS#vV)OI^1&O#=pT!rl$RXC?I zN?(&>WavEZz;XZOGEi;UD;l~BQ~%gVuFfgTATc94Y{J# zKqd3{7r|=Nzp8U8dY5^Fa@F@2aXO$j=>HcLs-S!hJMGLdEZCzFcJA8l!yq5HBF5&A zgV&EkN3~7srYCA}%JBYg1Ka(;qnDLu&-5-0PJI^Vb$|a)K6}BiK0*~@d4MV-!;6XQ z|Nh75oY#0koRgx>!0=-I2L^^0t3EIwjkJP>N>Lnj`Vd}6)q-WgXB;pvOwZNe6yW{e zig4g=r~}tR9B3Ay0(GDY$bsvyInWd8KrN61--8_Ze!7Ylr!v#hJ<~n4IQ3YznlLa- zuh!y}V`@G)eYO^-9+UB!>8G_g&AD8ZA*S0XPv_C*OcgpU3fgVY-?EAUltNhV9AKIb zI`UJR^=B2>*%v^^ph1GSbc0Xl{}-OCr*GBfOykm4f*7Q%G+kAPQ$xt!9pWf;@E(`@ zFB}!8$Lnxv3obGOb$&x{cz`a-=;aMQHhs1Zrvg*u^67hZIF%XSOn<1usp`!q2I>X; zhwR>du}2Zqs$uN}2_AgF2aOtRh?$PV|9I|Pe)#4DSsRiz{ zx*ne%sLQFxRJ(F|qb{ddJuk?N)`O+N9^JNuqF_r(%wFg#f*cPTl=6Uf?Lk-2i!w93 zFns}X?(vrnpz`m;HwK2z!wsJqU;2R7_xIZBgOmtCl)T>gV#PNG&`||Tj1_G* zlX{#+Odt17|EtHT%`|84bS-^OS*CEg>7M$W8cfC_(~I>vH3fc@fuf`pGV8=zwRid& zkf{3+P+9^vyF7YX6ZcMks?TY}_;k920jIT8p&)4Z#HU-q^ZyZ_P6f~AKTKuy9=)t9 z_e{?<;FOf+0~_gzG*br}<13x5mLKYnb}BOiwW4w1}7k8pZEsoeQFRw}OJ< ze}INZw`~bXp!I(#zelfah5$3e3vWJ9w-7OLsxQOH;Mx3#u{_bWL(IL5zkVPe<^>Po-ReayhX&%Fb5T&hPe?|rN3 z?~OSv_~oS-8G4-=`L`YL=w!XYH{HyHQ%6I~9+IDg6c`v@^Lut4_vqaV8ghHFaW1H? z`~N~(l9Azs%hTyyCY+7@j;ld7f#NQ7!HX?b)1^!~Q<+{%Om8&hRJ3@s4Yb1ZNI zTrA{B9`J&)7fi=MuJPzR{F>dP^RQ2E=>kyW_sjv1x9-0H#~Yn zSG*{zoE~AuDWf0&GO`nPLL6u=q__6L3n8dh9`Wf@%s2y>XNWUSF8?aWbp6eAc5}{m z%{bZ1fM0-p~^-{K}^{Sa6y+Zxe-d^o2b-C44$TGqR$0 zH$xW_?*|=31abVsLky6^)jT?Xc=U?y+RVfNIq&ktL6Pa-EjU$~G&rWqS#rAaa{d8j z5LZx5WVUsBfhDJfFwa(y#d{4v&A*O23=A(e^Gx4u$$5;)RCs!`6{i|grpWZwR-7tK z*22>-T5+n@pIZY;1mMGdUf*V5cwOMp%X$ec)(SGjqu16Cv;@7E*K|2}fNS4okOfmg za{E9B6~6d-kAdN}l}9h@o%Ku%uUS00T`zca!t{PO2dU=$xeTl~3tjKdd*RTC0;K_v zn2|i9{Y>&v)6d&-x(MA211ZdxeF&jdJwvCf+Hua6)&lb(2Izs=Py;50fDF)_ z&SuYP$}}@_yRALv8z!~QfgodISa*YI&`qL}+fM|Qzbblw# zLWwurpwVpp)~TSegl^XbufdxRr*Kcd;l$a*R28~C#+ma0lkx|Dkde19r}4iQ{Q_ne zUsg!te=YkR%!!fx?>{}>jZ=@wKWKWt8>cAKBKGOa+&DK#Zd=X7@IvuCDExgo!D~)J zwlFZfxW9CIzB{M1$RS%$*x!G_!-g0Pn;iG5m_>WZcj)k_@KP+pqj{UB2Y7Ir3x~3S zN~-TKa?gUyIUf7cg>CvQ56%WAJ+|pGo}8gft}N4wJvr-{X6aA=;>l^wCCvgVkN>|A zW|?m4#i?fYa0L^?>!%*Qwi>>m{wVLs>EJZfH3yWUVABw5&Vwp<(YY%?iTK`&*fY~7 zdU1*gJ=FjeG5=qj>aR+D>#0%N!4&I!y zyzU_J&L6RdUu^x!Fn!h$Ms-~#NQRX_WLU-(&B7b|qy@G+^#k85zPXu!|u@p^#4tuM;nt>%=U6+Fn z42CanIq-A(j4;k(M#Jem;hYtWJEpgWbLKO8O#d3rSvemRoUfxXR(iQ$C_ z!*r=APV4Ee(VYBDYG0>^MRU3`-k&}vno~_6YAGmyT_1qYP(lu2PV(#VZn9-$C^r7gFCe}r>5Z9V}JfPKV$Uh zJRbXUFZvwT@AO0{dyc{6JzW2sCdpJOq@*96%shr7-vj(PvF$op63oWy7Qdj$rrm! zz~&-OPpmA18GL>_1H<%>v78d(<{sVQ9AGa>`uzEy2HTA@Jt2lOnyE5<``#E%cgE=^ z(>U`uPuYO7E325@^wrZiC7D**Og}b_Q=aR%38>V{mpyN?{rxmfE=H!qFQ)&V&Z)~i z#TYChT4T&O-FOD4DND!;28QXpGdQIsO`%e<#*7S(9LHat`uG38XK#s$!gR+OoRV@c zm|ie2r19tb9!TTQcioW2pD+8t2x8a`BgX01XK>01AAb&3BD)_dvD}DpI>$^-Ii{J` z(=}#ts&mIeBxF;K7^g?gWz$tlBm$_niF0?X+nm?iwA17f-;?^)GnC8(sS^NA zEiQY(!0@^YvRJnL#q^Eooch}jByb8c+gtZAF}xP@=oR(q0Y&!t7g=k;C1-FCsJuB2 zx}GRvEdzsN!v{u}4tEcqUe-Xc!s8yDA7A8coGy^U8O3zr$@H8Q&R(X&Q>Xt<;f$2B zm;*5Cll#a!u{++uqw{#@y%(GgEzfS&xGk1NhD`{QqLfO;D-o0Nx=P`?4$-lsw_X z1L2Ng(|=@hN~;>SfZ`0=5#rtb4%G4iFYWW`1a}rZdU@Rxr|-?-lwb^*{<4r$X?lJk zCoAWaO3>IT>))2?jX9j+s%x5&O)l{3vwK|vjcY=tDM60gj`MuCLNvWRk@sMOgR;~n-TA)xsjI;Q3rmg@j!~|V8 zGt`YQcT57)1&h_)tS1=rnlsCnyB_PfDC}yCH5MNe;3Mv z?P6N53HC47`%+Lyv3_WTh9IjEI0Tt?lui#T;8bQhEIYlrfK!U8zY%Pelwaxp|E?|n zeR^$c44D}CTb6-)jjZ(${i4&~7H|sk@s&Pa&ralL*uxg~sV_g`9d^ zGfKb~OCoF3$p8!T&a6ZBhw@7-{#Yjs@y8x@P;$^@`dK_(w20G&X};q0;3CcmOp)8B zKP}=kke&_>5=giCI5^tC>n3_x-)T%YDCX2=+E_F_wwO~~>V!HtcQn>9G3*1~f$_q8 zJ}CV+FfdI2SIXJT^zg&<-ZD;Qra6nZZz|(VWn?m4G+nZSGl1!^&h+dG&Jre8x#AT@&Cldp>;mrXW5U~8f-zvCk%3<`bi>PJP%+WV zds_!oUcT`7zT{@W|Nqn3t2jl&9*9F6@d8XE906+8&yfMmhHqdfX?a=x|Nno7j@lF8 z_0jKMNIm}lzoGU7Ly2+gr3!t||3@L>o}E`cIuF12^Jsce6{j&%x!UyQRh)iIidxgZ zS8*ybiKtAMs^(N-x}iDUp_6^mzj%vW|%0ZMZmm0M215NwK&17JBEwh2~HE6+0ydp?}=q^y>LkYAHL17xWmDTOK zqGKs&lc-NG>(&Y;hS!@6FTGv}7rF!zns0cZqZO*=W(CL`-lB3QhSz-^d*z|Rw?XQ7 z;o6=+ROyyaFRbU(6*%|$8@RTSI0Gp)r}q_ehBKu<-~POq(}9sm{`7RsQqIJnMWsv( zuX#2wcDOe9^s=r2jqvo^>L`OPyjBAD*{2tk(-;_DtAf@>Lq-KfcZhobuGQB%C-JzLNj!Ey{^n_+kZ>ERur>|}1Ol6YVKV77SvyUs}C?p;K z;@`feg;SN0DL8-nJem*6cy#uH=capEb5?;RK+XW2e3C!?KpUqL)1mz7Pue)O1oYU!vQXOu zAhtR2fNc8?UJC=Y4eGeZYzXDe2RS@CdqD#e9=)uuAhuY5XAfA{K+Mrwk*>$|Q2(>rcL#s#c~Fw*c0J(RdZ0Aq}ljSns4U|@X2jOAVWG+5BPMto`9`=^X_F?;?rw$ zxbuWZr|XVS9{gGdKJg2>PB8rD(aUO>3rgXxD?EBx8$oAOfL1W|)*f&*JjpN5-~qZq zr}@YK68=y80?q?DptPfrM;X+^^Ip4A(uY<50LQajD67I`r?@DOVF(Wt2sa=t7*u- zKmR>?V;_JoW&j<7>(P1NxAVh`H)$YoQ;)MCRjhgkKs?_I;0w}0qZ(%+(k7tYFulGf zc7e`yh3eb{kEr3a@ut3K2A09y7P<-yFdlOYhlFZkk)h4 zEBZKPCU40Xl6tU*0qMFV#E{F0J<}KTbLP8$106}wE4nTRR@n2jGB9{(p7Q7n{o&E; z`op6WJZV$L04kqcA9(b-g3|2^k6u>hv;RShBtLlcvSwsY-#39%(_R!@64cIkaitk# z$VHD%Ut~l0Fb$b~25v|K#1QVIpx6SP-kZ}r{nG@_I3}On(}N~*x-&hFo<4gbr-opq z;s5{5wcz8PojiJ3v%;renaF9(v~_EX&j%FO(&lROm2Q9~|wFcGM-(RS212tWt17e^fo`M5Bny0Us%Be5Xy$#e& zMLw>-a@+LxQ#lol=G^`czTUBA55$mpTOqjyl+_uaL)ae8NcZ7vo36B-(`UNhEY1+d zUDFrO;&fvQ4x9dZ7N<7TGwtaTvpHoMk54z7&8f-wdV0caPH(39Tc)p_&1uG{IsM6O zP9r9PEz>3DaQZN=n4UU^(}1ac$MorQICU94rXQWd>ARiq#OzIn_XV2p_Wz3nra2{tcqr~*D^El1e_1KsgUfkI|-Dp0iDd+wT zAdkL(v3+{Md`=g}i0NDBbH+3M5SuQxfYT3T=K{`nkX;Kn{h5A%Xe0o zI~@7ScITCr}r*lJF7rq}PlZei-0KRsnNXNH8_5>STO%kUd^ zgbCO=E=#6AS}@xge{3I=6EC2K6LuCH{cN z;#Y-$TQG-1z%3X%kW$E%NKyF=3@>-Ef`&*$+dQGYJda-6q>qdYuZ2B&MLR))mf-%Z z?c7g{3@$r8MNa*@Ew?wz^y;qK9EWquu9hpFQvf)tG1OOL3NlQ8$>V# zBq#(E{P^#`Dd-k7e~{>3@X^Aq7hc|h7-|I)d;t?Y4iQuZ30__^-Fh9TiK5Lfa9EuS z0*94)FgUD0Aq)wsy4>j#)^X}7zWoVSRu56efv!wHcl!NxoQ7_*A3nRYja zf#Ib!c&VGM+&4ys7iU(3g3|TE%hiw>TTYPR_UU2kIpx`&d}U;KF==}BdQRW^i6FK; zOtBn9aScdN3ns`35ljaOioyiHfEIyvyY6`T9K`6g^#sX&Uj?=F+Moabkv8<@`!X=R zv}Iyo*v|qwvjjZr5)Bg5tOvC`du3<8Wn_5C@&{BXetsDPwoi7(TSf*)(8(hVFMS~* zDIgJW)I!BCfm5aI)_05yj{A&2N0S_Yh)BE#iGYR}Uao_POnb}7@H%lH$bL}ry63~d z@Nx|!gD-<4wB;k)4Kf{KU-j?*{~h;%uH5wKm7R$YPX>#Frae7+Wv3#XS&vSCvx(Cpz~b5e|1ZCQ#s}&$K&2pP#vkO<7xEy9+aQTlR0%ea#37J`4@9E# z{)eER?YYnvCB(ot+E28pV@*n=t> z3lbH0u?(~Ug$Y#O9|slu9^JJKppBIJ_ovHm;ZzrUcIp5B*NU%YJUfqr(=BKj<)us0 zW43T=*jJOTl!#6gRwz}KdA*K546oee5st2r1-_(0oFAqPmN z%$|N^3+G+N*V7kmYB{LZqKy?r3K!1M7vXbuF1t16AaRU{owv#@9 zQjDmaHxt7?IZ)V$Br!0&@V5Z9Pe6m)JHR_Op{Q(kvH5Ke84p4^x>?Q%w@jq7}q6%(n(6kV!xAUkDltsS3(3!%(@FFw;90?5Ixd!Am=C&!It`6cXBv5MckZP{y zU?}18=&l!teK{4P0y@t(d47g!M$!}p2G8z2Dhoh8{MP>^0-nu#RAzvKmGy-yNV0j4 z3Mgd0u+B;lNlz@&-7=un9MNwW2QKh+~nz2yE%iHPfcQ&9G|7nJYy2W zX)C>a(>HJ@ z;bT7o!wabx!1GU0H<+UKb{y11xaFwFHiLL8Z!1xH#o#;t=xweE!+?RM6~?so!)ndQ=O@oVY;~`qbyg%+He0~+r2Q1 zWSAV6t!er72U4_DtcOGk=yd!S(xoVYU$Y(>_)B{j7+#!IGbHXoM&v7=Xm;_Lg1 z)@}xd7wf{OCmi8yQRoJR_Iw4iU?Wyh4S&nk5GImebI?Ac0 z-wheL>)l%bI_gV~9n=8-|Dp}ls_4A`qM(a`;l<1_28I_?!a#Z0VS4^C&P=8n=IytR zaZYArd^kPt1g9C3@#E>sPH6N9%piz{}PH)Bjd+N;6g5oPO*S zry{fcea7kj)ts`^*-vvyGhUmne45ik^2YD~E{wk&JMTCDZYsJBz9Q%|zX0o{^V3^S zb2>8pelh*{X--Y1p7YZ`o#wRAz54q`XAB=`P0 zM9uLN)5Fhj`ZC=(J$>03PP^$}&TtwsKY#Ooy2e>f3xyU?Eq@GD$U$zn`TioOnStTO zRDVzaf$AjzQ$`v6SD^8fX7tJiJj#Mm+3ahER5r{jni;@nVbxE9=tiq-tjl;uW zWsn6y@21ON=9F`K{|VHfLpLZL!yu1dQ5US{^i8k7%;_Tey&7yaf9pyH2FOKv5Niyl z-?_|LX`Kp@E|q=>I`Z9d8za~yFZ>|F{4L@CL9wVYET1v`n~I% zcNq^(-*bbrj;Tmuy3I{a4V@pFpi#f;9-W6?_}YQn$~Vq~+sfZHnV<(#s5-(*28ZpO zD$|$Tn?#>3OAZgJW$ zT{}O0$1P4rM(63jZgDCxR!o<@%~{2`boz|joXSi$&rRQZo70G~clw9hoZ5_v(`D{( zhSZ>UivV+v0 zC<3XEWMu+NM1Yh+)U*CL%gFFT8!Rp8x&mr~0PjnXFc;XCNCB|8?}bnNF(*Fp$MKd; z|9^*5nsL{3>ARfvYE5TBw#WH`EaR;Ob0VO0Brh+RFTh$lz2PpWTs_}8Mh1RCZhj43 z5irYJfM0`G62esA*Wi_dFb()Mc$Fbc2YwA+4G1%UUxQZ{!c5@T;5C9U3-~p7&B4rW zP#=X~gVz$mo4~-pz^}n;4dHh8J547#Kb|@(Z@89AE|o zkAUj|(5%cdkla;}9DgM1!ZRS>ML=mm*A1W$0xO#imWe#@ViitM%!0E;M~I&a`Z4G!;53-AZsF74;%&=D%k4q_y2!T0@(qQTnUyG;9U%sj6Cs) zKc*L=AdYuFSWJMmd=mr13x^DlDFVEcrtf~vsmOR>``zc9Q&^Z@@0(uyhErR0+dh!t z0=)uY!y|Yh{76;^9dY6le?0G|>4)ENst8X7DRtx*=(#uH6c+<%nL+pVUvD^9GBTdr zzT_R}6-Gv%?Uf%m*D*4tZrAw48OLPQw-jV|%)vB%O|a|vH4cG-?EN;7opA?0@eA<2 z-p0uA!X+A{E|T@xw&^>*aCS2WPIvjrsUU3tlIx5D^&d5QLA7-nzsQL+eht?D+osol zG`m zC^^068>a-*i>=f7zH!P=-};SH*Lu?yMur#MV6B?1pbdy={2Hwae-UO+1SxnG0Wlk* z0OYy|-h}D0-#NV)b*E>1=Twm90Vzv`Dud{UD7(D{V%wqboLY=4roa8psleDio$m*y z1XCDP%KZnY7Q6Ch&;jJ()APP_N=Y$+IMLw{OOZ{xINk6kr^56zKRC76=51nRc=3ID z<4;a$sag>GS{SAVACLwwkk@~5Dlq-nIDOtvPI0E=n;?$5_LEbSaq6^RoC=I3(-nVl zN-#NtW#qO;{^As6WX#*1|C`f^k>&J23PoZ?K^KTc==%UQs3 z^dn6A?FW#wmBh!Xzd`d*H#~ZMKY+I|b-IG4r;Mh5{>!PwWqt%ye%3B{5jI`@A7>Mb z^XorQ<9ELY=@*{<>>p+yZMrriR|`w+bC~4U*I-GOfM5UrPY+<@ zsAhf!ld^(HF;1Oc!OYdjf{>_w1=hoOZMr!N*9XSc(=}MRwlUt>exH?V9wTG@^g4Df zeMar=>)5&YnV4?6PCw7jB_FU8v=sf{i|4$cMZ_MxqW7Qz*LXqWXfOV|{sEs+^V}6Q zy9Zi6JmW=lFQjdB)dkcR0S(7oc+n0OJGfnsi;I(yX|~IBO;)aL+uw6@&0}QBcbZ<$ z&ZWP7A1}!2llIg1b8^WA-ro$d`#L++?sHIqW9(qN-`hj%zHX1O+q)fN_fb&Y2VUoR z;YB%AY~yr00WJf6y`7-t_^v-ZdTU?2FjSphE5P-WF=l$XAlFL9S=$wbxVV@Z7f#m^ z~0o?a!&<;*BOeV-^-1mm{p;$mD@Ox8cA2a9o?Vyv7lC(b47kZ1uqaHjUcixn1s z{zJzFzyk}8VZolA|6UZ{1iQ}gzz0wMjdCSopna;H_g^fs00qwd7c$eU#kmyJJSTu1 z1v-&MZy%WXz@xMFg-2)Uhhwfk7(IGxZ@gG5KK-CLmzKoGYIt(}fs|a6rZY=$ISDQA z{QaL_9#oNlUGZXi|MYMPE)&Mc={*u$X*^LoK&G>(c=U?$PyZ*uRj$qM4r)}n&hY4U z{onyP%tmE8*oGAzy}l1TI(;{Q)){#8vYws3K$5FNG{g-8bK${ z9N9g6p(K~~^r=!@3c=S8p*o8FCJNu9`HcZ+eN8XOZQ$ABce}t$NFemG{)ccuVZi_n zi!_nx9MW8IjCIq~rMYb6Z@Pe;bixC2Ob}=r(6=dIr+`AVc={n}E@#Q>Z?IV^xQB7F z-5Uv!b=_baKX@E>1>J@Nnw#G}-Ajf`k@@0oh>AE&6_2OSlHuCnwn~+W;lDWlHiqUO zjQlNA7(lIZ{?;hac9mXRSFmIQ^eTA%lYc-b3v4n3x6L%ca*zw$O{dS0$^NN>V5{!SjOUAqKrv0l5Zp6Z~b!Jjk`_{Bm6Cj4jj6<+!xzQyaC}w?Q}bNE=|VN z=^64|+U}XkAeX|z?HV-PLcl$7TNbb+EZoi=1BY9oJ~-T7D1kIWy!%CI`Ym}b1;zu@ zf6H@e)~^6dd2~t`e)H(|7VxnASjq$H88IBk7Os<^s#%OYdRga!lystmYZq7^Vo@5H z4GGuhpuxUg+hB;$aR$)xmF5ZorczHG!~ZXif)-nJf-bT*hA8NaKm?lvVtf%4eu5Ac z-4PrgJpMED_hmzT|4VWD8wD-{#+d1{id^DM9LJ}dDRL<>JvlZ#N|DQlY1;AWD-^jj z7^h6XsK_PGIp-i~n1c21sp%gTxuh5)r}HRr$?`wG_5c4%(7207FYEd9jME*yu}PRu z0iRFnx&XEc+oRWXBe;i9+wel+>;L~R?}A27du>z7Kq1Y`3Nbltdb<*rqFl-?Xheb+ zJiQ17SuhE#o;4F{0VCV=`$}B4CIZL){C^$(;^+7O|6i+k^xE!_2Su4j=kXWcj{N!m zS`f5yrgtxBwb6^IxBmQpE&amo==1<(E)l7STcA}gwv})V+mC?K`~4S%)9aMEqIr_f zfpRLi2xFN3RGCZ7QBwi5`SAyHDVs<05rf#n9-XzIe1AzE)E5FTIRULgdEwFPdINIj ziS2igR4?y^Ce@;oEdjb z*H-5;WL|LS&-8e8E={=@S&*w`eL+<75sT>9!yc{QN?Bk0Iri=Ui}dNs)VWmDl1_j| z?_w{2P8rts={22n1U3`p(F|Hh3qAy8`ScI!TuO{jrVDFuEoE^z2y@4tqY!t9PyeRD z)y&d-04DMK2t*=m`*uw(4rXWFZJ=;C@6&ng1rum-cdw}NHc*ue7WwcBGzTWi2^P8j z;vs}91m+%paS6h`yqrmwi&>&*6UdFH~1xz;h}Y>&3%5@TcxonBcCNXf%DQBbNd1@dbp()_bN6hsK}^UxE>I470LekTJ}bakCwF>=GncZ+N|2&vXbyxJ5jK6kGnW*9HAtqH zR|le;clrruE?1`etETh2a2Yc8Om}qQG7(S)9Y_UQm&jsx^0n%Vrs=INTt!S@S5E)w z!ll8udb*M;mpQj9H0>o2GF3?i}K0a)7`jo7&%t6g93?l*Yw-&T*`vW)_{@-v{fj` z^8f#I`#+pTEY%BPnd9?PaOPn0+cN!w4x8w7(<;VhmL&^d(lQWf?()t5Va>1U0v=pd zERW{Hlte87o4~$x6G(~6^m(3KH7rVS=~;`x(wtv6f~6T4rU&?Nxr1(Y@#ro60qUFh z^!gs~?7Z+|(b@n1(3G*T3Y?W5~LWpUFy;NCcvW; zbc!TvrSJ5G%3Kx}v%#JR8}b2^Rgmn17;@+g$VO23A?Z%_1M5~_yaDcn1z2?lfpu@6 z;L9bzIQ;`7R|m_K*|0$2SpfERR{A=SuffgM|Eg9W85#bo+JH$rFzEm$oxr3Em~;b^ z9$?Z7O!|OHKQI{pCWF9a2$&25lMx>ox6k+En#{-tI_E_8?ng!j$Kd~}zS|cBaLr|| z2h|6U7+W|P7@l$R|2e_P@Rf5DGXukNUjC~m7#X(lwlgs>?By3bbb*oKGJh{41H%IW z*44)u8J-F}Wn*ACB`&t^0wco%agfYg3D&;jj0~S7nwS_EzDSA9y1>ZLB@L39F2nlc z7$d_RnSYE74723KwqIgo_#?;q=on)?L!xBeqUr{_@m5v z<`^SGqY7w~Mwgl}NNld!O-2TWZ|Y*tFETRR*I?atjFI7q2FQdjTEZZ)c5RS?2RdR` z&oDBa)MZ_8jFI7-?n`C{hV6!82hT7v%rs(cKE}u}&*%*|14CE69q*h|j11H5mN7Cg z?6v2edX$XZWa#jH%FMv85x#^^)NCpYzmi{bCHqZR5*xpEka_- zMMj2q5tA4h7#gA^dM+|D%!mT%nHOF1;}Rpoq?qrF3=ExdJeyB5GAxecnSYv*;cvnf zrg@hb86GC9{5r|VFgZo&*-1u*g{l0vPBJpwN#|dDl#$^=eFp!gON`DF*3Z$ zk~ndNkzs4L(uJdp4DC6ROHMH|e8}PGy28lNoy!g4HRN&Jxy;BgJ5O`PQAUQ1g*>2O znN=kC;xZ${>Y}@h3=AD5QlF19GW;sxKX;Omp|f-kHv_}b21c=mR~Z>@H!zBwyvoRM zwUbe>^$H`y()vEeSBxjGF*3AIX6$D=eT|V}?p($-jB~CrGMt>p_>qx;Vb=miD-ieP zLdMmM=Pxrd^e$!O0SU}p!6*o_==2Ikj!D-U8Q!gAT(<#zK(%_4SObAn_OL z83oT?V`TWZp0NbP@7u`83X)&2kx^|!{WV60(;FFCLGk`*BO@=!`#U!=3in@OWVpDA zQ3B+xIhz^zKpG!xX5_hYnUP`27DizZfB6sMU3=Ds_G4dQc#mLaPozaAWVefWE4iN9&c19sk`svxhC-^_+UH%2+@NIkZx^F71H;1IjN%|??A^`C3Q~Q1HzO-Z z^~K$ctRU65cQdkrRKMBHsJ7<>Bg2|KjKZLxJhF$8d)G-uhAVp*xi_6;WO%ZNkrl-M zvxiY_`%y-Q<@I|R`9aBQ_g+R;kbaQPXl-PcPkzxM{MxF~N7#VJyVC4CJf|23L z2}YhzCm0$2pJ3!!dyddf(*KNnvv)JX-0;3rx|(voMvR`KEuc} z=L{pm>NAWyd(JR2967_N&~Sy3;qw_ro|dzW43p0?@+>*a$gue=BhQhuj0|(nGm88; z&*;F=eu0r^>IFuIxfd8sKpNIxWaR0;#K>^`A|ubtON_g6A9?3=~N1L8lJ#V8EoFPY8AvuGJ3!`?ZJ!XWWaa~LH-;uGdF^6#B4 z+s&mfw`dh3!-AEJtUFdRGMrh-$a8BYBSYgVMjnuO@2c%t-CQSGr@K$&GMH{WkxOKH z`9!V&G4Y4Ytevb3&zPq$GBEsN;q7K+XlIq#{&FJMF2?E1v0O6K7fSWxIih7$ej4Wed68r*|yi)|mdF zkeg$>!XoZErs+)!xpk+XUcw#90ctCP@b(LmVjZm8H>~0|U_=N$Sk3*03B+Z*7{MAi z{mMFSgZc%U3=Asl3=BC83=9YPxImi0`~)oq1{M)6h5&sA1|1PD1_lEL1_u!?h6zRt z3;`hidX-lu$6&qg7NchCS@J5DHuu zWQbAVVz`jR$WWoc#c&{%k)cO{i$NfRkzs}c7ehcfBf}E~E`|?N85s-|xfl$VGBV6i zJ_;d7*;Sc+)(6VP*}~#AfUv>uwgqRgNhOt!-K<&3@enl z7$zKHWY`1ZgDNZ~E(V8_j0_ygTnqsh85u;Bxfm8)WMohQ(N`E5VnE`z85s_M=(~&z zPn5YB67DfFFsN`b7(8HPkWt}cxbT>fApt}`V`QkGp~A(W@RpI`j|vwVtAs?#qhy{iD7{T7lT7G6GM(B z7sG`)O!W*R+FT3`bD0=4w7D1*mM}4tXoG@^iJ?QAi=kjG6T=&j{5mEE1|2R2g^f%M zB05|QAC53FNa%7g7~ErG(9z>!NO-`+V57&yVBo>bAYshKpy0#Ipkd6#a3P(Up~i%Z z;X^Jn!yFSXhK2%WhAkkvl9@rkl#5})jCy8~w#LUoR#>H@8D>K6yGcJY=dzcw6fcRgT83HW07&iQ4W+<@WVo=~@Vd${nVwk|i z!mz@Ei{Swu3&RnRybue+4-hTQ!k}Qu#bBVq!r)-Z#W3L}3xj|I7lT3la~1{*2QG$& z=PV2^4qOZqKCv*&0r9`FFl=z(Vz}^|g+aoRi=lv-m0^n`7sCNIR)#x{TnrO9SQ$Pz zaxrY+WMyD+;$mpvXJrU*;$qmK&dOlp%*9afkCmasg^M9Uo{iyv3m1cd0vp2}7cPbX z1vZ8!E?f*76xbL(xNtGl3ruBW_ybZngN=d5m5U)^CL4o}D;ER9EH(xUS1tyFxoiw6 zu3QWai`f`zK=f)h1|ByqhJbZ!3?^<|3=Hep7(Cp#7#?h3W5{shVo=!3#xTc?i=kj2 z8^abiE(V7KYz$}IxEL-RU}L!9#>H^p6dS_}5Pg@8fyJGxo}u9$8-s*97sG;=YzzkO zTnr39*cdw8xfm|6urqvc=VCa(!OkGy!NuUf#m*q(!Nu@^o1MYHgNxw<4?Ba82Ny$w z2Rp+94=#oa2@O!47jP*}>raKi_b#yA*Q>V3Hw4y@*2Q1Ar>AqPW*FBe0@ z77m66UoHlRyBrJ_{#*E(V4V91IUY;vYB|zJU1OI2b|#xELJ1b1-BCa4{tO;$Wx%@&9r#)UOHP zVqoCnWH=JQ#V|pNli^MP7sCcEPKG}LTnr7moD2eiTnrADoD3#`TnrzaI2lp`xfm|E zaWYf{axpyc<77Aik`Lizcmm=_a54x4aWNc-E`|xsoD3QvTnq}`oD2aWTnr1kIT=zy zxEKT`axyf8a4`fN;bizD&&3dMijzS?fs5h6El!3U7cPbacQ_elxN2F3(72F4HU z3=9Sw3``d|z#+((P|Cn~pn-u$p^<@aLn8yvfkp-RZFmAZSz#wp$fl1&B1LJ|K4D1uGGcX*u!NBNni-G;XZ3e~%e;Ak&{xUEu_{+d# z@SlOD;6DT71qMdO2~3QPAD9_g3s@K#53n*a3a~S>PGDzbY~W&Kt2f|gWSGFs$h3f$ zk(atFftZY zGcru5W@Iy{VdVT!!&uLvP|L`cP{+vF(8$QOp^1@WLo*{2Ln|YzK?fs~LN6nWKp!Kc z!YoDxhgpn_A7(K!3d~_-aG1l$xL`gbyTSrS)&~n1IT#i(G6^hUWMNpw$Plock!8bj zMlOaGjO-1o7#SE=Gcs=2$jG>1Gb87LEsUHKwlOjq>|$gT*vrUZu(zI(vEeWy>H$Ge*V*&lwpL{xC8<_{+#R zfq{u}0V5M<0uvKs0W%ZB24*J40C^_H1(r;V4+@!>CKNGo7!)%xJ}72lOsHaFXsBXh zoKVfgc%hkz@j(j{3MUFtIdjVPcrDg^AH&8xzxkZA^?4 zS&lfj=|jggj=34SCEgAM%*l zKNK)C7F07c3DhuieyCw)DyU^CazV`iH0i<$Am zdKShDdstW|>}6qlu$P7Lz;PC4ffFqC3?ELgaD6z*!X$8ph2g;&7Dj_hER3M)@xo0O zMuod9j2G^*uwJ;w!tmi93!}gT7RCopSr`TWu`mW`urefQu(DpzU}c)1$;!~6&B}DZ zl$ABXf|cQb6)Q)A9V^2HJ65I#POJlY-VNnu$h%5VJj2y2Vpjj4WevJ3nbWB5+vD}9HiM;A4sz? z)gMq}W1gVF#uT8<#=1a3s@WJAYT1}J)Uq)b z)Uh#asAFScsApr?P|wDk(7?t}(7?uYppmVf;XxxCS3wIK!-f_%&V*Jr#tUt13?JIq zm>t^LxEwm!7y>%kSPDAX7#cd+I1~EV7#RB5SQI9*F&Io{V-}dg#&BT@8`pwqZ0rWp z*%$+6urVx{#l}%EhmB#w95$8<^Vpaa7P2u;SkA_urW34XJchJz{Z$xj*ZdaHXGxDyKGDh_t_W}?z6Eq z+-GB0aG#BN!2>o%hevFj4v*Ow0v@w5ZV+N;Y7k{-*dWTz^gxoG;ei}G;{k7Wh6g_E z%nN+kSp@vp84Uc`86O0(Gj9lHXJrUwXFd?h&TyeVl%2I9jGf^_1Uu7%Dt6|8CU%wu zP3%k;I@nn!bg?sCn9a_yU@kiY!#sB81M}D!9?WBBYFNz99I%9)fnhZ}qrw_?MuoNP z3<+!5*&NofGc>GYXFITtokd_hJFCG4c9snr*cm=-U}sd=!p?PI3p<;@R(2+V?d%K= z+u0c#_&6BqFYs|N2?%j8CWvw{3n+0g7$|WtGbnSgEl}oQ3{c@<7EtA2e4xs~qM*jX z;Go9A_`r;VvB8alF(8tIWkMte!-Gf;CWSZ-28TEf)`EBrCWS-}?u0}RmWCt_h6PC+ zOdB#dI2L4bFgRp!ux`lWU^tM)!5)y!!EzvngKNyxTG;%O2G;y#Sv~n;ov~e&WXyagc(8j^w(9XfQp^JmzK^F((g3TO^4O=;w z7VP6-Q`pbJ{$W1{+lK=jY#$DCFbEvt;50bG!LZ>72m6Dg91ID^IJg9kb1){H;b2>E zmV+zd90xQ!O66MpOY~_ zl9T;_G$*rwEGL73EGMIbDktLybxvjhO-_adTAYjy`kd?+^f?(63^*AZyf|4lcyTg5 z@Zn_m;KRu@!H<(Uz@L-NA&`@yA&`^tLI@{gLntR}K^Q0Fg$Pc@50RYg4AGp-3t~8# z3KBUP8WK6#7?L>I>OUlNG8Ck9vN2?EvN&XLGCO2)vM^+EGBf0Gas=dYG9=`2G7A)N zGB^})G8L3^axj!}vJ{kYGAT^rWJ#FB$8vqlO^B@C-d|j`?)n3J*Ge0&#hh$9@=1F zU;y=aKznsye1=tQpzQ!)3=)IMEx5x95yK(B;Wk8`E1C z_*M+;ARYq)!{Y>Qum+e#IS>Un<%_3ZJisl?3fkfcW{O+Rgz7Mcns^4v2W{E}2^B;6 z+#n7E0|RKAfH(sKL-BOQgWTeh=+dC$cR^Z37&%nUI#so211u72O*$0x6W@KP6 zXJB9`oz8fOTU@diDlGw$V_;yI&d9)E!@$7MJKgXQw|L}Is5EHrJV?cEG`@NYYJgva z%EMgI#LB?H%fP_!7Ag*lxqs6af^4^lhG>rmna#k!pv=g?0McqP{US&@CIRB7EU2`b z5JWm=I^$t(@klvEh;CSH|44`Mp{g0swQC47FlaL{Fnmsj7z^pSFfd@~n_hUBTU@gj zYCPz0IFOOYpstAlaTpjFhoyx$#0NNy*J6-Syx42|(21Ggus=J(tfdQi15hOi51|ppamA=dX35n^`3$aNb zgBm`4`a*2dCmA3Cv26OqBi!Pa;M4@lzEHzqsc*wq7I5lQwSib32bG`63em1QUGXTl zcrH&8#N&BT>9q_D45ADS3QN&573AO8w$Fk z8jXJyjsF>{AC_LeLiw;vfo@)D3dBCpsq7344D}4_bs+%=GhiuH0cgiJ$V~^Jd`%FC zfq`L09mD{b1JTvLgsRttsuxRzs85ITL6-!AEZ-mlvUfV$ac&_=2%CW+8mcChk%0lE z#(%ouac*%_QX>ly8TGKpxR?fUMF!LcFVN^PmO>dlyP@;aS;D2!$E|sthm{FfgP; zeuWew=p`D80tN<#i_;BHa*O-kREFsD138j` zfnhZZB%hEU`S6^WJbmLyZgI&>Xk5W^q9hXo1LzR4%;^uYNk3;uf#pftGNzp^kwS;9N=&@52(3Jeo1+))3;OIhTuJAq%9o z%bd=5np->(M>P%*4Q8%D}*YUZA4$$?`A*0|TsvfYNdd6QEVe2Pn-T1*uvPrIjbF zv?_Q8kwUMX5515+L93xbrNrIo z6VGysYp%$Klq|_0tsq@!rZGYb>ATY}VlxeN?-r;Mx;vfm92U2L$_FWssnZQX(w&(Q z%V6cR2DHlWoSukH8dOMtHvV@`pNLHwRLg_f&7IQ^p5qpeL^pg3v;_hVd8kDoPeP-L z;X*s45wHPD|A0CUmQsH*Fff453i&bJ@I1G;FR3YHW){S+uqyv0C!{$Ab`EMA;>q-l z=efltU7%5s0&*n-149A>0|TgGZ#Vtnd2Vq}^c=D+2Vw!Nh(<5c?V$3of{>RHlJo4Q zJ6_-xmqeF7$;iL}y6Aex^g@udUM|FRb*N(k85kHqY`y6Vu}LpvfV4#QreDM+{g8oy z0o3r;o6dNVTU-*|@E}H*v>`~kuLNQ@DDFYl`!GNn3VqWPLDDx$A=3IFIZ!_W+J(6> zeIhpLa=7$CY|@o*>5tf?L8%~wfq~)1bj3^D;*#iggR%#xqjqC@AU0`kMo1Uv#`H#P z(x4~-b-r#)--u1x8`^xiG5sMn=|a%VFW6~{;}vdkNp!nGCm4WQeh;P_Vv`0f zw1OC(h)o)_$seM7A~xwgObiU}3=9kprXR#6eIF`4Z~8}&^t>8Kuz-?2C}j3R{XK8G z;#F>ONpxu*XoSw29(a{oy#7QjL^muC-h}cMKt?ezF#Lq_K?N>I2))+(4Q-ag+5_l( z^lB=^08$G=+Y@XIh|;9~!%q%yr$!vwbO$whKz3F`eFRpDS!FQ<6hpf2aZr7rG7qG$ z9Lk5ey%Wj@-Gl^^p9%)NU5C<;U1)&pmL+IsD2SEBT)Bj!L z=JJG@0W0KT^Z}@z3s8E(9*7xT^^gdJn8Co{&IW1kbxjYv&Mhv9E?v(FlWqh_KZWXs zMK`Ek0~L}_r*FK@EnbfKYwe@UTSC=?DqfI!e<&X` z%mL!ZK=@MNW&lW_qY+}E7Kp>Zz_4k0;tg(bMldDJ3bJ<7^ocjP#U(dE6@o^EKx$3d zARXyV(+}R@7OzK_PJv2agKC5IE*?VpFbAT?^mnK{Xm|l+%>lG#a{*caK=ns~(>F*1 zx`nJw5D$X7ogn#+CO;$iQI8z`$@6svZ;^AT1eCK1_cU0|Nud;}54N-sTqfJfQ|L9yZqG z$Ovi6;L4v3lOf}@2cYzZDG>g$=?8Cfi?f2Yfg4S{2~ZUXAzfI58Z5*Bi4%|;VWld{ zU@zDdMS)z1`9I|$?o0%!XJBA3V_;wa#rn_bg?G5cCDEmA;nEASNf$tyj6bJeyu&Td z2&RNtJwO$~bjG__%&UWIFvKPeIx!j42>Lla5u0=u0|SFA*zk#W!PZT@%Pq_b8ejZ5 z{UA0Cpe8XWxBr~}5u0>Aw2fCWUGW~bxMT&iiv^2fP(bZw8&W35vNB(5wL)u!(}o zgFFk8uYvMGZBP&&-D{v!4sl%LeJnl)jkALCPQ~<%*rY*+jDxCxis=urNnc@RU;vGi zRZJIrz%4E*3>^c2jb(z89>{Lt>5dP$#p}_fL2X1(ux^8T;Re*JSD^GHsQ3;jJrzpB z)GdSZS3v0*P#Pw`0m@$hq3angKn*?vr6)in7+@M;^k%5|Vko^CI zr6)q^1yJ?Epa=nB@C-yfMxUBN;4mbwDnRK6P#TuqVTC-5R#*jT2pK@>4^SGHdVwDh z^#vdrH1jY4+LFShVZ&mGh67N#VF`pkce>ysZgENUF|N}rkV^FCbVqE`k60KOKuw;T z(+jalw=yv>fX)HGIej5EX&z?C@Yc=g7qLm-XJB9e)yg-gGd|`PX9QEite{cTFIoi^wy+q0(J15Q*qWZlkc`A4 zZy*C1zek_B0Nre402+MspKkbsTU>G-bY=t8Q3R!=E9{U#$zRhGLDIjV(y)Q&J#3Jk z@UQ6;LDDl-A$347NGqu003Ad7HT@t+`Xf|26)L@zfq?F1xA zuK1K&T(VppVt6D}_cv%?wtRXZHtA(d3=E(iTKV)wY|;4TRc-w17bI5Dg;p7@Mg+|pGOVjWD`6DG)rLK0Nm8sr8B28Ov%K4=aQB;-1M<1=n?NjWWuc9^L! zS2#?62$D{ON`o31AYHxCsn5>og3r0dB|D+gpn?`84eIrSnwOo^9kEH*fM(Aa7#KRI z7e40}_e9qX>ehn-61~3`3GJ_evJ}V`^vTDR=@&t^r9hRzLgEfIO*Bqte8DX)*$9;e zr6Q0imzWqBKvT4h(+#mngL zlty=MJv(IR^bf?B)6HLT3rdRULDD5?C=L``H<%#hwaE0uSKQ(l(*L3J4I>%|b(=USD&#(g$xS-|;NEjA844{?~NC4bKV_-nf#;|F6T*1rm4HB%NMe3kn zhD9=(Icf|Hzn}`C^irrh!Kn`B07%;dHr$0C71yC!K%G{Q4h};|oWLpuQz#!4FCh5@ zC?A$2U~YreGq5lyfF>Q#0)9qN+oNH+;(KoK`YllXu%QKX_n?=*=<+|H`k}*U4584t z290on+{XZIhQq=NZHUl{;f*oGgRpv&&ji8;bs9hhynv1i=s?9mT{w`q-Sm&|xy3cx zpu(`aDhIsM@WZgI=oP-##d15!Q{%7=x85i?|B z;SZYl%;|<7xy3c*%pi_(1nC9MxIpy#Q350vgR=33jFy zcqj$rZhJ<^JQ`F2F765K@rOD5qr7L@LT(ydTh z0II(V$}fP@$xu2HO8Y=*2MArypbud%$U>-A?Q2G&+J^^*`O(_2yls*il z*Ffn7P4jgo z#U*E1L)`5NiUd$g9@-XrJbmF8Zt;5bB~=m70YF%M!^#_2`Z&M?>5DCZ(zw*Y>H?U& z1=M<&IRd<3bEFsy_`wW@04RL{N;gjr{K_pZ*$iFs1)Gk|g-&Z*Om759qc2ATouCS; zwx&Pe&f=tX{ zX=81W1}nfRpCAX3pA--A0Ia70Dnvjze(v;z-?+sY=T5))ja!%%)UpCI#U5Mw5kE*o`C6w*rXRTKvpUTOi#ony_A80!3pe^iNCqUBM(5`0?SzspnO=12;FVF zplc@3^}U1YgSBx2rZfKG7OzKFCIDR*4U2ziC?6L8=tCFi)}O#(y#~}AP+^M{q|>MW z;TB{(Fum{(x40v$H->H|=t3M&I}_cl@lZ2C#TnSl>5PA|M8{vKlLDq2{^b_0M>k!H z5i(qbE)H664k}jA#Z?(0L!Id2;*1Oo_MmAMsHuBcs;zg1!{dFNx;QH zF@#MVwAKKdxHGi#3bg=k4k!_Ux-Y2W^$ZN4r9Ge$5mf@RatPFh{QzxZz-q6~R7f6! z`3PNp2AceGC?8hFtb_8w#U^Oa1-gQRPzA7vM0Xfy*v$~M91p4v6fK|#e+1=&CRsrI zA5cDM6$prrZVqVadOb)py2MQA6xLO!0U$LX1O7t!unK{Y1+zd6CM;cL8=&G3BEZcQC-BS#$bGORwm<|jgs=(f zepqz{Dt16~D|?{gpgaT8w`uA_9&t%@)u2!XCE!id1sSnOgUTMzSjwj9j*L9w^}nHJ z!j{^7f`&P)kp`=YV01$cWbp?sd034FQ@7wCBycv&1bdo6pc_I5tOJ`<&j6D+09Am? zU;Q$qabuWLkfh!kO!qJpmY;l-GoW-4 zl&*o&ZBTjwl%55mL52Gg5QBk%VI7p-0i_Q?=`&FJ8kBwjrC&kmFHrg)l;#kIct{9J z%Rp&0C~W|xt%SK4>Ol#~1uEbNr6Ztp5|qw?(q&M(0ZMm4=_ycp9+X}Ir8hz8Jy7}> zl)eC^ZwYgWfeZI1P=R+)`p5Q(PCQ-qa{K}f92^A#4a^(`0${3vQy|DG(kaNPfTMwZ zx^)we{Pu(<9t#eM1;Gjm4U8Aq8kiIs7&kCZU{+9Az^L%y#`N`FJdKPOrt5d}C{7RT z=5b^Cz&L$+H_ylIT|GPoj7%4prtj(Hxxjc}dT$@kym|u%g@6St3Jr`C7#r9YfXq4o z+Asfs@dDEVrUu3hEE`x97BElXc)<99?E+H+^8@A$ECLJoHwb@Vxxl0_L0|*x0wx88 z3rq_*Con1q2nakdF#suGKEU{aSwZ0f+Xlu4#)1bd3z#M_EnvRDDbT?9fw_Tw0;59% zV*_JC0(%2f1JeZ-f$5w3c@!BBOuyRC6Iq{7P*4Cmn~;HF!c<0v2nH608}7_tdQCbr zg8~B!gF`liK9dWfd-gzR2L%=e5e629fSW7~4h$>|9L%g>^=po>GHhXBVd%NY%5VZ? z-Xm590R|R^3r`{Rl9v!#Ks^HsgTiNs#y4Lf^buY*h6ju+3=(2&3=#}141cuP z7!nv*7`7O(F$6HMFwF2_V|c>A!q5@T2Dac&GK4;{hz)GLVc@w4 zF~{X9gumt{gumt%8$&(Ff|@%Jffp~>7z`L#7}k`qgAF=R%FeKZfrX)@i5={a3q9-% z4Gb&{9*fx-Oc+@h&a7Z(@L^(Mu-FLU-#N_A(8I{W;BgM3{s5G=IS=7mTx17_5W{5% z9bm?x$8ZGXQ*RE28K9t^#Q}EthdUe$J`5}jZ@xnKGCZ7Maf|IYC-SK4O?2Rxc7W%C zsEHJ$d2r(?q-h7@GfjT#U@gqU02zV50qxN9FmOyaKFDJ$@`M>8;R9+KGcYiK_|p?L zMP(*`a8wXAaE8b-fX=68U|<08Stc4vPj+xp5HU!Gl>TQxjaZOmGA9E>>jWnSQ3h!B z@napRW@2Cf@tG$YN>86~i01&~jO~GkdA>6VG|ecSIB~a$Gx8M{h zfohrD=q|Z^(=i?tsaE*t9>FwR=|4MnKr|1;Q6 zl%)SFGfa8FEVk&zJ_4oaOMd_~-Ol zH+a-o%5O7HneN~!BEpzF{pJlGb;ii)j5m4A6}^8lPU(<>s9(V3@Y5Z{S9AE8@$dhZ z1$+)aou^0M$Y*_#PV4U)8dg4J|Y38p#7^lDX6w#c1AdOdn@x%1Hw|LZjkDpIV?)ELl zDPNeyp>7ghl>jzWbXD08#wnNHPWQXbW5%@O$Mm+_JX%a^e@x$Wo5w9`_7BD>KmY$1 z|HUl1%A?)!$BDoHweTeU2RuPc`QN8M zdcb4EczU|%LmqX;i0QTudDPkbzB5jla%6heLmnwc;pwdpdEy!MrayhiW6b2Wf4bBo zo*+h^>A8=1)S0pkr%!vtqsH{(+w^^pc%)1}eq)^SfZbst1B2njht0ebnfx1q-h5-6 zQfloe0CL_I#)hB=+#q?@i4U1YS1n>}2--OP;Zq)Q&U@b&r@UC5yt8;Z<1-%N=?;&1 zBv>zg10^%VXFS3z9oCKo(>T*lW#-N&TrFqJ?2s4T=tD| z%7O=sTfR--`;14LWBR)wu+`H)c=1beoDTT;@O;3}{^`0;c-)z~zD+NC!ehr&^=OU8Q-S=d%`288~KfKO2c)=Enk@#RuymJoS2~palR)*LlB1w!^#)?1Hq-lgTsM8 zZKgXu2q$K3G4O{4%w76%7_**C^1iZ>j&}y52J$F(!|b5Lf7fUBR^A>-4^7JZfycAZP5KzUvu}9b?7x&KErDzSUqS zXk$1*3pp^HwZVZ=@Re~&2(M!RC^c+FNev?4)L;sB6Jyf!oo{%ISwp`vPWe6^lmK`; zcp#cyEav|Cb$Z}y9%;UF#tc&!SQ>(?zA{cx*gC!HHIE&W>doo9Uh`NnDo+=D#Uspg znQgk-D;_&WzUhu{c!Wi_-D1Q@JL1!OU-8JBZoGjMbIzt<$A169IAzK|hXRmew_|ba zp6LtU@Q5?L{4)L5D;^`JJ71>jz2*^PKJnjSy8CM$Ro+mj0}p;-oYFA8@->e=77uthe*#3oaipWPu^qL~2 zt%uAatCW};f_xw@to$;4*Bc%q)|@Z!@bvfu(S;PAPmLhq8Tf^93d2lrcrx06-79Vd za_8lvwhyl#wS5rWVf!$=!*<0Rhv}!^^4N;1f+WGY9^nb&>9X&5q^-_fhxyMC;vWT0 zu)Bpp?tbiG018=Cw2)O|YzVq>b2{H+9x*0XsKbAJhC7_&86-lG99{@@_}$NpQy99z z4re-X9h?xvj(ujF@&L`{9uKC^de39WwDI%wTkm4gt@gqbp-4x9FQy4wdHBh}8&j8nd?R^IvIw!_a1CWfCcc02BTv0Zs*$1RBGkX*?G zb!FaX#wiPG!LAgFyv{h~1-rvU4o2&VjE;;GJ=&*>edI9`3&rB8?X~IqKJthu8GUA)QhFR>8@ya(7G3p-p&{tU4aO-Q7pH#%X_K68`H9Dxk!yPC zCmvFTHHUY~iS7@Mc3e&#V|I{0b&tj|1VQWN3LCQ zc>1f)JZemfKTQ|{{7$b-S6l22h8HDQa>?H`N_<% z>cHRsTS0t9hK8Wm4;ZI(P5=9aC!gs>{`9=BJZ6kx)0ckb`7UPnk#Wk?|Nq5bE)Mwl zVtK&NpXLrfcPCEY^o^&D>8by8tM5EkOx;}5%f9m{FnLl~-1=T(>PWkcwzj!gY!6UXxY5K~aJm!od(;xoi5oY9{{`Du1G9%k`$zMFu zOuM#DH~YmS$0Yw~de|=>H@W&YLQ^Kbo{LSOcxMDi%AD(d2Qkd>!FNp4Zub%}U7^gVqLlQJBdw`l9ZZ{aG zD5x`TNt{0M50A8910Q1u0}I1M(85c57KV=u)A#=2k+d+B z%(&_yBg2+$s?%Tna1%)hEDb6mA7kt56R8pq98NHS3P8wT=j@qbXD7X#wiN}QG*p!96N&Q83u+e z99I~pJm8^#rP zAd>L})66+LJizw6TrcqR&t`$2|F;YLgoR(`62>W?4>L~8Xkwfga^)Xb-HT*?_MczU z`G0min$E|}Ya|r9gmFs7BgTm@lKH{n84sriG4pE0xq&p>JNz^jW7zV=+TrITXNRBP zZinoIc;9;BLuTPsvBw#wd`f{NKr~DxW0JG?-neP~dLaw1vfil!5b0Oi z3_o{F@Bp_1Dw!LC-aKd8v}WeaPv83?VqpvoLA&~=A7bIvVq}^AmW5ZGQENIYE3Z6L zrp9zNR$ecrFpcR&th{YZCK}U!vGQ6;F6f6?$aETF!$P)(ps$Y@r&vt)W#e_0`?ZI0 z%J<~~Kfk|X*z#j>z|SwM1AaoP3z1c;_f22N#w*2ih;RBSHr^&ylLMeM9>~rsEShqZ zamr_AhE+eA8CQWC#)sd6q$=5Y)1~-9s#qAdH2(j;g@eJtQofg=P~rdo5c{Lkf3fo_ zF)~h<<=~ZPyguEQgIC>a#aqTH2ktSLg6y_rU=aEF*yrb$=RQBHHZyFg0Eeacs+_ls zQ#}7yUAAXr`1nG6z7*$OhOObRt1nA@tiAl5g<;EoCW+ThGp74-@QU$Hc*{8D!3_q} z7mEXa?wNj(gIB)(9Seg9at-147PW@(0`ZY*2se-s;6|q5#KSfWQ^Xk>f_nb^7q?(& z2x4bo5P88Yv1&dGs5lj0<@=U#$`59SRTbA6wumq^T>8FP;OCF!0zdz+7Wla<&0*z# zCdujfoV=ovR(BbvfWr32@_?TV%p%U$ilpe17ip6Ba1H-!M)Io*u}>D=zot4dax@(cwG4 zsQdkVr0s{4PDNHp9-rRD#Vg16^bO;bQgC<*uX^-m`!+6KKSrhnZ??1X@P;vpWuIl7 z@*r6p+CDR!_=s6-RodCV&Zzak8#QaW~o)r_idjiz`Kl5%H=TQ zlt0W2tAd$DyI~m;lxOS?PmdGgbz|DIZ@QKUuRN=k|Ce_{4|-KE6O|FO5=L~IPaZYF9)VyDD(Y%sm}NFrL+CStb4Lx zv6tF>KVRwd{R9_g+5A6W=JWqtabvoj7_XLE-+aa?9ZaI9Up(gd$?*uPp50-hCZqbq zm&$xUU#Ro_)Uci2C&sJAR5gG4E-_vyEk#xjaAywGWRpC~I7OF%LF6;H!^C1H)`>8` zfSO~kUrzrg#%smI$u!+coHtGD;Xik9<_GBml`&6`FisKXVAxX6#_(|=14GC|XZwi{ zj2(X7*gO4{IIoo4%xe($L^Cu5{b6^QIEUGAq7_3!&=+HepHuawGfD93G0DuIZY060 z&ZsjzN`hC3iF5w+ItgAerlotQPm|zv=Te0f3=clJPk%1KYbkV6KnWZquwe2qoo*z_ zYs7SZ-t;s{UL#BWBaBmCWJ89k9^^axR0XBbawxyr;iuwD#wk}A7`8s}hKyjoaEFXw zN>9Hi$t!Ft_L6bR78ZuBnxGa5bc9Cy2;&rEkgJ6qb|M?ijb=3abVVs%Wv_oP7^l1t zci4G?fx!gbmhUeZr#uLU+8hkA`O^!qi%cFQL&f7E;%{C|?~~%SVlHN6oPJu0SJms^ zR7hsasQPcp!N4HW(F{pBFP`)K1XojsC3n7H=FrNh{BQc@c;wERybN2umdhIjABL#= z#w@;yje$X=^2Ky3XOhj@%Ml6q=yitkOmpYszp%#LuQ6m za(5Z0+-HK6ESp|T-zUx6WHv{cVahAeKx^;`+XtK5ZC|Vo`1vB6|7RsQGmES$f5ABA zGrz;n7v|6yU>03f^kRCM46k35k~pL`b!K1?5oTz(1WHuaFBqrH$o{`I_V<5rjRO$3 zoUFi-F_uFT7S@chaJrlFF~QAsKYr?>w;35k6!tk5C}}IijOzdY#s6pX|AY((T0_dEXN*(MGct%U zFg65%I>b8H7^i?52#kykL7LYXrAw_ttRR(F?tHZ}Yw>@Q?av9_ZW>Bw6VwJ&F#wq7Ptvt{; zO)~#ahIUB8XI=?0w*_hsG*J8}9%N|O z*#kFRa+Ty&#wj}(7(|jzK@0=sri2*~3)=qu7f(7hJx_&KEb72gNKRh-5~42UIfRCJ zY9Vt&P|Iz`DGM1GM3~M(O*d`u|_t=@NvU{{O$Y1|!$$7wVipPvlL%r@|{I z1KtMKe+=mzis?}kgLyd*g&#Ce%ak9;VbdVXQ`!)$1*RwnWwJU{JF+F3P0xB;- z{m2*4Hnhh9h>;wB@1Kz8W%%g8zz|~hm~qO9{SfgNtJ!`&a5kM-F%8lm`NGV&3LL`< zoD*Sz1xjk&(-^0`Q1|?q!OXCAz8pi5A|pcxsIuwU6;vM~|I^{q0tSYV%)5+J5*QfF zL5|2!Vz5m3cmG5Js3F5Fyo%)s;}q3rpiXVT&l4B_Z+Wmh;ODicj8nS*f#yI#oqVxX z`BxaHfQIRgurf^H0R^G9=g$|f*?%6G0ZF3C&~iKF3M6bEIonT6Wc6tXdVGsz^nf~6^Pp^SC^1-1G}^~FWi=y%$Wo|X zE1>d;U7(pk(N#QVkdg&tXF1evjSJJ+G2;8wVG4*1${N>9AZ(EMZhnZ`7f`jJ3L}-3VG5}701X^TGcbrmL)`^4 z|IuE?DanisBB2QJpot6&tP@Lb!3GKqC&r&(oWjMxAmVe2af&xWAy{2DT%GmA&=ZVc zhk-11XJwdjh><}AG$~>?y;PG|pNTtv`Z7&kJtoJg)30gr%1JIg!8oN@hQSOLcG@Qx zr`%^?5RsV9tHmqM*I>dh<$=2APtcHToyl|~E#9ztyVI~CMeB)Dw-}~?y!7QJBw9g1 zVumCybciYN z|LKv?c!jv#aH7EL|I$wOO3FK#kS@nB#OIfNw7 zf+YXoCc_k01_qH`H|rrjePA8<^Pzp(c2C454{P}Ql;Ljf* z@!5etAI=Z_$qN!+9{BU&>cF4hK;reA1Aji;9{BS!hyxn^e)WGktQ(fl#5i%@tN+s< z><|3;@NnSIS0FXZ1AabS9q@C;Ook~BP6z&ccs}sw6F!D12}&#zL-`q|h%zvUv?BQ$ z)JA}%%*8hurtmT_h}1&mK_RURnxEeG>i_g#(5wRz1c_~Y^?&+TG_f_)H|p?8GhLfH z{hSW3ks@f)5u#jnqR(;A%mpMDL&OXxPMEH!%PY*;{p$a8P=)0)-By>^y#66OEE}kU zbwN}MPxJ@*lv#S!&Bu&W9MLS!d-Z?%Ca9Pc1A~Yz%m<4Dem-0t@RKbMRK7^A0_Dl6 z#tc)mplU&jKR}6n`Ro7FL30KVnMGt*Edg_+Ry~w=__+|oHg@>=P}$+pAI@80b&QJu_UsJ4>XhE%ra4Q zJ7_}NeqsyAmCmLUn_mB)t_pP*EK(2dW1OOf5VHjrAs=7;pYF`SAOf1A0;LEMm;z_* ziG^Up6es4t{y$xqp&{tOV(*_1mwW$w_wxVr>2vgX6%3xf{68I3J%F7A%~1WTN&{YP-sH!OQ{-6~3>z64LZqi}G~gB1ZCK?B zZqPb1Gz4`(r4`H>LO^5rpb{|{DhATR4c1cMumYi_0xGRw$`Ar-Cxf&&L&ZQ^em`QI z!olFMQ(l#!kdcugD`xK1}SP#zN)HAQt*bEtmc;(D6@s%?B z$`cjSFPZWx)%)o)PU+BRoRZJLAkxt73hsbAor9Rg$kGrr{~F_z6`=h55R`Zvc7j&l zaMmVlere6{lY<}P<(G#UC%#nXTN|+oe2F` zt};#m4bCwzLq;Y3pNBNgLDL-zni(&C-N`s59yFTE%&-c?|F{!Uo26WXWVZ*-j1zyE zF-{3%U=RUekUr2@*8wK`Ymr8bQ$VvEpp|}|SzVV_dae4z>2P}b`C38F=?a#-98#Ve zAOisMjGV6zGBbn-KXF>=@Q`uJHPz`(mb`BDx(^wrZ02bQ@=$_g8Cb{2@$UbSZ~y*_ z?|HyDg?kAk!z*@!n()G_W*UO3Z_!oNLX1;RFq!`VxrTw+9=zU=gO%YT2Lr>;$%atZ zA7-4m(~J?^&;h&rFyqAKI~k`4LVWDL3RFZa-pL4V>4-tS{KDDc=L!aftzwJ}TR`%~ zhKy4{6+4KXY{)nTQ~`qxV-{W&CB!%-Lw35K6|WXky5aOHD_$w4KM$r)v*I;k6qtU} ziq{{+m9pkl0GwFT2dR%F;3~Y<*@R@ z|Nr8~;FY4nt3cJ)&2!WJYoJ3#LGp%$Kfyh5#W|)|BWxAUkubPtkD+Upc zB@QcCye^|Ll0x)PCM)oYKI^ zVEUEa;b$l)n3+LiD4?-B@m06(gThH{)!zHlz3h3L^v>UBoRYxJVERqo;U_31gPLh8 z?}OItGOXIh1zN8RY6pq00?j|Hxj+4vJ+B*+=#S}64!rAB_umH(JZ%M~5m1P{ISa{6 zATwZQc}*8}`f%R_SaWAJozF=R2MqAEaW}Kq^|Nr#MXQ!t*@|rPSzc+oJ zBkwkj>1P?I{6EZeary^;UWw@?PP`&avlyp$Iq}+w3EXF#vVe!d^ntR&Pf!OJG?lh> z$MkznymCyB?oI#a#H%Kj2AZRacUsB7Al?lc@&dX3&b{eY&b&&D5z}Lxd4rh)7#XK; zcIMS(G@t&^nOB%;?Y-&WoO!hv)u$`E@VYY!P0w`UmFAGW2XY7F#pwYj_$8(L z7&U#NE3Y)8(e%BpyvlKnS0J8wpv*84R0Yj`$uQ*r1B2<`YPXeN{9RXm3wK%h|1jf3 z(3;%`wszq8nq;V+CD$N&LHZKe8iJHBLrM=&_<_b+=bo8v=f*3>vhptDl<5zy@H;Zy zW1Rl}tgt3i-I?jf+<3jD8Baq@fZ6WY*gK5s)=~f=R zTAX5M7^jqSIsAM-{h=S9?DQ@VUOlEMcc<_2;FV&^xjX%u2d@!R#@*>$p1f+Dad#P~ zOb%mMIeB{QZeCdq;Z-09T|GTL&XZSj*PfAi#xW75={ z9_Gb+h{?%mx|BDs5mTnxbU$xiB}1kXNIC~Ceg`EKW`>4K3Xece^;r4enF$;?NkNeG z&nVCkWHx=FH*YxW#5=GR^h}+1rq>b_n^bR8^jJJXsDInv7PBTs^xidY_ zhc}F=^3L>QKD=s7iD#z2^WpVkbp)FMS`*G>d1ty^C%@Ko0bgDXRuzP}3|L%kdV?>o z4kP>YwZ6RaO#g3BKj+IU$MpU7^mo3zWsE%2Q~h|iGwr=SUCy6Zk7?KK>3;sacDf61 zGfrXn0a{!I$|Vx3G){qXmjt+cP(1}H%&LC>pAH(ZshGagpI4eQ8q|7c7Fne={jNW6 zIn#vO)58LIA2EgBo^BP$tHh`~JvNZnno)iF%s^gkG2z>g9tvdHm?YTTnJ1^;3gk61 zWxUNerQtKe?v9g;Q||rxKOHou1X_j$8oq5l330=XUl2E3o9-CIE3ee~@Bj1%(hfgA zvpf6*jd;cU2ldH>S22T&H<4A1w?Kua)bu$)ye_i4Zb245eFLpPXoIYLU%=+@bIUEp zDX*t97Vye5t-du~E||BAY4@$^tAcrpnA&blmkZ%N#FTq$`lAp~`nWZnFO*k|$>r8` zwNPF+Ca+u5^Fn#`L}hO=PDx;AfUc(z2CsZkoW3!X*PT&)`p-~aWv0J3r^|)$TGhY1 z$vEY}YmjF_DN$rq=?PFkgV@rmicUa=(jdJ`(N%fS0UZcmd{x#7#wnmc+5hwZbWpLh z_a~&AxBDj~PA;QY(?IH`++du-;KZ=yn=#|h2j&QM({D__70v6$H221Ir5Ii0h_37v0 zdA*qCU!N|Oz^f%z46;j!Vao$=kQ&gUD3Mj=*QZA%@Om-TT%W!yfmct=AEZW(Vao$+ zkQz`OCAlj2`t(-`yqg&9rq4~}O&4VbDG_DZvWwYtC1~^kw2Xp%x?~b>FeBIW+$3IO zsXNyo1I!BqK$RV6a28_F{cF>ACGmPOJ-IfWEtywOZ2L7vP_?sV7qcbYq}|u1dnNN) zF)h9}y)Btnj%mrY>C2LN%}jf*F-}pKhe)j=M?rQ-tpXKTpz28AD5M$qg&85nJzX$` zSGb<-DC3ks@GJnxDWa>GjxtX1MdJTE!Z^hfiT~>eBY5}>oKTrXSA9DI8M1-#KOJG5 zVhdIe$}FO*-W`FoDk1XXt6m*poMH-=2al=LuX=Wbaf%^AVAZ1|kOc`3z=JL_tL`0P zoC2PX2lGW%-8#ZJ1vC%>@{8WL|ID&M5Vhju-3g7-u2aSu!eXIXJU5J4}MCRN7>7ZRgQs4eh2aS?Te1i;w zh<*D%9W+)e^6me0(44!_H%NIW@C}l+L93BKHNw^-keZb1+yCjH#@>R%j2Hh4GJqSG zV7@cc#VQ6Q{$Zwz-$C;A3=AS*1GyB(s4{K13f{#OAj-givWv;$F2tFB zR~e_QIt8Ac0Pi-NeHF4}2-awv4&`&OKpMRa91cGxU1b!RexX}fWcr0L5uWGZ)1F1?B&9Q2Ch&5@3UFa^rIRnF`_yLHS~iKNGJqPOlFaQDjcr$v9oz zLqyRyb|>SM3^}L@CC8uMARVC9#h|@YTn<0oL3}N!yq@Dv=c|m}44Rhqsuoj07x`0Dh3>AY=BAFfPq%ixt``gmpfvJ74` zrdwC0-^<`tW4d`|I$I|1DyCysrfX~g>lLP6^1PjHiODFP?;{eYR;AEzcP8< zm=;}`?v%x=CsuleamoRChAj_PgVcb^M~PLHSEjdR@%k~5kmND;G2~T~wI9GMm?# zDPivPciFshjN#jPb9k+p>gz8vPI+(+QL3>W0@cBwnNZPH%!fc34m1ZX0iM47e~@ts zD91yZvf`_LA7lhiSAcdSf->m$gN#!^Io{_pB*S}shGck;&yWo7_8F4lT|PrHywm6Z zYTz6XDnda9JU2F@_Ch%{@nUM zeE~D`MMVaNDWH7l1Ot-l2_Ky=mAON>)K9%q~~y`g~DLdxwgL=?1fGXu79lg;7hg-g?`1o)ho_FtO5 zPk>K}Y1^ggbvJpWrvDM(6VQL!m8lRG$|q^1iL^RjRm{D&k1&*RhOih0#^Pu=`K zJ%NdJ;%^Y0#5wWwO-MN1xyU%h;y8Ff4!od`L4jeS!}P*pUSWkfA`I{ilPf^0oRNw> znM;f!(*>MFWTqb|=G9>0x-|V&F|V86kBg8N?@wllRT}M(7B2(4!_Q9_A$vVfK=*nc z5OetX_Tu)q65e@?Osy9|dw+wN3NB8MJIE`?m@&Pul2>$kTN!T=Q{~0!zsh)(nEWqJ zmn-L$W3v1<-L9Nhj47gbdKiem>(lhIa^5iYb^95ouzdVK9hCY&Ipra{!_SZ@pyJ5k z=d~{&uZpbNet~g%{99qk={yy@HcTuRr+ZcKMlmTLn0~L7H%KgbKXhoO-C?Dj0!XLu zs)7sC`6_vxST|f?obm&_?~`f8h3Rqfd}7l(DtTR)CSI6+u9CNnanB@N`jul&jX-M%1RDDI~W+Y{H=Ce`NjXx3fl|Q<*Iq3nA9$S zJh)$rPhnJO?&sZV0~`5>8bq8>EM zq@AB`R?BN1YOXyb_(o2y*h{YdaoYMIJe+W2^m_=44&juyEhD(}lPT&sy zse{w|>UouzB+gIYRL`r$KqE8TY!RMwoHS#8L*7Gt<>5y{#**TqYzJQA5S{JbIIRxj=dR5{C9-HwL z?40#dnQi5Zi;Q5ougXj-Ic%lD?3c};QEldxS;5o2ns}9%{=A=_*TgHvlzeV_TNAGx zGt)V6%9Ne{q>0yt$?x2BrDonVrmVfwyPA2U#8>Qry0zV5WwR_KWo|tS)gjTs>%sKz z?DV7--ZUnuz0*&%@Op{IAn7oN>d1uX0H=QC>FKS!l1$sqg0g_&^v$ijnoL*sfb)U4 zD3aa}G7#I8AbMq|r?l~gFm;}tzN?K_iz)W(^k;3nN=$OkrgOFPdPO<(yMW`+i3bu_ zpoMYD;Mz^$3M9V8R~_EXI7RX;Qa)uCUzIt5VM+prjUck>%o)Zh96XRV4TA&2 zM4buK*R}JmV`_dnJ+6Z{iRsOm>4!Ra4~bnn!#L%@8V1t`s~vxW)^UI;xD98f&+6oL zVmduz`n^tGF{Yz4rhn_?{l|3o$@FhsyiQDhXQo?q^M)}QotZwVo7anp!(jToZr*83 zd6TD?_3&CT-8emcQxC5l(}~m5KlSj&F&F-JnjYNCtIPcHr_=W4US3&NCUec{ize~5 zG38C2t~HrgiD}~L>3)-WFEQ3lSDeBdZRaQjNgJS?@es5gX1&8tduEQ;jSLJS50XLK zq$O8{>|~tsXS2i4oeT_H8XhxDRH~Pn{g7E^)t8ggcTM3nW6pT)GyU@vUQeduC#Ty@ zD7SEM60-=i3;keBJE$^TB$@p9~D5-4C4|eu5UR$DEkXH=EZ< z>B2U~DPO!De}YDzzxzA<{O0cX^8k}b_d|D(I^k8$C#Dz8<_%*~IWhgzY+gAg)f3ZS z&E~a}V&B0y<*Tp0_-@1XMp(jiF)lpI=*PyaWUSE;_>`TyxY z3=ASE+}_{}2^!4!%*?h*g$u%eyq)3a17_A$51H9kJ!TeOwQLV)Q6hr~NStdMq#wwX z4N(hfH-Scoe(q+RVh&mvwhofqLH2=`-hAE-=>|Gw!PE=agLe|W+RZpcn}I>(M>xaJ z-~J9iU4)?u*qv5_1_V0yFiuehEpL;7c=XLy#wnnFAk%783vTZQ72D#gKxTj%aF4b^ zCK5n=v*(ajA=nOP@l{68L9If6Q1cShixpXQeJkS>nB*7GiYo>N5zXiSr^CcRz5^M0 zb}OXtgo%R-#?_8LAFg-&X+1r6KCeHM;-2aI=JQ4|MQcx&TEMHO%K$Ao7J}C_iLA;L zXPok%o9X9+$D9+BzC&80U}M;$R|ZVaUBIg^%9Guofn(SJ z_Jsw!CahPFF-}RCUf94ZFLQD85 z&yY&^WQK`e;FTJ}tF(_zS6ak-j?rfN$3?u_)}Bk9!6^h(w0Gq=q7>~NCmFzUprU<+ zi4>R(E84ldy{CIO@hURyd=4qw6^>1xw3ye7>EO}na?5zFrhiy06^GRD%>qgZ1=?WxO6t6QF86(A2g-)G|HY3~{y2a$XOnXsBXg zG{yc<#Tzz5=5ur>Ob5;9NIZRl>O0Va7KI7W=^d8F&7d*)*TOlBf2J>7#w#zl1x@*f z=@*yr$}#GuLt9Ch|+pArMn?YWuQtYtmO4zoCHzog{HI(qV)MDh{sY^@p>@E zLX?W4DGdZG)!DQO)HZ<>CZNMY1dl+513=S?84RE^gdBeIK*gr_oZ?fM?y;ITh3Wdg z>FZYWW-&1ynJ%@4S55fDGf7BFc?@ax}_ z5z9Kv2;TUMtRNMvKrbp1DhC>x4Li&T-v9AJ-r;A5IK$Sx44`sBYE{5t#wlO89ez#$ z^Cefs9cG;J3$zUzJVp*0-4b5)WFurj;43F;60 zBJb!@=%B(7@}iny=ZnXT6E$-ndO(JAoP$^d$#7gNv+9s6sW>-%(t6$~t7n@Sr+o8w zS$Tj-xO<^8(?w9f{rw@vDOpV7-LKRce$J6{{CVf@|E(QPOcOazKnw&K?zInOnAmii z4ZI>u9_OY9ZQ!-jTWJg_3b=klc9VjN1V}57b7jV1h~}5hOcP%&W?#w0HGSU(UNtdg zsBb_)3`!#plpTIfJ2d^*2Hr(X9h;`l+sG@$_-^{njlA+gC&Hng^Jn1LaF{g`&2o!+*IS1v3g5LKJUFGwx2;dQ? z2wIQ?+WNNQEW?xqzuC?785l&w*cO<*kaqYf&&u%e05d~~4g-UT#|wzhG8Lx(+Qcg- z#<>AvCn!ij;SY*Tu4SO0G1AjY@&d;n$f=;EyDMcNp|fhS#mbfcQSGffJH2l+uUPK= zhySO8_VO_pTSHcZL_^F-kuy7G7m3{#J%54<0j4ocI(p{NTLu>O)A)QgCp(-xgji zrfmneS8d@HV`O^ZH+|Ap-aMzYgP^rN4B)e24lo_CWngHq%|IG3^En7zPb9?nvs8@n zXNDBxPf#TZ8pa15Qxku1y3;mZJH?CZA^rjNKobtJOf-A?e|mxv>qHX}-NZW4X!^o! zyz+utAZ`--MB%^xrzad@pQtwd;x=A!Go$1Gr-N2X8i43W921$q!x+M=>R&^K(*FGc znZ`2l6?hez$f~^u7^g^Xn=ZGVH;L)d@99n3d8?Q>4o?5Kop%+JRn_!WJ9v#44W{4S z!E4RL(m7pfC$FDb)d5H;0h-||KLFm^^)rK&VJj#hfJT2?K=Pnm{~a_?1sa?ZUd6S3 z`n;XIZekf57^nR9cV3ymEZqH2nQ0A!aJ8Zmhun69^rS4sE5Un_7VC#fPL z%w#KM7ESj7WWop>dCZIxFHf)C#j7k+(hTZfFi!mT7!+AfE3FS4#5Y ze#R*Yj0{^QGcl|LO*nvNSU}F1Jl)ZQSC&g`mEStXDNFAEpFVxhJ3+bWoA&T7V|ulI zd(>Xg!iVgx>1F$P^_b$jrZ3yaYsPf#=k$B~c%!&}-Gijng=?of?dMfuS+x%|T-C!b z$qOA)N#Jt$`ElR$zWuyzQup^k#!%2_4R7w7{%$|764Ql!pph%F=^6)kZ}263hU9+G z=~6tKr}G^I4Px$t3@McE1I_$;IW_EKoKnKY@Dn!l0Gd!g^a&D4Z#OYc0WJ3U%gitl zRIh=?c^-cD1n2a>)dyFA)aLG)&UJ`aPA_I3;}ix)hAqMY3@aHw!PG#8GeGKM_b^Uj zfNnavvj#MZCpJCj5bqo&p?%Z24)bPleBTR6fzumq@`%VOv_U$~Nsl2;0WE51*aXQ$ z3U8*bJIuR^Y2V)IQAc>gm{#nazUc_B6YKQ7pkreaOL(Q_7^)!JovtIa%R{yAe?5I2 zr=ZgGkfXdNObd2R?>frc#uTu3y3jFRFJ9Zdj8ig##b+}(vP_&cJ@XjvX$N+YvH$;z zAIN~1$#e{1=G2W4CxMf$Gs8s4c%|^Fm3tVcux?_UqW_v<%5;Yl{0h?rPV=)&pK+X5 zfN88p&?<}TWd!}cd;7wv$xM%vg6TERuoqMM1o#a(BXNZ8<=d=}J zA3xMSg>ZCUolMQujF-PP22+?l#1Ll{oP64Fge~DhACT_Lw}UAGi+JG z9P(#dbI6bF&7nUS1R8?;_DoMY#hby>jJM6)3cq^DczKeNaW4n-$$N?uWKwsK(@Gj z4Kk-`9c1?HC9~uzuE^8P+p`w+<*xfTV8F%8e=O7^i?{+B8`iE^38)O}8)R z7oUFbE-zPo_d3Y-2S{xox@yu2$ZR<%v>6#2g8EiK3ctrUA%!2PW&qiKFM`)dEH*zgcL0x!yhO! zPZRlRR zyuvHbb@2KB=^#IB+d2Kv72YZ)uj=V`S9!JgralL)m}Z^`YR<>3m|k|3H;S)lCuHL| zDEZ{?ge0F12T<~HVw~=Aop%n?+Z~`ZBsZPq2Co1I(@w@IFS;FmPG4}ASBC514v?E9 zRvp;^Nlxc?K$6pm9gyVIxdW1%vUWg{lLA=1_$s*_({J744P&z2G2Q4kuM(5sj_F~y zd7YTtw@;sSn|GG@@$IO|>F{>ODgT|>r|;(%QJkK0hj)ow5*H*fASbNGHIRhW#0g1Q zqH7=t>%@OZVgMzq7wSSQ|93O|)Hv%1PFOGMg;ySAgPP^cG7*%p9+5Pn!t!E9PFQbNqb97+OHmWn`=yYC<#HX7upT(GOfNmycFT4dFC z(9jHMvlFxn9CjTfFS6<*Ox&4iq6Sp$8>kpOVR>FhN?4DXCl-VI)gr4NKo!Cg)-Ld} zM@YijVaPaT!C|J0+kZhUy1H%qu6w*(Ow&a^37as#SZ_7GKR`rcd-5k?F2?CcAMnaE zYreOb{`>*2E&s__OK`tpE+d18<{OLY#t(T{GG&HOzxR;Wh)FYay3iwDBPPz^>24tU zWWe+)5Z&oFeI1DQ^qKzX5w8&^r4)BiloHA_?%Z{`p4(I!knBc5HX4Af*>;$Uhs-=zEp&W@j%1^Uhs-Aos{36_JTK$v0iKm zWC5Asf6zuY;Z>j$X#|%rPD$i)_<8a#L~Id5Ll6&C>^fA;iLoJw9V+$~NsI|9_7y4y zGVkwVhPEk;G0z#hj7EjzPsdp<*B(AB2j%fQo_a z*aH=N4;2G>czZom@C%aQCaBnNs2Iq=wNNq8W?s;E9!T>Fs2C44>Of+Pp<=>FV)LM4 zQb=MmptE5^5E6XO)dZl{$Gn3*T?U7!BwJ+G2l|0c+w zLIP;X6*Fk-vNU+r+9V{kf38i}`oJrvRtHtPzyh?g2%)xd6XTSJT+U!~Utimv_kov< zkx6mW^sA4nJSM{=emcw!_au8$bumNv(?h|6hDstgu3TlN}^NKr22UGIOlbTMB7^ z9x{hkGoa(Um^oHyEM=Us-~y}GnZu3EvDP#+{Gn_55%3(fi9F%$D!YWXIOL&#< z2B_F!#)(o4kZrU}A(hJX+246JwQM#pPGN+sMF%fM@Baw0NO+am2F58$RfuKO%^Rk_ z`_8LpRK5YUF~((O^u7PnGmy^iE!+S(ySD`G?B47R)BS$%iZP{bn4b27SB{Bi!}PWv zyiQDU8>XN7!D}Z3vi||I=&D`+LH3HSve+

L;%f)0uhG?SArVv0YxzI7NTy^t_+E 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

r)*-6k~dc$=g$?YGn3%zGnI-lYGX8G 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�L$*gS=q_7FU3mR_N+L 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 T-=Y)Ot+DwpZ8g2^gSZj^WcT|P diff --git a/scripts/tools/Linux/wav-diff b/scripts/tools/Linux/wav-diff index 47f77e82b56e51b84bc52ab7fb01d605d6265ab6..ad8638be3f21a6706f397d07ced816b8b43f84d6 100755 GIT binary patch delta 186749 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 Z9)-kBFql3|gV&zXVEQcxC8f!$1^`CxDkT5_ delta 186845 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�}rnom`&%aU{zMR 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 diff --git a/scripts/tools/Win32/wav-diff.exe b/scripts/tools/Win32/wav-diff.exe index b87b0888e4..1380e3c6c8 100644 --- a/scripts/tools/Win32/wav-diff.exe +++ b/scripts/tools/Win32/wav-diff.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:92c49557ce750bd1eb05278ced4a64b98d66a654f3604b8003f72f4a05df8df3 -size 889344 +oid sha256:7e72c4c9d2b773e94233720d8fddb4689446ab9f593d329629b6261a6918720b +size 889856 diff --git a/tests/codec_be_on_mr_nonselection/test_param_file.py b/tests/codec_be_on_mr_nonselection/test_param_file.py index 5d6b5cbaa1..13a49c3f32 100644 --- a/tests/codec_be_on_mr_nonselection/test_param_file.py +++ b/tests/codec_be_on_mr_nonselection/test_param_file.py @@ -151,7 +151,6 @@ def convert_test_string_to_tag(test_string): # hack to have stv/ltv/evs in the test name @pytest.mark.parametrize("param_file_id", [PARAM_FILE_ID]) def test_param_file_tests( - record_property, props_to_record, encoder_only, decoder_only, @@ -259,7 +258,7 @@ def test_param_file_tests( cmp_result_msg += enc_test_result_msg props = parse_properties(cmp_result_msg, False, props_to_record) for k, v in props.items(): - record_property(k, v) + dut_encoder_frontend.record_property(k, v) if enc_test_result: pytest.fail("Too high difference in encoder statistics found.") @@ -452,7 +451,7 @@ def test_param_file_tests( props = parse_properties(cmp_result_msg, output_differs, props_to_record) for k, v in props.items(): - record_property(k, v) + dut_decoder_frontend.record_property(k, v) metadata_differs = False diff --git a/tests/codec_be_on_mr_nonselection/test_sba.py b/tests/codec_be_on_mr_nonselection/test_sba.py index 885ac488ad..e8ae17f55b 100644 --- a/tests/codec_be_on_mr_nonselection/test_sba.py +++ b/tests/codec_be_on_mr_nonselection/test_sba.py @@ -92,7 +92,6 @@ def check_and_makedir(dir_path): @pytest.mark.parametrize("tag", tag_list) @pytest.mark.parametrize("sampling_rate", sample_rate_list) def test_pca_enc( - record_property, props_to_record, dut_encoder_frontend: EncoderFrontend, dut_decoder_frontend: DecoderFrontend, @@ -164,7 +163,6 @@ def test_pca_enc( if not encoder_only: sba_dec( - record_property, props_to_record, test_vector_path, dut_decoder_frontend, @@ -200,7 +198,6 @@ def test_pca_enc( @pytest.mark.parametrize("gain_flag", gain_list) @pytest.mark.parametrize("sid", SID_list) def test_sba_enc_system( - record_property, props_to_record, dut_encoder_frontend: EncoderFrontend, dut_decoder_frontend: DecoderFrontend, @@ -327,7 +324,7 @@ def test_sba_enc_system( enc_test_result_msg, enc_test_result != 0, props_to_record ) for k, v in props.items(): - record_property(k, v) + dut_encoder_frontend.record_property(k, v) # report compare result if enc_test_result != 0: @@ -335,7 +332,6 @@ def test_sba_enc_system( if not encoder_only: sba_dec( - record_property, props_to_record, test_vector_path, dut_decoder_frontend, @@ -367,7 +363,6 @@ def test_sba_enc_system( @pytest.mark.parametrize("bitrate", ivas_br_HOA2) @pytest.mark.parametrize("tag", tag_list_HOA2) def test_spar_hoa2_enc_system( - record_property, props_to_record, dut_encoder_frontend: EncoderFrontend, dut_decoder_frontend: DecoderFrontend, @@ -464,7 +459,7 @@ def test_spar_hoa2_enc_system( enc_test_result_msg, enc_test_result != 0, props_to_record ) for k, v in props.items(): - record_property(k, v) + dut_encoder_frontend.record_property(k, v) # report compare result if enc_test_result != 0: @@ -472,7 +467,6 @@ def test_spar_hoa2_enc_system( if not encoder_only: sba_dec( - record_property, props_to_record, test_vector_path, dut_decoder_frontend, @@ -504,7 +498,6 @@ def test_spar_hoa2_enc_system( @pytest.mark.parametrize("bitrate", ivas_br_HOA3) @pytest.mark.parametrize("tag", tag_list_HOA3) def test_spar_hoa3_enc_system( - record_property, props_to_record, dut_encoder_frontend: EncoderFrontend, dut_decoder_frontend: DecoderFrontend, @@ -595,7 +588,7 @@ def test_spar_hoa3_enc_system( enc_test_result_msg, enc_test_result != 0, props_to_record ) for k, v in props.items(): - record_property(k, v) + dut_encoder_frontend.record_property(k, v) # report compare result if enc_test_result != 0: @@ -603,7 +596,6 @@ def test_spar_hoa3_enc_system( if not encoder_only: sba_dec( - record_property, props_to_record, test_vector_path, dut_decoder_frontend, @@ -637,7 +629,6 @@ def test_spar_hoa3_enc_system( @pytest.mark.parametrize("tag", tag_list_bw_force) @pytest.mark.parametrize("sample_rate_bw_idx", sample_rate_bw_idx_list) def test_sba_enc_BWforce_system( - record_property, props_to_record, dut_encoder_frontend: EncoderFrontend, dut_decoder_frontend: DecoderFrontend, @@ -746,7 +737,7 @@ def test_sba_enc_BWforce_system( enc_test_result_msg, enc_test_result != 0, props_to_record ) for k, v in props.items(): - record_property(k, v) + dut_encoder_frontend.record_property(k, v) # report compare result if enc_test_result != 0: @@ -754,7 +745,6 @@ def test_sba_enc_BWforce_system( if not encoder_only: sba_dec( - record_property, props_to_record, test_vector_path, dut_decoder_frontend, @@ -790,7 +780,6 @@ def test_sba_enc_BWforce_system( @pytest.mark.parametrize("sampling_rate", sample_rate_list) @pytest.mark.parametrize("gain_flag", gain_list) def test_sba_plc_system( - record_property, props_to_record, dut_encoder_frontend: EncoderFrontend, dut_decoder_frontend: DecoderFrontend, @@ -886,7 +875,6 @@ def test_sba_plc_system( if not encoder_only: sba_dec( - record_property, props_to_record, test_vector_path, dut_decoder_frontend, @@ -1042,7 +1030,6 @@ def sba_enc( def sba_dec( - record_property, props_to_record, test_vector_path, dut_decoder_frontend, @@ -1158,7 +1145,7 @@ def sba_dec( text_to_parse = reason props = parse_properties(text_to_parse, cmp_result != 0, props_to_record) for k, v in props.items(): - record_property(k, v) + dut_decoder_frontend.record_property(k, v) # report compare result if cmp_result != 0: diff --git a/tests/conftest.py b/tests/conftest.py index 8f3e4e961b..989f080c90 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -57,6 +57,12 @@ from .constants import ( ODG, MAX_ENC_DIFF, MAX_ENC_DIFF_PATTERN, + ENC_CORE_OVL, + ENC_CORE_OVL_PATTERN, + MAX_OVL, + MAX_OVL_PATTERN, + MIN_OVL, + MIN_OVL_PATTERN, SCRIPTS_DIR, ) @@ -322,11 +328,10 @@ def get_enc_stats(request) -> bool: @pytest.fixture(scope="session", autouse=True) def get_odg(request): """ - Return indication to compute ssnr during ref/dut comparison. + Return indication to compute PEAQ ODG during ref/dut comparison. """ return request.config.option.odg - @pytest.fixture(scope="session") def abs_tol(request) -> int: """ @@ -358,6 +363,8 @@ def dut_encoder_path(request) -> str: """ if request.config.option.dut_encoder_path: return request.config.option.dut_encoder_path + if request.config.option.update_ref == "1": + return None here = Path(__file__).parent.resolve() system = platform.system() @@ -378,13 +385,14 @@ def dut_encoder_path(request) -> str: class EncoderFrontend: - def __init__(self, path, enc_type, timeout=None) -> None: + def __init__(self, path, enc_type, record_property, timeout=None) -> None: self._path = Path(path).absolute() self._type = enc_type self.returncode = None self.stdout = None self.stderr = None self.timeout = timeout + self.record_property = record_property def extract_enc_stats( self, @@ -533,6 +541,15 @@ class EncoderFrontend: self.returncode = result.returncode self.stderr = result.stderr.decode("ascii") self.stdout = result.stdout.decode("ascii") + + # Record core encoder clipping + for (prop, pattern) in [(ENC_CORE_OVL,ENC_CORE_OVL_PATTERN),(MAX_OVL,MAX_OVL_PATTERN),(MIN_OVL,MIN_OVL_PATTERN)]: + val = 0 + search_result = re.search(pattern, self.stdout) + if search_result: + val = search_result.group(1) + self.record_property( prop, val ) + if self.stdout: stdout_str = textwrap.indent(self.stdout, prefix="\t") log_dbg_msg(f"{self._type} encoder stdout:\n{stdout_str}") @@ -559,16 +576,20 @@ class EncoderFrontend: @pytest.fixture(scope="function") -def dut_encoder_frontend(dut_encoder_path, request) -> EncoderFrontend: +def dut_encoder_frontend(dut_encoder_path, request, record_property) -> Union[None, EncoderFrontend]: """ Return a :class:`conftest.EncoderFrontend` instance as DUT for the test session. """ - timeout = request.config.getoption("--testcase_timeout") - encoder = EncoderFrontend(dut_encoder_path, "DUT", timeout=timeout) + encoder = None + + if dut_encoder_path: + timeout = request.config.getoption("--testcase_timeout") + encoder = EncoderFrontend(dut_encoder_path, "DUT", record_property, timeout=timeout) yield encoder - # Fixture teardown - encoder._check_run() + if encoder is not None: + # Fixture teardown + encoder._check_run() @pytest.fixture(scope="session") @@ -602,7 +623,7 @@ def ref_encoder_path(request) -> str: @pytest.fixture(scope="function") -def ref_encoder_frontend(ref_encoder_path, request) -> Union[None, EncoderFrontend]: +def ref_encoder_frontend(ref_encoder_path, request, record_property) -> Union[None, EncoderFrontend]: """ Return a :class:`conftest.EncoderFrontend` instance as REF for the test session. """ @@ -610,7 +631,7 @@ def ref_encoder_frontend(ref_encoder_path, request) -> Union[None, EncoderFronte if ref_encoder_path: timeout = request.config.getoption("--testcase_timeout") - encoder = EncoderFrontend(ref_encoder_path, "REF", timeout=timeout) + encoder = EncoderFrontend(ref_encoder_path, "REF", record_property, timeout=timeout) yield encoder @@ -627,6 +648,9 @@ def dut_decoder_path(request) -> str: if request.config.option.dut_decoder_path: return request.config.option.dut_decoder_path + if request.config.option.update_ref == "1": + return None + here = Path(__file__).parent.resolve() system = platform.system() @@ -646,7 +670,7 @@ def dut_decoder_path(request) -> str: class DecoderFrontend: - def __init__(self, path, dec_type, timeout=None, fr=20) -> None: + def __init__(self, path, dec_type, record_property, timeout=None, fr=20) -> None: self._path = str(Path(path).absolute()) self._type = dec_type self.returncode = None @@ -654,6 +678,7 @@ class DecoderFrontend: self.stderr = None self.timeout = timeout self.fr = fr + self.record_property = record_property def run( self, @@ -821,20 +846,21 @@ class DecoderFrontend: @pytest.fixture(scope="function") -def dut_decoder_frontend(dut_decoder_path, request) -> DecoderFrontend: +def dut_decoder_frontend(dut_decoder_path, request, record_property) -> Union[None, DecoderFrontend]: """ Return a :class:`conftest.DecoderFrontend` instance as DUT for the test session. """ - decoder = DecoderFrontend( - dut_decoder_path, - "DUT", - timeout=request.config.getoption("--testcase_timeout"), - fr=request.config.option.dut_fr, - ) + decoder = None + + if dut_decoder_path: + timeout = request.config.getoption("--testcase_timeout") + decoder = DecoderFrontend(dut_decoder_path, "DUT", record_property, timeout=timeout, fr=request.config.option.dut_fr) + yield decoder - # Fixture teardown - decoder._check_run() + if decoder is not None: + # Fixture teardown + decoder._check_run() @pytest.fixture(scope="session") @@ -868,7 +894,7 @@ def ref_decoder_path(request) -> str: @pytest.fixture(scope="function") -def ref_decoder_frontend(ref_decoder_path, request) -> Union[None, DecoderFrontend]: +def ref_decoder_frontend(ref_decoder_path, request, record_property) -> Union[None, DecoderFrontend]: """ Return a :class:`conftest.DecoderFrontend` instance as DUT for the test session. """ @@ -876,7 +902,7 @@ def ref_decoder_frontend(ref_decoder_path, request) -> Union[None, DecoderFronte if ref_decoder_path: timeout = request.config.getoption("--testcase_timeout") - decoder = DecoderFrontend(ref_decoder_path, "REF", timeout=timeout) + decoder = DecoderFrontend(ref_decoder_path, "REF", record_property, timeout=timeout) yield decoder @@ -1059,7 +1085,6 @@ def parse_properties(text_to_parse: str, output_differs: bool, props_to_record: if max_enc_diff: max_enc_diff = float(max_enc_diff) props[MAX_ENC_DIFF] = max_enc_diff - return props diff --git a/tests/constants.py b/tests/constants.py index c2e84e50b7..36dabd0584 100644 --- a/tests/constants.py +++ b/tests/constants.py @@ -12,7 +12,9 @@ MAX_ABS_DIFF = "MAXIMUM ABS DIFF" SSNR = "SSNR" ODG = "ODG" MAX_ENC_DIFF = "MAXIMUM ENC DIFF" - +ENC_CORE_OVL = "ENC_CORE_OVL" +MAX_OVL = "MAX_OVL" +MIN_OVL = "MIN_OVL" # regex patterns for parsing the output from comparisons -> mainly for BASOP ci MLD_PATTERN = r"MLD: ([\d\.]*)" @@ -21,6 +23,9 @@ ODG_PATTERN_PQEVALAUDIO = r"Objective Difference Grade: (-*\d*\.\d*)" ODG_PATTERN = r"ODG: (-*\d*\.\d*)" SSNR_PATTERN = r"Channel \d* SSNR: (nan|[+-]*inf|[-*\d\.]*)" MAX_ENC_DIFF_PATTERN = r"MAXIMUM ENC DIFF: (\d+) \((\d+\.\d+)%\)" +ENC_CORE_OVL_PATTERN = r"Core input overload detected: (\d+)" +MAX_OVL_PATTERN = r"Max overload value: (\d+\.\d+)" +MIN_OVL_PATTERN = r"Min overload value: (-*\d+\.\d+)" # minimum difference between ref and dut encoder file lengths diff --git a/tests/test_26444.py b/tests/test_26444.py index fa6214c66a..08d0ff77c5 100644 --- a/tests/test_26444.py +++ b/tests/test_26444.py @@ -78,7 +78,6 @@ for s in scripts: @pytest.mark.parametrize("test_tag", list(test_dict.keys())) def test_evs_26444( - record_property, props_to_record, dut_encoder_frontend: EncoderFrontend, dut_decoder_frontend: DecoderFrontend, @@ -180,7 +179,7 @@ def test_evs_26444( props = parse_properties(reason, output_differs, props_to_record) for k, v in props.items(): - record_property(k, v) + ref_decoder_frontend.record_property(k, v) equal &= not output_differs else: -- GitLab From 1bfae78760f00c37f9ea4fae4ea1dfddfe91776a Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Tue, 19 Nov 2024 14:47:30 +0100 Subject: [PATCH 04/11] add separate .prm file for the basop encoder tests --- scripts/config/self_test_basop_encoder.prm | 1149 ++++++++++++++++++++ 1 file changed, 1149 insertions(+) create mode 100644 scripts/config/self_test_basop_encoder.prm diff --git a/scripts/config/self_test_basop_encoder.prm b/scripts/config/self_test_basop_encoder.prm new file mode 100644 index 0000000000..5d9a63a5ec --- /dev/null +++ b/scripts/config/self_test_basop_encoder.prm @@ -0,0 +1,1149 @@ +// Self-test parameter file +// +// - each test must have a tag (unique name) which must be entered as a comment (you can use // /* or rem comment) +// - the following line must be the encoder command line +// - the following line must be the decoder command line +// - if the name of the output file are exactly the same as +// the name of the test vector located in ./testv directory, these files will be compared for bit-exactness +// (the easiest way how to achieve this is to use the name of the test vector itself, as shown below) + +// stereo bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 48kHz out, DTX on, MONO out +//../IVAS_cod -dtx -stereo ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/stvST48n.wav bit +//../IVAS_dec MONO 48 bit testv/stvST48n.wav_stereo_sw_48-48_DTX_MONO.tst + +// stereo bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 48kHz out, DTX on, stereo out +//../IVAS_cod -dtx -stereo ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/stvST48c.wav bit +//../IVAS_dec stereo48 bit testv/stvST48c.wav_stereo_sw_48-48_DTX_stereo.tst + +// stereo bitrate switching from 13.2 kbps to 128 kbps, 32kHz in, 32kHz out +../IVAS_cod -stereo ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 32 testv/stvST32c.wav bit +../IVAS_dec STEREO 32 bit testv/stvST32c.wav_stereo_sw_32-32.tst + +// stereo at 96 kbps, 32kHz in, 32kHz out +../IVAS_cod -stereo 96000 32 testv/stvST32c.wav bit +../IVAS_dec STEREO 32 bit testv/stvST32c.wav_stereo_96000_32-32.tst + +// stereo at 96 kbps, 16kHz in, 16kHz out +../IVAS_cod -stereo 96000 16 testv/stvST16c.wav bit +../IVAS_dec STEREO 16 bit testv/stvST16c.wav_stereo_96000_16-16.tst + +// stereo at 64 kbps, 32kHz in, 32kHz out, bandwidth switching +../IVAS_cod -max_band testv/ivas_bws_20fr_start_FB.txt -stereo 64000 32 testv/stvST32c.wav bit +../IVAS_dec STEREO 32 bit testv/stvST32c.wav_stereo_64000_32-32.tst + +// stereo at 64 kbps, 16kHz in, 16kHz out +../IVAS_cod -stereo 64000 16 testv/stvST16c.wav bit +../IVAS_dec STEREO 16 bit testv/stvST16c.wav_stereo_64000_16-16.tst + +// stereo at 48 kbps, 48 kHz in, 48 kHz out, DTX on, bandwidth switching +../IVAS_cod -max_band testv/ivas_bws_20fr_start_SWB.txt -stereo -dtx 48000 48 testv/stvST48n.wav bit +../IVAS_dec STEREO 48 bit testv/stvST48n.wav_stereo_48000_48-48_DTX.tst + +// stereo at 48 kbps, 32kHz in, 32kHz out +../IVAS_cod -stereo 48000 32 testv/stvST32c.wav bit +../IVAS_dec STEREO 32 bit testv/stvST32c.wav_stereo_48000_32-32.tst + +// stereo at 48 kbps, 32 kHz in, 32 kHz out, DTX on +../IVAS_cod -stereo -dtx 48000 32 testv/stvST32n.wav bit +../IVAS_dec STEREO 32 bit testv/stvST32n.wav_stereo_48000_32-32_DTX.tst + +// stereo at 48 kbps, 16kHz in, 16kHz out +../IVAS_cod -stereo 48000 16 testv/stvST16c.wav bit +../IVAS_dec STEREO 16 bit testv/stvST16c.wav_stereo_48000_16-16.tst + +// stereo at 48 kbps, 16 kHz in, 16 kHz out, DTX on +../IVAS_cod -stereo -dtx 48000 16 testv/stvST16n.wav bit +../IVAS_dec STEREO 16 bit testv/stvST16n.wav_stereo_48000_16-16_DTX.tst + +// stereo at 32 kbps, 48kHz in, 48kHz out, bandwidth switching +../IVAS_cod -stereo -max_band testv/bwidth_cntl.txt 32000 48 testv/stvST48c.wav bit +../IVAS_dec STEREO 48 bit testv/stvST48c.wav_stereo_32000_48-48_bandwidth_sw.tst + +// stereo at 32 kbps, 48kHz in, 48kHz out, DTX on, bandwidth switching +../IVAS_cod -max_band testv/ivas_bws_20fr_start_WB.txt -stereo -dtx 32000 48 testv/stvST48n.wav bit +../IVAS_dec STEREO 48 bit testv/stvST48n.wav_stereo_32000_48-48_DTX.tst + +// stereo at 32 kbps, 32kHz in, 48kHz out, MONO out +../IVAS_cod -stereo 32000 32 testv/stvST32c.wav bit +../IVAS_dec MONO 48 bit testv/stvST32c.wav_stereo_32000_32-48_MONO.tst + +// stereo at 32 kbps, 32kHz in, 32kHz out, DTX on, MONO out +../IVAS_cod -stereo -dtx 32000 32 testv/stvST32n.wav bit +../IVAS_dec MONO 32 bit testv/stvST32n.wav_stereo_32000_32-32_DTX_MONO.tst + +// stereo at 32 kbps, 16kHz in, 16kHz out +../IVAS_cod -stereo -dtx 32000 16 testv/stvST16n.wav bit +../IVAS_dec STEREO 16 bit testv/stvST16n.wav_stereo_32000_16-16_DTX.tst + +// stereo at 32 kbps, 16kHz in, 16kHz out +../IVAS_cod -stereo 32000 16 testv/stvST16c.wav bit +../IVAS_dec STEREO 16 bit testv/stvST16c.wav_stereo_32000_16-16.tst + +// stereo at 24.4 kbps, 48kHz in, 48kHz out, DTX on +../IVAS_cod -stereo -dtx 24400 48 testv/stvST48n.wav bit +../IVAS_dec STEREO 48 bit testv/stvST48n.wav_24400_48_48_DTX.txt + +// stereo at 24.4 kbps, 32kHz in, 32kHz out, DTX on +../IVAS_cod -stereo -dtx 24400 32 testv/stvST32n.wav bit +../IVAS_dec STEREO 32 bit testv/stvST32n.wav_stereo_24400_32-32_DTX.tst + +// stereo at 24.4 kbps, 32kHz in, 32kHz out +../IVAS_cod -stereo 24400 32 testv/stvST32c.wav bit +../IVAS_dec STEREO 32 bit testv/stvST32c.wav_stereo_24400_32-32.tst + +// stereo at 24.4 kbps, 16kHz in, 16kHz out, DTX on, MONO out +../IVAS_cod -stereo -dtx 24400 16 testv/stvST16n.wav bit +../IVAS_dec MONO 16 bit testv/stvST16n.wav_stereo_24400_16-16_DTX_MONO.tst + +// stereo at 24.4 kbps, 16kHz in, 16kHz out +../IVAS_cod -stereo 24400 16 testv/stvST16c.wav bit +../IVAS_dec STEREO 16 bit testv/stvST16c.wav_stereo_24400_16-16.tst + +// stereo at 16.4 kbps, 32kHz in, 32kHz out +../IVAS_cod -stereo 16400 32 testv/stvST32c.wav bit +../IVAS_dec STEREO 32 bit testv/stvST32c.wav_stereo_16400_32-32.tst + +// stereo at 16.4 kbps, 32kHz in, 16kHz out, DTX on +../IVAS_cod -stereo -dtx 16400 32 testv/stvST32n.wav bit +../IVAS_dec STEREO 16 bit testv/stvST32n.wav_stereo_16400_32-16_DTX.tst + +// stereo at 16.4 kbps, 16kHz in, 16kHz out, DTX on +../IVAS_cod -stereo -dtx 16400 16 testv/stvST16n.wav bit +../IVAS_dec STEREO 16 bit testv/stvST16n.wav_stereo_16400_16-16_DTX.tst + +// stereo at 16.4 kbps, 16kHz in, 16kHz out +../IVAS_cod -stereo 16400 16 testv/stvST16c.wav bit +../IVAS_dec STEREO 16 bit testv/stvST16c.wav_stereo_16400_16-16.tst + +// stereo at 13.2 kbps, 48kHz in, 48kHz out +../IVAS_cod -stereo 13200 48 testv/stvST48c.wav bit +../IVAS_dec STEREO 48 bit testv/stvST48c.wav_stereo_13200_48-48.tst + +// stereo at 13.2 kbps, 32kHz in, 32kHz out, DTX on +../IVAS_cod -stereo -dtx 13200 32 testv/stvST32n.wav bit +../IVAS_dec STEREO 32 bit testv/stvST32n.wav_stereo_13200_32-32_DTX.tst + +// stereo at 13.2 kbps, 32kHz in, 32kHz out +../IVAS_cod -stereo 13200 32 testv/stvST32c.wav bit +../IVAS_dec STEREO 32 bit testv/stvST32c.wav_stereo_13200_32-32.tst + +// stereo at 13.2 kbps, 16kHz in, 16kHz out, DTX on +../IVAS_cod -stereo -dtx 13200 16 testv/stvST16n.wav bit +../IVAS_dec STEREO 16 bit testv/stvST16n.wav_stereo_13200_16-16_DTX.tst + +// stereo at 13.2 kbps, 16kHz in, 16kHz out +../IVAS_cod -stereo 13200 16 testv/stvST16c.wav bit +../IVAS_dec STEREO 16 bit testv/stvST16c.wav_stereo_13200_16-16.tst + +// stereo at 128 kbps, 48kHz in, 48kHz out, MONO out +../IVAS_cod -stereo 128000 48 testv/stvST48c.wav bit +../IVAS_dec MONO 48 bit testv/stvST48c.wav_stereo_128000_48-48_MONO.tst + +// stereo at 128 kbps, 32kHz in, 32kHz out +../IVAS_cod -stereo 128000 32 testv/stvST32c.wav bit +../IVAS_dec STEREO 32 bit testv/stvST32c.wav_stereo_128000_32-32.tst + +// stereo at 128 kbps, 16kHz in, 16kHz out +../IVAS_cod -stereo 128000 16 testv/stvST16c.wav bit +../IVAS_dec STEREO 16 bit testv/stvST16c.wav_stereo_128000_16-16.tst + +// Stereo downmix to bit-exact EVS at 24400 kbps, 48kHz in, 48kHz out +../IVAS_cod -stereo_dmx_evs 24400 48 testv/stvST48c.wav bit +../IVAS_dec 48 bit testv/stvST48c.wav_StereoDmxEVS_24400_48-48.tst + +// Stereo downmix to bit-exact EVS at 13200 kbps, 32kHz in, 32kHz out +../IVAS_cod -stereo_dmx_evs 13200 32 testv/stvST32c.wav bit +../IVAS_dec 32 bit testv/stvST32c.wav_StereoDmxEVS_13200_32-32.tst + +// SBA planar FOA bitrate switching from 13.2 kbps to 512 kbps, 32kHz in, 32kHz out, FOA out +../IVAS_cod -sba -1 ../scripts/switchPaths/sw_13k2_512k.bin 32 testv/stvFOA32c.wav bit +../IVAS_dec FOA 32 bit testv/stvFOA32c.wav_sw_32-32_DTX_FOA.tst + +// SBA planar 3OA bitrate switching from 24.4 kbps to 256 kbps, 48kHz in, 48kHz out, 7_1_4 out +../IVAS_cod -sba -3 ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/stv3OA48c.wav bit +../IVAS_dec 7_1_4 48 bit testv/stv3OA48c.wav_sw_48-48_7_1_4.tst + +// SBA planar 3OA bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, HOA3out +../IVAS_cod -sba -3 ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv3OA48c.wav bit +../IVAS_dec HOA348 bit testv/stv3OA48c.wav_sw_48-48_DTX_HOA3.tst + +// SBA planar 2OA bitrate switching from 13.2 kbps to 128 kbps, 32kHz in, 32kHz out, DTX on, HOA2out +../IVAS_cod -dtx -sba -2 ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 32 testv/stv2OA32c.wav bit +../IVAS_dec HOA2 32 bit testv/stv2OA32c.wav_sw_32-32_DTX_HOA2.tst + +// SBA at 96 kbps, 48kHz in, 48kHz out, FOA out +../IVAS_cod -sba 1 96000 48 testv/stvFOA48c.wav bit +../IVAS_dec FOA 48 bit testv/stvFOA48c.wav_SBA_96000_48-48_FOA.tst + +// SBA at 96 kbps, 32kHz in, 32kHz out, STEREO out +../IVAS_cod -sba 1 96000 32 testv/stvFOA32c.wav bit +../IVAS_dec STEREO 32 bit testv/stvFOA32c.wav_SBA_96000_32-32_STEREO.tst + +// SBA at 80 kbps, 32kHz in, 32kHz out, HOA3 out +../IVAS_cod -sba 3 80000 32 testv/stv3OA32c.wav bit +../IVAS_dec HOA3 32 bit testv/stv3OA32c.wav_SBA_80000_32-32_HOA3.tst + +// SBA at 64 kpbs, 48kHz in, 48kHz out, BINAURAL out, DTX +../IVAS_cod -dtx -sba 1 64000 48 testv/stvFOA48c.wav bit +../IVAS_dec BINAURAL 48 bit testv/stvFOA48c.wav_SBA_64000_48-48_DTX_BINAURAL.tst + +// SBA at 64 kbps, 48kHz in, 48kHz out, 5_1_4 out +../IVAS_cod -sba 1 64000 48 testv/stvFOA48c.wav bit +../IVAS_dec 5_1_4 48 bit testv/stvFOA48c.wav_SBA_64000_48-48_5_1_4.tst + +// SBA at 64 kbps, 32kHz in, 32kHz out, FOA out, DTX +../IVAS_cod -dtx -sba 1 64000 32 testv/stvFOA32c.wav bit +../IVAS_dec FOA 32 bit testv/stvFOA32c.wav_SBA_64000_32-32_DTX_FOA.tst + +// SBA at 48 kbps, 48kHz in, 48kHz out, DTX on, 5_1 out +../IVAS_cod -sba 3 -dtx 48000 48 testv/stv3OA48c.wav bit +../IVAS_dec 5_1 48 bit testv/stv3OA48c.wav_SBA_48000_48-48_DTX_5_1.tst + +// SBA at 48 kbps, 48kHz in, 48kHz out, 5_1_2 out +../IVAS_cod -sba 3 48000 48 testv/stv3OA48c.wav bit +../IVAS_dec 5_1_2 48 bit testv/stv3OA48c.wav_SBA_48000_48-48_5_1_2.tst + +// SBA at 48 kbps, 32kHz in, 32kHz out, MONO out +../IVAS_cod -sba 3 48000 32 testv/stv3OA32c.wav bit +../IVAS_dec MONO 32 bit testv/stv3OA32c.wav_SBA_48000_32-32_MONO.tst + +// SBA at 48 kbps, 32kHz in, 32kHz out, DTX on, BINAURAL out +../IVAS_cod -sba 3 -dtx 48000 32 testv/stv3OA32c.wav bit +../IVAS_dec BINAURAL 32 bit testv/stv3OA32c.wav_SBA_48000_32-32_DTX_Binaural.tst + +// SBA at 32 kbps, 48kHz in, 48kHz out, MONO out, DTX, bandwidth switching +../IVAS_cod -max_band testv/ivas_bws_20fr_start_FB.txt -dtx -sba 1 32000 48 testv/stvFOA48c.wav bit +../IVAS_dec MONO 48 bit testv/stvFOA48c.wav_SBA_32000_48-48_DTX_MONO.tst + +// SBA at 32 kbps, 32kHz in, 32kHz out, FOA out +../IVAS_cod -sba 1 32000 32 testv/stvFOA32c.wav bit +../IVAS_dec FOA 32 bit testv/stvFOA32c.wav_SBA_32000_32-32_FOA.tst + +// SBA at 256 kbps, 48kHz in, 48kHz out, 7_1 out +../IVAS_cod -sba 1 256000 48 testv/stvFOA48c.wav bit +../IVAS_dec 7_1 48 bit testv/stvFOA48c.wav_SBA_256000_48-48_7_1.tst + +// SBA at 256 kbps, 32kHz in, 32kHz out, FOA out +../IVAS_cod -sba 1 256000 32 testv/stvFOA32c.wav bit +../IVAS_dec FOA 32 bit testv/stvFOA32c.wav_SBA_256000_32-32_FOA.tst + +// SBA at 24.4 kbps, 32kHz in, 32kHz out, STEREO out +../IVAS_cod -sba 3 24400 32 testv/stv3OA32c.wav bit +../IVAS_dec STEREO 32 bit testv/stv3OA32c.wav_SBA_24400_32-32_stereo.tst + +// SBA at 24.4 kbps, 32kHz in, 32kHz out, DTX on, BINAURAL out +../IVAS_cod -sba 3 -dtx 24400 32 testv/stv3OA32c.wav bit +../IVAS_dec BINAURAL 32 bit testv/stv3OA32c.wav_SBA_24400_32-32_DTX_Binaural.tst + +// SBA at 192 kbps, 48kHz in, 48kHz out, HOA2 out +../IVAS_cod -sba 3 192000 48 testv/stv3OA48c.wav bit +../IVAS_dec HOA2 48 bit testv/stv3OA48c.wav_SBA_192000_48-48_HOA2.tst + +// SBA at 160 kbps, 48kHz in, 48kHz out, BINAURAL_ROOM out +../IVAS_cod -sba 1 160000 48 testv/stvFOA48c.wav bit +../IVAS_dec BINAURAL_ROOM_IR 48 bit testv/stvFOA48c.wav_SBA_160000_48-48_BINAURAL_ROOM.tst + +// SBA at 160 kbps, 32kHz in, 32kHz out, FOA out +../IVAS_cod -sba 1 160000 32 testv/stvFOA32c.wav bit +../IVAS_dec FOA 32 bit testv/stvFOA32c.wav_SBA_160000_32-32_FOA.tst + +// SBA at 16.4 kbps, 32kHz in, 32kHz out, 7_1_4 out +../IVAS_cod -sba 3 16400 32 testv/stv3OA32c.wav bit +../IVAS_dec 7_1_4 32 bit testv/stv3OA32c.wav_SBA_16400_32-32_7_1_4.tst + +// SBA at 13.2 kbps, 48kHz in, 48kHz out, BINAURAL out +../IVAS_cod -sba 1 13200 48 testv/stvFOA48c.wav bit +../IVAS_dec BINAURAL 48 netsimoutput testv/stvFOA32c.wav_SBA_13200_48-48_BINAURAL.tst + +// SBA at 13.2 kbps, 32kHz in, 32kHz out, HOA3 out, bandwidth switching +../IVAS_cod -max_band testv/ivas_bws_20fr_start_WB.txt -sba 3 13200 32 testv/stv3OA32c.wav bit +../IVAS_dec HOA3 32 bit testv/stv3OA32c.wav_SBA_13200_32-32_HOA3.tst + +// SBA at 128 kbps, 32kHz in, 32kHz out, BINAURAL ROOM IR out, HR +../IVAS_cod -sba 3 128000 32 testv/stv3OA32c.wav bit +../IVAS_dec -t testv/headrot_case00_3000_q.csv BINAURAL_ROOM_IR 32 bit testv/stv3OA32c.wav_SBA_128000_32-32_Binaural_room_Headrot.tst + +// SBA FOA bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, FOA out +../IVAS_cod -sba 1 -max_band fb ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stvFOA48c.wav bit +../IVAS_dec FOA 48 bit testv/stvFOA48c.wav_sw_48-48_FOA.tst + +// SBA FOA bitrate switching from 13.2 kbps to 192 kbps, 48kHz in, 48kHz out, BINAURAL out +../IVAS_cod -sba 1 ../scripts/switchPaths/sw_13k2_192k_50fr.bin 48 testv/stvFOA48c.wav bit +../IVAS_dec BINAURAL 48 bit testv/stvFOA48c.wav_sw_48-48_BINAURAL.tst + +// SBA FOA bitrate switching from 13.2 kbps to 192 kbps, 32kHz in, 32kHz out, DTX on, FOAout +../IVAS_cod -dtx -sba 1 ../scripts/switchPaths/sw_13k2_192k_50fr.bin 32 testv/stvFOA32c.wav bit +../IVAS_dec FOA 32 bit testv/stvFOA32c.wav_sw_32-32_DTX_FOA.tst + +// SBA FOA bitrate switching from 13.2 kbps to 192 kbps, 32kHz in, 32kHz out, DTX on, BINAURAL out +../IVAS_cod -dtx -sba 1 ../scripts/switchPaths/sw_13k2_192k_50fr.bin 32 testv/stvFOA32c_cut_.004.wav bit +../IVAS_dec BINAURAL 32 bit testv/stvFOA32c.wav_sw_32-32_DTX_BINAURAL.tst + +// SBA 3OA bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, STEREO out +../IVAS_cod -sba 3 ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv3OA48c.wav bit +../IVAS_dec STEREO 48 bit testv/stv3OA48c.wav_sw_48-48_STEREO.tst + +// SBA 3OA bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, MONO out +../IVAS_cod -sba 3 ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv3OA48c.wav bit +../IVAS_dec MONO 48 bit testv/stv3OA48c.wav_sw_48-48_MONO.tst + +// SBA 3OA bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, HOA3 out +../IVAS_cod -sba 3 ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv3OA48c.wav bit +../IVAS_dec HOA3 48 bit testv/stv3OA48c.wav_sw_48-48_HOA3.tst + +// SBA 3OA bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, FOA out +../IVAS_cod -sba 3 ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv3OA48c.wav bit +../IVAS_dec FOA 48 bit testv/stv3OA48c.wav_sw_48-48_FOA.tst + +// SBA 3OA bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, BINAURAL out (Model from file) +../IVAS_cod -sba 3 ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv3OA48c.wav bit +../IVAS_dec -hrtf ../scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_48kHz.bin BINAURAL 48 bit testv/stv3OA48c.wav_sw_48-48_BINAURAL.tst + +// SBA 3OA bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 48kHz out, DTX on, HOA3out +../IVAS_cod -dtx -sba 3 ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/stv3OA48c.wav bit +../IVAS_dec HOA3 48 bit testv/stv3OA48c.wav_sw_48-48_DTX_HOA3.tst + +// SBA 3OA bitrate switching from 13.2 kbps to 128 kbps, 32kHz in, 32kHz out, DTX on, HOA3 out +../IVAS_cod -dtx -sba 3 ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 32 testv/stv3OA32c_cut_.004.wav bit +../IVAS_dec HOA3 32 bit testv/stv3OA32c.wav_sw_32-32_DTX_HOA3.tst + +// SBA 3OA at 96 kbps, 48kHz in, 48kHz out, BINAURAL_ROOM_REVERB out default configuration +../IVAS_cod -sba 3 512000 48 testv/stv3OA48c.wav bit +../IVAS_dec BINAURAL_ROOM_REVERB 48 bit testv/stv3OA48c.wav_BINAURAL_ROOM_REVERB_96000_48-48.tst + +// SBA 3OA at 512 kbps, 48kHz in, 48kHz out, BINAURAL out, bandwidth switching +../IVAS_cod -max_band testv/ivas_bws_20fr_start_SWB.txt -sba 3 512000 48 testv/stv3OA48c.wav bit +../IVAS_dec BINAURAL 48 bit testv/stv3OA48c.wav_SBA_512000_48-48_binaural.tst + +// SBA 3OA at 128 kbps, 48kHz in 48kHz out, BINAURAL_ROOM_REVERB rendconf sel acoustic env +../IVAS_cod -sba 3 128000 48 testv/stv3OA48c.wav bit +../IVAS_dec -render_config testv/rend_config_combined.cfg -aeid 1 BINAURAL_ROOM_REVERB 48 bit testv/stv3OA48c.pcm_SBA_128000_48-48_BinauralRoomReverb_Config_renderer_combined_AEID_1.tst + +// SBA 3OA 4ISM at 96 kbps, 48kHz in, 48kHz out, BINAURAL_ROOM_REVERB out custom configuration +../IVAS_cod -sba 3 96000 48 testv/stv3OA48c.wav bit +../IVAS_dec -render_config testv/rend_config_recreation.cfg BINAURAL_ROOM_REVERB 48 bit testv/stv3OA48c.wav_BINAURAL_ROOM_REVERB_96000_48-48_custom_configuration.tst + +// SBA 2OA bitrate switching from 16.4 kbps to 512 kbps, 48kHz in, 48kHz out, FOA out +../IVAS_cod -sba 2 ../scripts/switchPaths/sw_16k4_512k_50fr.bin 48 testv/stv2OA48c.wav bit +../IVAS_dec FOA 48 bit testv/stv2OA48c.wav_sw_48-48_FOA.tst + +// SBA 2OA bitrate switching from 13.2 kbps to 512 kbps, 32kHz in, 32kHz out, HOA2 out +../IVAS_cod -sba 2 ../scripts/switchPaths/sw_13k2_512k.bin 32 testv/stv2OA32c.wav bit +../IVAS_dec HOA2 32 bit testv/stv2OA32c.wav_sw_32-32_DTX_HOA2.tst + +// SBA 2OA at 384 kbps, 32kHz in, 32kHz out, STEREO out, bandwidth switching +../IVAS_cod -max_band testv/ivas_bws_20fr_start_WB.txt -sba 2 384000 32 testv/stv2OA32c.wav bit +../IVAS_dec STEREO 32 bit testv/stv2OA32c.wav_SBA_384000_32-32_stereo.tst + +// Planar SBA at 48 kbps, 32kHz in, 32kHz out, BINAURAL_ROOM_REVERB out, Config renderer, HR +../IVAS_cod -sba -2 48000 32 testv/stv2OA32c.wav bit +../IVAS_dec -t testv/headrot.csv -render_config testv/rend_config_renderer.cfg BINAURAL_ROOM_REVERB 32 bit testv/stv2OA32c.pcm_planarSBA_48000_32-32_BinauralRoomReverb_Config_renderer_Headrot.tst + +// Planar SBA at 128 kbps, 48kHZ in, 32kHz out, BINAURAL_ROOM_REVERB out (Model from file), Config renderer, HR +../IVAS_cod -sba -1 128000 48 testv/stvFOA48c.wav bit +../IVAS_dec -hrtf ../scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_32kHz.bin -t testv/headrot_case00_3000_q.csv -render_config testv/rend_config_renderer.cfg BINAURAL_ROOM_REVERB 32 bit testv/stvFOA48c.pcm_planarSBA_128000_48-32_BinauralRoomReverb_Config_renderer_Headrot_BinauralFile.tst + +// OSBA planar FOA 2ISM at 512 kbps, 48 kHz in, 48 kHz out, BINAURAL out +../IVAS_cod -ism_sba 2 -1 testv/stvISM1.csv testv/stvISM2.csv 512000 48 testv/stvOSBA_2ISM_FOA48c.wav bit +../IVAS_dec BINAURAL 48 bit testv/stvOSBA_2ISM_pFOA48c.wav_BINAURAL_512000_48-48.tst + +// OSBA planar FOA 1ISM at 256 kbps, 48 kHz in, 48 kHz out, BINAURAL out +../IVAS_cod -ism_sba 1 -1 testv/stvISM1.csv 256000 48 testv/stvOSBA_1ISM_FOA48c.wav bit +../IVAS_dec BINAURAL 48 bit testv/stvOSBA_1ISM_pFOA48c.wav_BINAURAL_256000_48-48.tst + +// OSBA planar 3OA 4ISM at 512 kbps, 48 kHz in, 48 kHz out, BINAURAL ROOM IR out +../IVAS_cod -ism_sba 4 -3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 512000 48 testv/stvOSBA_4ISM_3OA48c.wav bit +../IVAS_dec BINAURAL_ROOM_IR 48 bit testv/stvOSBA_4ISM_p3OA48c.wav_BINAURAL_ROOM_IR_512000_48-48.tst + +// OSBA planar 2OA 4ISM at 512 kbps, 48 kHz in, 48 kHz out, BINAURAL ROOM REVERB (Model from file) out +../IVAS_cod -ism_sba 4 -2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 512000 48 testv/stvOSBA_4ISM_2OA48c.wav bit +../IVAS_dec -hrtf ../scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_48kHz.bin BINAURAL_ROOM_REVERB 48 bit testv/stvOSBA_4ISM_p3OA48c.wav_BINAURAL_ROOM_REVERB_512000_48-48.tst + +// OSBA FOA 4ISM at 512 kbps, 48kHz in, 48kHz out, BINAURAL (Model from file) out +../IVAS_cod -ism_sba 4 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 512000 48 testv/stvOSBA_4ISM_FOA48c.wav bit +../IVAS_dec -hrtf ../scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_48kHz.bin BINAURAL 48 bit testv/stvOSBA_4ISM_FOA48c.wav_BINAURAL_512000_48-48.tst + +// OSBA FOA 4ISM at 512 kbps, 32kHz in, 48kHz out, STEREO out +../IVAS_cod -ism_sba 4 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 512000 32 testv/stvOSBA_4ISM_FOA32c.wav bit +../IVAS_dec STEREO 48 bit testv/stvOSBA_4ISM_FOA32c.wav_STEREO_512000_32-48.tst + +// OSBA FOA 4ISM at 384 kbps, 32kHz in, 32kHz out, BINAURAL ROOM IR (Model from file) out +../IVAS_cod -ism_sba 4 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 384000 32 testv/stvOSBA_4ISM_FOA32c.wav bit +../IVAS_dec -hrtf ../scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_32kHz.bin BINAURAL_ROOM_IR 32 bit testv/stvOSBA_4ISM_FOA32c.wav_BINAURAL_384000_32-32.tst + +// OSBA FOA 4ISM at 256 kbps, 48kHz in, 48kHz out, FOA out +../IVAS_cod -ism_sba 4 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 256000 48 testv/stvOSBA_4ISM_FOA48c.wav bit +../IVAS_dec FOA 48 bit testv/stvOSBA_4ISM_FOA48c.wav_FOA_256000_48-48.tst + +// OSBA FOA 3ISM at 128 kbps, 48kHz in, 48kHz out, 7_1_4 out +../IVAS_cod -ism_sba 3 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 128000 48 testv/stvOSBA_3ISM_FOA48c.wav bit +../IVAS_dec 7_1_4 48 bit testv/stvOSBA_3ISM_FOA48c.wav_7_1_4_128000_48-48.tst + +// OSBA FOA 2ISM at 64 kbps, 48kHz in, 48kHz out, HOA3 out, bandwidth switching +../IVAS_cod -max_band testv/ivas_bws_20fr_start_WB.txt -ism_sba 2 1 testv/stvISM1.csv testv/stvISM2.csv 64000 48 testv/stvOSBA_2ISM_FOA48c.wav bit +../IVAS_dec HOA3 48 bit testv/stvOSBA_2ISM_FOA48c.wav_HOA3_64000_48-48.tst + +// OSBA FOA 1ISM at 48 kbps, 16kHz in, 16kHz out, BINAURAL_ROOM_REVERB (Model from file) out +../IVAS_cod -ism_sba 1 1 testv/stvISM1.csv 32000 16 testv/stvOSBA_1ISM_FOA16c.wav bit +../IVAS_dec -hrtf ../scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_16kHz.bin BINAURAL_ROOM_REVERB 16 bit testv/stvOSBA_1ISM_FOA16c.wav_BINAURAL_ROOM_REVERB_32000_16-16.tst + +// OSBA FOA 1ISM at 32 kbps, 48kHz in, 48kHz out, BINAURAL out +../IVAS_cod -ism_sba 1 1 testv/stvISM1.csv 32000 48 testv/stvOSBA_1ISM_FOA48c.wav bit +../IVAS_dec BINAURAL 48 bit testv/stvOSBA_1ISM_FOA48c.wav_BINAURAL_32000_48-48.tst + +// OSBA 3OA 4ISM bitrate switching 16.4 to 512, 48kHz in, 48kHz out, BINAURAL out, headtracking +../IVAS_cod -ism_sba 4 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv ../scripts/switchPaths/sw_16k4_512k_50fr.bin 48 testv/stvOSBA_4ISM_3OA48c.wav bit +../IVAS_dec -t testv/headrot.csv BINAURAL 48 bit testv/stvOSBA_4ISM_3OA48c.wav_BINAURAL_sw_16k4_512k_48-48.tst + +// OSBA 3OA 4ISM bitrate switching 13.2 to 512, 48kHz in, 48kHz out, BINAURAL out +../IVAS_cod -ism_sba 4 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stvOSBA_4ISM_3OA48c.wav bit +../IVAS_dec BINAURAL 48 bit testv/stvOSBA_4ISM_3OA48c.wav_BINAURAL_sw_13k2_512k_48-48.tst + +// OSBA 3OA 4ISM bitrate switching 13.2 to 512, 32kHz in, 48kHz out, EXT out +../IVAS_cod -ism_sba 4 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv ../scripts/switchPaths/sw_13k2_512k.bin 32 testv/stvOSBA_4ISM_3OA32c.wav bit +../IVAS_dec EXT 48 bit testv/stvOSBA_4ISM_3OA32c.wav_EXT_sw_13k2_512k_32-48.tst + +// OSBA 3OA 4ISM at 64 kbps, 48kHz in, 48kHz out, BINAURAL_ROOM_REVERB out +../IVAS_cod -ism_sba 4 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 64000 48 testv/stvOSBA_4ISM_3OA48c.wav bit +../IVAS_dec -render_config testv/rend_config_recreation.cfg BINAURAL_ROOM_REVERB 48 bit testv/stvOSBA_4ISM_3OA48c.wav_BINAURAL_ROOM_REVERB_64000_48-48_custom_configuration.tst + +// OSBA 3OA 4ISM at 512 kbps, 48kHz in, 48kHz out, BINAURAL_ROOM_REVERB out +../IVAS_cod -ism_sba 4 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 512000 48 testv/stvOSBA_4ISM_3OA48c.wav bit +../IVAS_dec -render_config testv/rend_config_hospital_patientroom.cfg BINAURAL_ROOM_REVERB 48 bit testv/stvOSBA_4ISM_3OA48c.wav_BINAURAL_ROOM_REVERB_512000_48-48_custom_configuration.tst + + +// OSBA 3OA 4ISM at 48 kbps, 48kHz in, 48kHz out, BINAURAL_ROOM_REVERB out +../IVAS_cod -ism_sba 4 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 48000 48 testv/stvOSBA_4ISM_3OA48c.wav bit +../IVAS_dec -render_config testv/rend_config_recreation.cfg BINAURAL_ROOM_REVERB 48 bit testv/stvOSBA_4ISM_3OA48c.wav_BINAURAL_ROOM_REVERB_48000_48-48_custom_configuration.tst + +// OSBA 3OA 4ISM at 16.4 kbps, 48kHz in, 48kHz out, 5_1 out +../IVAS_cod -ism_sba 4 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 16400 48 testv/stvOSBA_4ISM_3OA48c.wav bit +../IVAS_dec 5_1 48 bit testv/stvOSBA_4ISM_3OA48c.wav_5_1_16400_48-48.tst + +// OSBA 3OA 3ISM at 160 kbps, 16kHz in, 48kHz out, BINAURAL ROOM IR out +../IVAS_cod -ism_sba 3 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 160000 16 testv/stvOSBA_3ISM_3OA16c.wav bit +../IVAS_dec BINAURAL_ROOM_IR 48 bit testv/stvOSBA_3ISM_3OA416c.wav_BINAURAL_ROOM_IR_160000_16-48.tst + +// OSBA 3OA 3ISM at 128 kbps, 48kHz in, 48kHz out, BINAURAL out +../IVAS_cod -ism_sba 3 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 128000 48 testv/stvOSBA_3ISM_3OA48c.wav bit +../IVAS_dec BINAURAL 48 bit testv/stvOSBA_3ISM_3OA48c.wav_BINAURAL_128000_48-48.tst + +// OSBA 3OA 2ISM at 256 kbps, 48kHz in, 48kHz out, 7_1 out +../IVAS_cod -ism_sba 2 3 testv/stvISM1.csv testv/stvISM2.csv 256000 48 testv/stvOSBA_2ISM_3OA48c.wav bit +../IVAS_dec 7_1 48 bit testv/stvOSBA_2ISM_3OA48c.wav_7_1_256000_48-48.tst + +// OSBA 3OA 2ISM at 256 kbps, 32kHz in, 32kHz out, HOA3 out +../IVAS_cod -ism_sba 2 3 testv/stvISM1.csv testv/stvISM2.csv 256000 32 testv/stvOSBA_2ISM_3OA32c.wav bit +../IVAS_dec HOA3 32 bit testv/stvOSBA_2ISM_3OA32c.wav_HOA3_256000_32-32.tst + +// OSBA 3OA 1ISM at 512 kbps, 48kHz in, 48kHz out, EXT out +../IVAS_cod -ism_sba 1 3 testv/stvISM1.csv 512000 48 testv/stvOSBA_1ISM_3OA48c.wav bit +../IVAS_dec EXT 48 bit testv/stvOSBA_1ISM_3OA48c.wav_EXT_512000_48-48.tst + +// OSBA 3ISM 3OA at bitrate switching 13.2 to 512 kbps, 48kHz in, 32kHz out, BINAURAL ROOM REVERB out +../IVAS_cod -ism_sba 3 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stvOSBA_3ISM_3OA48c.wav bit +../IVAS_dec BINAURAL_ROOM_REVERB 32 bit testv/stvOSBA_3ISM_3OA48c.wav_BINAURAL_ROOM_REVERB_sw_48-32.tst + +// OSBA 3ISM 2OA at bitrate switching 13.2 to 512 kbps, 48kHz in, 32kHz out, STEREO out +../IVAS_cod -ism_sba 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stvOSBA_3ISM_2OA48c.wav bit +../IVAS_dec STEREO 32 bit testv/stvOSBA_3ISM_2OA48c.wav_STEREO_sw_48-32.tst + +// OSBA 2OA 4ISM at 384 kbps, 48kHz in, 48kHz out, BINAURAL out +../IVAS_cod -ism_sba 4 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 384000 48 testv/stvOSBA_4ISM_2OA48c.wav bit +../IVAS_dec BINAURAL 48 bit testv/stvOSBA_4ISM_2OA48c.wav_BINAURAL_384000_48-48.tst + +// OSBA 2OA 3ISM at 96 kbps, 48kHz in, 48kHz out, STEREO out +../IVAS_cod -ism_sba 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 96000 48 testv/stvOSBA_3ISM_2OA48c.wav bit +../IVAS_dec STEREO 48 bit testv/stvOSBA_3ISM_2OA48c.wav_STEREO_96000_48-48.tst + +// OSBA 2OA 3ISM at 384 kbps, 16kHz in, 16kHz out, MONO out +../IVAS_cod -ism_sba 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 384000 16 testv/stvOSBA_3ISM_2OA16c.wav bit +../IVAS_dec MONO 16 bit testv/stvOSBA_3ISM_2OA16c.wav_MONO_256000_16-16.tst + +// OSBA 2OA 2ISM at 64 kbps, 32kHz in, 16kHz out, BINAURAL ROOM REVERB out +../IVAS_cod -ism_sba 2 2 testv/stvISM1.csv testv/stvISM2.csv 48000 32 testv/stvOSBA_2ISM_2OA32c.wav bit +../IVAS_dec BINAURAL_ROOM_REVERB 16 bit testv/stvOSBA_2ISM_2OA32c.wav_MONO_64000_32-16.tst + +// OSBA 2OA 2ISM at 48 kbps, 48kHz in, 48kHz out, MONO out +../IVAS_cod -ism_sba 2 2 testv/stvISM1.csv testv/stvISM2.csv 48000 48 testv/stvOSBA_2ISM_2OA48c.wav bit +../IVAS_dec MONO 48 bit testv/stvOSBA_2ISM_2OA48c.wav_MONO_48000_48-48.tst + +// OSBA 2OA 1ISM at 24.4 kbps, 48kHz in, 48kHz out, FOA out +../IVAS_cod -ism_sba 1 2 testv/stvISM1.csv 24400 48 testv/stvOSBA_1ISM_2OA48c.wav bit +../IVAS_dec FOA 48 bit testv/stvOSBA_1ISM_2OA48c.wav_FOA_24400_48-48.tst + +// OMASA 2Dir2TC 4ISM at br sw techs 13.2 to 512 kbps start 384 kbps, 48kHz in, 48kHz out, BINAURAL_ROOM_REVERB out +../IVAS_cod -ism_masa 4 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_384k_omasatechs_4ism.bin 48 testv/stvOMASA_4ISM_2MASA2TC48c.wav bit +../IVAS_dec BINAURAL_ROOM_REVERB 48 bit testv/stvOMASA_4ISM_2MASA2TC48c.wav_BINAURAL_ROOM_REVERB_sw_48-48.tst + +// OMASA 2Dir2TC 4ISM at 64 kbps, 48kHz in, 48kHz out, HOA2 out +../IVAS_cod -ism_masa 4 2 testv/stvISM1.csv NULL NULL testv/stvISM4.csv testv/stv2MASA2TC48c.met 64000 48 testv/stvOMASA_4ISM_2MASA2TC48c.wav bit +../IVAS_dec HOA2 48 bit testv/stvOMASA_4ISM_2MASA2TC48c.wav_HOA2_64000_48-48.tst + +// OMASA 2Dir2TC 4ISM at 384 kbps, 48kHz in, 48kHz out, EXT out +../IVAS_cod -ism_masa 4 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv2MASA2TC48c.met 384000 48 testv/stvOMASA_4ISM_2MASA2TC48c.wav bit +../IVAS_dec EXT 48 bit testv/stvOMASA_4ISM_2MASA2TC48c.wav_EXT_384000_48-48.tst + +// OMASA 2Dir2TC 4ISM at 256 kbps, 48kHz in, 48kHz out, EXT out +../IVAS_cod -ism_masa 4 2 testv/stvISM1.csv testv/stvISM2.csv NULL testv/stvISM4.csv testv/stv2MASA2TC48c.met 256000 48 testv/stvOMASA_4ISM_2MASA2TC48c.wav bit +../IVAS_dec EXT 48 netsimoutput testv/stvOMASA_4ISM_2MASA2TC48c.wav_EXT_256000_48-48.tst + +// OMASA 2Dir2TC 4ISM at 192 kbps, 48kHz in, 48kHz out, STEREO out +../IVAS_cod -ism_masa 4 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv2MASA2TC48c.met 192000 48 testv/stvOMASA_4ISM_2MASA2TC48c.wav bit +../IVAS_dec STEREO 48 bit testv/stvOMASA_4ISM_2MASA2TC48c.wav_STEREO_192000_48-48.tst + +// OMASA 2Dir2TC 4ISM at 13.2 kbps, 48kHz in, 48kHz out, MONO out +../IVAS_cod -ism_masa 4 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv2MASA2TC48c.met 13200 48 testv/stvOMASA_4ISM_2MASA2TC48c.wav bit +../IVAS_dec MONO 48 bit testv/stvOMASA_4ISM_2MASA2TC48c.wav_MONO_13200_48-48.tst + +// OMASA 2Dir2TC 4ISM 48 kbps 48kHz in, 48kHz out, BINAURAL_ROOM_REVERB out custom configuration +../IVAS_cod -ism_masa 4 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv2MASA2TC48c.met 48000 48 testv/stvOMASA_4ISM_2MASA2TC48c.wav bit +../IVAS_dec -render_config testv/rend_config_hospital_patientroom.cfg BINAURAL_ROOM_REVERB 48 bit testv/stvOMASA_4ISM_2MASA2TC48c.wav_BINAURAL_ROOM_REVERB_48000_48-48_custom_configuration.tst + +// OMASA 2Dir2TC 3ISM at br sw techs 13.2 to 512 kbps start 160 kbps, 48kHz in, 48kHz out, MONO out +../IVAS_cod -ism_masa 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_160k_omasatechs_3ism.bin 48 testv/stvOMASA_3ISM_2MASA2TC48c.wav bit +../IVAS_dec MONO 48 netsimoutput testv/stvOMASA_3ISM_2MASA2TC48c.wav_MONO_sw_48-48.tst + +// OMASA 2Dir2TC 3ISM at 80 kbps, 32kHz in, 16kHz out, 5.1.4 out +../IVAS_cod -ism_masa 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv2MASA2TC48c.met 80000 32 testv/stvOMASA_3ISM_2MASA2TC32c.wav bit +../IVAS_dec 5_1_4 16 bit testv/stvOMASA_3ISM_2MASA2TC32c.wav_5_1_4_80000_32-16.tst + +// OMASA 2Dir2TC 3ISM at 48 kbps, 48kHz in, 48kHz out, MONO out +../IVAS_cod -ism_masa 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv2MASA2TC48c.met 48000 48 testv/stvOMASA_3ISM_2MASA2TC48c.wav bit +../IVAS_dec MONO 48 bit testv/stvOMASA_3ISM_2MASA2TC48c.wav_MONO_48000_48-48.tst + +// OMASA 2Dir2TC 3ISM at 32 kbps, 48kHz in, 48kHz out, 5.1.2 out +../IVAS_cod -ism_masa 3 2 NULL NULL NULL testv/stv2MASA2TC48c.met 32000 48 testv/stvOMASA_3ISM_2MASA2TC48c.wav bit +../IVAS_dec 5_1_2 48 bit testv/stvOMASA_3ISM_2MASA2TC48c.wav_5_1_2_32000_48-48.tst + +// OMASA 2Dir2TC 2ISM at br sw techs 13.2 to 512 kbps start 48 kbps, 48kHz in, 48kHz out, 7.1 out +../IVAS_cod -ism_masa 2 2 testv/stvISM1.csv NULL testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_48k_omasatechs_2ism.bin 48 testv/stvOMASA_2ISM_2MASA2TC48c.wav bit +../IVAS_dec 7_1 48 netsimoutput testv/stvOMASA_2ISM_2MASA2TC48c.wav_7_1_sw_48-48.tst + +// OMASA 2Dir2TC 2ISM at 32 kbps, 48kHz in, 48kHz out, STEREO out, FER at 5% +../IVAS_cod -ism_masa 2 2 testv/stvISM1.csv testv/stvISM2.csv testv/stv2MASA2TC48c.met 32000 48 testv/stvOMASA_2ISM_2MASA2TC48c.wav bit +../IVAS_dec STEREO 48 bit testv/stvOMASA_2ISM_2MASA2TC48c.wav_STEREO_32000_48-48.tst + +// OMASA 2Dir2TC 1ISM at br sw techs 13.2 to 512 kbps start 24.4 kbps, 48kHz in, 48kHz out, BINAURAL_ROOM_IR out +../IVAS_cod -ism_masa 1 2 testv/stvISM1.csv testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_24k4_omasatechs_1ism.bin 48 testv/stvOMASA_1ISM_2MASA2TC48c.wav bit +../IVAS_dec BINAURAL_ROOM_IR 48 netsimoutput testv/stvOMASA_1ISM_2MASA2TC48c.wav_BINAURAL_ROOM_IR_sw_48-48.tst + +// OMASA 2Dir2TC 1ISM at 13.2 kbps, 48kHz in, 48kHz out, BINAURAL out +../IVAS_cod -ism_masa 1 2 NULL testv/stv2MASA2TC48c.met 13200 48 testv/stvOMASA_1ISM_2MASA2TC48c.wav bit +../IVAS_dec BINAURAL 48 bit testv/stvOMASA_1ISM_2MASA2TC48c.wav_BINAURAL_13200_48-48.tst + +// OMASA 2Dir1TC 4ISM at 24.4 kbps, 48kHz in, 48kHz out, STEREO out +../IVAS_cod -ism_masa 4 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv2MASA1TC48c.met 24400 48 testv/stvOMASA_4ISM_2MASA1TC48c.wav bit +../IVAS_dec STEREO 48 bit testv/stvOMASA_4ISM_2MASA1TC48c.wav_STEREO_24400_48-48.tst + +// OMASA 2Dir1TC 3ISM at br sw techs 13.2 to 512 kbps start 48 kbps, 48kHz in, 32kHz out, STEREO out +../IVAS_cod -ism_masa 3 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv2MASA1TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_48k_omasatechs_3ism.bin 48 testv/stvOMASA_3ISM_2MASA1TC48c.wav bit +../IVAS_dec STEREO 32 netsimoutput testv/stvOMASA_3ISM_2MASA1TC48c.wav_STEREO_sw_48-32.tst + +// OMASA 2Dir1TC 3ISM at 96 kbps, 48kHz in, 48kHz out, MONO out +../IVAS_cod -ism_masa 3 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv2MASA1TC48c.met 96000 48 testv/stvOMASA_3ISM_2MASA1TC48c.wav bit +../IVAS_dec MONO 48 bit testv/stvOMASA_3ISM_2MASA1TC48c.wav_MONO_96000_48-48.tst + +// OMASA 2Dir1TC 3ISM at 24.4 kbps, 48kHz in, 16kHz out, FOA out +../IVAS_cod -ism_masa 3 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv2MASA1TC48c.met 24400 48 testv/stvOMASA_3ISM_2MASA1TC48c.wav bit +../IVAS_dec FOA 16 bit testv/stvOMASA_3ISM_2MASA1TC48c.wav_FOA_24400_48-16.tst + +// OMASA 2Dir1TC 1ISM at 512 kbps, 32kHz in, 48kHz out, 7.1.4 out +../IVAS_cod -ism_masa 1 1 testv/stvISM1.csv testv/stv2MASA1TC48c.met 512000 32 testv/stvOMASA_1ISM_2MASA1TC32c.wav bit +../IVAS_dec 7_1_4 48 bit testv/stvOMASA_1ISM_2MASA1TC32c.wav_7_1_4_512000_32-48.tst + +// OMASA 1Dir2TC 4ISM at br sw techs 13.2 to 512 kbps start 80 kbps, 48kHz in, 48kHz out, FOA out +../IVAS_cod -ism_masa 4 2 NULL testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv1MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_80k_omasatechs_4ism.bin 48 testv/stvOMASA_4ISM_1MASA2TC48c.wav bit +../IVAS_dec FOA 48 netsimoutput testv/stvOMASA_4ISM_1MASA2TC48c.wav_FOA_sw_48-48.tst + +// OMASA 1Dir2TC 4ISM at 80 kbps, 48kHz in, 48kHz out, MONO out +../IVAS_cod -ism_masa 4 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv1MASA2TC48c.met 80000 48 testv/stvOMASA_4ISM_1MASA2TC48c.wav bit +../IVAS_dec MONO 48 bit testv/stvOMASA_4ISM_1MASA2TC48c.wav_MONO_80000_48-48.tst + +// OMASA 1Dir2TC 4ISM at 32 kbps, 48kHz in, 48kHz out, FOA out +../IVAS_cod -ism_masa 4 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv1MASA2TC48c.met 32000 48 testv/stvOMASA_4ISM_1MASA2TC48c.wav bit +../IVAS_dec FOA 48 bit testv/stvOMASA_4ISM_1MASA2TC48c.wav_FOA_32000_48-48.tst + +// OMASA 1Dir2TC 3ISM at br sw techs 13.2 to 512 kbps start 24.4 kbps, 32kHz in, 48kHz out, 5.1.2 out +../IVAS_cod -ism_masa 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv1MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_24k4_omasatechs_3ism.bin 32 testv/stvOMASA_3ISM_1MASA2TC32c.wav bit +../IVAS_dec 5_1_2 48 netsimoutput testv/stvOMASA_3ISM_1MASA2TC32c.wav_5_1_2_sw_32-48.tst + +// OMASA 1Dir2TC 3ISM at 32 kbps, 48kHz in, 16kHz out, STEREO out +../IVAS_cod -ism_masa 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv1MASA2TC48c.met 32000 48 testv/stvOMASA_3ISM_1MASA2TC48c.wav bit +../IVAS_dec STEREO 16 bit testv/stvOMASA_3ISM_1MASA2TC48c.wav_STEREO_32000_48-16.tst + +// OMASA 1Dir2TC 3ISM at 160 kbps, 16kHz in, 32kHz out, HOA3 out +../IVAS_cod -ism_masa 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv1MASA2TC48c.met 160000 16 testv/stvOMASA_3ISM_1MASA2TC16c.wav bit +../IVAS_dec HOA3 32 bit testv/stvOMASA_3ISM_1MASA2TC16c.wav_HOA3_160000_16-32.tst + +// OMASA 1Dir2TC 2ISM at 256 kbps, 48kHz in, 32kHz out, BINAURAL_ROOM_IR out +../IVAS_cod -ism_masa 2 2 testv/stvISM1.csv NULL testv/stv1MASA2TC48c.met 256000 48 testv/stvOMASA_2ISM_1MASA2TC48c.wav bit +../IVAS_dec BINAURAL_ROOM_IR 32 bit testv/stvOMASA_2ISM_1MASA2TC48c.wav_BINAURAL_ROOM_IR_256000_48-32.tst + +// OMASA 1Dir2TC 1ISM at 128 kbps, 48kHz in, 48kHz out, EXT out, bandwidth switching +../IVAS_cod -max_band testv/ivas_bws_20fr_start_SWB.txt -ism_masa 1 2 testv/stvISM1.csv testv/stv1MASA2TC48c.met 128000 48 testv/stvOMASA_1ISM_1MASA2TC48c.wav bit +../IVAS_dec EXT 48 bit testv/stvOMASA_1ISM_1MASA2TC48c.wav_EXT_128000_48-48.tst + +// OMASA 1Dir1TC 4ISM at br sw techs 13.2 to 512 kbps start 32 kbps, 48kHz in, 48kHz out, BINAURAL out +../IVAS_cod -ism_masa 4 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv1MASA1TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_32k_omasatechs_4ism.bin 48 testv/stvOMASA_4ISM_1MASA1TC48c.wav bit +../IVAS_dec BINAURAL 48 netsimoutput testv/stvOMASA_4ISM_1MASA1TC48c.wav_BINAURAL_sw_48-48.tst + +// OMASA 1Dir1TC 4ISM at 48 kbps, 48kHz in, 48kHz out, BINAURAL_ROOM_REVERB out +../IVAS_cod -ism_masa 4 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv1MASA1TC48c.met 48000 48 testv/stvOMASA_4ISM_1MASA1TC48c.wav bit +../IVAS_dec BINAURAL_ROOM_REVERB 48 bit testv/stvOMASA_4ISM_1MASA1TC48c.wav_BINAURAL_ROOM_REVERB_48000_48-48.tst + +// OMASA 1Dir1TC 4ISM 48 kbps 48kHz in, 48kHz out, BINAURAL_ROOM_REVERB out custom configuration +../IVAS_cod -ism_masa 4 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv1MASA1TC48c.met 48000 48 testv/stvOMASA_4ISM_1MASA1TC48c.wav bit +../IVAS_dec -render_config testv/rend_config_hospital_patientroom.cfg BINAURAL_ROOM_REVERB 48 bit testv/stvOMASA_4ISM_1MASA1TC48c.wav_BINAURAL_ROOM_REVERB_48000_48-48_custom_configuration.tst + +// OMASA 1Dir1TC 3ISM at 64 kbps, 32kHz in, 32kHz out, BINAURAL out +../IVAS_cod -ism_masa 3 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv1MASA1TC48c.met 64000 32 testv/stvOMASA_3ISM_1MASA1TC32c.wav bit +../IVAS_dec BINAURAL 32 bit testv/stvOMASA_3ISM_1MASA1TC32c.wav_BINAURAL_64000_32-32.tst + +// OMASA 1Dir1TC 2ISM at 16.4 kbps, 16kHz in, 48kHz out, 5.1 out +../IVAS_cod -ism_masa 2 1 testv/stvISM1.csv testv/stvISM2.csv testv/stv1MASA1TC48c.met 16400 16 testv/stvOMASA_2ISM_1MASA1TC16c.wav bit +../IVAS_dec 5_1 48 bit testv/stvOMASA_2ISM_1MASA1TC16c.wav_5_1_16400_16-48.tst + +// Multi-channel 7_1_4 bitrate switching from 24.4 kbps to 256 kbps, 48kHz in, 32kHz out, STEREO out +../IVAS_cod -mc 7_1_4 ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/stv714MC48c.wav bit +../IVAS_dec STEREO 32 bit testv/stv714MC48c.wav_sw_48-32_stereo.tst + +// Multi-channel 7_1_4 bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, HOA3 out +../IVAS_cod -mc 7_1_4 ../scripts/switchPaths/sw_mctech_5fr.bin 48 testv/stv714MC48c.wav bit +../IVAS_dec HOA3 48 bit testv/stv51MC48c.wav_sw_48-48_HOA3.tst + +// Multi-channel 7_1_4 bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, 7_1_4 out +../IVAS_cod -mc 7_1_4 ../scripts/switchPaths/sw_mctech_5fr.bin 48 testv/stv714MC48c.wav bit +../IVAS_dec 7_1_4 48 bit testv/stv714MC48c.wav_sw_48-48_7_1_4.tst + +// Multi-channel 7_1_4 bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, BINAURAL out (Model from file) +../IVAS_cod -mc 7_1_4 ../scripts/switchPaths/sw_mctech_5fr.bin 48 testv/stv714MC48c.wav bit +../IVAS_dec -hrtf ../scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_48kHz.bin BINAURAL 48 bit testv/stv51MC48c.wav_sw_48-48_BINAURAL.tst + +// Multi-channel 7_1_4 at 96 kbps, 48kHz in, 48kHz out, STEREO out +../IVAS_cod -mc 7_1_4 96000 48 testv/stv714MC48c.wav bit +../IVAS_dec STEREO 48 bit testv/stv714MC48c.wav_MC714_96000_48-48_Stereo.tst + +// Multi-channel 7_1_4 at 64 kbps, 48kHz in, 48kHz out, MONO out +../IVAS_cod -mc 7_1_4 64000 48 testv/stv714MC48c.wav bit +../IVAS_dec MONO 48 bit testv/stv714MC48c.wav_MC714_64000_48-48_MONO.tst + +// Multi-channel 7_1_4 at 512 kbps, 48kHz in, 48 kHz out, BINAURAL_ROOM_REVERB out default configuration +../IVAS_cod -mc 7_1_4 512000 48 testv/stv714MC48c.wav bit +../IVAS_dec BINAURAL_ROOM_REVERB 48 bit testv/stv71MC48c.wav_BINAURAL_ROOM_REVERB_512000_48-48.tst + +// Multi-channel 7_1_4 at 48 kbps, 48kHz in, 48kHz out, MONO out, bandwidth switching +../IVAS_cod -max_band testv/ivas_bws_20fr_start_SWB.txt -mc 7_1_4 48000 48 testv/stv714MC48c.wav bit +../IVAS_dec MONO 48 bit testv/stv714MC48c.wav_MC714_48000_48-48_Mono_bwsw.tst + +// Multi-channel 7_1_4 at 256 kbps, 48kHz in, 48kHz out, 7_1_4 out +../IVAS_cod -mc 7_1_4 256000 48 testv/stv714MC48c.wav bit +../IVAS_dec 7_1_4 48 netsimoutput testv/stv714MC48c.wav_MC714_256000_48-48_7_1_4.tst + +// Multi-channel 7_1_4 at 160 kbps, 48kHz in, 48 kHz out, BINAURAL_ROOM_REVERB out default configuration +../IVAS_cod -mc 7_1_4 160000 48 testv/stv714MC48c.wav bit +../IVAS_dec BINAURAL_ROOM_REVERB 48 bit testv/stv71MC48c.wav_BINAURAL_ROOM_REVERB_160000_48-48.tst + +// Multi-channel 7_1 bitrate switching from 24.4 kbps to 256 kbps, 48kHz in, 16kHz out, 7_1 out +../IVAS_cod -mc 7_1 ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/stv71MC48c.wav bit +../IVAS_dec 7_1 16 bit testv/stv71MCMC48c.wav_sw_48-16_7_1.tst + +// Multi-channel 7_1 bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, BINAURAL out (model from file), head rotation +../IVAS_cod -mc 7_1 ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv71MC48c.wav bit +../IVAS_dec -t testv/headrot.csv -hrtf ../scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_48kHz.bin BINAURAL 48 bit testv/stv71C48c.wav_sw_48-48_Binaural_model_file_headrot.tst + +// Multi-channel 7_1 at 512 kbps, 48kHz in, 48kHz out, BINAURAL_ROOM_REVERB out Config renderer +../IVAS_cod -mc 7_1 512000 48 testv/stv71MC48c.wav bit +../IVAS_dec -render_config testv/rend_config_renderer.cfg BINAURAL_ROOM_REVERB 48 bit testv/stv71MC48c.wav_MC71_512000_48-48_MC_Config_renderer.tst + +// Multi-channel 5_1_4 bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 32kHz out, 5_1_4 out +../IVAS_cod -mc 5_1_4 ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv514MC48c.wav bit +../IVAS_dec 5_1_4 32 bit testv/stv514MC48c.wav_sw_48-32_5_1_4.tst + +// Multi-channel 5_1_4 at 512 kbps, 48kHz in, 48 kHz out, BINAURAL_ROOM_REVERB out default configuration +../IVAS_cod -mc 5_1_4 512000 48 testv/stv514MC48c.wav bit +../IVAS_dec BINAURAL_ROOM_REVERB 48 bit testv/stv51MC48c.wav_BINAURAL_ROOM_REVERB_512000_48-48.tst + +// Multi-channel 5_1_4 at 48 kbps, 48kHz in, 48kHz out, BINAURAL_ROOM_IR out, HR +../IVAS_cod -mc 5_1_4 48000 48 testv/stv514MC48c.wav bit +../IVAS_dec -t testv/headrot.csv BINAURAL_ROOM_IR 48 bit testv/stv514MC48c.wav_MC514_48000_48-48_BinauralRoom_Headrot.tst + +// Multi-channel 5_1_2 bitrate switching from 24.4 kbps to 256 kbps, 48kHz in, 48kHz out, 5_1_2 out +../IVAS_cod -mc 5_1_2 ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/stv512MC48c.wav bit +../IVAS_dec 5_1_2 48 bit testv/stv512MC48c.wav_sw_48-48_5_1_2.tst + +// Multi-channel 5_1_2 bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 16kHz out, BINAURAL_ROOM out +../IVAS_cod -mc 5_1_2 ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv512MC48c.wav bit +../IVAS_dec BINAURAL_ROOM_IR 16 bit testv/stv512MC48c.wav_sw_48-16_Binaural_room.tst + +// Multi-channel 5_1_2 at 80 kbps, 48kHz in, 48kHz out, 5_1 out +../IVAS_cod -mc 5_1_2 80000 48 testv/stv512MC48c.wav bit +../IVAS_dec 5_1 48 bit testv/stv512MC48c.wav_MC512_80000_48-48_5_1.tst + +// Multi-channel 5_1_2 at 64 kbps, 48kHz in, 48kHz out, BINAURAL_ROOM_REVERB out Config renderer, HR +../IVAS_cod -mc 5_1_2 64000 48 testv/stv512MC48c.wav bit +../IVAS_dec -render_config testv/rend_config_renderer.cfg -t testv/headrot_case04_3000_q.csv BINAURAL_ROOM_REVERB 48 bit testv/stv512MC48c.wav_MC512_64000_48-48_MC_Config_renderer-HR.tst + +// Multi-channel 5_1_2 at 32 kbps, 48kHz in, 48kHz out, STEREO out +../IVAS_cod -mc 5_1_2 32000 48 testv/stv512MC48c.wav bit +../IVAS_dec STEREO 48 bit testv/stv512MC48c.wav_MC512_32000_48-48_Stereo.tst + +// Multi-channel 5_1_2 at 160 kbps, 48kHz in, 48kHz out, 5_1_2 out +../IVAS_cod -mc 5_1_2 160000 48 testv/stv512MC48c.wav bit +../IVAS_dec 5_1_2 48 bit testv/stv512MC48c.wav_MC512_160000_48-48_5_1_2.tst + +// Multi-channel 5_1 bitrate switching from 24.4 kbps to 256 kbps, 48kHz in, 48kHz out, BINAURAL out, FER at 10%, bandwidth switching +../IVAS_cod -max_band testv/ivas_bws_20fr_start_WB.txt -mc 5_1 ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/stv51MC48c.wav bit +../IVAS_dec BINAURAL 48 bit testv/stv51MC48c.wav_sw_48-48_binaural.tst + +// Multi-channel 5_1 bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, 5_1 out +../IVAS_cod -mc 5_1 ../scripts/switchPaths/sw_mctech_5fr.bin 48 testv/stv51MC48c.wav bit +../IVAS_dec HOA3 48 bit testv/stv51MC48c.wav_sw_48-48_5_1.tst + +// Multi-channel 5_1 bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, 7_1_4 out +../IVAS_cod -mc 5_1 ../scripts/switchPaths/sw_mctech_5fr.bin 48 testv/stv51MC48c.wav bit +../IVAS_dec 7_1_4 48 bit testv/stv51MC48c.wav_sw_48-48_7_1_4.tst + +// Multi-channel 5_1 bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 16kHz out, BINAURAL_ROOM_REVERB out +../IVAS_cod -mc 5_1 ../scripts/switchPaths/sw_mctech_5fr.bin 48 testv/stv51MC48c.wav bit +../IVAS_dec BINAURAL_ROOM_REVERB 16 bit testv/stv51MC48c.wav_sw_48-16_Binaural_room.tst + +// Multi-channel 5_1 bitrate switching from 13.2 kbps to 512 kbps, 32kHz in, 48kHz out, BINAURAL_ROOM_IR out +../IVAS_cod -mc 5_1 ../scripts/switchPaths/sw_mctech_5fr.bin 32 testv/stv51MC32c.wav bit +../IVAS_dec BINAURAL_ROOM_IR 48 bit testv/stv51MC32c.wav_sw_32-48_Binaural_room.tst + +// Multi-channel 5_1 at 96 kbps, 48kHz in, 48kHz out, bandwidth switching +../IVAS_cod -max_band testv/ivas_bws_20fr_start_FB.txt -mc 5_1 96000 48 testv/stv51MC48c.wav bit +../IVAS_dec 5_1 48 bit testv/stv51MC48c.wav_MC51_96000_48-48_5_1.tst + +// Multi-channel 5_1 at 80 kbps, 48kHz in, 32kHz out, BINAURAL_ROOM_REVERB out Config renderer, HR +../IVAS_cod -mc 5_1 80000 48 testv/stv51MC48c.wav bit +../IVAS_dec -render_config testv/rend_config_renderer.cfg -t ../scripts/trajectories/full-circle-4s.csv BINAURAL_ROOM_REVERB 32 bit testv/stv51MC48c.wav_MC51_80000_48-32_MC_Config_renderer.tst + +// Multi-channel 5_1 at 64 kbps, 48kHz in, 48kHz out, BINAURAL out +../IVAS_cod -mc 5_1 64000 48 testv/stv51MC48c.wav bit +../IVAS_dec BINAURAL 48 bit testv/stv51MC48c.wav_MC51_64000_48-48_Binaural.tst + +// Multi-channel 5_1 at 512 kbps, 48kHz in, 48 kHz out, BINAURAL_ROOM_REVERB out default configuration +../IVAS_cod -mc 5_1 512000 48 testv/stv51MC48c.wav bit +../IVAS_dec BINAURAL_ROOM_REVERB 48 bit testv/stv51MC48c.wav_BINAURAL_ROOM_REVERB_512000_48-48.tst + +// Multi-channel 5_1 at 48 kbps, 48kHz in, 48kHz out +../IVAS_cod -mc 5_1 48000 48 testv/stv51MC48c.wav bit +../IVAS_dec 5_1 48 bit testv/stv51MC48c.wav_MC51_48000_48-48_5_1.tst + +// Multi-channel 5_1 at 384 kbps, 48kHz in, 48kHz out +../IVAS_cod -mc 5_1 384000 48 testv/stv51MC48c.wav bit +../IVAS_dec 5_1 48 bit testv/stv51MC48c.wav_MC51_384000_48-48_5_1.tst + +// Multi-channel 5_1 at 32 kbps, 48kHz in 48kHz out, BINAURAL_ROOM_REVERB out custom acoustic environment with a sequence (ParamBin) +../IVAS_cod -mc 5_1 32000 48 testv/stv51MC48c.wav bit +../IVAS_dec -render_config testv/rend_config_combined.cfg -aeid testv/aeid3.txt BINAURAL_ROOM_REVERB 48 bit testv/stv51MC48c.wav_MC51_32000_48-48_MC_reverb_sequence.tst + +// Multi-channel 5_1 at 256 kbps, 48kHz in, 48kHz out, STEREO out +../IVAS_cod -mc 5_1 256000 48 testv/stv51MC48c.wav bit +../IVAS_dec STEREO 48 bit testv/stv51MC48c.wav_MC51_256000_48-48_stereo.tst + +// Multi-channel 5_1 at 24.4 kbps, 48kHz in, 48kHz out, BINAURAL out +../IVAS_cod -mc 5_1 24400 48 testv/stv51MC48c.wav bit +../IVAS_dec BINAURAL 48 bit testv/stv51MC48c.wav_MC51_24400_48-48_Binaural.tst + +// Multi-channel 5_1 at 192 kbps, 48kHz in, 48kHz out, BINAURAL ROOM IR out +../IVAS_cod -mc 5_1 192000 48 testv/stv51MC48c.wav bit +../IVAS_dec BINAURAL_ROOM_IR 48 bit testv/stv51MC48c.wav_MC51_192000_48-48_BinauralRoom.tst + +// Multi-channel 5_1 at 13.2 kbps, 48kHz in, 48kHz out +../IVAS_cod -mc 5_1 13200 48 testv/stv51MC48c.wav bit +../IVAS_dec 5_1 48 bit testv/stv51MC48c.wav_MC51_13200_48-48_5_1.tst + +// Multi-channel 5_1 at 128 kbps, 48kHz in, 48kHz out, BINAURAL out +../IVAS_cod -mc 5_1 128000 48 testv/stv51MC48c.wav bit +../IVAS_dec BINAURAL 48 bit testv/stv51MC48c.wav_MC51_128000_48-48_Binaural.tst + +// MASA 2dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, EXT out +../IVAS_cod -masa 2 testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv2MASA2TC48c.wav bit +../IVAS_dec EXT 48 netsimoutput testv/stv2MASA2TC48c.wav_sw_48-48_EXT.tst + +// MASA 2dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, BINAURAL out +../IVAS_cod -masa 2 testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv2MASA2TC48c.wav bit +../IVAS_dec BINAURAL 48 bit testv/stv2MASA2TC48c.wav_sw_48-48_BINAURAL.tst + +// MASA 2dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, 7_1 out +../IVAS_cod -masa 2 testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv2MASA2TC48c.wav bit +../IVAS_dec 7_1 48 bit testv/stv2MASA2TC48c.wav_sw_48-48_7_1.tst + +// MASA 2dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 16kHz out, BINAURAL out +../IVAS_cod -masa 2 testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv2MASA2TC48c.wav bit +../IVAS_dec BINAURAL 16 netsimoutput testv/stv2MASA2TC48c.wav_sw_48-16_BINAURAL.tst + +// MASA 2dir 2TC at 96 kbps, 48kHz in, 48kHz out, EXT out +../IVAS_cod -masa 2 testv/stv2MASA2TC48c.met 96000 48 testv/stv2MASA2TC48c.wav bit +../IVAS_dec EXT 48 bit testv/stv2MASA2TC48c.wav_96000_48-48_EXT.tst + +// MASA 2dir 2TC at 64 kbps, 48kHz in, 48kHz out, EXTERNAL out +../IVAS_cod -masa 2 testv/stv2MASA2TC48c.met 64000 48 testv/stv2MASA2TC48c.wav bit +../IVAS_dec EXT 48 bit testv/stv2MASA2TC48c.wav_64000_48-48_external.tst + +// MASA 2dir 2TC at 512 kbps, 48kHz in, 48kHz out, 5_1 out +../IVAS_cod -masa 2 testv/stv2MASA2TC48c.met 512000 48 testv/stv2MASA2TC48c.wav bit +../IVAS_dec 5_1 48 bit testv/stv2MASA2TC48c.wav_512000_48-48_5_1.tst + +// MASA 2dir 2TC at 48 kbps, 48kHz in, 48kHz out, 5_1 out, bandwidth switching +../IVAS_cod -max_band testv/ivas_bws_20fr_start_FB.txt -masa 2 testv/stv2MASA2TC48c.met 48000 48 testv/stv2MASA2TC48c.wav bit +../IVAS_dec 5_1 48 bit testv/stv2MASA2TC48c.wav_48000_48-48_5_1.tst + +// MASA 2dir 2TC at 384 kbps, 48kHz in, 48kHz out, BINAURAL_ROOM out +../IVAS_cod -masa 2 testv/stv2MASA2TC48c.met 384000 48 testv/stv2MASA2TC48c.wav bit +../IVAS_dec BINAURAL_ROOM_IR 48 bit testv/stv2MASA2TC48c.wav_384000_48-48_BinauralRoom.tst + +// MASA 2dir 2TC at 32 kbps, 48kHz in, 48kHz out, EXT out +../IVAS_cod -masa 2 testv/stv2MASA2TC48c.met 32000 48 testv/stv2MASA2TC48c.wav bit +../IVAS_dec EXT 48 bit testv/stv2MASA2TC48c.wav_32000_48-48_EXT.tst + +// MASA 2dir 2TC at 256 kbps, 48kHz in, 48kHz out, EXT out +../IVAS_cod -masa 2 testv/stv2MASA2TC48c.met 256000 48 testv/stv2MASA2TC48c.wav bit +../IVAS_dec EXT 48 bit testv/stv2MASA2TC48c.wav_256000_48-48_EXT.tst + +// MASA 2dir 2TC at 192 kbps, 48kHz in, 48kHz out, 5_1_4 out +../IVAS_cod -masa 2 testv/stv2MASA2TC48c.met 192000 48 testv/stv2MASA2TC48c.wav bit +../IVAS_dec 5_1_4 48 bit testv/stv2MASA2TC48c.wav_192000_48-48_5_1_4.tst + +// MASA 2dir 2TC at 160 kbps, 48kHz in, 48kHz out, EXT out +../IVAS_cod -masa 2 testv/stv2MASA2TC48c.met 160000 48 testv/stv2MASA2TC48c.wav bit +../IVAS_dec EXT 48 bit testv/stv2MASA2TC48c.wav_160000_48-48_EXT.tst + +// MASA 2dir 2TC at 128 kbps, 48kHz in, 48kHz out, FOA out +../IVAS_cod -masa 2 testv/stv2MASA2TC48c.met 128000 48 testv/stv2MASA2TC48c.wav bit +../IVAS_dec FOA 48 bit testv/stv2MASA2TC48c.wav_128000_48-48_FOA.tst + +// MASA 2dir 1TC at 80 kbps, 48kHz in, 48kHz out, EXT out +../IVAS_cod -masa 1 testv/stv2MASA1TC48c.met 80000 48 testv/stv2MASA1TC48c.wav bit +../IVAS_dec EXT 48 bit testv/stv2MASA1TC48c.wav_80000_48-48_EXT.tst + +// MASA 2dir 1TC at 24.4 kbps, 48kHz in, 32kHz out, EXT out +../IVAS_cod -masa 1 testv/stv2MASA1TC48c.met 24400 48 testv/stv2MASA1TC48c.wav bit +../IVAS_dec EXT 32 bit testv/stv2MASA1TC48c.wav_24400_48-32_EXT.tst + +// MASA 2dir 1TC at 128 kbps, 48kHz in, 48kHz out, BINAURAL out +../IVAS_cod -masa 1 testv/stv2MASA1TC48c.met 128000 48 testv/stv2MASA1TC48c.wav bit +../IVAS_dec BINAURAL 48 bit testv/stv2MASA1TC48c.wav_128000_48-48_BINAURAL.tst + +// MASA 1dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, MONO out +../IVAS_cod -masa 2 testv/stv1MASA2TC48n.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv1MASA2TC48n.wav bit +../IVAS_dec MONO 48 bit testv/stv1MASA2TC48n.wav_sw_48-48_MONO.tst + +// MASA 1dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, DTX on, BINAURAL out +../IVAS_cod -dtx -masa 2 testv/stv1MASA2TC48n.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv1MASA2TC48n.wav bit +../IVAS_dec BINAURAL 48 bit testv/stv1MASA2TC48n.wav_sw_48-48_DTX_BINAURAL.tst + +// MASA 1dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, BINAURAL out (Model from file) +../IVAS_cod -masa 2 testv/stv1MASA2TC48n.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv1MASA2TC48n.wav bit +../IVAS_dec -hrtf ../scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_48kHz.bin BINAURAL 48 bit testv/stv1MASA2TC48n.wav_sw_48-48_BINAURAL.tst + +// MASA 1dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, 7_1 out +../IVAS_cod -masa 2 testv/stv1MASA2TC48n.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv1MASA2TC48n.wav bit +../IVAS_dec 7_1 48 bit testv/stv1MASA2TC48n.wav_sw_48-48_7_1.tst + +// MASA 1dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 32kHz out, MONO out +../IVAS_cod -masa 2 testv/stv1MASA2TC48n.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv1MASA2TC48n.wav bit +../IVAS_dec MONO 32 netsimoutput testv/stv1MASA2TC48n.wav_sw_48-32_MONO.tst + +// MASA 1dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 16kHz out, BINAURAL out +../IVAS_cod -masa 2 testv/stv1MASA2TC48n.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv1MASA2TC48n.wav bit +../IVAS_dec BINAURAL 16 netsimoutput testv/stv1MASA2TC48n.wav_sw_48-16_BINAURAL.tst + +// MASA 1dir 2TC at 96 kbps, 48kHz in, 48kHz out, MONO out +../IVAS_cod -masa 2 testv/stv1MASA2TC48c.met 96000 48 testv/stv1MASA2TC48c.wav bit +../IVAS_dec MONO 48 bit testv/stv1MASA2TC48c.wav_96000_48-48_MONO.tst + +// MASA 1dir 2TC at 80 kbps, 32kHz in, 16kHz out, STEREO out +../IVAS_cod -masa 2 testv/stv1MASA2TC32c.met 80000 32 testv/stv1MASA2TC32c.wav bit +../IVAS_dec STEREO 16 bit testv/stv1MASA2TC32c.wav_80000_32-16_STEREO.tst + +// MASA 1dir 2TC at 64 kbps, 48kHz in, 48kHz out, EXT out +../IVAS_cod -masa 2 testv/stv1MASA2TC48c.met 64000 48 testv/stv1MASA2TC48c.wav bit +../IVAS_dec EXT 48 bit testv/stv1MASA2TC48c.wav_64000_48-48_EXT.tst + +// MASA 1dir 2TC at 48 kbps, 48kHz in, 48kHz out, 7_1_4 out +../IVAS_cod -masa 2 testv/stv1MASA2TC48c.met 48000 48 testv/stv1MASA2TC48c.wav bit +../IVAS_dec 7_1_4 48 bit testv/stv1MASA2TC48c.wav_48000_48-48_7_1_4.tst + +// MASA 1dir 2TC at 32.0 kbps, 48kHz in, 48kHz out, DTX on, 5_1 out +../IVAS_cod -dtx -masa 2 testv/stv1MASA2TC48n.met 32000 48 testv/stv1MASA2TC48n.wav bit +../IVAS_dec 5_1 48 bit testv/stv1MASA2TC48n.wav_32000_48-48_DTX_5_1.tst + +// MASA 1dir 2TC at 32 kbps, 48kHz in, 48kHz out, BINAURAL ROOM IR out +../IVAS_cod -masa 2 testv/stv1MASA2TC48c.met 32000 48 testv/stv1MASA2TC48c.wav bit +../IVAS_dec BINAURAL_ROOM_IR 48 bit testv/stv1MASA2TC48c.wav_32000_48-48_BinauralRoom.tst + +// MASA 1dir 2TC at 256 kbps, 48kHz in, 48kHz out, 5_1 out +../IVAS_cod -masa 2 testv/stv1MASA2TC48c.met 256000 48 testv/stv1MASA2TC48c.wav bit +../IVAS_dec 5_1 48 bit testv/stv1MASA2TC48c.wav_256000_48-48_5_1.tst + +// MASA 1dir 2TC at 24.4 kbps, 48kHz in, 48kHz out, STEREO out +../IVAS_cod -masa 2 testv/stv1MASA2TC48c.met 24400 48 testv/stv1MASA2TC48c.wav bit +../IVAS_dec STEREO 48 bit testv/stv1MASA2TC48c.wav_24400_48-48_STEREO.tst + +// MASA 1dir 2TC at 160 kbps, 48kHz in, 48kHz out, HOA3 out +../IVAS_cod -masa 2 testv/stv1MASA2TC48c.met 160000 48 testv/stv1MASA2TC48c.wav bit +../IVAS_dec HOA3 48 bit testv/stv1MASA2TC48c.wav_160000_48-48_HOA3.tst + +// MASA 1dir 2TC at 16.4 kbps, 48kHz in, 48kHz out, DTX on, FOA out +../IVAS_cod -dtx -masa 2 testv/stv1MASA2TC48n.met 16400 48 testv/stv1MASA2TC48n.wav bit +../IVAS_dec FOA 48 bit testv/stv1MASA2TC48n.wav_16400_48-48_DTX_FOA.tst + +// MASA 1dir 2TC at 16.4 kbps, 48kHz in, 48kHz out, 5_1 out +../IVAS_cod -masa 2 testv/stv1MASA2TC48c.met 16400 48 testv/stv1MASA2TC48c.wav bit +../IVAS_dec 5_1 48 bit testv/stv1MASA2TC48c.wav_16400_48-48_5_1.tst + +// MASA 1dir 2TC at 16.4 kbps, 16kHz in, 48kHz out, EXT out +../IVAS_cod -masa 2 testv/stv1MASA2TC16c.met 16400 16 testv/stv1MASA2TC16c.wav bit +../IVAS_dec EXT 48 bit testv/stv1MASA2TC16c.wav_16400_16-48_EXT.tst + +// MASA 1dir 2TC at 13.2 kbps, 48kHz in, 48kHz out, 5_1 out, bandwidth switching +../IVAS_cod -max_band testv/ivas_bws_20fr_start_WB.txt -masa 2 testv/stv1MASA2TC48c.met 13200 48 testv/stv1MASA2TC48c.wav bit +../IVAS_dec 5_1 48 bit testv/stv1MASA2TC48c.wav_13200_48-48_5_1.tst + +// MASA 1dir 2TC at 128 kbps, 48kHz in, 48kHz out, DTX on, EXT out +../IVAS_cod -dtx -masa 2 testv/stv1MASA2TC48n.met 128000 48 testv/stv1MASA2TC48n.wav bit +../IVAS_dec EXT 48 bit testv/stv1MASA2TC48n.wav_128000_48-48_DTX_EXT.tst + +// MASA 1dir 1TC bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 48kHz out, STEREO out +../IVAS_cod -masa 1 testv/stv1MASA1TC48n.met ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/stv1MASA1TC48n.wav bit +../IVAS_dec STEREO 48 netsimoutput testv/stv1MASA1TC48n.wav_sw_48-48_STEREO.tst + +// MASA 1dir 1TC bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 48kHz out, STEREO out +../IVAS_cod -masa 1 testv/stv1MASA1TC48n.met ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/stv1MASA1TC48n.wav bit +../IVAS_dec STEREO 48 bit testv/stv1MASA1TC48n.wav_sw_48-48_STEREO.tst + +// MASA 1dir 1TC bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 48kHz out, FOA out +../IVAS_cod -masa 1 testv/stv1MASA1TC48n.met ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/stv1MASA1TC48n.wav bit +../IVAS_dec FOA 48 netsimoutput testv/stv1MASA1TC48n.wav_sw_48-48_FOA.tst + +// MASA 1dir 1TC bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 48kHz out, FOA out +../IVAS_cod -masa 1 testv/stv1MASA1TC48n.met ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/stv1MASA1TC48n.wav bit +../IVAS_dec FOA 48 bit testv/stv1MASA1TC48n.wav_sw_48-48_FOA.tst + +// MASA 1dir 1TC bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 48kHz out, BINAURAL out +../IVAS_cod -masa 1 testv/stv1MASA1TC48n.met ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/stv1MASA1TC48n.wav bit +../IVAS_dec BINAURAL 48 bit testv/stv1MASA1TC48n.wav_sw_48-48_BINAURAL.tst + +// MASA 1dir 1TC bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 48kHz out, 5_1 out +../IVAS_cod -masa 1 testv/stv1MASA1TC48n.met ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/stv1MASA1TC48n.wav bit +../IVAS_dec 5_1 48 bit testv/stv1MASA1TC48n.wav_sw_48-48_5_1.tst + +// MASA 1dir 1TC bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 32kHz out, 5_1 out +../IVAS_cod -masa 1 testv/stv1MASA1TC48n.met ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/stv1MASA1TC48n.wav bit +../IVAS_dec 5_1 32 netsimoutput testv/stv1MASA1TC48n.wav_sw_48-32_5_1.tst + +// MASA 1dir 1TC at 64 kbps, 48kHz in, 48kHz out, STEREO out +../IVAS_cod -masa 1 testv/stv1MASA1TC48c.met 64000 48 testv/stv1MASA1TC48c.wav bit +../IVAS_dec STEREO 48 bit testv/stv1MASA1TC48c.wav_64000_48-48_STEREO.tst + +// MASA 1dir 1TC at 48 kbps, 48kHz in, 48kHz out, MONO out +../IVAS_cod -masa 1 testv/stv1MASA1TC48c.met 48000 48 testv/stv1MASA1TC48c.wav bit +../IVAS_dec MONO 48 bit testv/stv1MASA1TC48c.wav_48000_48-48_MONO.tst + +// MASA 1dir 1TC at 48 kbps, 32kHz in, 48kHz out, EXT out +../IVAS_cod -masa 1 testv/stv1MASA1TC32c.met 48000 32 testv/stv1MASA1TC32c.wav bit +../IVAS_dec EXT 48 bit testv/stv1MASA1TC32c.wav_48000_32-48_EXT.tst + +// MASA 1dir 1TC at 32 kbps, 48kHz in, 48kHz out, 7_1_4 +../IVAS_cod -masa 1 testv/stv1MASA1TC48c.met 32000 48 testv/stv1MASA1TC48c.wav bit +../IVAS_dec 7_1_4 48 bit testv/stv1MASA1TC48c.wav_32000_48-48_7_1_4.tst + +// MASA 1dir 1TC at 256kbps, 48kHz in, 48kHz out, BINAURAL_ROOM_REVERB out default configuration +../IVAS_cod -masa 1 testv/stv1MASA1TC48c.met 256000 48 testv/stv1MASA1TC48c.wav bit +../IVAS_dec BINAURAL_ROOM_REVERB 48 bit testv/stv1MASA1TC48c.wav_BINAURAL_ROOM_REVERB_256000_48-48.tst + +// MASA 1dir 1TC at 24.4 kbps, 48kHz in, 48kHz out, DTX on, BINAURAL out +../IVAS_cod -dtx -masa 1 testv/stv1MASA1TC48n.met 24400 48 testv/stv1MASA1TC48n.wav bit +../IVAS_dec BINAURAL 48 bit testv/stv1MASA1TC48n.wav_24400_48-48_DTX_BINAURAL.tst + +// MASA 1dir 1TC at 24.4 kbps, 48kHz in, 48kHz out, BINAURAL ROOM IR out +../IVAS_cod -masa 1 testv/stv1MASA1TC48c.met 24400 48 testv/stv1MASA1TC48c.wav bit +../IVAS_dec BINAURAL_ROOM_IR 48 bit testv/stv1MASA1TC48c.wav_24400_48-48_BinauralRoom.tst + +// MASA 1dir 1TC at 16.4 kbps, 48kHz in, 48kHz out, HOA3 out +../IVAS_cod -masa 1 testv/stv1MASA1TC48c.met 16400 48 testv/stv1MASA1TC48c.wav bit +../IVAS_dec HOA3 48 bit testv/stv1MASA1TC48c.wav_16400_48-48_HOA3.tst + +// MASA 1dir 1TC at 13.2 kbps, 48kHz in, 48kHz out, DTX on, 7_1_4 out +../IVAS_cod -dtx -masa 1 testv/stv1MASA1TC48n.met 13200 48 testv/stv1MASA1TC48n.wav bit +../IVAS_dec 7_1_4 48 bit testv/stv1MASA1TC48n.wav_13200_48-48_DTX_7_1_4.tst + +// MASA 1dir 1TC at 13.2 kbps, 48kHz in, 48kHz out, BINAURAL out, bandwidth switching +../IVAS_cod -max_band testv/ivas_bws_20fr_start_SWB.txt -masa 1 testv/stv1MASA1TC48c.met 13200 48 testv/stv1MASA1TC48c.wav bit +../IVAS_dec BINAURAL 48 bit testv/stv1MASA1TC48c.wav_13200_48-48_BINAURAL.tst + +// EVS non-diegetic panning at 64 kbps, 48kHz in, 48kHz out, STEREO out +../IVAS_cod 64000 48 testv/stv48c.wav bit +../IVAS_dec -non_diegetic_pan -50 48 bit testv/stv48c.pcm_EVS_64000_48-48_STEREO_NON-DIEGETIC-PAN_-50.tst + +// 4 ISm with metadata at 32 kbps, 48 kHz in, 48 kHz out, FOA out +../IVAS_cod -ism 4 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 32000 48 testv/stv4ISM48s.wav bit +../IVAS_dec FOA 48 netsimoutput testv/stv4ISM48s.wav_32000_48-48_FOA.tst + +// 4 ISm with metadata at 256 kbps, 48 kHz in, 48 kHz out, TD BINAURAL out, HR, OT +../IVAS_cod -ism 4 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 256000 48 testv/stv4ISM48s.wav bit +../IVAS_dec -t testv/headrot.csv -otr avg BINAURAL 48 bit testv/stv4ISM48s.pcm_256000_48-48_TDHR_OtrAvg.tst + +// 4 ISM with metadata bitrate switching from 24.4 kbps to 256 kbps, 48 kHz in, 48 kHz out, EXT out +../IVAS_cod -ism 4 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/stv4ISM48s.wav bit +../IVAS_dec EXT 48 bit testv/stv4ISM48s.wav_brate_sw_48-48_EXT.tst + +// 4 ISM with metadata at 96 kbps, 48 kHz in, 48 kHz out, Custom LS setup out +../IVAS_cod -ism 4 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 96000 48 testv/stv4ISM48s.wav bit +../IVAS_dec testv/ls_setup_16ch_8+4+4.txt 48 bit testv/stv4ISM48s.wav_96000_48-48_MC_custom_setup.tst + +// 4 ISM with metadata at 80 kbps, 48 kHz in, 48 kHz out, HOA2 out +../IVAS_cod -ism 4 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 80000 48 testv/stv4ISM48s.wav bit +../IVAS_dec HOA2 48 bit testv/stv4ISM48s.wav_80000_48-48_HOA2.tst + +// 4 ISM with metadata at 64 kbps, 48 kHz in, 48 kHz out, BINAURAL ROOM IR out +../IVAS_cod -ism 4 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 64000 48 testv/stv4ISM48s.wav bit +../IVAS_dec BINAURAL_ROOM_IR 48 bit testv/stv4ISM48s.wav_64000_48-48_binaural_room.tst + +// 4 ISM with metadata at 512 kbps, 48 kHz in, 48 kHz out, 5_1 +../IVAS_cod -ism 4 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 512000 48 testv/stv4ISM48s.wav bit +../IVAS_dec 5_1 48 bit testv/stv4ISM48s.wav_512000_48-48_5_1.tst + +// 4 ISM with metadata at 48 kbps, 48 kHz in, 48 kHz out, DTX on, BINAURAL ROOM IR out +../IVAS_cod -dtx -ism 4 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 48000 48 testv/stv4ISM48n.wav bit +../IVAS_dec BINAURAL_ROOM_IR 48 bit testv/stv4ISM48n.wav_48000_48-48_DTX_TD_binaural_room.tst + +// 4 ISM with metadata at 32 kbps, 48 kHz in, 48 kHz out, FOA out +../IVAS_cod -ism 4 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 32000 48 testv/stv4ISM48s.wav bit +../IVAS_dec FOA 48 bit testv/stv4ISM48s.wav_32000_48-48_FOA.tst + +// 4 ISM with metadata at 32 kbps, 48 kHz in, 48 kHz out, DTX on, BINAURAL out +../IVAS_cod -dtx -ism 4 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 32000 48 testv/stv4ISM48n.wav bit +../IVAS_dec BINAURAL 48 bit testv/stv4ISM48n.wav_32000_48-48_DTX_BINAURAL.tst + +// 4 ISM with metadata at 256 kbps, 48 kHz in, 48 kHz out, EXT out +../IVAS_cod -ism 4 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 256000 48 testv/stv4ISM48s.wav bit +../IVAS_dec EXT 48 bit testv/stv4ISM48s.wav_256000_48-48_EXT.tst + +// 4 ISM with metadata at 160 kbps, 48 kHz in, 48 kHz out, STEREO out +../IVAS_cod -ism 4 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 160000 48 testv/stv4ISM48s.wav bit +../IVAS_dec STEREO 48 bit testv/stv4ISM48s.wav_160000_48-48_STEREO.tst + +// 4 ISM with metadata at 128 kbps, 48 kHz in, 48 kHz out, EXT out, bandwidth switching +../IVAS_cod -max_band testv/ivas_bws_20fr_start_SWB.txt -ism 4 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 128000 48 testv/stv4ISM48s.wav bit +../IVAS_dec EXT 48 bit testv/stv4ISM48s.wav_128000_48-48_EXT.tst + +// 4 ISM with extended metadata at 256 kbps, 48 kHz in, 48 kHz out, BINAURAL out, HR, directivity configuration +../IVAS_cod -ism +4 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 256000 48 testv/stv4ISM48s.wav bit +../IVAS_dec -render_config testv/config_directivity_txt.cfg -t testv/headrot_case04_3000_q.csv BINAURAL 48 bit testv/stv+4ISM48s.wav_256000_48-48_binaural_file_TDHR_DirConfig.tst + +// 4 ISM with extended metadata at 128 kbps, 48 kHz in, 48 kHz out, BINAURAL_ROOM_REVERB out, rendconf dir w id +../IVAS_cod -ism 4 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 128000 48 testv/stv4ISM48n.wav bit +../IVAS_dec -render_config testv/rend_config_combined.cfg -dpid 3 0 2 1 BINAURAL_ROOM_REVERB 48 bit testv/stv4ISM48n+combined_render_config_brate_128000-48-binaural_room_reverb.wav + +// 4 ISM with extended metadata and non diegetic pan object switching bitrate 256 kbps, 48 kHz in, 48 kHz out, DTX on, BINAURAL out +../IVAS_cod -dtx -ism +4 testv/stvISM1.csv NULL testv/stvISM_with_no_diegetic_switch.csv testv/stvISM4.csv 256000 48 testv/stv4ISM48n.wav bit +../IVAS_dec BINAURAL 48 bit testv/stv+4ISM48n+non_diegetic_pan.wav_brate_256000-48_DTX_binaural.tst + +// 4 ISM with and without metadata bitrate switching from 24.4 kbps to 256 kbps, 48 kHz in, 48 kHz out, DTX on, HOA3 out +../IVAS_cod -dtx -ism 4 testv/stvISM1.csv NULL NULL testv/stvISM4.csv ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/stv4ISM48n.wav bit +../IVAS_dec HOA3 48 bit testv/stv4ISM48n.wav_brate_sw_48-48_DTX_hoa3.tst + +// 4 ISM with and without extended metadata bitrate switching from 24.4 kbps to 256 kbps, 48 kHz in, 48 kHz out, DTX on, EXT out +../IVAS_cod -dtx -ism +4 testv/stvISM1.csv NULL testv/stvISM3.csv testv/stvISM4.csv ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/stv4ISM48n.wav bit +../IVAS_dec EXT 48 bit testv/stv+4ISM48n.wav_brate_sw_48-48_DTX_EXT.tst + +// 4 ISM w and wo md br switching 24.4 kbps to 256 kbps, 48 kHz in, 48 kHz out, DTX on, BINAURAL_ROOM_IR out (Model from file) +../IVAS_cod -dtx -ism 4 testv/stvISM1.csv NULL NULL testv/stvISM4.csv ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/stv4ISM48n.wav bit +../IVAS_dec -hrtf ../scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_48kHz.bin BINAURAL_ROOM_IR 48 bit testv/stv4ISM48n.wav_brate_sw_48-48_DTX_hoa3.tst + +// 3 ISM with metadata at 96 kbps, 48 kHz in, 48 kHz out, EXT out +../IVAS_cod -ism 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 96000 48 testv/stv3ISM48s.wav bit +../IVAS_dec EXT 48 bit testv/stv3ISM48s.96000_48-48_EXT.tst + +// 3 ISM with metadata at 64 kbps, 48 kHz in, 48 kHz out, EXT out +../IVAS_cod -ism 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 64000 48 testv/stv3ISM48s.wav bit +../IVAS_dec EXT 48 bit testv/stv3ISM48s.64000_48-48_EXT.tst + +// 3 ISM with metadata at 48 kbps, 48 kHz in, 48 kHz out, EXT out +../IVAS_cod -ism 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 48000 48 testv/stv3ISM48s.wav bit +../IVAS_dec EXT 48 bit testv/stv3ISM48s.48000_48-48_MONO.tst + +// 3 ISM with metadata at 384 kbps, 48 kHz in, 32 kHz out, 7_1_4 out +../IVAS_cod -ism 3 testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 384000 48 testv/stv3ISM48s.wav bit +../IVAS_dec 7_1_4 32 bit testv/stv3ISM48s.wav_384000_48-32_7_1_4.tst + +// 3 ISM with metadata at 24.4 kbps, 48 kHz in, 48 kHz out, 7_1 out +../IVAS_cod -ism 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 24400 48 testv/stv3ISM48s.wav bit +../IVAS_dec 7_1 48 bit testv/stv3ISM48s.wav_24400_48-48_7_1.tst + +// 3 ISM with metadata at 192 kbps, 48 kHz in, 48 kHz out, BINAURAL out (Model from file) +../IVAS_cod -ism 3 testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 192000 48 testv/stv3ISM48s.wav bit +../IVAS_dec -hrtf ../scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_48kHz.bin BINAURAL 48 bit testv/stv3ISM48s.wav_192000_48-48_binauralfile.tst + +// 3 ISM with metadata at 128 kbps, 48 kHz in, 32 kHz out, HOA3 out +../IVAS_cod -ism 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 128000 48 testv/stv3ISM48s.wav bit +../IVAS_dec HOA3 32 bit testv/stv3ISM48s.wav_128000_48-32_HOA3.tst + +// 2 ISM with metadata at 80 kbps, 48 kHz in, 48 kHz out, DTX on, stereo out +../IVAS_cod -dtx -ism 2 testv/stvISM1.csv testv/stvISM2.csv 80000 48 testv/stvST48n.wav bit +../IVAS_dec STEREO 48 bit testv/stvST48n.wav_2ISM_80000_48-48_DTX_STEREO.tst + +// 2 ISM with metadata at 64 kbps, 48 kHz in, 48 kHz out, BINAURAL ROOM IR out +../IVAS_cod -ism 2 testv/stvISM3.csv testv/stvISM4.csv 64000 48 testv/stv2ISM48s.wav bit +../IVAS_dec BINAURAL_ROOM_IR 48 bit testv/stv2ISM48s.wav_64000_48-48_binaural_room.tst + +// 2 ISM with metadata at 48 kbps, 48 kHz in, 48 kHz out, EXT out +../IVAS_cod -ism 2 testv/stvISM3.csv testv/stvISM4.csv 48000 48 testv/stv2ISM48s.wav bit +../IVAS_dec EXT 48 bit testv/stv2ISM48s.wav_48000_48-48_EXT.tst + +// 2 ISM with metadata at 32 kbps, 48 kHz in, 48 kHz out, DTX on, HOA2 out +../IVAS_cod -dtx -ism 2 testv/stvISM1.csv testv/stvISM2.csv 32000 48 testv/stvST48n.wav bit +../IVAS_dec HOA2 48 bit testv/stvST48n.wav_2ISM_32000_48-48_DTX_HOA2.tst + +// 2 ISM with metadata at 160 kbps, 48 kHz in, 32 kHz out, BINAURAL out +../IVAS_cod -ism 2 testv/stvISM1.csv testv/stvISM2.csv 160000 48 testv/stv2ISM48s.wav bit +../IVAS_dec BINAURAL 32 bit testv/stv2ISM48s.wav_160000_48-32_binaural.tst + +// 2 ISM with metadata at 16.4 kbps, 48 kHz in, 48 kHz out, STEREO out +../IVAS_cod -ism 2 testv/stvISM1.csv testv/stvISM2.csv 16400 48 testv/stv2ISM48s.wav bit +../IVAS_dec STEREO 48 bit testv/stv2ISM48s.wav_16400_48-48_STEREO.tst + +// 2 ISM with metadata at 128 kbps, 48 kHz in, 32 kHz out, BINAURAL out (Model from file), HR +../IVAS_cod -ism 2 testv/stvISM1.csv testv/stvISM2.csv 128000 48 testv/stv2ISM48s.wav bit +../IVAS_dec -t testv/headrot_case01_3000_q.csv -hrtf ../scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_32kHz.bin BINAURAL 32 bit testv/stv2ISM48s.wav_128000_48-32_binaural_file_TDHR.tst + +// 1 ISM with metadata bitrate switching from 13.2 kbps to 128 kbps, 32 kHz in, 32 kHz out, EXT out, DTX on +../IVAS_cod -dtx -ism 1 testv/stvISM1.csv ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 32 testv/stv32c.wav bit +../IVAS_dec EXT 32 bit testv/stv32c.wav_1ISM_brate_sw_32-32_EXT_dtx.tst + +// 1 ISM with metadata at 96 kbps, 48 kHz in, 16 kHz out, EXT out, bandwidth switching +../IVAS_cod -max_band testv/ivas_bws_20fr_start_FB.txt -ism 1 testv/stvISM1.csv 96000 48 testv/stv1ISM48s.wav bit +../IVAS_dec EXT 16 bit testv/stv1ISM48s.wav_96000_48-16_EXT.tst + +// 1 ISM with metadata at 80 kbps, 48 kHz in, 16 kHz out, BINAURAL out (Model from file), HR +../IVAS_cod -ism 1 testv/stvISM1.csv 80000 48 testv/stv1ISM48s.wav bit +../IVAS_dec -t testv/headrot_case00_3000_q.csv -hrtf ../scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_16kHz.bin BINAURAL 16 bit testv/stv1ISM48s.wav_80000_48-16_binaural_file_TDHR.tst + +// 1 ISM with metadata at 48 kbps, 48 kHz in, 48 kHz out, BINAURAL ROOM IR out, HR +../IVAS_cod -ism 1 testv/stvISM1.csv 48000 48 testv/stv1ISM48s.wav bit +../IVAS_dec -t testv/headrot_case00_3000_q.csv BINAURAL_ROOM_IR 48 bit testv/stv1ISM48s.wav_64000_48-48_binaural_room_HR.tst + +// 1 ISM with metadata at 32 kbps, 32 kHz in, 32 kHz out, DTX on, MONO out +../IVAS_cod -dtx -ism 1 testv/stvISM1.csv 32000 32 testv/stv32n.wav bit +../IVAS_dec MONO 32 bit testv/stv32n.wav_1ISM_32000_32-32_DTX_MONO.tst + +// 1 ISM with metadata at 16.4 kbps, 48 kHz in, 48 kHz out, BINAURAL ROOM IR out, bandwidth switching +../IVAS_cod -max_band testv/ivas_bws_20fr_start_WB.txt -ism 1 testv/stvISM1.csv 16400 48 testv/stv1ISM48s.wav bit +../IVAS_dec BINAURAL_ROOM_IR 48 bit testv/stv1ISM48s.wav_16400_48-48_binaural_room.tst + +// 1 ISM with metadata at 13.2 kbps, 48 kHz in, 48 kHz out, EXT out +../IVAS_cod -ism 1 testv/stvISM1.csv 13200 48 testv/stv1ISM48s.wav bit +../IVAS_dec EXT 48 bit testv/stv1ISM48s.wav_13200_48-48_EXT.tst + +// 1 ISM with metadata at 13.2 kbps, 48 kHz in, 48 kHz out, DTX on, BINAURAL out +../IVAS_cod -dtx -ism 1 testv/stvISM1.csv 13200 48 testv/stv48n.wav bit +../IVAS_dec BINAURAL 48 bit testv/stv48n.wav_1ISM_13200_48-48_DTX_BINAURAL.tst + +// 1 ISM non-diegetic panning at 32 kbps, 48kHz in, 48kHz out, STEREO out +../IVAS_cod -ism 1 testv/stvISM1.csv 32000 48 testv/stv1ISM48s.wav bit +../IVAS_dec -non_diegetic_pan 80 STEREO 48 bit testv/stv1ISM48s.pcm_ISM_32000_48-48_STEREO_NON-DIEGETIC-PAN_80.tst -- GitLab From 5dcd74526f7b076f0dd1324689b4fe89b3ac1fcc Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Tue, 19 Nov 2024 14:48:46 +0100 Subject: [PATCH 05/11] remove unsupported testcases --- scripts/config/self_test_basop_encoder.prm | 28 ---------------------- 1 file changed, 28 deletions(-) diff --git a/scripts/config/self_test_basop_encoder.prm b/scripts/config/self_test_basop_encoder.prm index 5d9a63a5ec..e3d37c520e 100644 --- a/scripts/config/self_test_basop_encoder.prm +++ b/scripts/config/self_test_basop_encoder.prm @@ -315,10 +315,6 @@ ../IVAS_cod -max_band testv/ivas_bws_20fr_start_SWB.txt -sba 3 512000 48 testv/stv3OA48c.wav bit ../IVAS_dec BINAURAL 48 bit testv/stv3OA48c.wav_SBA_512000_48-48_binaural.tst -// SBA 3OA at 128 kbps, 48kHz in 48kHz out, BINAURAL_ROOM_REVERB rendconf sel acoustic env -../IVAS_cod -sba 3 128000 48 testv/stv3OA48c.wav bit -../IVAS_dec -render_config testv/rend_config_combined.cfg -aeid 1 BINAURAL_ROOM_REVERB 48 bit testv/stv3OA48c.pcm_SBA_128000_48-48_BinauralRoomReverb_Config_renderer_combined_AEID_1.tst - // SBA 3OA 4ISM at 96 kbps, 48kHz in, 48kHz out, BINAURAL_ROOM_REVERB out custom configuration ../IVAS_cod -sba 3 96000 48 testv/stv3OA48c.wav bit ../IVAS_dec -render_config testv/rend_config_recreation.cfg BINAURAL_ROOM_REVERB 48 bit testv/stv3OA48c.wav_BINAURAL_ROOM_REVERB_96000_48-48_custom_configuration.tst @@ -343,14 +339,6 @@ ../IVAS_cod -sba -1 128000 48 testv/stvFOA48c.wav bit ../IVAS_dec -hrtf ../scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_32kHz.bin -t testv/headrot_case00_3000_q.csv -render_config testv/rend_config_renderer.cfg BINAURAL_ROOM_REVERB 32 bit testv/stvFOA48c.pcm_planarSBA_128000_48-32_BinauralRoomReverb_Config_renderer_Headrot_BinauralFile.tst -// OSBA planar FOA 2ISM at 512 kbps, 48 kHz in, 48 kHz out, BINAURAL out -../IVAS_cod -ism_sba 2 -1 testv/stvISM1.csv testv/stvISM2.csv 512000 48 testv/stvOSBA_2ISM_FOA48c.wav bit -../IVAS_dec BINAURAL 48 bit testv/stvOSBA_2ISM_pFOA48c.wav_BINAURAL_512000_48-48.tst - -// OSBA planar FOA 1ISM at 256 kbps, 48 kHz in, 48 kHz out, BINAURAL out -../IVAS_cod -ism_sba 1 -1 testv/stvISM1.csv 256000 48 testv/stvOSBA_1ISM_FOA48c.wav bit -../IVAS_dec BINAURAL 48 bit testv/stvOSBA_1ISM_pFOA48c.wav_BINAURAL_256000_48-48.tst - // OSBA planar 3OA 4ISM at 512 kbps, 48 kHz in, 48 kHz out, BINAURAL ROOM IR out ../IVAS_cod -ism_sba 4 -3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 512000 48 testv/stvOSBA_4ISM_3OA48c.wav bit ../IVAS_dec BINAURAL_ROOM_IR 48 bit testv/stvOSBA_4ISM_p3OA48c.wav_BINAURAL_ROOM_IR_512000_48-48.tst @@ -379,10 +367,6 @@ ../IVAS_cod -ism_sba 3 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 128000 48 testv/stvOSBA_3ISM_FOA48c.wav bit ../IVAS_dec 7_1_4 48 bit testv/stvOSBA_3ISM_FOA48c.wav_7_1_4_128000_48-48.tst -// OSBA FOA 2ISM at 64 kbps, 48kHz in, 48kHz out, HOA3 out, bandwidth switching -../IVAS_cod -max_band testv/ivas_bws_20fr_start_WB.txt -ism_sba 2 1 testv/stvISM1.csv testv/stvISM2.csv 64000 48 testv/stvOSBA_2ISM_FOA48c.wav bit -../IVAS_dec HOA3 48 bit testv/stvOSBA_2ISM_FOA48c.wav_HOA3_64000_48-48.tst - // OSBA FOA 1ISM at 48 kbps, 16kHz in, 16kHz out, BINAURAL_ROOM_REVERB (Model from file) out ../IVAS_cod -ism_sba 1 1 testv/stvISM1.csv 32000 16 testv/stvOSBA_1ISM_FOA16c.wav bit ../IVAS_dec -hrtf ../scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_16kHz.bin BINAURAL_ROOM_REVERB 16 bit testv/stvOSBA_1ISM_FOA16c.wav_BINAURAL_ROOM_REVERB_32000_16-16.tst @@ -692,10 +676,6 @@ ../IVAS_cod -mc 5_1_2 160000 48 testv/stv512MC48c.wav bit ../IVAS_dec 5_1_2 48 bit testv/stv512MC48c.wav_MC512_160000_48-48_5_1_2.tst -// Multi-channel 5_1 bitrate switching from 24.4 kbps to 256 kbps, 48kHz in, 48kHz out, BINAURAL out, FER at 10%, bandwidth switching -../IVAS_cod -max_band testv/ivas_bws_20fr_start_WB.txt -mc 5_1 ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/stv51MC48c.wav bit -../IVAS_dec BINAURAL 48 bit testv/stv51MC48c.wav_sw_48-48_binaural.tst - // Multi-channel 5_1 bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, 5_1 out ../IVAS_cod -mc 5_1 ../scripts/switchPaths/sw_mctech_5fr.bin 48 testv/stv51MC48c.wav bit ../IVAS_dec HOA3 48 bit testv/stv51MC48c.wav_sw_48-48_5_1.tst @@ -736,10 +716,6 @@ ../IVAS_cod -mc 5_1 384000 48 testv/stv51MC48c.wav bit ../IVAS_dec 5_1 48 bit testv/stv51MC48c.wav_MC51_384000_48-48_5_1.tst -// Multi-channel 5_1 at 32 kbps, 48kHz in 48kHz out, BINAURAL_ROOM_REVERB out custom acoustic environment with a sequence (ParamBin) -../IVAS_cod -mc 5_1 32000 48 testv/stv51MC48c.wav bit -../IVAS_dec -render_config testv/rend_config_combined.cfg -aeid testv/aeid3.txt BINAURAL_ROOM_REVERB 48 bit testv/stv51MC48c.wav_MC51_32000_48-48_MC_reverb_sequence.tst - // Multi-channel 5_1 at 256 kbps, 48kHz in, 48kHz out, STEREO out ../IVAS_cod -mc 5_1 256000 48 testv/stv51MC48c.wav bit ../IVAS_dec STEREO 48 bit testv/stv51MC48c.wav_MC51_256000_48-48_stereo.tst @@ -1036,10 +1012,6 @@ ../IVAS_cod -ism +4 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 256000 48 testv/stv4ISM48s.wav bit ../IVAS_dec -render_config testv/config_directivity_txt.cfg -t testv/headrot_case04_3000_q.csv BINAURAL 48 bit testv/stv+4ISM48s.wav_256000_48-48_binaural_file_TDHR_DirConfig.tst -// 4 ISM with extended metadata at 128 kbps, 48 kHz in, 48 kHz out, BINAURAL_ROOM_REVERB out, rendconf dir w id -../IVAS_cod -ism 4 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 128000 48 testv/stv4ISM48n.wav bit -../IVAS_dec -render_config testv/rend_config_combined.cfg -dpid 3 0 2 1 BINAURAL_ROOM_REVERB 48 bit testv/stv4ISM48n+combined_render_config_brate_128000-48-binaural_room_reverb.wav - // 4 ISM with extended metadata and non diegetic pan object switching bitrate 256 kbps, 48 kHz in, 48 kHz out, DTX on, BINAURAL out ../IVAS_cod -dtx -ism +4 testv/stvISM1.csv NULL testv/stvISM_with_no_diegetic_switch.csv testv/stvISM4.csv 256000 48 testv/stv4ISM48n.wav bit ../IVAS_dec BINAURAL 48 bit testv/stv+4ISM48n+non_diegetic_pan.wav_brate_256000-48_DTX_binaural.tst -- GitLab From fbcf5687b0ca1cef67113de2462724f7ecf2fe23 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Tue, 19 Nov 2024 14:58:51 +0100 Subject: [PATCH 06/11] fix errors in prm file --- scripts/config/self_test_basop_encoder.prm | 40 +++++++++++----------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/scripts/config/self_test_basop_encoder.prm b/scripts/config/self_test_basop_encoder.prm index e3d37c520e..97506e3c68 100644 --- a/scripts/config/self_test_basop_encoder.prm +++ b/scripts/config/self_test_basop_encoder.prm @@ -163,9 +163,9 @@ ../IVAS_cod -sba -3 ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/stv3OA48c.wav bit ../IVAS_dec 7_1_4 48 bit testv/stv3OA48c.wav_sw_48-48_7_1_4.tst -// SBA planar 3OA bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, HOA3out +// SBA planar 3OA bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, HOA3 out ../IVAS_cod -sba -3 ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv3OA48c.wav bit -../IVAS_dec HOA348 bit testv/stv3OA48c.wav_sw_48-48_DTX_HOA3.tst +../IVAS_dec HOA3 48 bit testv/stv3OA48c.wav_sw_48-48_DTX_HOA3.tst // SBA planar 2OA bitrate switching from 13.2 kbps to 128 kbps, 32kHz in, 32kHz out, DTX on, HOA2out ../IVAS_cod -dtx -sba -2 ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 32 testv/stv2OA32c.wav bit @@ -253,7 +253,7 @@ // SBA at 13.2 kbps, 48kHz in, 48kHz out, BINAURAL out ../IVAS_cod -sba 1 13200 48 testv/stvFOA48c.wav bit -../IVAS_dec BINAURAL 48 netsimoutput testv/stvFOA32c.wav_SBA_13200_48-48_BINAURAL.tst +../IVAS_dec BINAURAL 48 bit testv/stvFOA32c.wav_SBA_13200_48-48_BINAURAL.tst // SBA at 13.2 kbps, 32kHz in, 32kHz out, HOA3 out, bandwidth switching ../IVAS_cod -max_band testv/ivas_bws_20fr_start_WB.txt -sba 3 13200 32 testv/stv3OA32c.wav bit @@ -470,7 +470,7 @@ // OMASA 2Dir2TC 4ISM at 256 kbps, 48kHz in, 48kHz out, EXT out ../IVAS_cod -ism_masa 4 2 testv/stvISM1.csv testv/stvISM2.csv NULL testv/stvISM4.csv testv/stv2MASA2TC48c.met 256000 48 testv/stvOMASA_4ISM_2MASA2TC48c.wav bit -../IVAS_dec EXT 48 netsimoutput testv/stvOMASA_4ISM_2MASA2TC48c.wav_EXT_256000_48-48.tst +../IVAS_dec EXT 48 bit testv/stvOMASA_4ISM_2MASA2TC48c.wav_EXT_256000_48-48.tst // OMASA 2Dir2TC 4ISM at 192 kbps, 48kHz in, 48kHz out, STEREO out ../IVAS_cod -ism_masa 4 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv2MASA2TC48c.met 192000 48 testv/stvOMASA_4ISM_2MASA2TC48c.wav bit @@ -486,7 +486,7 @@ // OMASA 2Dir2TC 3ISM at br sw techs 13.2 to 512 kbps start 160 kbps, 48kHz in, 48kHz out, MONO out ../IVAS_cod -ism_masa 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_160k_omasatechs_3ism.bin 48 testv/stvOMASA_3ISM_2MASA2TC48c.wav bit -../IVAS_dec MONO 48 netsimoutput testv/stvOMASA_3ISM_2MASA2TC48c.wav_MONO_sw_48-48.tst +../IVAS_dec MONO 48 bit testv/stvOMASA_3ISM_2MASA2TC48c.wav_MONO_sw_48-48.tst // OMASA 2Dir2TC 3ISM at 80 kbps, 32kHz in, 16kHz out, 5.1.4 out ../IVAS_cod -ism_masa 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv2MASA2TC48c.met 80000 32 testv/stvOMASA_3ISM_2MASA2TC32c.wav bit @@ -502,7 +502,7 @@ // OMASA 2Dir2TC 2ISM at br sw techs 13.2 to 512 kbps start 48 kbps, 48kHz in, 48kHz out, 7.1 out ../IVAS_cod -ism_masa 2 2 testv/stvISM1.csv NULL testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_48k_omasatechs_2ism.bin 48 testv/stvOMASA_2ISM_2MASA2TC48c.wav bit -../IVAS_dec 7_1 48 netsimoutput testv/stvOMASA_2ISM_2MASA2TC48c.wav_7_1_sw_48-48.tst +../IVAS_dec 7_1 48 bit testv/stvOMASA_2ISM_2MASA2TC48c.wav_7_1_sw_48-48.tst // OMASA 2Dir2TC 2ISM at 32 kbps, 48kHz in, 48kHz out, STEREO out, FER at 5% ../IVAS_cod -ism_masa 2 2 testv/stvISM1.csv testv/stvISM2.csv testv/stv2MASA2TC48c.met 32000 48 testv/stvOMASA_2ISM_2MASA2TC48c.wav bit @@ -510,7 +510,7 @@ // OMASA 2Dir2TC 1ISM at br sw techs 13.2 to 512 kbps start 24.4 kbps, 48kHz in, 48kHz out, BINAURAL_ROOM_IR out ../IVAS_cod -ism_masa 1 2 testv/stvISM1.csv testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_24k4_omasatechs_1ism.bin 48 testv/stvOMASA_1ISM_2MASA2TC48c.wav bit -../IVAS_dec BINAURAL_ROOM_IR 48 netsimoutput testv/stvOMASA_1ISM_2MASA2TC48c.wav_BINAURAL_ROOM_IR_sw_48-48.tst +../IVAS_dec BINAURAL_ROOM_IR 48 bit testv/stvOMASA_1ISM_2MASA2TC48c.wav_BINAURAL_ROOM_IR_sw_48-48.tst // OMASA 2Dir2TC 1ISM at 13.2 kbps, 48kHz in, 48kHz out, BINAURAL out ../IVAS_cod -ism_masa 1 2 NULL testv/stv2MASA2TC48c.met 13200 48 testv/stvOMASA_1ISM_2MASA2TC48c.wav bit @@ -522,7 +522,7 @@ // OMASA 2Dir1TC 3ISM at br sw techs 13.2 to 512 kbps start 48 kbps, 48kHz in, 32kHz out, STEREO out ../IVAS_cod -ism_masa 3 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv2MASA1TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_48k_omasatechs_3ism.bin 48 testv/stvOMASA_3ISM_2MASA1TC48c.wav bit -../IVAS_dec STEREO 32 netsimoutput testv/stvOMASA_3ISM_2MASA1TC48c.wav_STEREO_sw_48-32.tst +../IVAS_dec STEREO 32 bit testv/stvOMASA_3ISM_2MASA1TC48c.wav_STEREO_sw_48-32.tst // OMASA 2Dir1TC 3ISM at 96 kbps, 48kHz in, 48kHz out, MONO out ../IVAS_cod -ism_masa 3 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv2MASA1TC48c.met 96000 48 testv/stvOMASA_3ISM_2MASA1TC48c.wav bit @@ -538,7 +538,7 @@ // OMASA 1Dir2TC 4ISM at br sw techs 13.2 to 512 kbps start 80 kbps, 48kHz in, 48kHz out, FOA out ../IVAS_cod -ism_masa 4 2 NULL testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv1MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_80k_omasatechs_4ism.bin 48 testv/stvOMASA_4ISM_1MASA2TC48c.wav bit -../IVAS_dec FOA 48 netsimoutput testv/stvOMASA_4ISM_1MASA2TC48c.wav_FOA_sw_48-48.tst +../IVAS_dec FOA 48 bit testv/stvOMASA_4ISM_1MASA2TC48c.wav_FOA_sw_48-48.tst // OMASA 1Dir2TC 4ISM at 80 kbps, 48kHz in, 48kHz out, MONO out ../IVAS_cod -ism_masa 4 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv1MASA2TC48c.met 80000 48 testv/stvOMASA_4ISM_1MASA2TC48c.wav bit @@ -550,7 +550,7 @@ // OMASA 1Dir2TC 3ISM at br sw techs 13.2 to 512 kbps start 24.4 kbps, 32kHz in, 48kHz out, 5.1.2 out ../IVAS_cod -ism_masa 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv1MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_24k4_omasatechs_3ism.bin 32 testv/stvOMASA_3ISM_1MASA2TC32c.wav bit -../IVAS_dec 5_1_2 48 netsimoutput testv/stvOMASA_3ISM_1MASA2TC32c.wav_5_1_2_sw_32-48.tst +../IVAS_dec 5_1_2 48 bit testv/stvOMASA_3ISM_1MASA2TC32c.wav_5_1_2_sw_32-48.tst // OMASA 1Dir2TC 3ISM at 32 kbps, 48kHz in, 16kHz out, STEREO out ../IVAS_cod -ism_masa 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv1MASA2TC48c.met 32000 48 testv/stvOMASA_3ISM_1MASA2TC48c.wav bit @@ -570,7 +570,7 @@ // OMASA 1Dir1TC 4ISM at br sw techs 13.2 to 512 kbps start 32 kbps, 48kHz in, 48kHz out, BINAURAL out ../IVAS_cod -ism_masa 4 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv1MASA1TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_32k_omasatechs_4ism.bin 48 testv/stvOMASA_4ISM_1MASA1TC48c.wav bit -../IVAS_dec BINAURAL 48 netsimoutput testv/stvOMASA_4ISM_1MASA1TC48c.wav_BINAURAL_sw_48-48.tst +../IVAS_dec BINAURAL 48 bit testv/stvOMASA_4ISM_1MASA1TC48c.wav_BINAURAL_sw_48-48.tst // OMASA 1Dir1TC 4ISM at 48 kbps, 48kHz in, 48kHz out, BINAURAL_ROOM_REVERB out ../IVAS_cod -ism_masa 4 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv1MASA1TC48c.met 48000 48 testv/stvOMASA_4ISM_1MASA1TC48c.wav bit @@ -622,7 +622,7 @@ // Multi-channel 7_1_4 at 256 kbps, 48kHz in, 48kHz out, 7_1_4 out ../IVAS_cod -mc 7_1_4 256000 48 testv/stv714MC48c.wav bit -../IVAS_dec 7_1_4 48 netsimoutput testv/stv714MC48c.wav_MC714_256000_48-48_7_1_4.tst +../IVAS_dec 7_1_4 48 bit testv/stv714MC48c.wav_MC714_256000_48-48_7_1_4.tst // Multi-channel 7_1_4 at 160 kbps, 48kHz in, 48 kHz out, BINAURAL_ROOM_REVERB out default configuration ../IVAS_cod -mc 7_1_4 160000 48 testv/stv714MC48c.wav bit @@ -738,7 +738,7 @@ // MASA 2dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, EXT out ../IVAS_cod -masa 2 testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv2MASA2TC48c.wav bit -../IVAS_dec EXT 48 netsimoutput testv/stv2MASA2TC48c.wav_sw_48-48_EXT.tst +../IVAS_dec EXT 48 bit testv/stv2MASA2TC48c.wav_sw_48-48_EXT.tst // MASA 2dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, BINAURAL out ../IVAS_cod -masa 2 testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv2MASA2TC48c.wav bit @@ -750,7 +750,7 @@ // MASA 2dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 16kHz out, BINAURAL out ../IVAS_cod -masa 2 testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv2MASA2TC48c.wav bit -../IVAS_dec BINAURAL 16 netsimoutput testv/stv2MASA2TC48c.wav_sw_48-16_BINAURAL.tst +../IVAS_dec BINAURAL 16 bit testv/stv2MASA2TC48c.wav_sw_48-16_BINAURAL.tst // MASA 2dir 2TC at 96 kbps, 48kHz in, 48kHz out, EXT out ../IVAS_cod -masa 2 testv/stv2MASA2TC48c.met 96000 48 testv/stv2MASA2TC48c.wav bit @@ -822,11 +822,11 @@ // MASA 1dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 32kHz out, MONO out ../IVAS_cod -masa 2 testv/stv1MASA2TC48n.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv1MASA2TC48n.wav bit -../IVAS_dec MONO 32 netsimoutput testv/stv1MASA2TC48n.wav_sw_48-32_MONO.tst +../IVAS_dec MONO 32 bit testv/stv1MASA2TC48n.wav_sw_48-32_MONO.tst // MASA 1dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 16kHz out, BINAURAL out ../IVAS_cod -masa 2 testv/stv1MASA2TC48n.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv1MASA2TC48n.wav bit -../IVAS_dec BINAURAL 16 netsimoutput testv/stv1MASA2TC48n.wav_sw_48-16_BINAURAL.tst +../IVAS_dec BINAURAL 16 bit testv/stv1MASA2TC48n.wav_sw_48-16_BINAURAL.tst // MASA 1dir 2TC at 96 kbps, 48kHz in, 48kHz out, MONO out ../IVAS_cod -masa 2 testv/stv1MASA2TC48c.met 96000 48 testv/stv1MASA2TC48c.wav bit @@ -886,7 +886,7 @@ // MASA 1dir 1TC bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 48kHz out, STEREO out ../IVAS_cod -masa 1 testv/stv1MASA1TC48n.met ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/stv1MASA1TC48n.wav bit -../IVAS_dec STEREO 48 netsimoutput testv/stv1MASA1TC48n.wav_sw_48-48_STEREO.tst +../IVAS_dec STEREO 48 bit testv/stv1MASA1TC48n.wav_sw_48-48_STEREO.tst // MASA 1dir 1TC bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 48kHz out, STEREO out ../IVAS_cod -masa 1 testv/stv1MASA1TC48n.met ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/stv1MASA1TC48n.wav bit @@ -894,7 +894,7 @@ // MASA 1dir 1TC bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 48kHz out, FOA out ../IVAS_cod -masa 1 testv/stv1MASA1TC48n.met ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/stv1MASA1TC48n.wav bit -../IVAS_dec FOA 48 netsimoutput testv/stv1MASA1TC48n.wav_sw_48-48_FOA.tst +../IVAS_dec FOA 48 bit testv/stv1MASA1TC48n.wav_sw_48-48_FOA.tst // MASA 1dir 1TC bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 48kHz out, FOA out ../IVAS_cod -masa 1 testv/stv1MASA1TC48n.met ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/stv1MASA1TC48n.wav bit @@ -910,7 +910,7 @@ // MASA 1dir 1TC bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 32kHz out, 5_1 out ../IVAS_cod -masa 1 testv/stv1MASA1TC48n.met ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/stv1MASA1TC48n.wav bit -../IVAS_dec 5_1 32 netsimoutput testv/stv1MASA1TC48n.wav_sw_48-32_5_1.tst +../IVAS_dec 5_1 32 bit testv/stv1MASA1TC48n.wav_sw_48-32_5_1.tst // MASA 1dir 1TC at 64 kbps, 48kHz in, 48kHz out, STEREO out ../IVAS_cod -masa 1 testv/stv1MASA1TC48c.met 64000 48 testv/stv1MASA1TC48c.wav bit @@ -958,7 +958,7 @@ // 4 ISm with metadata at 32 kbps, 48 kHz in, 48 kHz out, FOA out ../IVAS_cod -ism 4 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 32000 48 testv/stv4ISM48s.wav bit -../IVAS_dec FOA 48 netsimoutput testv/stv4ISM48s.wav_32000_48-48_FOA.tst +../IVAS_dec FOA 48 bit testv/stv4ISM48s.wav_32000_48-48_FOA.tst // 4 ISm with metadata at 256 kbps, 48 kHz in, 48 kHz out, TD BINAURAL out, HR, OT ../IVAS_cod -ism 4 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 256000 48 testv/stv4ISM48s.wav bit -- GitLab From 08cedefde5b08e8efe384c2b22b7c27d21e034d7 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Tue, 19 Nov 2024 15:08:49 +0100 Subject: [PATCH 07/11] include new file in basop-ci-branch compat test --- .gitlab-ci.yml | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f1328069a6..4a25ec754e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -456,11 +456,17 @@ check-compatibility-with-basop-reference-branch: - cp ivas-basop/IVAS_dec ./IVAS_dec # Not used but needed to launch the pytest - python3 ci/remove_unsupported_testcases.py scripts/config/self_test.prm - python3 tests/create_short_testvectors.py - - exit_code1=0 - - exit_code2=0 - - python3 -m pytest tests/codec_be_on_mr_nonselection -v --update_ref 1 --html=report.html --self-contained-html --junit-xml=report-junit.xml || exit_code1=$? - - zero_errors=$(cat report-junit.xml | grep -c 'errors="0"') || true - - if [ $zero_errors != 1 ]; then echo "Run errors encountered!"; exit $EXIT_CODE_FAIL; fi + + - python3 -m pytest tests/codec_be_on_mr_nonselection --param_file scripts/config/self_test.prm -v --update_ref 1 --html=report.html --self-contained-html --junit-xml=report-junit.xml || true + - mv report-junit.xml report-junit-selftest-full.xml + - zero_errors=$(cat report-junit-selftest-full.xml | grep -c 'errors="0"') || true + - if [ $zero_errors != 1 ]; then echo "Run errors encountered with scripts/config/self_test.prm !"; exit $EXIT_CODE_FAIL; fi + + - python3 -m pytest tests/codec_be_on_mr_nonselection --param_file scripts/config/self_test_basop_encoder.prm -v --update_ref 1 --html=report.html --self-contained-html --junit-xml=report-junit.xml || true + - mv report-junit.xml report-junit-selftest-basop-encoder.xml + - zero_errors=$(cat report-junit-selftest-basop-encoder.xml | grep -c 'errors="0"') || true + - if [ $zero_errors != 1 ]; then echo "Run errors encountered with scripts/config/self_test_basop_encoder.prm !"; exit $EXIT_CODE_FAIL; fi + - exit 0 artifacts: name: "check-float-reference--sha-$CI_COMMIT_SHORT_SHA--results" @@ -473,7 +479,8 @@ check-compatibility-with-basop-reference-branch: expose_as: "check-float-reference results" reports: junit: - - report-junit.xml + - report-junit-selftest-full.xml + - report-junit-sefltest-basop-encoder.xml # --------------------------------------------------------------- # Build jobs -- GitLab From 956395768818328e26f0cf833ae5cca670291bd5 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Tue, 19 Nov 2024 17:51:12 +0100 Subject: [PATCH 08/11] fix report names in CI file --- .gitlab-ci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4a25ec754e..93951b0498 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -473,14 +473,15 @@ check-compatibility-with-basop-reference-branch: when: always expire_in: 1 month paths: - - report-junit.xml + - report-junit-selftest-full.xml + - report-junit-selftest-basop-encoder.xml - report.html expose_as: "check-float-reference results" reports: junit: - report-junit-selftest-full.xml - - report-junit-sefltest-basop-encoder.xml + - report-junit-selftest-basop-encoder.xml # --------------------------------------------------------------- # Build jobs -- GitLab From 2773b23abb46a895d1d0f1090b2fb91d9801bfec Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Fri, 22 Nov 2024 11:47:19 +0100 Subject: [PATCH 09/11] shorten naming and include both html reports --- .gitlab-ci.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 93951b0498..db080bdead 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -457,13 +457,11 @@ check-compatibility-with-basop-reference-branch: - python3 ci/remove_unsupported_testcases.py scripts/config/self_test.prm - python3 tests/create_short_testvectors.py - - python3 -m pytest tests/codec_be_on_mr_nonselection --param_file scripts/config/self_test.prm -v --update_ref 1 --html=report.html --self-contained-html --junit-xml=report-junit.xml || true - - mv report-junit.xml report-junit-selftest-full.xml + - python3 -m pytest tests/codec_be_on_mr_nonselection --param_file scripts/config/self_test.prm -v --update_ref 1 --html=report-selftest-full.html --self-contained-html --junit-xml=report-junit-selftest-full.xml || true - zero_errors=$(cat report-junit-selftest-full.xml | grep -c 'errors="0"') || true - if [ $zero_errors != 1 ]; then echo "Run errors encountered with scripts/config/self_test.prm !"; exit $EXIT_CODE_FAIL; fi - - python3 -m pytest tests/codec_be_on_mr_nonselection --param_file scripts/config/self_test_basop_encoder.prm -v --update_ref 1 --html=report.html --self-contained-html --junit-xml=report-junit.xml || true - - mv report-junit.xml report-junit-selftest-basop-encoder.xml + - python3 -m pytest tests/codec_be_on_mr_nonselection --param_file scripts/config/self_test_basop_encoder.prm -v --update_ref 1 --html=report-selftest-basop-encoder.html --self-contained-html --junit-xml=report-junit-selftest-basop-encoder.xml || true - zero_errors=$(cat report-junit-selftest-basop-encoder.xml | grep -c 'errors="0"') || true - if [ $zero_errors != 1 ]; then echo "Run errors encountered with scripts/config/self_test_basop_encoder.prm !"; exit $EXIT_CODE_FAIL; fi @@ -475,7 +473,8 @@ check-compatibility-with-basop-reference-branch: paths: - report-junit-selftest-full.xml - report-junit-selftest-basop-encoder.xml - - report.html + - report-selftest-full.html + - report-selftest-basop-encoder.html expose_as: "check-float-reference results" reports: -- GitLab From d029015cf53457affd674fd6c8cebf6cdec4ba4d Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Tue, 3 Dec 2024 09:04:41 +0100 Subject: [PATCH 10/11] add argument for passing the ref wmops log --- ci/complexity_measurements/getWmops.sh | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/ci/complexity_measurements/getWmops.sh b/ci/complexity_measurements/getWmops.sh index 1853704863..be169bebba 100755 --- a/ci/complexity_measurements/getWmops.sh +++ b/ci/complexity_measurements/getWmops.sh @@ -29,11 +29,11 @@ # the United Nations Convention on Contracts on the International Sales of Goods. function usage { - echo "Usage: $0 \"ivas-format(s)\" \"output-format(s)\" \"mode{full(default)|mem_only}\" \"repo{float(default)|basop}\" " + echo "Usage: $0 \"ivas-format(s)\" \"output-format(s)\" \"mode{full(default)|mem_only}\" \"repo{float(default)|basop}\" [wmops_ref_logfile]" exit 1 } -if [ $# -ne 2 ] && [ $# -ne 3 ] && [ $# -ne 4 ]; then +if [ $# -ne 2 ] && [ $# -ne 3 ] && [ $# -ne 4 ] && [ $# -ne 5 ]; then usage fi @@ -58,6 +58,11 @@ if [ $# -eq 4 ]; then fi fi +wmops_ref_logfile="" +if [ $# -eq 5 ]; then + wmops_ref_logfile=$5 +fi + date=$(date +%Y%m%d) # used for log-file file ending shortDate=$(date "+%b %d" | sed -e "s/\ /_/g") # stored in the log-file fullDate=$(date "+%c" | sed -e "s/\ /_/g") # stored in the log-file @@ -102,7 +107,12 @@ ${scriptDir}/mergeNewsletterRom.py ${wmopsFilenameFlc}_PROM.csv ${wmopsFilenameF ${scriptDir}/parseNewsletterRom.py ${wmopsFilenameFlc}_PROM.csv ${wmopsFilenameFlc}_TROM.csv ${wmopsFilenameFlcLast}_ROM.csv ${commit_sha} ${shortDate} ${fullDate} >>${destDir}/wmops/log_rom_all.txt # generate javascript code from log files -python3 ci/complexity_measurements/genWebpageData.py ${destDir}/wmops/log_wmops_all.txt ${wmopsFilenameFlc}_WMOPS.csv ${destDir}/wmops/log_rom_all.txt ${destDir}/wmops/log_ram_all.txt +# pass the ref log for comparison only if arg is given +if [ "$wmops_ref_logfile" != "" ]; then + python3 ci/complexity_measurements/genWebpageData.py ${destDir}/wmops/log_wmops_all.txt ${wmopsFilenameFlc}_WMOPS.csv ${destDir}/wmops/log_rom_all.txt ${destDir}/wmops/log_ram_all.txt --wmops_per_op_log_for_comparison $wmops_ref_logfile +else + python3 ci/complexity_measurements/genWebpageData.py ${destDir}/wmops/log_wmops_all.txt ${wmopsFilenameFlc}_WMOPS.csv ${destDir}/wmops/log_rom_all.txt ${destDir}/wmops/log_ram_all.txt +fi python3 ${scriptDir}/check_for_changes.py ${destDir}/wmops/log_wmops_all.txt ${destDir}/wmops/log_ram_all.txt ${destDir}/wmops/log_rom_all.txt if [ "$?" != "0" ]; then -- GitLab From 91a3a90286c123c03fa777d3bd21dcefb3f14db1 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Fri, 6 Dec 2024 11:11:16 +0100 Subject: [PATCH 11/11] fix if condition for 4th arg to work with newly added 5th --- ci/complexity_measurements/getWmops.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/complexity_measurements/getWmops.sh b/ci/complexity_measurements/getWmops.sh index c252e4f436..510236adce 100755 --- a/ci/complexity_measurements/getWmops.sh +++ b/ci/complexity_measurements/getWmops.sh @@ -50,7 +50,7 @@ if [ $# -ge 3 ]; then fi repo_arg_script="" -if [ $# -eq 4 ]; then +if [ $# -ge 4 ]; then if [ "$4" = "basop" ]; then repo_arg_script="--basop" elif [ "$4" != "float" ]; then -- GitLab