From b8c12c0fae88316c7c58f65fcac82aacaf806ba8 Mon Sep 17 00:00:00 2001 From: Jouni Paulus Date: Mon, 30 Oct 2023 16:15:32 +0100 Subject: [PATCH] align the call and implementation of the function determining MASA EXT outtput filename. switch: FIX_889_MASA_FILE_WRITER_OPEN --- lib_com/options.h | 1 + lib_util/masa_file_writer.c | 21 ++++++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 54389fefef..1517e1655b 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -153,6 +153,7 @@ #define FIX_879_USAN_ERROR_IN_MASA_DECODING /* FhG: Issue 879 : avoid arithmetic with NULL pointer in the DirAC decoder to fix USAN error */ #define FIX_740_MASA_PREREND_VALIDITY_CHECK /* Nokia: issue 740: fix incorrect validity check in lib_rend to allow use of MASA prerenderer */ +#define FIX_889_MASA_FILE_WRITER_OPEN /* Nokia: issue #889: mismatch in function definition and use */ /* #################### End BE switches ################################## */ diff --git a/lib_util/masa_file_writer.c b/lib_util/masa_file_writer.c index 8b063fe282..0a598f4ea7 100644 --- a/lib_util/masa_file_writer.c +++ b/lib_util/masa_file_writer.c @@ -66,13 +66,27 @@ struct MasaFileWriter *-----------------------------------------------------------------------*/ static void getExtMasaMetadataFileName( - const char *outputWavFilename, /* i : name of the output audio file */ + const char *outputWavFilename, /* i : name of the output audio file */ +#ifdef FIX_889_MASA_FILE_WRITER_OPEN + char *metadata_filename, /* o : name of the output MASA metadata file */ + int32_t max_name_len /* i : size of metadata_filename in chars */ +#else char metadata_filename[IVAS_MAX_NUM_OBJECTS][FILENAME_MAX - 12] /* o : name of the output masa metadata file */ +#endif ) { char ext_meta[5]; /* sizeof( ext_meta ) accounts for terminating NULL, don't subtract extra 1 */ +#ifdef FIX_889_MASA_FILE_WRITER_OPEN + const int32_t maxNameLenWithoutExt = max_name_len - (int32_t) sizeof( ext_meta ); + strncpy( metadata_filename, outputWavFilename, maxNameLenWithoutExt ); + snprintf( ext_meta, sizeof( ext_meta ), ".met" ); + + /* strlen( metadata_filename[0] ) doesn't account for terminating NULL, subtract extra 1 */ + const int32_t maxNumCharactersToAppend = max_name_len - (int32_t) strlen( metadata_filename ) - 1; + strncat( metadata_filename, ext_meta, maxNumCharactersToAppend ); +#else const int32_t maxNameLenWithoutExt = sizeof( metadata_filename[0] ) - sizeof( ext_meta ); strncpy( metadata_filename[0], outputWavFilename, maxNameLenWithoutExt ); snprintf( ext_meta, sizeof( ext_meta ), ".met" ); @@ -80,6 +94,7 @@ static void getExtMasaMetadataFileName( /* strlen( metadata_filename[0] ) doesn't account for terminating NULL, subtract extra 1 */ const int32_t maxNumCharactersToAppend = (int32_t) ( sizeof( metadata_filename[0] ) - strlen( metadata_filename[0] ) - 1 ); strncat( metadata_filename[0], ext_meta, maxNumCharactersToAppend ); +#endif return; } @@ -164,7 +179,11 @@ ivas_error MasaFileWriter_open( return IVAS_ERR_FAILED_FILE_OPEN; } +#ifdef FIX_889_MASA_FILE_WRITER_OPEN + getExtMasaMetadataFileName( outputWavFilename, filePath, FILENAME_MAX - 12 ); +#else getExtMasaMetadataFileName( outputWavFilename, &filePath ); +#endif file = fopen( filePath, "wb" ); -- GitLab