diff --git a/Workspace_msvc/decoder.vcxproj b/Workspace_msvc/decoder.vcxproj
index 00e29933a4ad9d6b08c9a554c2a275ac7799ff89..c124382c9c04fb2b561082fae8210a5cebc0a3b1 100644
--- a/Workspace_msvc/decoder.vcxproj
+++ b/Workspace_msvc/decoder.vcxproj
@@ -173,4 +173,4 @@
-
+
\ No newline at end of file
diff --git a/Workspace_msvc/encoder.vcxproj b/Workspace_msvc/encoder.vcxproj
index 122e3e4e09e73ab0f184cd5261d8b344475b97f9..309dc15253dc51c5654f65f18cb9ba6ec6e78835 100644
--- a/Workspace_msvc/encoder.vcxproj
+++ b/Workspace_msvc/encoder.vcxproj
@@ -177,4 +177,4 @@
-
+
\ No newline at end of file
diff --git a/Workspace_msvc/lib_com.vcxproj b/Workspace_msvc/lib_com.vcxproj
index d53a28442a074c213f20b8143ede2214ffc413ac..c28b36a1454bdb9bd3245a0ce9050d258602a13a 100644
--- a/Workspace_msvc/lib_com.vcxproj
+++ b/Workspace_msvc/lib_com.vcxproj
@@ -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 cedf3d5adca7e5a9be0da23df1f94d036637e6c7..e7845e30dcc521edb3b4dbc085b51b5ad892680b 100644
--- a/Workspace_msvc/lib_debug.vcxproj
+++ b/Workspace_msvc/lib_debug.vcxproj
@@ -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 fe4e468508c10a9afd49a6964e309ece6598b75c..3c7ea3e597de37d9377fc8ad745a158d37ca713c 100644
--- a/Workspace_msvc/lib_dec.vcxproj
+++ b/Workspace_msvc/lib_dec.vcxproj
@@ -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 a0b2a2b1a5417d33858a354453a0e09c328ac868..ba0c4c9b6f94cbc5af1499ac5c1143fc2a28e611 100644
--- a/Workspace_msvc/lib_enc.vcxproj
+++ b/Workspace_msvc/lib_enc.vcxproj
@@ -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 fceeb731ced2445a5434805d422d30654718782a..5bee827041dc1972467edee3601f784b4573bba5 100644
--- a/Workspace_msvc/lib_isar.vcxproj
+++ b/Workspace_msvc/lib_isar.vcxproj
@@ -197,4 +197,4 @@
-
+
\ No newline at end of file
diff --git a/Workspace_msvc/lib_rend.vcxproj.filters b/Workspace_msvc/lib_rend.vcxproj.filters
index 4707a48b241d698f57e8e1cf11ff7eea50ca2dbf..63e83fc9b5938a8550c46a0c8ffb8fd79aa1f6eb 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 91d7a11b39741fd8000c813483978eba5df1648d..79e5545f3fee266b8433f1b74a1926d40b570aa5 100644
--- a/Workspace_msvc/lib_util.vcxproj
+++ b/Workspace_msvc/lib_util.vcxproj
@@ -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 a3d0f24b415c63da4528a8d15f4a30a014e355a1..0a7c72a16cac7af074424ab02179cb616f9b3e23 100644
--- a/Workspace_msvc/renderer.vcxproj
+++ b/Workspace_msvc/renderer.vcxproj
@@ -182,4 +182,4 @@
-
+
\ No newline at end of file
diff --git a/apps/decoder.c b/apps/decoder.c
index 41a737c46dce8e910b02e0f11595644dc95ff2a4..875f6de74e03d9a9821b0f78b75c9b9a4340faac 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 b843a718b15f1c56af992d64b81b8491c14c98f8..771acd8c49b12fdc9bd1266ca21c5aa59df3fe4f 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 5c8b5cdce2b6b0e37c05de9e1af4d3c5cbd88bfc..3429277fee6f182d10792f4639c6041fdb440b61 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 628421352a518481a370efdc58825a0cbe25c72a..ad29c6c1c0ee7d2b3b26816053f860904fcac077 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 )
diff --git a/lib_util/aeid_file_reader.c b/lib_util/aeid_file_reader.c
new file mode 100644
index 0000000000000000000000000000000000000000..83dd4b4e1857595b2ec3774484592b1ef69c80f0
--- /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 0000000000000000000000000000000000000000..2e7c3209447f85bc13ae7db77f335c9efd6eebc0
--- /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 */