From a32b39e3f043f8ab8616748e56c1c2fdb77862af Mon Sep 17 00:00:00 2001 From: vaclav Date: Mon, 13 Jan 2025 15:33:48 +0100 Subject: [PATCH 1/3] issue 1255: restore object editing in JBM; under NONBE_FIX_1255_OBJ_EDIT_JBM --- apps/decoder.c | 6 +++--- lib_com/options.h | 2 ++ lib_dec/lib_dec.c | 9 ++++++++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/apps/decoder.c b/apps/decoder.c index 53acc14adf..68cb8a7438 100644 --- a/apps/decoder.c +++ b/apps/decoder.c @@ -3048,7 +3048,7 @@ static ivas_error decodeVoIP( bool bitstreamReadDone = false; - bool parameterAvailableForEditing = false; + bool parametersAvailableForEditing = false; uint16_t nSamplesRendered = 0; vec_pos_update = 0; @@ -3344,7 +3344,7 @@ static ivas_error decodeVoIP( while ( nSamplesRendered < nOutSamples ) { #ifdef SUPPORT_JBM_TRACEFILE - if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, writeJbmTraceFileFrameWrapper, jbmTraceWriter, &bitstreamReadDone, &nSamplesRendered, ¶meterAvailableForEditing, systemTime_ms ) ) != IVAS_ERR_OK ) + if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, writeJbmTraceFileFrameWrapper, jbmTraceWriter, &bitstreamReadDone, &nSamplesRendered, ¶metersAvailableForEditing, systemTime_ms ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, &bitstreamReadDone, &nSamplesRendered, ¶meterAvailableForEditing, systemTime_ms ) ) != IVAS_ERR_OK ) #endif @@ -3378,7 +3378,7 @@ static ivas_error decodeVoIP( } /* Object metadata editing */ - if ( arg.objEditEnabled && parameterAvailableForEditing == true ) + if ( arg.objEditEnabled && parametersAvailableForEditing == true ) { IVAS_EDITABLE_PARAMETERS editableParameters; diff --git a/lib_com/options.h b/lib_com/options.h index 9a99079a85..0e6b6d1ae1 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -181,6 +181,8 @@ #define NONBE_1217_OBJ_EDIT_FOA /* VA/Nokia: isse 1217: fix crash in object editing to FOA output in ParamISM */ #define NONBE_1230_DECODE_MASA_ISM_AZIMUTH_PREC_FROM_BASOP /* Nokia: Fixes ivas_decode_masaism_metadata decision logic change due to precision difference; this is the fix in floating point */ +#define NONBE_FIX_1255_OBJ_EDIT_JBM /* VA: issue 1255: restore object editing in JBM */ + /* ##################### End NON-BE switches ########################### */ /* ################## End DEVELOPMENT switches ######################### */ diff --git a/lib_dec/lib_dec.c b/lib_dec/lib_dec.c index 560f5673e5..4f4ce34d6d 100644 --- a/lib_dec/lib_dec.c +++ b/lib_dec/lib_dec.c @@ -3955,12 +3955,13 @@ ivas_error IVAS_DEC_VoIP_GetSamples( hIvasDec->nSamplesAvailableNext = hIvasDec->nSamplesFrame; hIvasDec->nSamplesRendered = 0; } - +#ifndef NONBE_FIX_1255_OBJ_EDIT_JBM if ( hIvasDec->hasBeenFedFirstGoodFrame ) { *parametersAvailableForEditing = true; return IVAS_ERR_OK; } +#endif } /* decode */ @@ -3996,6 +3997,12 @@ ivas_error IVAS_DEC_VoIP_GetSamples( hIvasDec->nSamplesFlushed = nSamplesFlushed_ref; *bitstreamReadDone = false; +#ifdef NONBE_FIX_1255_OBJ_EDIT_JBM + *parametersAvailableForEditing = true; + return IVAS_ERR_OK; +#else + +#endif } } -- GitLab From d6d107d7e8b8fa74fb53ebec1c3ac2bf7b488c36 Mon Sep 17 00:00:00 2001 From: vaclav Date: Mon, 13 Jan 2025 17:07:32 +0100 Subject: [PATCH 2/3] fix difference between 20 ms and 5 ms rendering in object editing and JBM --- apps/decoder.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/apps/decoder.c b/apps/decoder.c index 68cb8a7438..ba340ce55a 100644 --- a/apps/decoder.c +++ b/apps/decoder.c @@ -202,7 +202,11 @@ static int16_t app_own_random( int16_t *seed ); static IVAS_DEC_FORCED_REND_MODE parseForcedRendModeDec( char *forcedRendModeChar ); #endif #ifdef FIX_1217_OBJECT_EDIT_FILE_INTERFACE +#ifdef NONBE_FIX_1255_OBJ_EDIT_JBM +static void do_object_editing( IVAS_EDITABLE_PARAMETERS *editableParameters, const int16_t num_subframes, ObjectEditFileReader *objectEditFileReader ); +#else static void do_object_editing( IVAS_EDITABLE_PARAMETERS *editableParameters, ObjectEditFileReader *objectEditFileReader ); +#endif #else static void do_object_editing( IVAS_EDITABLE_PARAMETERS *editableParameters ); #endif @@ -2471,7 +2475,11 @@ static ivas_error decodeG192( /* Do object metadata editing here ... */ #ifdef FIX_1217_OBJECT_EDIT_FILE_INTERFACE +#ifdef NONBE_FIX_1255_OBJ_EDIT_JBM + do_object_editing( &editableParameters, num_subframes, objectEditFileReader ); +#else do_object_editing( &editableParameters, objectEditFileReader ); +#endif #else do_object_editing( &editableParameters ); #endif @@ -3391,7 +3399,11 @@ static ivas_error decodeVoIP( /* Do object metadata editing here ... */ #ifdef FIX_1217_OBJECT_EDIT_FILE_INTERFACE +#ifdef NONBE_FIX_1255_OBJ_EDIT_JBM + do_object_editing( &editableParameters, num_subframes, objectEditFileReader ); +#else do_object_editing( &editableParameters, objectEditFileReader ); +#endif #else do_object_editing( &editableParameters ); #endif @@ -3696,6 +3708,9 @@ cleanup: static void do_object_editing( #ifdef FIX_1217_OBJECT_EDIT_FILE_INTERFACE IVAS_EDITABLE_PARAMETERS *editableParameters, +#ifdef NONBE_FIX_1255_OBJ_EDIT_JBM + const int16_t num_subframes, +#endif ObjectEditFileReader *objectEditFileReader ) #else IVAS_EDITABLE_PARAMETERS *editableParameters ) @@ -3794,7 +3809,12 @@ static void do_object_editing( /* breakover object gains */ for ( obj_idx = 0; obj_idx < editableParameters->num_obj; obj_idx++ ) { - editableParameters->ism_metadata[obj_idx].gain = 0.5f + (float) ( ( frame + obj_idx * 50 ) % 250 ) / 250.0f; +#ifdef NONBE_FIX_1255_OBJ_EDIT_JBM + editableParameters->ism_metadata[obj_idx].gain = 0.5f + (float) ( ( ( frame * num_subframes / 4 ) + obj_idx * 50 ) % 250 ) / 250.0f; + +#else + editableParameters->ism_metadata[obj_idx].gain = 0.5f + (float) ( ( frame + obj_idx * 50 ) % 250 ) / 250.0f; +#endif } editableParameters->gain_bed = 0.5f; -- GitLab From 2a99a2b65c42ade95206dc952f64b4fbd2ad9ef3 Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 15 Jan 2025 11:46:47 +0100 Subject: [PATCH 3/3] fix 5/10/20 ms renderer differences for object editing file --- apps/decoder.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/apps/decoder.c b/apps/decoder.c index ba340ce55a..5e30ab73f9 100644 --- a/apps/decoder.c +++ b/apps/decoder.c @@ -3290,11 +3290,18 @@ static ivas_error decodeVoIP( #ifdef FIX_1217_OBJECT_EDIT_FILE_INTERFACE if ( arg.objEditEnabled && ( arg.objEditFileName != NULL ) ) { - if ( ( error = ObjectEditFileReader_readNextFrame( objectEditFileReader ) ) != IVAS_ERR_OK ) +#ifdef NONBE_FIX_1255_OBJ_EDIT_JBM + if ( frame * num_subframes % IVAS_MAX_PARAM_SPATIAL_SUBFRAMES == 0 ) { - fprintf( stderr, "\nError: could not read object editing instructions from file: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); - return error; +#endif + if ( ( error = ObjectEditFileReader_readNextFrame( objectEditFileReader ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError: could not read object editing instructions from file: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); + return error; + } +#ifdef NONBE_FIX_1255_OBJ_EDIT_JBM } +#endif } #endif @@ -3810,7 +3817,7 @@ static void do_object_editing( for ( obj_idx = 0; obj_idx < editableParameters->num_obj; obj_idx++ ) { #ifdef NONBE_FIX_1255_OBJ_EDIT_JBM - editableParameters->ism_metadata[obj_idx].gain = 0.5f + (float) ( ( ( frame * num_subframes / 4 ) + obj_idx * 50 ) % 250 ) / 250.0f; + editableParameters->ism_metadata[obj_idx].gain = 0.5f + (float) ( ( ( frame * num_subframes / IVAS_MAX_PARAM_SPATIAL_SUBFRAMES ) + obj_idx * 50 ) % 250 ) / 250.0f; #else editableParameters->ism_metadata[obj_idx].gain = 0.5f + (float) ( ( frame + obj_idx * 50 ) % 250 ) / 250.0f; -- GitLab