diff --git a/Workspace_msvc/lib_rend.vcxproj b/Workspace_msvc/lib_rend.vcxproj
index 13dc5e83c3a9d35a841e05dd245df67fff739c18..e0660f54cb03ef6a92e51b7a3a99af9b4e8eefa7 100644
--- a/Workspace_msvc/lib_rend.vcxproj
+++ b/Workspace_msvc/lib_rend.vcxproj
@@ -169,7 +169,7 @@
Neither
false
false
- ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_util;%(AdditionalIncludeDirectories)
+ ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;%(AdditionalIncludeDirectories)
_CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions)
true
diff --git a/apps/decoder.c b/apps/decoder.c
index 11d70adf280950564f4c3003f937038c5e128d50..b846e30829f94a5f1337925fb2d80ed79d415d56 100644
--- a/apps/decoder.c
+++ b/apps/decoder.c
@@ -1794,6 +1794,15 @@ cleanup:
#endif
#endif
+#ifdef MC_JBM
+#ifdef SUPPORT_JBM_TRACEFILE
+static ivas_error writeJbmTraceFileFrameWrapper( const void *data, void *writer )
+{
+ return JbmTraceFileWriter_writeFrame( data, writer );
+}
+#endif
+#endif
+
/*---------------------------------------------------------------------*
* decodeVoIP()
@@ -2042,6 +2051,7 @@ static ivas_error decodeVoIP(
if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, pcmBuf, systemTime_ms
#ifdef SUPPORT_JBM_TRACEFILE
,
+ writeJbmTraceFileFrameWrapper,
jbmTraceWriter
#endif
) ) != IVAS_ERR_OK )
diff --git a/lib_dec/lib_dec.c b/lib_dec/lib_dec.c
index 73343af1f24b2ad10c79adebde0552c149abef1e..818433ab5840e79243c295c5bf33ac21117b5893 100644
--- a/lib_dec/lib_dec.c
+++ b/lib_dec/lib_dec.c
@@ -1383,7 +1383,8 @@ ivas_error IVAS_DEC_VoIP_GetSamples(
#ifdef MC_JBM
#ifdef SUPPORT_JBM_TRACEFILE
,
- JbmTraceFileWriter *jbmTraceFileWriter
+ JbmTraceFileWriterFn jbmWriterFn,
+ void *jbmWriter
#endif
#endif
)
@@ -1604,12 +1605,12 @@ ivas_error IVAS_DEC_VoIP_GetSamples(
#ifdef MC_JBM
#ifdef SUPPORT_JBM_TRACEFILE
- /* jbmTraceFileWriter may be NULL if tracefile writing was not requested on CLI */
- if ( jbmTraceFileWriter != NULL )
+ /* jbmWriterFn and jbmWriter may be NULL if tracefile writing was not requested on CLI */
+ if ( jbmWriterFn != NULL && jbmWriter != NULL )
{
/* write JBM trace data entry */
store_JbmData( hVoIP, dataUnit, systemTimestamp_ms, extBufferedSamples, hDecoderConfig->output_Fs );
- if ( ( JbmTraceFileWriter_writeFrame( &hVoIP->JbmTraceData, jbmTraceFileWriter ) ) != IVAS_ERR_OK )
+ if ( ( jbmWriterFn( &hVoIP->JbmTraceData, jbmWriter ) ) != IVAS_ERR_OK )
{
fprintf( stderr, "\nError writing JBM Trace data to file\n" );
return IVAS_ERR_UNKNOWN;
diff --git a/lib_dec/lib_dec.h b/lib_dec/lib_dec.h
index a59407692592d3317bee7ef5367a5d279d7f26be..5d57d330a9a596803fdb812f17ed079016976f62 100644
--- a/lib_dec/lib_dec.h
+++ b/lib_dec/lib_dec.h
@@ -35,11 +35,6 @@
#include "common_api_types.h"
#include "ivas_error.h"
-#ifdef MC_JBM
-#ifdef SUPPORT_JBM_TRACEFILE
-#include "jbm_file_writer.h"
-#endif
-#endif
#include
#include
@@ -108,6 +103,13 @@ typedef enum _IVAS_DEC_BS_FORMAT
typedef struct IVAS_DEC *IVAS_DEC_HANDLE;
+#ifdef MC_JBM
+#ifdef SUPPORT_JBM_TRACEFILE
+/* Callback function for JBM tracefile writing */
+typedef ivas_error ( *JbmTraceFileWriterFn )( const void *data, void *writer );
+#endif
+#endif
+
/* clang-format off */
/*---------------------------------------------------------------------*
@@ -209,7 +211,8 @@ ivas_error IVAS_DEC_VoIP_GetSamples(
const uint32_t systemTimestamp_ms /* i : current system timestamp */
#ifdef MC_JBM
#ifdef SUPPORT_JBM_TRACEFILE
- , JbmTraceFileWriter *jbmWriter
+ , JbmTraceFileWriterFn jbmWriterFn,
+ void* jbmWriter
#endif
#endif
);