From a70ccd69bc9d80c850fab2987dd913ab6b58feb6 Mon Sep 17 00:00:00 2001
From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com>
Date: Thu, 25 Sep 2025 14:33:11 +0200
Subject: [PATCH 1/4] added aed_file_reader .c and .h, and other changes for
IVAS PC MR 168
---
Workspace_msvc/decoder.vcxproj | 4 +-
Workspace_msvc/encoder.vcxproj | 4 +-
Workspace_msvc/isar_post_rend.vcxproj | 2 +-
Workspace_msvc/lib_com.vcxproj | 4 +-
Workspace_msvc/lib_debug.vcxproj | 4 +-
Workspace_msvc/lib_dec.vcxproj | 4 +-
Workspace_msvc/lib_enc.vcxproj | 4 +-
Workspace_msvc/lib_isar.vcxproj | 4 +-
Workspace_msvc/lib_lc3plus.vcxproj | 2 +-
Workspace_msvc/lib_rend.vcxproj | 2 +-
Workspace_msvc/lib_rend.vcxproj.filters | 72 ---------
Workspace_msvc/lib_util.vcxproj | 6 +-
Workspace_msvc/renderer.vcxproj | 4 +-
apps/decoder.c | 27 ++++
apps/renderer.c | 38 ++++-
lib_com/options.h | 1 +
lib_rend/lib_rend.c | 9 +-
lib_util/aeid_file_reader.c | 185 ++++++++++++++++++++++++
lib_util/aeid_file_reader.h | 89 ++++++++++++
19 files changed, 369 insertions(+), 96 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 00e29933a..363630d54 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
@@ -173,4 +173,4 @@
-
+
\ No newline at end of file
diff --git a/Workspace_msvc/encoder.vcxproj b/Workspace_msvc/encoder.vcxproj
index 122e3e4e0..03e4e7af1 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
@@ -177,4 +177,4 @@
-
+
\ No newline at end of file
diff --git a/Workspace_msvc/isar_post_rend.vcxproj b/Workspace_msvc/isar_post_rend.vcxproj
index 170ff2054..e44bc448a 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_com.vcxproj b/Workspace_msvc/lib_com.vcxproj
index d53a28442..10f07db06 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
@@ -311,4 +311,4 @@
-
+
\ No newline at end of file
diff --git a/Workspace_msvc/lib_debug.vcxproj b/Workspace_msvc/lib_debug.vcxproj
index cedf3d5ad..36f156d8d 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
@@ -120,4 +120,4 @@
-
+
\ No newline at end of file
diff --git a/Workspace_msvc/lib_dec.vcxproj b/Workspace_msvc/lib_dec.vcxproj
index fe4e46850..2006cdcf4 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
@@ -348,4 +348,4 @@
-
+
\ No newline at end of file
diff --git a/Workspace_msvc/lib_enc.vcxproj b/Workspace_msvc/lib_enc.vcxproj
index a0b2a2b1a..792450dad 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
@@ -364,4 +364,4 @@
-
+
\ No newline at end of file
diff --git a/Workspace_msvc/lib_isar.vcxproj b/Workspace_msvc/lib_isar.vcxproj
index fceeb731c..b7194e241 100644
--- a/Workspace_msvc/lib_isar.vcxproj
+++ b/Workspace_msvc/lib_isar.vcxproj
@@ -14,7 +14,7 @@
lib_isar
{869A305E-D99E-4C3A-BDB3-AA57ABCCE619}
evs_dec
- 10.0.17763.0
+ 10.0.19041.0
StaticLibrary
@@ -197,4 +197,4 @@
-
+
\ No newline at end of file
diff --git a/Workspace_msvc/lib_lc3plus.vcxproj b/Workspace_msvc/lib_lc3plus.vcxproj
index eb2a91d36..c0098813f 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 27d4a19a6..3ae4061a0 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_rend.vcxproj.filters b/Workspace_msvc/lib_rend.vcxproj.filters
index 4707a48b2..63e83fc9b 100644
--- a/Workspace_msvc/lib_rend.vcxproj.filters
+++ b/Workspace_msvc/lib_rend.vcxproj.filters
@@ -32,30 +32,12 @@
rend_c
-
- rend_c
-
-
- rend_c
-
-
- rend_c
-
-
- rend_c
-
rend_c
rend_c
-
- rend_c
-
-
- rend_c
-
rend_c
@@ -83,15 +65,6 @@
rend_c
-
- rend_c
-
-
- rend_c
-
-
- rend_c
-
rend_c
@@ -113,9 +86,6 @@
rend_c
-
- rend_c
-
rend_c
@@ -134,24 +104,6 @@
rend_c
-
- rend_c
-
-
- rend_c
-
-
- rend_c
-
-
- rend_c
-
-
- rend_c
-
-
- rend_c
-
rend_c
@@ -161,30 +113,12 @@
rend_c
-
- rend_c
-
-
- rend_c
-
-
- rend_c
-
rend_c
-
- rend_h
-
-
- rend_h
-
-
- rend_h
-
rend_h
@@ -203,12 +137,6 @@
rend_h
-
- rend_h
-
-
- rend_h
-
diff --git a/Workspace_msvc/lib_util.vcxproj b/Workspace_msvc/lib_util.vcxproj
index 91d7a11b3..edc8bd9ae 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 @@
+
@@ -161,4 +163,4 @@
-
+
\ No newline at end of file
diff --git a/Workspace_msvc/renderer.vcxproj b/Workspace_msvc/renderer.vcxproj
index a3d0f24b4..6083d6848 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
@@ -182,4 +182,4 @@
-
+
\ No newline at end of file
diff --git a/apps/decoder.c b/apps/decoder.c
index 41a737c46..875f6de74 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"
#ifdef VARIABLE_SPEED_DECODING
#include "tsm_scale_file_reader.h"
@@ -1465,6 +1468,24 @@ 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];
@@ -1525,6 +1546,7 @@ static bool parseCmdlIVAS_dec(
return false;
}
}
+#endif
else
{
@@ -1779,10 +1801,15 @@ static void usage_dec( void )
fprintf( stdout, " output configuration. ID1, ID2, ID3, ID4 specify the directivity pattern IDs used for\n" );
fprintf( stdout, " ISMs 1,2,3 and 4 respectively. This options needs to be accompanied by a render_config file,\n" );
fprintf( stdout, " otherwise a default directivity pattern is used.\n" );
+#ifdef FIX_1053_REVERB_RECONFIGURATION
+ 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" );
+#else
fprintf( stdout, "-aeid ID : Acoustic environment ID (number > 0) or\n" );
fprintf( stdout, " a sequence thereof in the format [ID1:duration1,ID2:duration2...]\n" );
fprintf( stdout, " without braces and spaces, with ':' character separating ID from duration and ',' separating\n" );
fprintf( stdout, " ID and duration pairs, where duration is specified in frames\n" );
+#endif
fprintf( stdout, " for BINAURAL_ROOM_REVERB output configuration.\n" );
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" );
diff --git a/apps/renderer.c b/apps/renderer.c
index b843a718b..771acd8c4 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"
@@ -381,7 +384,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
},
};
@@ -702,6 +709,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
@@ -1051,8 +1061,9 @@ 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 ) )
{
@@ -1488,8 +1499,11 @@ 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;
@@ -1499,7 +1513,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;
}
}
@@ -2461,6 +2475,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;
@@ -2525,6 +2558,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 5c8b5cdce..3429277fe 100644
--- a/lib_com/options.h
+++ b/lib_com/options.h
@@ -170,6 +170,7 @@
#define NONBE_1377_REND_DIRATT_CONF /* Eri: Issue 1377: Error in directivity attenuation configuration for both IVAS_dec and IVAS_rend */
#define FIX_ISSUE_2008_MISSING_CODE_FROM_PORTING /* FhG: Issue 2008: Code deleted while porting float-main MR !1504 (BASOP issue 1565)*/
#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.c b/lib_rend/lib_rend.c
index 628421352..80cde315c 100644
--- a/lib_rend/lib_rend.c
+++ b/lib_rend/lib_rend.c
@@ -4264,6 +4264,10 @@ int16_t IVAS_REND_GetRenderConfig(
hRCout->roomAcoustics.use_er = hRCin->roomAcoustics.use_er;
hRCout->roomAcoustics.lowComplexity = hRCin->roomAcoustics.lowComplexity;
+#ifdef FIX_1053_REVERB_RECONFIGURATION
+ mvr2r( hRCin->distAtt, hRCout->distAtt, 3 );
+#endif
+
return IVAS_ERR_OK;
}
@@ -4303,6 +4307,9 @@ int16_t IVAS_REND_FeedRenderConfig(
mvr2r( renderConfig.roomAcoustics.pAcoustic_rt60, hRenderConfig->roomAcoustics.pAcoustic_rt60, CLDFB_NO_CHANNELS_MAX );
mvr2r( renderConfig.roomAcoustics.pAcoustic_dsr, hRenderConfig->roomAcoustics.pAcoustic_dsr, CLDFB_NO_CHANNELS_MAX );
mvr2r( renderConfig.directivity, hRenderConfig->directivity, 3 * MAX_NUM_OBJECTS );
+#ifdef FIX_1053_REVERB_RECONFIGURATION
+ mvr2r( renderConfig.distAtt, hRenderConfig->distAtt, 3 );
+#endif
hRenderConfig->roomAcoustics.use_er = 0;
if ( renderConfig.roomAcoustics.use_er == 1 )
@@ -7564,7 +7571,7 @@ static ivas_error getSamplesInternal(
&bits,
Cldfb_RealBuffer_Binaural,
Cldfb_ImagBuffer_Binaural,
- ( const int16_t )( ( BINAURAL_MAXBANDS * hIvasRend->sampleRateOut ) / 48000 ),
+ (const int16_t) ( ( BINAURAL_MAXBANDS * hIvasRend->sampleRateOut ) / 48000 ),
tmpBinaural,
1,
cldfb_in_flag,
diff --git a/lib_util/aeid_file_reader.c b/lib_util/aeid_file_reader.c
new file mode 100644
index 000000000..83dd4b4e1
--- /dev/null
+++ b/lib_util/aeid_file_reader.c
@@ -0,0 +1,185 @@
+/******************************************************************************************************
+
+ (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"
+#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;
+}
diff --git a/lib_util/aeid_file_reader.h b/lib_util/aeid_file_reader.h
new file mode 100644
index 000000000..2e7c32094
--- /dev/null
+++ b/lib_util/aeid_file_reader.h
@@ -0,0 +1,89 @@
+/******************************************************************************************************
+
+ (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 28b282994f18dcd2ee406536f25259a5786980eb Mon Sep 17 00:00:00 2001
From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com>
Date: Thu, 25 Sep 2025 14:35:10 +0200
Subject: [PATCH 2/4] Marked MR as ready, restart pipeline
--
GitLab
From fb77c63f5d99f96a644efdf246394b09e8effe77 Mon Sep 17 00:00:00 2001
From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com>
Date: Thu, 25 Sep 2025 14:42:06 +0200
Subject: [PATCH 3/4] clang patch
---
lib_rend/lib_rend.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c
index 80cde315c..ad29c6c1c 100644
--- a/lib_rend/lib_rend.c
+++ b/lib_rend/lib_rend.c
@@ -7571,7 +7571,7 @@ static ivas_error getSamplesInternal(
&bits,
Cldfb_RealBuffer_Binaural,
Cldfb_ImagBuffer_Binaural,
- (const int16_t) ( ( BINAURAL_MAXBANDS * hIvasRend->sampleRateOut ) / 48000 ),
+ ( const int16_t )( ( BINAURAL_MAXBANDS * hIvasRend->sampleRateOut ) / 48000 ),
tmpBinaural,
1,
cldfb_in_flag,
--
GitLab
From 11d2f295a3740a42af9a2dc6d63e0e7118494435 Mon Sep 17 00:00:00 2001
From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com>
Date: Fri, 26 Sep 2025 10:10:41 +0200
Subject: [PATCH 4/4] retarget build to correct windows sdk version
---
Workspace_msvc/decoder.vcxproj | 2 +-
Workspace_msvc/encoder.vcxproj | 2 +-
Workspace_msvc/isar_post_rend.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 +-
12 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/Workspace_msvc/decoder.vcxproj b/Workspace_msvc/decoder.vcxproj
index 363630d54..c124382c9 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 03e4e7af1..309dc1525 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 e44bc448a..170ff2054 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_com.vcxproj b/Workspace_msvc/lib_com.vcxproj
index 10f07db06..c28b36a14 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 36f156d8d..e7845e30d 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 2006cdcf4..3c7ea3e59 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 792450dad..ba0c4c9b6 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 b7194e241..5bee82704 100644
--- a/Workspace_msvc/lib_isar.vcxproj
+++ b/Workspace_msvc/lib_isar.vcxproj
@@ -14,7 +14,7 @@
lib_isar
{869A305E-D99E-4C3A-BDB3-AA57ABCCE619}
evs_dec
- 10.0.19041.0
+ 10.0.17763.0
StaticLibrary
diff --git a/Workspace_msvc/lib_lc3plus.vcxproj b/Workspace_msvc/lib_lc3plus.vcxproj
index c0098813f..eb2a91d36 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 3ae4061a0..27d4a19a6 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 edc8bd9ae..79e5545f3 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 6083d6848..0a7c72a16 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