From 23af85079b9bd024d6ba9574ed8c8725fe256f51 Mon Sep 17 00:00:00 2001
From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com>
Date: Thu, 25 Sep 2025 16:38:00 +0200
Subject: [PATCH 1/4] Added port changes
---
Workspace_msvc/decoder.vcxproj | 2 +-
Workspace_msvc/encoder.vcxproj | 2 +-
Workspace_msvc/isar_post_rend.vcxproj | 2 +-
Workspace_msvc/lib_basop.vcxproj | 2 +-
Workspace_msvc/lib_com.vcxproj | 2 +-
Workspace_msvc/lib_debug.vcxproj | 2 +-
Workspace_msvc/lib_dec.vcxproj | 2 +-
Workspace_msvc/lib_enc.vcxproj | 2 +-
Workspace_msvc/lib_isar.vcxproj | 2 +-
Workspace_msvc/lib_lc3plus.vcxproj | 2 +-
Workspace_msvc/lib_rend.vcxproj | 2 +-
Workspace_msvc/lib_util.vcxproj | 4 +-
Workspace_msvc/renderer.vcxproj | 2 +-
apps/decoder.c | 21 +++
apps/renderer.c | 38 +++++-
lib_com/options.h | 1 +
lib_rend/lib_rend_fx.c | 9 +-
lib_util/aeid_file_reader.c | 187 ++++++++++++++++++++++++++
lib_util/aeid_file_reader.h | 90 +++++++++++++
19 files changed, 358 insertions(+), 16 deletions(-)
create mode 100644 lib_util/aeid_file_reader.c
create mode 100644 lib_util/aeid_file_reader.h
diff --git a/Workspace_msvc/decoder.vcxproj b/Workspace_msvc/decoder.vcxproj
index 160d4f7df..3950d1edd 100644
--- a/Workspace_msvc/decoder.vcxproj
+++ b/Workspace_msvc/decoder.vcxproj
@@ -14,7 +14,7 @@
decoder
{E3DCBC31-7FC9-D127-E000-529F8460D5FD}
decoder
- 10.0.17763.0
+ 10.0.19041.0
diff --git a/Workspace_msvc/encoder.vcxproj b/Workspace_msvc/encoder.vcxproj
index 1dae36d47..52ba9f10c 100644
--- a/Workspace_msvc/encoder.vcxproj
+++ b/Workspace_msvc/encoder.vcxproj
@@ -14,7 +14,7 @@
encoder
{B3FC9DFC-7268-8660-7C0D-B60BAF02C554}
encoder
- 10.0.17763.0
+ 10.0.19041.0
diff --git a/Workspace_msvc/isar_post_rend.vcxproj b/Workspace_msvc/isar_post_rend.vcxproj
index 0f2063d85..3fd73ea78 100644
--- a/Workspace_msvc/isar_post_rend.vcxproj
+++ b/Workspace_msvc/isar_post_rend.vcxproj
@@ -14,7 +14,7 @@
isar_post_rend
{12374ADC-0E5C-4FDD-B903-71D572413831}
isar_post_rend
- 10.0.17763.0
+ 10.0.19041.0
diff --git a/Workspace_msvc/lib_basop.vcxproj b/Workspace_msvc/lib_basop.vcxproj
index 8d4f252b5..3ecc0a4c2 100644
--- a/Workspace_msvc/lib_basop.vcxproj
+++ b/Workspace_msvc/lib_basop.vcxproj
@@ -35,7 +35,7 @@
{63747FE7-94BA-410C-8D7F-EB47555DD994}
common
- 10.0.17763.0
+ 10.0.19041.0
diff --git a/Workspace_msvc/lib_com.vcxproj b/Workspace_msvc/lib_com.vcxproj
index ee67280d0..b80850aa7 100644
--- a/Workspace_msvc/lib_com.vcxproj
+++ b/Workspace_msvc/lib_com.vcxproj
@@ -13,7 +13,7 @@
{39EC200D-7795-4FF8-B214-B24EDA5526AE}
common
- 10.0.17763.0
+ 10.0.19041.0
diff --git a/Workspace_msvc/lib_debug.vcxproj b/Workspace_msvc/lib_debug.vcxproj
index ef9c58a89..bec30a5ec 100644
--- a/Workspace_msvc/lib_debug.vcxproj
+++ b/Workspace_msvc/lib_debug.vcxproj
@@ -13,7 +13,7 @@
{54509728-928B-44D9-A118-A6F92F08B34F}
debug
- 10.0.17763.0
+ 10.0.19041.0
diff --git a/Workspace_msvc/lib_dec.vcxproj b/Workspace_msvc/lib_dec.vcxproj
index 9d98513e8..ec8c59f1e 100644
--- a/Workspace_msvc/lib_dec.vcxproj
+++ b/Workspace_msvc/lib_dec.vcxproj
@@ -14,7 +14,7 @@
lib_dec
{E822DDAF-0F5F-4CD0-A694-38AE69DE74D3}
evs_dec
- 10.0.17763.0
+ 10.0.19041.0
StaticLibrary
diff --git a/Workspace_msvc/lib_enc.vcxproj b/Workspace_msvc/lib_enc.vcxproj
index 93a2a8548..d59024997 100644
--- a/Workspace_msvc/lib_enc.vcxproj
+++ b/Workspace_msvc/lib_enc.vcxproj
@@ -14,7 +14,7 @@
lib_enc
{824DA4CF-06F0-45C9-929A-8792F0E19C3E}
evs_enc
- 10.0.17763.0
+ 10.0.19041.0
diff --git a/Workspace_msvc/lib_isar.vcxproj b/Workspace_msvc/lib_isar.vcxproj
index 0271901c8..836e8df36 100644
--- a/Workspace_msvc/lib_isar.vcxproj
+++ b/Workspace_msvc/lib_isar.vcxproj
@@ -14,7 +14,7 @@
lib_isar
{869A305E-D99E-4C3A-BDB3-AA57ABCCE619}
isar
- 10.0.17763.0
+ 10.0.19041.0
diff --git a/Workspace_msvc/lib_lc3plus.vcxproj b/Workspace_msvc/lib_lc3plus.vcxproj
index 71bb8e2a1..45f838f30 100644
--- a/Workspace_msvc/lib_lc3plus.vcxproj
+++ b/Workspace_msvc/lib_lc3plus.vcxproj
@@ -22,7 +22,7 @@
{95030B82-70CD-4C6B-84D4-61096035BEA2}
Win32Proj
LC3_FL
- 10.0.17763.0
+ 10.0.19041.0
diff --git a/Workspace_msvc/lib_rend.vcxproj b/Workspace_msvc/lib_rend.vcxproj
index c39806d47..f3cf56e29 100644
--- a/Workspace_msvc/lib_rend.vcxproj
+++ b/Workspace_msvc/lib_rend.vcxproj
@@ -14,7 +14,7 @@
lib_rend
{718DE063-A18B-BB72-9150-62B892E6FFA6}
evs_dec
- 10.0.17763.0
+ 10.0.19041.0
StaticLibrary
diff --git a/Workspace_msvc/lib_util.vcxproj b/Workspace_msvc/lib_util.vcxproj
index 2ffd5bcf5..26012e97e 100644
--- a/Workspace_msvc/lib_util.vcxproj
+++ b/Workspace_msvc/lib_util.vcxproj
@@ -13,7 +13,7 @@
{2FA8F384-0775-F3B7-F8C3-85209222FC70}
utility
- 10.0.17763.0
+ 10.0.19041.0
@@ -100,6 +100,7 @@
+
@@ -126,6 +127,7 @@
+
diff --git a/Workspace_msvc/renderer.vcxproj b/Workspace_msvc/renderer.vcxproj
index d6abf6aa3..a51fe975b 100644
--- a/Workspace_msvc/renderer.vcxproj
+++ b/Workspace_msvc/renderer.vcxproj
@@ -14,7 +14,7 @@
renderer
{12B4C8A5-1E06-4E30-B443-D1F916F52B47}
renderer
- 10.0.17763.0
+ 10.0.19041.0
diff --git a/apps/decoder.c b/apps/decoder.c
index a4424c92c..a63669642 100644
--- a/apps/decoder.c
+++ b/apps/decoder.c
@@ -43,6 +43,9 @@
#include "masa_file_writer.h"
#include "render_config_reader.h"
#include "rotation_file_reader.h"
+#ifdef FIX_1053_REVERB_RECONFIGURATION
+#include "aeid_file_reader.h"
+#endif
#include "split_render_file_read_write.h"
#include "vector3_pair_file_reader.h"
#include "wmc_auto.h"
@@ -1244,6 +1247,23 @@ static bool parseCmdlIVAS_dec(
if ( !is_digits_only( argv[i] ) )
{
+#ifdef FIX_1053_REVERB_RECONFIGURATION
+ aeidFileReader *aeidReader = NULL;
+ if ( aeidFileReader_open( argv[i], &aeidReader ) != IVAS_ERR_OK )
+ {
+ fprintf( stderr, "\nError: Can't open aeid file %s \n", argv[i] );
+ usage_dec();
+ return false;
+ }
+ if ( aeidFileReading( aeidReader, &arg->aeSequence.count, &arg->aeSequence.pID, &arg->aeSequence.pValidity ) != IVAS_ERR_OK )
+ {
+ fprintf( stderr, "\nError while reading aeid from %s\n", argv[i] );
+ usage_dec();
+ return false;
+ }
+ aeidFileReader_close( &aeidReader );
+ i++;
+#else
uint16_t k;
char *s = argv[i];
char *token = argv[i];
@@ -1303,6 +1323,7 @@ static bool parseCmdlIVAS_dec(
usage_dec();
return false;
}
+#endif
}
else
{
diff --git a/apps/renderer.c b/apps/renderer.c
index 3a4d4e128..e13380191 100644
--- a/apps/renderer.c
+++ b/apps/renderer.c
@@ -45,6 +45,9 @@
#include "masa_file_writer.h"
#include "render_config_reader.h"
#include "rotation_file_reader.h"
+#ifdef FIX_1053_REVERB_RECONFIGURATION
+#include "aeid_file_reader.h"
+#endif
#include "split_render_file_read_write.h"
#include "split_rend_bfi_file_reader.h"
#include "vector3_pair_file_reader.h"
@@ -385,7 +388,11 @@ static const CmdLnParser_Option cliOptions[] = {
.id = CmdLnOptionId_acousticEnvironmentId,
.match = "acoustic_environment_id",
.matchShort = "aeid",
+#ifdef FIX_1053_REVERB_RECONFIGURATION
+ .description = "Acoustic environment ID (number > 0) alternatively, it can be a text file where each line contains \"ID duration\" for BINAURAL_ROOM_REVERB output configuration.",
+#else
.description = "Acoustic environment ID( number > 0 ) or a sequence thereof in the format [ID1:duration1,ID2:duration2...] without braces and spaces, with ':' character separating ID from duration and ',' separating ID and duration pairs, where duration is specified in frames for BINAURAL_ROOM_REVERB output configuration.",
+#endif
},
};
@@ -783,6 +790,9 @@ int main(
int32_t delayTimeScale = 0;
int16_t i, numChannels;
uint16_t aeID;
+#ifdef FIX_1053_REVERB_RECONFIGURATION
+ IVAS_RENDER_CONFIG_DATA renderConfig;
+#endif
ivas_error error = IVAS_ERR_OK;
#ifdef WMOPS
@@ -1137,7 +1147,10 @@ int main(
if ( args.renderConfigFilePath[0] != '\0' )
{
+
+#ifndef FIX_1053_REVERB_RECONFIGURATION
IVAS_RENDER_CONFIG_DATA renderConfig;
+#endif
/* sanity check */
if ( ( args.outConfig.audioConfig != IVAS_AUDIO_CONFIG_BINAURAL ) && ( args.outConfig.audioConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) && ( args.outConfig.audioConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) && !is_split_pre_rend_mode( &args ) )
@@ -1611,8 +1624,9 @@ int main(
{
if ( ++args.aeSequence.frameCounter >= args.aeSequence.pValidity[args.aeSequence.selected] )
{
+#ifndef FIX_1053_REVERB_RECONFIGURATION
IVAS_RENDER_CONFIG_DATA renderConfig;
-
+#endif
if ( ++args.aeSequence.selected >= args.aeSequence.count )
{
args.aeSequence.selected = 0;
@@ -1622,7 +1636,7 @@ int main(
{
if ( RenderConfigReader_checkValues( &renderConfig ) != IVAS_ERR_OK )
{
- fprintf( stderr, "Invalid acoustic environment configuratoin parameters\n\n" );
+ fprintf( stderr, "Invalid acoustic environment configuration parameters\n\n" );
goto cleanup;
}
}
@@ -2577,6 +2591,25 @@ static bool parseAcousticEnvironmentIds(
const char *value,
AcousticEnvironmentSequence *aeSequence )
{
+#ifdef FIX_1053_REVERB_RECONFIGURATION
+ char config_string[RENDERER_MAX_METADATA_LINE_LENGTH];
+ strncpy( config_string, value, RENDERER_MAX_METADATA_LINE_LENGTH );
+ if ( !is_digits_only( config_string ) )
+ {
+ aeidFileReader *aeidReader = NULL;
+ if ( aeidFileReader_open( config_string, &aeidReader ) != IVAS_ERR_OK )
+ {
+ fprintf( stderr, "\nError: Can't open aeid file %s \n", config_string );
+ return false;
+ }
+ if ( aeidFileReading( aeidReader, &aeSequence->count, &aeSequence->pID, &aeSequence->pValidity ) != IVAS_ERR_OK )
+ {
+ fprintf( stderr, "\nError while reading aeid from %s\n", config_string );
+ return false;
+ }
+ aeidFileReader_close( &aeidReader );
+ }
+#else
uint16_t k;
char config_string[RENDERER_MAX_METADATA_LINE_LENGTH];
char *s;
@@ -2641,6 +2674,7 @@ static bool parseAcousticEnvironmentIds(
return false;
}
}
+#endif
else
{
/* A single acoustic environment */
diff --git a/lib_com/options.h b/lib_com/options.h
index 889d42845..3eaf90a69 100644
--- a/lib_com/options.h
+++ b/lib_com/options.h
@@ -120,6 +120,7 @@
#define NONBE_1377_REND_DIRATT_CONF /* Eri: Issue 1377: Error in directivity attenuation configuration for both IVAS_dec and IVAS_rend */
#define FIX_1999_TEMPORARY_DISABLE_DIST_ATT_CHECK /* Eri: Issue 1999: Range check on float values of distance attenuation, while the float values are not propagated to this function. The test is not correct, but configurable distance attenuation is not used in Characterization.*/
#define ADJUST_MCT_CHANNELS_MAX /* FhG: set correct max mct channels constant*/
+#define FIX_1053_REVERB_RECONFIGURATION
/* #################### End BASOP porting switches ############################ */
diff --git a/lib_rend/lib_rend_fx.c b/lib_rend/lib_rend_fx.c
index 61be1a83e..bde4c7c13 100644
--- a/lib_rend/lib_rend_fx.c
+++ b/lib_rend/lib_rend_fx.c
@@ -4906,6 +4906,10 @@ Word16 IVAS_REND_GetRenderConfig(
move16();
move32();
+#ifdef FIX_1053_REVERB_RECONFIGURATION
+ Copy32( hRCin->distAtt, hRCout->distAtt, 3 );
+#endif
+
return IVAS_ERR_OK;
}
@@ -4946,6 +4950,9 @@ Word16 IVAS_REND_FeedRenderConfig(
Copy32( renderConfig.roomAcoustics.pAcoustic_rt60_fx, hRenderConfig->roomAcoustics.pAcoustic_rt60_fx, CLDFB_NO_CHANNELS_MAX );
Copy32( renderConfig.roomAcoustics.pAcoustic_dsr_fx, hRenderConfig->roomAcoustics.pAcoustic_dsr_fx, CLDFB_NO_CHANNELS_MAX );
Copy( renderConfig.directivity_fx, hRenderConfig->directivity_fx, 3 * MAX_NUM_OBJECTS );
+#ifdef FIX_1053_REVERB_RECONFIGURATION
+ Copy32( renderConfig.distAtt, hRenderConfig->distAtt, 3 );
+#endif
hRenderConfig->roomAcoustics.use_er = 0;
move16();
@@ -8990,7 +8997,7 @@ static ivas_error getSamplesInternal(
if ( ( error = ISAR_PRE_REND_MultiBinToSplitBinaural( hIvasRend->splitRendWrapper, hIvasRend->headRotData.headPositions[0], hIvasRend->hRendererConfig->split_rend_config.splitRendBitRate, hIvasRend->hRendererConfig->split_rend_config.codec,
hIvasRend->hRendererConfig->split_rend_config.isar_frame_size_ms,
hIvasRend->hRendererConfig->split_rend_config.codec_frame_size_ms,
- &bits, Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, ( const Word16 )( ( BINAURAL_MAXBANDS * hIvasRend->sampleRateOut ) / 48000 ), tmpBinaural, 1, cldfb_in_flag, ( hIvasRend->outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0, ro_md_flag, Q_buff, &Q_out[0] ) ) != IVAS_ERR_OK )
+ &bits, Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, (const Word16) ( ( BINAURAL_MAXBANDS * hIvasRend->sampleRateOut ) / 48000 ), tmpBinaural, 1, cldfb_in_flag, ( hIvasRend->outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0, ro_md_flag, Q_buff, &Q_out[0] ) ) != IVAS_ERR_OK )
{
return error;
}
diff --git a/lib_util/aeid_file_reader.c b/lib_util/aeid_file_reader.c
new file mode 100644
index 000000000..737c71f0c
--- /dev/null
+++ b/lib_util/aeid_file_reader.c
@@ -0,0 +1,187 @@
+/******************************************************************************************************
+
+ (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.
+
+*******************************************************************************************************/
+
+#include "aeid_file_reader.h"
+#ifdef FIX_1053_REVERB_RECONFIGURATION
+#include "ivas_error_utils.h"
+#include
+#include
+
+struct aeidFileReader
+{
+ FILE *aeidFile;
+ char *file_path;
+};
+
+
+/*-----------------------------------------------------------------------*
+ * aeidFileReader_open()
+ *
+ * Allocate and initialize rotation handle
+ *-----------------------------------------------------------------------*/
+
+ivas_error aeidFileReader_open(
+ char *aeidFilePath, /* i : aeid file name */
+ aeidFileReader **aeidReader /* o : aeidFileReader handle */
+)
+{
+ aeidFileReader *self;
+ FILE *aeidFile;
+
+ /* Open trajectory file */
+ if ( strlen( aeidFilePath ) < 1 )
+ {
+ return IVAS_ERR_FAILED_FILE_OPEN;
+ }
+
+ aeidFile = fopen( aeidFilePath, "r" );
+
+ if ( !aeidFile )
+ {
+ return IVAS_ERR_FAILED_FILE_OPEN;
+ }
+
+ self = calloc( sizeof( aeidFileReader ), 1 );
+ self->aeidFile = aeidFile;
+ self->file_path = calloc( sizeof( char ), strlen( aeidFilePath ) + 1 );
+ strcpy( self->file_path, aeidFilePath );
+
+ *aeidReader = self;
+
+ return IVAS_ERR_OK;
+}
+
+
+/*-----------------------------------------------------------------------*
+ * aeidFileReading()
+ *
+ * Read values from the aeid file
+ *-----------------------------------------------------------------------*/
+
+ivas_error aeidFileReading(
+ aeidFileReader *aeidReader, /* i : aeidFileReader handle */
+ uint16_t *count, /* o : number of sequences */
+ uint16_t **pID, /* o : acoustic environment ID data */
+ uint16_t **pValidity /* o : duration data */
+)
+{
+ int32_t id;
+ int32_t duration;
+ uint16_t k = 0;
+
+ while ( !feof( aeidReader->aeidFile ) )
+ {
+ if ( fscanf( aeidReader->aeidFile, "%d %d", &id, &duration ) == 2 )
+ {
+ k++;
+ }
+ else
+ {
+ return IVAS_ERROR( IVAS_ERR_FAILED_FILE_PARSE, "Error while parsing acoustic environment sequence" );
+ }
+ }
+
+ if ( k == 0 )
+ {
+ return IVAS_ERROR( IVAS_ERR_FAILED_FILE_PARSE, "No acoustic environment" );
+ }
+
+ if ( NULL == ( *pID = malloc( sizeof( uint16_t ) * k ) ) ||
+ NULL == ( *pValidity = malloc( sizeof( uint16_t ) * k ) ) )
+ {
+ return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Unable to allocate memory for acoustic environment sequence" );
+ }
+
+ *count = k;
+
+ k = 0;
+
+ fseek( aeidReader->aeidFile, 0, SEEK_SET );
+
+ while ( !feof( aeidReader->aeidFile ) )
+ {
+ if ( fscanf( aeidReader->aeidFile, "%d %d", &id, &duration ) == 2 )
+ {
+ ( *pID )[k] = (uint16_t) id;
+ ( *pValidity )[k] = (uint16_t) duration;
+ k++;
+ }
+ else
+ {
+ return IVAS_ERROR( IVAS_ERR_FAILED_FILE_PARSE, "Error while parsing acoustic environment sequence" );
+ }
+ }
+
+ return IVAS_ERR_OK;
+}
+
+/*-----------------------------------------------------------------------*
+ * aeidFileReader_close()
+ *
+ * Deallocates memory for the aeid handle
+ *-----------------------------------------------------------------------*/
+
+void aeidFileReader_close(
+ aeidFileReader **aeidReader /* i/o: aeidFileReader handle */
+)
+{
+ if ( aeidReader == NULL || *aeidReader == NULL )
+ {
+ return;
+ }
+
+ fclose( ( *aeidReader )->aeidFile );
+ free( ( *aeidReader )->file_path );
+ free( *aeidReader );
+ *aeidReader = NULL;
+
+ return;
+}
+
+/*-----------------------------------------------------------------------*
+ * aeidFileReader_getFilePath()
+ *
+ *
+ *-----------------------------------------------------------------------*/
+
+const char *aeidFileReader_getFilePath(
+ aeidFileReader *aeidReader /* i : aeidFileReader handle */
+)
+{
+ if ( aeidReader == NULL )
+ {
+ return NULL;
+ }
+
+ return aeidReader->file_path;
+}
+#endif
diff --git a/lib_util/aeid_file_reader.h b/lib_util/aeid_file_reader.h
new file mode 100644
index 000000000..abd246e59
--- /dev/null
+++ b/lib_util/aeid_file_reader.h
@@ -0,0 +1,90 @@
+#pragma once
+/******************************************************************************************************
+
+ (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.
+
+*******************************************************************************************************/
+
+#ifndef IVAS_AEID_FILE_READER_H
+#define IVAS_AEID_FILE_READER_H
+
+#include "common_api_types.h"
+
+#ifdef FIX_1053_REVERB_RECONFIGURATION
+
+struct aeidFileReader;
+typedef struct aeidFileReader aeidFileReader;
+
+/*-----------------------------------------------------------------------*
+ * aeidFileReader_open()
+ *
+ * Allocate and initialize rotation handle
+ *-----------------------------------------------------------------------*/
+
+ivas_error aeidFileReader_open(
+ char *aeidFilePath, /* i : aeid file name */
+ struct aeidFileReader **aeidReader /* o : aeidFileReader handle */
+);
+
+/*-----------------------------------------------------------------------*
+ * aeidFileReading()
+ *
+ * Read values from the aeid file
+ *-----------------------------------------------------------------------*/
+
+ivas_error aeidFileReading(
+ aeidFileReader *aeidReader, /* i : aeidFileReader handle */
+ uint16_t *count, /* o : number of sequences */
+ uint16_t **pID, /* o : acoustic environment ID data */
+ uint16_t **pValidity /* o : duration data */
+);
+
+/*-----------------------------------------------------------------------*
+ * aeidFileReader_close()
+ *
+ * Deallocates memory for the aeid handle
+ *-----------------------------------------------------------------------*/
+
+void aeidFileReader_close(
+ aeidFileReader **aeidReader /* i/o: aeidFileReader handle */
+);
+
+/*-----------------------------------------------------------------------*
+ * aeidFileReader_getFilePath()
+ *
+ *
+ *-----------------------------------------------------------------------*/
+
+const char *aeidFileReader_getFilePath(
+ aeidFileReader *aeidReader /* i : aeidFileReader handle */
+);
+
+#endif
+
+#endif /* IVAS_AEID_FILE_READER_H */
--
GitLab
From f241403cb946068e87434b52449dfb4ce7c90c50 Mon Sep 17 00:00:00 2001
From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com>
Date: Thu, 25 Sep 2025 16:44:17 +0200
Subject: [PATCH 2/4] clang patch
---
lib_rend/lib_rend_fx.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib_rend/lib_rend_fx.c b/lib_rend/lib_rend_fx.c
index bde4c7c13..62d6bb6ea 100644
--- a/lib_rend/lib_rend_fx.c
+++ b/lib_rend/lib_rend_fx.c
@@ -8997,7 +8997,7 @@ static ivas_error getSamplesInternal(
if ( ( error = ISAR_PRE_REND_MultiBinToSplitBinaural( hIvasRend->splitRendWrapper, hIvasRend->headRotData.headPositions[0], hIvasRend->hRendererConfig->split_rend_config.splitRendBitRate, hIvasRend->hRendererConfig->split_rend_config.codec,
hIvasRend->hRendererConfig->split_rend_config.isar_frame_size_ms,
hIvasRend->hRendererConfig->split_rend_config.codec_frame_size_ms,
- &bits, Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, (const Word16) ( ( BINAURAL_MAXBANDS * hIvasRend->sampleRateOut ) / 48000 ), tmpBinaural, 1, cldfb_in_flag, ( hIvasRend->outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0, ro_md_flag, Q_buff, &Q_out[0] ) ) != IVAS_ERR_OK )
+ &bits, Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, ( const Word16 )( ( BINAURAL_MAXBANDS * hIvasRend->sampleRateOut ) / 48000 ), tmpBinaural, 1, cldfb_in_flag, ( hIvasRend->outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0, ro_md_flag, Q_buff, &Q_out[0] ) ) != IVAS_ERR_OK )
{
return error;
}
--
GitLab
From 62c38bd8c3faf676edc202e89f772dc03e5dc928 Mon Sep 17 00:00:00 2001
From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com>
Date: Fri, 26 Sep 2025 09:42:57 +0200
Subject: [PATCH 3/4] fx fix for rend config handles in lib_rend_fx.c
---
lib_rend/lib_rend_fx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib_rend/lib_rend_fx.c b/lib_rend/lib_rend_fx.c
index 62d6bb6ea..ba0d0d6dd 100644
--- a/lib_rend/lib_rend_fx.c
+++ b/lib_rend/lib_rend_fx.c
@@ -4907,7 +4907,7 @@ Word16 IVAS_REND_GetRenderConfig(
move32();
#ifdef FIX_1053_REVERB_RECONFIGURATION
- Copy32( hRCin->distAtt, hRCout->distAtt, 3 );
+ Copy32( hRCin->distAtt_fx, hRCout->distAtt_fx, 3 );
#endif
return IVAS_ERR_OK;
@@ -4951,7 +4951,7 @@ Word16 IVAS_REND_FeedRenderConfig(
Copy32( renderConfig.roomAcoustics.pAcoustic_dsr_fx, hRenderConfig->roomAcoustics.pAcoustic_dsr_fx, CLDFB_NO_CHANNELS_MAX );
Copy( renderConfig.directivity_fx, hRenderConfig->directivity_fx, 3 * MAX_NUM_OBJECTS );
#ifdef FIX_1053_REVERB_RECONFIGURATION
- Copy32( renderConfig.distAtt, hRenderConfig->distAtt, 3 );
+ Copy32( renderConfig.distAtt_fx, hRenderConfig->distAtt_fx, 3 );
#endif
hRenderConfig->roomAcoustics.use_er = 0;
--
GitLab
From 715a9d02393f97291a35ae6ec376d9f129ec8221 Mon Sep 17 00:00:00 2001
From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com>
Date: Fri, 26 Sep 2025 10:08:02 +0200
Subject: [PATCH 4/4] retarget build to correct windows sdk
---
Workspace_msvc/decoder.vcxproj | 2 +-
Workspace_msvc/encoder.vcxproj | 2 +-
Workspace_msvc/isar_post_rend.vcxproj | 2 +-
Workspace_msvc/lib_basop.vcxproj | 2 +-
Workspace_msvc/lib_com.vcxproj | 2 +-
Workspace_msvc/lib_debug.vcxproj | 2 +-
Workspace_msvc/lib_dec.vcxproj | 2 +-
Workspace_msvc/lib_enc.vcxproj | 2 +-
Workspace_msvc/lib_isar.vcxproj | 2 +-
Workspace_msvc/lib_lc3plus.vcxproj | 2 +-
Workspace_msvc/lib_rend.vcxproj | 2 +-
Workspace_msvc/lib_util.vcxproj | 2 +-
Workspace_msvc/renderer.vcxproj | 2 +-
13 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/Workspace_msvc/decoder.vcxproj b/Workspace_msvc/decoder.vcxproj
index 3950d1edd..160d4f7df 100644
--- a/Workspace_msvc/decoder.vcxproj
+++ b/Workspace_msvc/decoder.vcxproj
@@ -14,7 +14,7 @@
decoder
{E3DCBC31-7FC9-D127-E000-529F8460D5FD}
decoder
- 10.0.19041.0
+ 10.0.17763.0
diff --git a/Workspace_msvc/encoder.vcxproj b/Workspace_msvc/encoder.vcxproj
index 52ba9f10c..1dae36d47 100644
--- a/Workspace_msvc/encoder.vcxproj
+++ b/Workspace_msvc/encoder.vcxproj
@@ -14,7 +14,7 @@
encoder
{B3FC9DFC-7268-8660-7C0D-B60BAF02C554}
encoder
- 10.0.19041.0
+ 10.0.17763.0
diff --git a/Workspace_msvc/isar_post_rend.vcxproj b/Workspace_msvc/isar_post_rend.vcxproj
index 3fd73ea78..0f2063d85 100644
--- a/Workspace_msvc/isar_post_rend.vcxproj
+++ b/Workspace_msvc/isar_post_rend.vcxproj
@@ -14,7 +14,7 @@
isar_post_rend
{12374ADC-0E5C-4FDD-B903-71D572413831}
isar_post_rend
- 10.0.19041.0
+ 10.0.17763.0
diff --git a/Workspace_msvc/lib_basop.vcxproj b/Workspace_msvc/lib_basop.vcxproj
index 3ecc0a4c2..8d4f252b5 100644
--- a/Workspace_msvc/lib_basop.vcxproj
+++ b/Workspace_msvc/lib_basop.vcxproj
@@ -35,7 +35,7 @@
{63747FE7-94BA-410C-8D7F-EB47555DD994}
common
- 10.0.19041.0
+ 10.0.17763.0
diff --git a/Workspace_msvc/lib_com.vcxproj b/Workspace_msvc/lib_com.vcxproj
index b80850aa7..ee67280d0 100644
--- a/Workspace_msvc/lib_com.vcxproj
+++ b/Workspace_msvc/lib_com.vcxproj
@@ -13,7 +13,7 @@
{39EC200D-7795-4FF8-B214-B24EDA5526AE}
common
- 10.0.19041.0
+ 10.0.17763.0
diff --git a/Workspace_msvc/lib_debug.vcxproj b/Workspace_msvc/lib_debug.vcxproj
index bec30a5ec..ef9c58a89 100644
--- a/Workspace_msvc/lib_debug.vcxproj
+++ b/Workspace_msvc/lib_debug.vcxproj
@@ -13,7 +13,7 @@
{54509728-928B-44D9-A118-A6F92F08B34F}
debug
- 10.0.19041.0
+ 10.0.17763.0
diff --git a/Workspace_msvc/lib_dec.vcxproj b/Workspace_msvc/lib_dec.vcxproj
index ec8c59f1e..9d98513e8 100644
--- a/Workspace_msvc/lib_dec.vcxproj
+++ b/Workspace_msvc/lib_dec.vcxproj
@@ -14,7 +14,7 @@
lib_dec
{E822DDAF-0F5F-4CD0-A694-38AE69DE74D3}
evs_dec
- 10.0.19041.0
+ 10.0.17763.0
StaticLibrary
diff --git a/Workspace_msvc/lib_enc.vcxproj b/Workspace_msvc/lib_enc.vcxproj
index d59024997..93a2a8548 100644
--- a/Workspace_msvc/lib_enc.vcxproj
+++ b/Workspace_msvc/lib_enc.vcxproj
@@ -14,7 +14,7 @@
lib_enc
{824DA4CF-06F0-45C9-929A-8792F0E19C3E}
evs_enc
- 10.0.19041.0
+ 10.0.17763.0
diff --git a/Workspace_msvc/lib_isar.vcxproj b/Workspace_msvc/lib_isar.vcxproj
index 836e8df36..0271901c8 100644
--- a/Workspace_msvc/lib_isar.vcxproj
+++ b/Workspace_msvc/lib_isar.vcxproj
@@ -14,7 +14,7 @@
lib_isar
{869A305E-D99E-4C3A-BDB3-AA57ABCCE619}
isar
- 10.0.19041.0
+ 10.0.17763.0
diff --git a/Workspace_msvc/lib_lc3plus.vcxproj b/Workspace_msvc/lib_lc3plus.vcxproj
index 45f838f30..71bb8e2a1 100644
--- a/Workspace_msvc/lib_lc3plus.vcxproj
+++ b/Workspace_msvc/lib_lc3plus.vcxproj
@@ -22,7 +22,7 @@
{95030B82-70CD-4C6B-84D4-61096035BEA2}
Win32Proj
LC3_FL
- 10.0.19041.0
+ 10.0.17763.0
diff --git a/Workspace_msvc/lib_rend.vcxproj b/Workspace_msvc/lib_rend.vcxproj
index f3cf56e29..c39806d47 100644
--- a/Workspace_msvc/lib_rend.vcxproj
+++ b/Workspace_msvc/lib_rend.vcxproj
@@ -14,7 +14,7 @@
lib_rend
{718DE063-A18B-BB72-9150-62B892E6FFA6}
evs_dec
- 10.0.19041.0
+ 10.0.17763.0
StaticLibrary
diff --git a/Workspace_msvc/lib_util.vcxproj b/Workspace_msvc/lib_util.vcxproj
index 26012e97e..00574f411 100644
--- a/Workspace_msvc/lib_util.vcxproj
+++ b/Workspace_msvc/lib_util.vcxproj
@@ -13,7 +13,7 @@
{2FA8F384-0775-F3B7-F8C3-85209222FC70}
utility
- 10.0.19041.0
+ 10.0.17763.0
diff --git a/Workspace_msvc/renderer.vcxproj b/Workspace_msvc/renderer.vcxproj
index a51fe975b..d6abf6aa3 100644
--- a/Workspace_msvc/renderer.vcxproj
+++ b/Workspace_msvc/renderer.vcxproj
@@ -14,7 +14,7 @@
renderer
{12B4C8A5-1E06-4E30-B443-D1F916F52B47}
renderer
- 10.0.19041.0
+ 10.0.17763.0
--
GitLab