From 98e7e8ff828847b5b53264ecebf20acda2fd58bb Mon Sep 17 00:00:00 2001 From: vaclav Date: Mon, 16 Dec 2024 14:45:44 +0100 Subject: [PATCH 1/6] self-test: add object editing testcases --- scripts/config/self_test.prm | 14 ++++++++++++++ scripts/config/self_test_ltv.prm | 13 +++++++++++++ 2 files changed, 27 insertions(+) diff --git a/scripts/config/self_test.prm b/scripts/config/self_test.prm index ca4ee1880f..d8c6b634d6 100644 --- a/scripts/config/self_test.prm +++ b/scripts/config/self_test.prm @@ -1947,3 +1947,17 @@ eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_10pct.g // OSBA 3OA 4ISM at 512 kbps, 48kHz in, 48kHz out, BINAURAL_ROOM_REVERB out ../IVAS_cod -ism_sba 4 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 512000 48 testv/stvOSBA_4ISM_3OA48c.wav bit ../IVAS_dec -render_config testv/rend_config_hospital_patientroom.cfg BINAURAL_ROOM_REVERB 48 bit testv/stvOSBA_4ISM_3OA48c.wav_BINAURAL_ROOM_REVERB_512000_48-48_custom_configuration.tst + + + +// 3 ISM with extended metadata bitrate switching, 48kHz in, 48kHz out, BINAURAL out, object editing +../IVAS_cod -ism +3 testv/stvISM1.csv null testv/stvISM3.csv switchPaths/sw_24k4_256k.bin 48 testv/stv3ism48s.wav bit +../IVAS_dec -obj_edit BINAURAL 48 bit testv/stv3ism48s.wav_brate_sw_48-48_BINAURAL_ObjEdit.tst + +// OMASA 2Dir2TC 2ISM bitrate switching, 48kHz in, 48kHz out, BINAURAL out, object editing +../IVAS_cod -ism_masa 2 2 testv/stvOMASA_2ISM_2MASA2TC48c_ISM1.csv null testv/stvOMASA_2ISM_2MASA2TC48c.met switchPaths/sw_24k4_256k.bin 48 testv/stvOMASA_2ISM_2MASA2TC48c.wav bit +../IVAS_dec -obj_edit BINAURAL 48 bit testv/stvOMASA_2ISM_2MASA2TC48c.wav_brate_sw_48-48_BINAURAL_ObjEdit.tst + +// OSBA FOA 3ISM bitrate switching 48kHz in, 48kHz out, BINAURAL out, object editing +../IVAS_cod -ism_sba 2 1 testv/stvISM1.csv null switchPaths/sw_24k4_256k.bin 48 testv/stvOSBA_2ISM_FOA48c.wav bit +../IVAS_dec -obj_edit BINAURAL 48 bit testv/stvOSBA_2ISM_FOA48c.wav_brate_sw_48-48_BINAURAL_ObjEdit.tst diff --git a/scripts/config/self_test_ltv.prm b/scripts/config/self_test_ltv.prm index 9b4df02363..e613f1a75c 100644 --- a/scripts/config/self_test_ltv.prm +++ b/scripts/config/self_test_ltv.prm @@ -1946,3 +1946,16 @@ eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_10pct.g ../IVAS_cod -ism_sba 4 3 testv/ltvISM1.csv testv/ltvISM2.csv testv/ltvISM3.csv testv/ltvISM4.csv 512000 48 testv/ltv48_OSBA_4ISM_HOA3.wav bit ../IVAS_dec -render_config testv/rend_config_hospital_patientroom.cfg BINAURAL_ROOM_REVERB 48 bit testv/ltv48_OSBA_4ISM_HOA3.wav_BINAURAL_ROOM_REVERB_512000_48-48_custom_configuration.tst + + +// 3 ISM with extended metadata bitrate switching, 48kHz in, 48kHz out, BINAURAL out, object editing +../IVAS_cod -ism +3 testv/ltvISM1.csv null testv/stvISM3.csv switchPaths/sw_24k4_256k.bin 48 testv/stv3ism48s.wav bit +../IVAS_dec -obj_edit BINAURAL 48 bit testv/stv3ism48s.wav_brate_sw_48-48_BINAURAL_ObjEdit.tst + +// OMASA 2Dir2TC 2ISM bitrate switching, 48kHz in, 48kHz out, BINAURAL out, object editing +../IVAS_cod -ism_masa 2 2 testv/ltv48_OMASA_2ISM_2TC_ISM1.csv null testv/ltv48_OMASA_2ISM_2TC.met switchPaths/sw_24k4_256k.bin 48 testv/ltv48_OMASA_2ISM_2TC.wav bit +../IVAS_dec -obj_edit BINAURAL 48 bit testv/ltv48_OMASA_2ISM_2TC.wav_brate_sw_48-48_BINAURAL_ObjEdit.tst + +// OSBA FOA 3ISM bitrate switching 48kHz in, 48kHz out, BINAURAL out, object editing +../IVAS_cod -ism_sba 2 1 testv/ltvISM1.csv null switchPaths/sw_24k4_256k.bin 48 testv/ltv48_OSBA_2ISM_FOA.wav bit +../IVAS_dec -obj_edit BINAURAL 48 bit testv/ltv48_OSBA_2ISM_FOA.wav_brate_sw_48-48_BINAURAL_ObjEdit.tst -- GitLab From 03786e8c5b8151e06c90675884719d23e5505d20 Mon Sep 17 00:00:00 2001 From: vaclav Date: Mon, 16 Dec 2024 14:59:32 +0100 Subject: [PATCH 2/6] fix folder path --- scripts/config/self_test.prm | 6 +++--- scripts/config/self_test_ltv.prm | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/scripts/config/self_test.prm b/scripts/config/self_test.prm index d8c6b634d6..d520d0e206 100644 --- a/scripts/config/self_test.prm +++ b/scripts/config/self_test.prm @@ -1951,13 +1951,13 @@ eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_10pct.g // 3 ISM with extended metadata bitrate switching, 48kHz in, 48kHz out, BINAURAL out, object editing -../IVAS_cod -ism +3 testv/stvISM1.csv null testv/stvISM3.csv switchPaths/sw_24k4_256k.bin 48 testv/stv3ism48s.wav bit +../IVAS_cod -ism +3 testv/stvISM1.csv null testv/stvISM3.csv ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/stv3ism48s.wav bit ../IVAS_dec -obj_edit BINAURAL 48 bit testv/stv3ism48s.wav_brate_sw_48-48_BINAURAL_ObjEdit.tst // OMASA 2Dir2TC 2ISM bitrate switching, 48kHz in, 48kHz out, BINAURAL out, object editing -../IVAS_cod -ism_masa 2 2 testv/stvOMASA_2ISM_2MASA2TC48c_ISM1.csv null testv/stvOMASA_2ISM_2MASA2TC48c.met switchPaths/sw_24k4_256k.bin 48 testv/stvOMASA_2ISM_2MASA2TC48c.wav bit +../IVAS_cod -ism_masa 2 2 testv/stvOMASA_2ISM_2MASA2TC48c_ISM1.csv null testv/stvOMASA_2ISM_2MASA2TC48c.met ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/stvOMASA_2ISM_2MASA2TC48c.wav bit ../IVAS_dec -obj_edit BINAURAL 48 bit testv/stvOMASA_2ISM_2MASA2TC48c.wav_brate_sw_48-48_BINAURAL_ObjEdit.tst // OSBA FOA 3ISM bitrate switching 48kHz in, 48kHz out, BINAURAL out, object editing -../IVAS_cod -ism_sba 2 1 testv/stvISM1.csv null switchPaths/sw_24k4_256k.bin 48 testv/stvOSBA_2ISM_FOA48c.wav bit +../IVAS_cod -ism_sba 2 1 testv/stvISM1.csv null ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/stvOSBA_2ISM_FOA48c.wav bit ../IVAS_dec -obj_edit BINAURAL 48 bit testv/stvOSBA_2ISM_FOA48c.wav_brate_sw_48-48_BINAURAL_ObjEdit.tst diff --git a/scripts/config/self_test_ltv.prm b/scripts/config/self_test_ltv.prm index e613f1a75c..8fb5cbae8d 100644 --- a/scripts/config/self_test_ltv.prm +++ b/scripts/config/self_test_ltv.prm @@ -1949,13 +1949,13 @@ eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_10pct.g // 3 ISM with extended metadata bitrate switching, 48kHz in, 48kHz out, BINAURAL out, object editing -../IVAS_cod -ism +3 testv/ltvISM1.csv null testv/stvISM3.csv switchPaths/sw_24k4_256k.bin 48 testv/stv3ism48s.wav bit +../IVAS_cod -ism +3 testv/ltvISM1.csv null testv/stvISM3.csv ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/stv3ism48s.wav bit ../IVAS_dec -obj_edit BINAURAL 48 bit testv/stv3ism48s.wav_brate_sw_48-48_BINAURAL_ObjEdit.tst // OMASA 2Dir2TC 2ISM bitrate switching, 48kHz in, 48kHz out, BINAURAL out, object editing -../IVAS_cod -ism_masa 2 2 testv/ltv48_OMASA_2ISM_2TC_ISM1.csv null testv/ltv48_OMASA_2ISM_2TC.met switchPaths/sw_24k4_256k.bin 48 testv/ltv48_OMASA_2ISM_2TC.wav bit +../IVAS_cod -ism_masa 2 2 testv/ltv48_OMASA_2ISM_2TC_ISM1.csv null testv/ltv48_OMASA_2ISM_2TC.met ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/ltv48_OMASA_2ISM_2TC.wav bit ../IVAS_dec -obj_edit BINAURAL 48 bit testv/ltv48_OMASA_2ISM_2TC.wav_brate_sw_48-48_BINAURAL_ObjEdit.tst // OSBA FOA 3ISM bitrate switching 48kHz in, 48kHz out, BINAURAL out, object editing -../IVAS_cod -ism_sba 2 1 testv/ltvISM1.csv null switchPaths/sw_24k4_256k.bin 48 testv/ltv48_OSBA_2ISM_FOA.wav bit +../IVAS_cod -ism_sba 2 1 testv/ltvISM1.csv null ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/ltv48_OSBA_2ISM_FOA.wav bit ../IVAS_dec -obj_edit BINAURAL 48 bit testv/ltv48_OSBA_2ISM_FOA.wav_brate_sw_48-48_BINAURAL_ObjEdit.tst -- GitLab From 3d37818ee467bef591221874876ba7571d9071d2 Mon Sep 17 00:00:00 2001 From: vaclav Date: Mon, 16 Dec 2024 15:19:55 +0100 Subject: [PATCH 3/6] fix testv name --- scripts/config/self_test.prm | 4 ++-- scripts/config/self_test_ltv.prm | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/config/self_test.prm b/scripts/config/self_test.prm index d520d0e206..543683bd54 100644 --- a/scripts/config/self_test.prm +++ b/scripts/config/self_test.prm @@ -1951,8 +1951,8 @@ eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_10pct.g // 3 ISM with extended metadata bitrate switching, 48kHz in, 48kHz out, BINAURAL out, object editing -../IVAS_cod -ism +3 testv/stvISM1.csv null testv/stvISM3.csv ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/stv3ism48s.wav bit -../IVAS_dec -obj_edit BINAURAL 48 bit testv/stv3ism48s.wav_brate_sw_48-48_BINAURAL_ObjEdit.tst +../IVAS_cod -ism +3 testv/stvISM1.csv null testv/stvISM3.csv ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/stv3ISM48s.wav bit +../IVAS_dec -obj_edit BINAURAL 48 bit testv/stv3ISM48s.wav_brate_sw_48-48_BINAURAL_ObjEdit.tst // OMASA 2Dir2TC 2ISM bitrate switching, 48kHz in, 48kHz out, BINAURAL out, object editing ../IVAS_cod -ism_masa 2 2 testv/stvOMASA_2ISM_2MASA2TC48c_ISM1.csv null testv/stvOMASA_2ISM_2MASA2TC48c.met ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/stvOMASA_2ISM_2MASA2TC48c.wav bit diff --git a/scripts/config/self_test_ltv.prm b/scripts/config/self_test_ltv.prm index 8fb5cbae8d..75afb08cac 100644 --- a/scripts/config/self_test_ltv.prm +++ b/scripts/config/self_test_ltv.prm @@ -1949,8 +1949,8 @@ eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_10pct.g // 3 ISM with extended metadata bitrate switching, 48kHz in, 48kHz out, BINAURAL out, object editing -../IVAS_cod -ism +3 testv/ltvISM1.csv null testv/stvISM3.csv ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/stv3ism48s.wav bit -../IVAS_dec -obj_edit BINAURAL 48 bit testv/stv3ism48s.wav_brate_sw_48-48_BINAURAL_ObjEdit.tst +../IVAS_cod -ism +3 testv/ltvISM1.csv null testv/stvISM3.csv ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/ltv48_3ISM.wav bit +../IVAS_dec -obj_edit BINAURAL 48 bit testv/ltv48_3ISM.wav_brate_sw_48-48_BINAURAL_ObjEdit.tst // OMASA 2Dir2TC 2ISM bitrate switching, 48kHz in, 48kHz out, BINAURAL out, object editing ../IVAS_cod -ism_masa 2 2 testv/ltv48_OMASA_2ISM_2TC_ISM1.csv null testv/ltv48_OMASA_2ISM_2TC.met ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/ltv48_OMASA_2ISM_2TC.wav bit -- GitLab From d4794240f896ff6f04ab1db8134bb04562f06318 Mon Sep 17 00:00:00 2001 From: vaclav Date: Mon, 16 Dec 2024 16:51:28 +0100 Subject: [PATCH 4/6] issue 1217: do object editing only when objects metadata is available; under NONBE_1217_INIT_OBJ_EDIT --- lib_com/options.h | 1 + lib_dec/lib_dec.c | 237 ++++++++++++++++++++++++++-------------------- 2 files changed, 133 insertions(+), 105 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index e31bf15805..f1519081cc 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -171,6 +171,7 @@ /* all switches in this category should start with "NONBE_" */ #define NONBE_FIX_1176_OSBA_REVERB_JBM_ASAN_ERROR /* Ericsson: Issue 1176, fix in TDREND_firfilt for subframes shorter than the filter length */ +#define NONBE_1217_INIT_OBJ_EDIT /* VA: issue 1217: do object editing only when objects metadata is available */ /* ##################### End NON-BE switches ########################### */ diff --git a/lib_dec/lib_dec.c b/lib_dec/lib_dec.c index 0208a4d761..6de470f829 100644 --- a/lib_dec/lib_dec.c +++ b/lib_dec/lib_dec.c @@ -1213,53 +1213,53 @@ ivas_error IVAS_DEC_GetEditableParameters( ) { int16_t dirac_read_idx, obj; + Decoder_Struct *st_ivas; + ISM_MODE ism_mode; if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL || hIvasEditableParameters == NULL ) { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } - if ( !( hIvasDec->st_ivas->ivas_format == ISM_FORMAT || - hIvasDec->st_ivas->ivas_format == SBA_ISM_FORMAT || - hIvasDec->st_ivas->ivas_format == MASA_ISM_FORMAT || - ( hIvasDec->st_ivas->ivas_format == MASA_FORMAT && hIvasDec->st_ivas->nchan_ism > 0 ) ) ) - { - return IVAS_ERROR( IVAS_ERR_OBJECTS_EDITING_NOT_SUPPORTED, "Object editing is not supported in this operation mode." ); - } + st_ivas = hIvasDec->st_ivas; + ism_mode = st_ivas->ism_mode; - if ( hIvasEditableParameters == NULL || hIvasDec == NULL || hIvasDec->st_ivas == NULL ) + if ( !( st_ivas->ivas_format == ISM_FORMAT || + st_ivas->ivas_format == SBA_ISM_FORMAT || + st_ivas->ivas_format == MASA_ISM_FORMAT || + ( st_ivas->ivas_format == MASA_FORMAT && st_ivas->nchan_ism > 0 ) ) ) { - return IVAS_ERR_UNEXPECTED_NULL_POINTER; + return IVAS_ERROR( IVAS_ERR_OBJECTS_EDITING_NOT_SUPPORTED, "Object editing is not supported in this operation mode." ); } hIvasEditableParameters->gain_bed = 1.0f; - hIvasEditableParameters->num_obj = hIvasDec->st_ivas->nchan_ism; - if ( hIvasDec->st_ivas->ivas_format == ISM_FORMAT || hIvasDec->st_ivas->ivas_format == SBA_ISM_FORMAT ) + hIvasEditableParameters->num_obj = st_ivas->nchan_ism; + if ( st_ivas->ivas_format == ISM_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT ) { - if ( hIvasDec->st_ivas->ism_mode == ISM_MODE_DISC || hIvasDec->st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + if ( ism_mode == ISM_MODE_DISC || ism_mode == ISM_SBA_MODE_DISC ) { for ( obj = 0; obj < hIvasEditableParameters->num_obj; obj++ ) { - hIvasEditableParameters->ism_metadata[obj].azimuth = hIvasDec->st_ivas->hIsmMetaData[obj]->azimuth; - hIvasEditableParameters->ism_metadata[obj].elevation = hIvasDec->st_ivas->hIsmMetaData[obj]->elevation; - hIvasEditableParameters->ism_metadata[obj].yaw = hIvasDec->st_ivas->hIsmMetaData[obj]->yaw; - hIvasEditableParameters->ism_metadata[obj].pitch = hIvasDec->st_ivas->hIsmMetaData[obj]->pitch; - hIvasEditableParameters->ism_metadata[obj].radius = hIvasDec->st_ivas->hIsmMetaData[obj]->radius; - hIvasEditableParameters->ism_metadata[obj].gain = hIvasDec->st_ivas->hIsmMetaData[obj]->edited_gain; - hIvasEditableParameters->ism_metadata[obj].non_diegetic_flag = hIvasDec->st_ivas->hIsmMetaData[obj]->non_diegetic_flag; + hIvasEditableParameters->ism_metadata[obj].azimuth = st_ivas->hIsmMetaData[obj]->azimuth; + hIvasEditableParameters->ism_metadata[obj].elevation = st_ivas->hIsmMetaData[obj]->elevation; + hIvasEditableParameters->ism_metadata[obj].yaw = st_ivas->hIsmMetaData[obj]->yaw; + hIvasEditableParameters->ism_metadata[obj].pitch = st_ivas->hIsmMetaData[obj]->pitch; + hIvasEditableParameters->ism_metadata[obj].radius = st_ivas->hIsmMetaData[obj]->radius; + hIvasEditableParameters->ism_metadata[obj].gain = st_ivas->hIsmMetaData[obj]->edited_gain; + hIvasEditableParameters->ism_metadata[obj].non_diegetic_flag = st_ivas->hIsmMetaData[obj]->non_diegetic_flag; } - if ( hIvasDec->st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + if ( ism_mode == ISM_SBA_MODE_DISC ) { hIvasEditableParameters->gain_bed = 1.0f; } } - else if ( hIvasDec->st_ivas->ism_mode == ISM_MODE_PARAM ) + else if ( ism_mode == ISM_MODE_PARAM ) { for ( obj = 0; obj < hIvasEditableParameters->num_obj; obj++ ) { - hIvasEditableParameters->ism_metadata[obj].azimuth = hIvasDec->st_ivas->hParamIsmDec->azimuth_values[obj]; - hIvasEditableParameters->ism_metadata[obj].elevation = hIvasDec->st_ivas->hParamIsmDec->elevation_values[obj]; + hIvasEditableParameters->ism_metadata[obj].azimuth = st_ivas->hParamIsmDec->azimuth_values[obj]; + hIvasEditableParameters->ism_metadata[obj].elevation = st_ivas->hParamIsmDec->elevation_values[obj]; hIvasEditableParameters->ism_metadata[obj].yaw = 0.0f; hIvasEditableParameters->ism_metadata[obj].pitch = 0.0f; hIvasEditableParameters->ism_metadata[obj].radius = 0.0f; @@ -1267,7 +1267,7 @@ ivas_error IVAS_DEC_GetEditableParameters( hIvasEditableParameters->ism_metadata[obj].non_diegetic_flag = 0; } } - else if ( hIvasDec->st_ivas->ism_mode == ISM_MODE_NONE ) + else if ( ism_mode == ISM_MODE_NONE ) { hIvasEditableParameters->num_obj = 0; } @@ -1278,31 +1278,39 @@ ivas_error IVAS_DEC_GetEditableParameters( } #endif } - else if ( hIvasDec->st_ivas->ivas_format == MASA_ISM_FORMAT && ( hIvasDec->st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || hIvasDec->st_ivas->ism_mode == ISM_MASA_MODE_DISC ) ) +#ifdef NONBE_1217_INIT_OBJ_EDIT + else if ( st_ivas->ivas_format == MASA_ISM_FORMAT || ( st_ivas->ivas_format == MASA_FORMAT && st_ivas->nchan_ism > 0 ) ) +#else + else if ( st_ivas->ivas_format == MASA_ISM_FORMAT && ( ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || ism_mode == ISM_MASA_MODE_DISC ) ) +#endif { /* object editing possible only in two highest OMASA modes */ - if ( hIvasDec->st_ivas->ism_mode == ISM_MASA_MODE_DISC ) + if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC ) { for ( obj = 0; obj < hIvasEditableParameters->num_obj; obj++ ) { - hIvasEditableParameters->ism_metadata[obj].azimuth = hIvasDec->st_ivas->hIsmMetaData[obj]->azimuth; - hIvasEditableParameters->ism_metadata[obj].elevation = hIvasDec->st_ivas->hIsmMetaData[obj]->elevation; - hIvasEditableParameters->ism_metadata[obj].yaw = hIvasDec->st_ivas->hIsmMetaData[obj]->yaw; - hIvasEditableParameters->ism_metadata[obj].pitch = hIvasDec->st_ivas->hIsmMetaData[obj]->pitch; - hIvasEditableParameters->ism_metadata[obj].radius = hIvasDec->st_ivas->hIsmMetaData[obj]->radius; + hIvasEditableParameters->ism_metadata[obj].azimuth = st_ivas->hIsmMetaData[obj]->azimuth; + hIvasEditableParameters->ism_metadata[obj].elevation = st_ivas->hIsmMetaData[obj]->elevation; + hIvasEditableParameters->ism_metadata[obj].yaw = st_ivas->hIsmMetaData[obj]->yaw; + hIvasEditableParameters->ism_metadata[obj].pitch = st_ivas->hIsmMetaData[obj]->pitch; + hIvasEditableParameters->ism_metadata[obj].radius = st_ivas->hIsmMetaData[obj]->radius; /* reset the otherwise unused "gain" field for the object */ hIvasDec->st_ivas->hIsmMetaData[obj]->edited_gain = 1.0f; - hIvasEditableParameters->ism_metadata[obj].gain = hIvasDec->st_ivas->hIsmMetaData[obj]->edited_gain; - hIvasEditableParameters->ism_metadata[obj].non_diegetic_flag = hIvasDec->st_ivas->hIsmMetaData[obj]->non_diegetic_flag; + hIvasEditableParameters->ism_metadata[obj].gain = st_ivas->hIsmMetaData[obj]->edited_gain; + hIvasEditableParameters->ism_metadata[obj].non_diegetic_flag = st_ivas->hIsmMetaData[obj]->non_diegetic_flag; } } +#ifdef NONBE_1217_INIT_OBJ_EDIT + else if ( ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) +#else else +#endif { /* Handle MONO output */ - if ( hIvasDec->st_ivas->renderer_type != RENDERER_MONO_DOWNMIX ) + if ( st_ivas->renderer_type != RENDERER_MONO_DOWNMIX ) { - dirac_read_idx = hIvasDec->st_ivas->hSpatParamRendCom->render_to_md_map[hIvasDec->st_ivas->hSpatParamRendCom->subframes_rendered]; + dirac_read_idx = st_ivas->hSpatParamRendCom->render_to_md_map[st_ivas->hSpatParamRendCom->subframes_rendered]; } else { @@ -1311,19 +1319,31 @@ ivas_error IVAS_DEC_GetEditableParameters( for ( obj = 0; obj < hIvasEditableParameters->num_obj; obj++ ) { - hIvasEditableParameters->ism_metadata[obj].azimuth = hIvasDec->st_ivas->hMasaIsmData->azimuth_ism[obj][dirac_read_idx]; - hIvasEditableParameters->ism_metadata[obj].elevation = hIvasDec->st_ivas->hMasaIsmData->elevation_ism[obj][dirac_read_idx]; + hIvasEditableParameters->ism_metadata[obj].azimuth = st_ivas->hMasaIsmData->azimuth_ism[obj][dirac_read_idx]; + hIvasEditableParameters->ism_metadata[obj].elevation = st_ivas->hMasaIsmData->elevation_ism[obj][dirac_read_idx]; - hIvasEditableParameters->ism_metadata[obj].yaw = hIvasDec->st_ivas->hIsmMetaData[obj]->yaw; - hIvasEditableParameters->ism_metadata[obj].pitch = hIvasDec->st_ivas->hIsmMetaData[obj]->pitch; - hIvasEditableParameters->ism_metadata[obj].radius = hIvasDec->st_ivas->hIsmMetaData[obj]->radius; + hIvasEditableParameters->ism_metadata[obj].yaw = st_ivas->hIsmMetaData[obj]->yaw; + hIvasEditableParameters->ism_metadata[obj].pitch = st_ivas->hIsmMetaData[obj]->pitch; + hIvasEditableParameters->ism_metadata[obj].radius = st_ivas->hIsmMetaData[obj]->radius; /* reset the otherwise unused "gain" field for the object */ hIvasDec->st_ivas->hIsmMetaData[obj]->edited_gain = 1.0f; - hIvasEditableParameters->ism_metadata[obj].gain = hIvasDec->st_ivas->hIsmMetaData[obj]->edited_gain; - hIvasEditableParameters->ism_metadata[obj].non_diegetic_flag = hIvasDec->st_ivas->hIsmMetaData[obj]->non_diegetic_flag; + hIvasEditableParameters->ism_metadata[obj].gain = st_ivas->hIsmMetaData[obj]->edited_gain; + hIvasEditableParameters->ism_metadata[obj].non_diegetic_flag = st_ivas->hIsmMetaData[obj]->non_diegetic_flag; } } +#ifdef NONBE_1217_INIT_OBJ_EDIT + else if ( ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || ism_mode == ISM_MODE_NONE ) + { + hIvasEditableParameters->num_obj = 0; + } +#ifdef DEBUGGING + else + { + assert( 0 && "This should never happen!" ); + } +#endif +#endif } return IVAS_ERR_OK; @@ -1342,16 +1362,21 @@ ivas_error IVAS_DEC_SetEditableParameters( ) { int16_t dirac_read_idx, obj; + Decoder_Struct *st_ivas; + ISM_MODE ism_mode; if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } - if ( !( hIvasDec->st_ivas->ivas_format == ISM_FORMAT || - hIvasDec->st_ivas->ivas_format == SBA_ISM_FORMAT || - hIvasDec->st_ivas->ivas_format == MASA_ISM_FORMAT || - ( hIvasDec->st_ivas->ivas_format == MASA_FORMAT && hIvasDec->st_ivas->nchan_ism > 0 ) ) ) + st_ivas = hIvasDec->st_ivas; + ism_mode = st_ivas->ism_mode; + + if ( !( st_ivas->ivas_format == ISM_FORMAT || + st_ivas->ivas_format == SBA_ISM_FORMAT || + st_ivas->ivas_format == MASA_ISM_FORMAT || + ( st_ivas->ivas_format == MASA_FORMAT && st_ivas->nchan_ism > 0 ) ) ) { return IVAS_ERROR( IVAS_ERR_OBJECTS_EDITING_NOT_SUPPORTED, "Object editing no supported in this operation mode." ); } @@ -1362,85 +1387,87 @@ ivas_error IVAS_DEC_SetEditableParameters( } #ifdef DEBUGGING - assert( hIvasEditableParameters.num_obj == hIvasDec->st_ivas->nchan_ism ); + assert( hIvasEditableParameters.num_obj == st_ivas->nchan_ism ); #endif - if ( hIvasDec->st_ivas->ivas_format == ISM_FORMAT || hIvasDec->st_ivas->ivas_format == SBA_ISM_FORMAT ) + if ( st_ivas->ivas_format == ISM_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT ) { - if ( hIvasDec->st_ivas->ism_mode == ISM_MODE_DISC || hIvasDec->st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + if ( ism_mode == ISM_MODE_DISC || ism_mode == ISM_SBA_MODE_DISC ) { for ( obj = 0; obj < hIvasEditableParameters.num_obj; obj++ ) { - hIvasDec->st_ivas->hIsmMetaData[obj]->edited_azimuth = hIvasEditableParameters.ism_metadata[obj].azimuth; - hIvasDec->st_ivas->hIsmMetaData[obj]->edited_elevation = hIvasEditableParameters.ism_metadata[obj].elevation; - hIvasDec->st_ivas->hIsmMetaData[obj]->edited_radius = hIvasEditableParameters.ism_metadata[obj].radius; + st_ivas->hIsmMetaData[obj]->edited_azimuth = hIvasEditableParameters.ism_metadata[obj].azimuth; + st_ivas->hIsmMetaData[obj]->edited_elevation = hIvasEditableParameters.ism_metadata[obj].elevation; + st_ivas->hIsmMetaData[obj]->edited_radius = hIvasEditableParameters.ism_metadata[obj].radius; - hIvasDec->st_ivas->hIsmMetaData[obj]->edited_gain = hIvasEditableParameters.ism_metadata[obj].gain; + st_ivas->hIsmMetaData[obj]->edited_gain = hIvasEditableParameters.ism_metadata[obj].gain; - hIvasDec->st_ivas->hIsmMetaData[obj]->edited_yaw = hIvasEditableParameters.ism_metadata[obj].yaw; - hIvasDec->st_ivas->hIsmMetaData[obj]->edited_pitch = hIvasEditableParameters.ism_metadata[obj].pitch; + st_ivas->hIsmMetaData[obj]->edited_yaw = hIvasEditableParameters.ism_metadata[obj].yaw; + st_ivas->hIsmMetaData[obj]->edited_pitch = hIvasEditableParameters.ism_metadata[obj].pitch; - hIvasDec->st_ivas->hIsmMetaData[obj]->non_diegetic_flag = hIvasEditableParameters.ism_metadata[obj].non_diegetic_flag; + st_ivas->hIsmMetaData[obj]->non_diegetic_flag = hIvasEditableParameters.ism_metadata[obj].non_diegetic_flag; } - if ( hIvasDec->st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + if ( ism_mode == ISM_SBA_MODE_DISC ) { - hIvasDec->st_ivas->hSbaIsmData->gain_bed = hIvasEditableParameters.gain_bed; + st_ivas->hSbaIsmData->gain_bed = hIvasEditableParameters.gain_bed; } } - else if ( hIvasDec->st_ivas->ism_mode == ISM_MODE_PARAM ) + else if ( ism_mode == ISM_MODE_PARAM ) { for ( obj = 0; obj < hIvasEditableParameters.num_obj; obj++ ) { - hIvasDec->st_ivas->hParamIsmDec->edited_azimuth_values[obj] = hIvasEditableParameters.ism_metadata[obj].azimuth; - hIvasDec->st_ivas->hParamIsmDec->edited_elevation_values[obj] = hIvasEditableParameters.ism_metadata[obj].elevation; - hIvasDec->st_ivas->hMasaIsmData->gain_ism_edited[obj] = hIvasEditableParameters.ism_metadata[obj].gain; + st_ivas->hParamIsmDec->edited_azimuth_values[obj] = hIvasEditableParameters.ism_metadata[obj].azimuth; + st_ivas->hParamIsmDec->edited_elevation_values[obj] = hIvasEditableParameters.ism_metadata[obj].elevation; + st_ivas->hMasaIsmData->gain_ism_edited[obj] = hIvasEditableParameters.ism_metadata[obj].gain; /* Detect direction editing in Param-ISM mode */ - if ( fabsf( hIvasDec->st_ivas->hParamIsmDec->azimuth_values[obj] - hIvasEditableParameters.ism_metadata[obj].azimuth ) > OMASA_AZI_EDIT_THR || - fabsf( hIvasDec->st_ivas->hParamIsmDec->elevation_values[obj] - hIvasEditableParameters.ism_metadata[obj].elevation ) > OMASA_ELE_EDIT_THR ) + if ( fabsf( st_ivas->hParamIsmDec->azimuth_values[obj] - hIvasEditableParameters.ism_metadata[obj].azimuth ) > OMASA_AZI_EDIT_THR || + fabsf( st_ivas->hParamIsmDec->elevation_values[obj] - hIvasEditableParameters.ism_metadata[obj].elevation ) > OMASA_ELE_EDIT_THR ) { - hIvasDec->st_ivas->hMasaIsmData->ism_dir_is_edited[obj] = 1u; + st_ivas->hMasaIsmData->ism_dir_is_edited[obj] = 1u; } else { - hIvasDec->st_ivas->hMasaIsmData->ism_dir_is_edited[obj] = 0u; + st_ivas->hMasaIsmData->ism_dir_is_edited[obj] = 0u; } /* Detect gain editing in Param-ISM mode */ if ( fabsf( 1.0f - hIvasEditableParameters.ism_metadata[obj].gain ) > OMASA_GAIN_EDIT_THR ) { - hIvasDec->st_ivas->hMasaIsmData->ism_gain_is_edited[obj] = 1u; + st_ivas->hMasaIsmData->ism_gain_is_edited[obj] = 1u; } else { - hIvasDec->st_ivas->hMasaIsmData->ism_gain_is_edited[obj] = 0u; + st_ivas->hMasaIsmData->ism_gain_is_edited[obj] = 0u; } } /* MASA is not present with the ISM format */ - hIvasDec->st_ivas->hMasaIsmData->masa_gain_is_edited = 0u; + st_ivas->hMasaIsmData->masa_gain_is_edited = 0u; } - else if ( hIvasDec->st_ivas->ism_mode == ISM_MODE_NONE ) + else if ( ism_mode == ISM_MODE_NONE ) { if ( hIvasEditableParameters.num_obj != 0 ) { return IVAS_ERR_OBJECTS_EDITING_NOT_SUPPORTED; } } +#ifdef DEBUGGING else { assert( 0 && "This should never happen!" ); } +#endif } - else if ( hIvasDec->st_ivas->ivas_format == MASA_ISM_FORMAT && ( hIvasDec->st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || hIvasDec->st_ivas->ism_mode == ISM_MASA_MODE_DISC ) ) + else if ( st_ivas->ivas_format == MASA_ISM_FORMAT && ( ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || ism_mode == ISM_MASA_MODE_DISC ) ) { int16_t id_th; float threshold_azi, threshold_ele; for ( obj = 0; obj < hIvasEditableParameters.num_obj; obj++ ) { - if ( hIvasDec->st_ivas->hMasaIsmData != NULL ) + if ( st_ivas->hMasaIsmData != NULL ) { /* copy relevant fields also to OMASA structs, but only if the value has been changed. original values are in st_ivas->hIsmMetaData */ /* first, need to convert float values to ints used internally */ @@ -1463,12 +1490,12 @@ ivas_error IVAS_DEC_SetEditableParameters( new_ele = (int16_t) ( hIvasEditableParameters.ism_metadata[obj].elevation - 0.5f ); } - if ( hIvasDec->st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) + if ( ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) { /* Handle MONO output */ - if ( hIvasDec->st_ivas->renderer_type != RENDERER_MONO_DOWNMIX ) + if ( st_ivas->renderer_type != RENDERER_MONO_DOWNMIX ) { - dirac_read_idx = hIvasDec->st_ivas->hSpatParamRendCom->render_to_md_map[hIvasDec->st_ivas->hSpatParamRendCom->subframes_rendered]; + dirac_read_idx = st_ivas->hSpatParamRendCom->render_to_md_map[st_ivas->hSpatParamRendCom->subframes_rendered]; } else { @@ -1480,74 +1507,74 @@ ivas_error IVAS_DEC_SetEditableParameters( * which in turn depends from the object priority and importance: * importance -> priority -> number of bits -> elevation resolution -> elevation ring index -> azimuth resolution. * leading to elevation_resolution -> elevation threshold and azimuth resolution -> azimuth threshold */ - id_th = (int16_t) ( fabsf( (float) hIvasDec->st_ivas->hMasaIsmData->elevation_ism[obj][dirac_read_idx] ) / delta_theta_masa[hIvasDec->st_ivas->hMasaIsmData->bits_ism[obj] - 3] + 0.5f ); - threshold_azi = 360.0f / (float) no_phi_masa[hIvasDec->st_ivas->hMasaIsmData->bits_ism[obj] - 1][id_th]; - threshold_ele = delta_theta_masa[hIvasDec->st_ivas->hMasaIsmData->bits_ism[obj] - 3]; + id_th = (int16_t) ( fabsf( (float) st_ivas->hMasaIsmData->elevation_ism[obj][dirac_read_idx] ) / delta_theta_masa[st_ivas->hMasaIsmData->bits_ism[obj] - 3] + 0.5f ); + threshold_azi = 360.0f / (float) no_phi_masa[st_ivas->hMasaIsmData->bits_ism[obj] - 1][id_th]; + threshold_ele = delta_theta_masa[st_ivas->hMasaIsmData->bits_ism[obj] - 3]; - if ( ( (float) abs( new_azi - hIvasDec->st_ivas->hMasaIsmData->azimuth_ism[obj][dirac_read_idx] ) > threshold_azi ) || - ( (float) abs( new_ele - hIvasDec->st_ivas->hMasaIsmData->elevation_ism[obj][dirac_read_idx] ) > threshold_ele ) ) + if ( ( (float) abs( new_azi - st_ivas->hMasaIsmData->azimuth_ism[obj][dirac_read_idx] ) > threshold_azi ) || + ( (float) abs( new_ele - st_ivas->hMasaIsmData->elevation_ism[obj][dirac_read_idx] ) > threshold_ele ) ) { /* at least one of the threshold is exceeded, so use new direction value and set editing detection flag */ - hIvasDec->st_ivas->hMasaIsmData->azimuth_ism_edited[obj] = new_azi; - hIvasDec->st_ivas->hMasaIsmData->elevation_ism_edited[obj] = new_ele; + st_ivas->hMasaIsmData->azimuth_ism_edited[obj] = new_azi; + st_ivas->hMasaIsmData->elevation_ism_edited[obj] = new_ele; - hIvasDec->st_ivas->hMasaIsmData->ism_dir_is_edited[obj] = 1u; + st_ivas->hMasaIsmData->ism_dir_is_edited[obj] = 1u; } else { - hIvasDec->st_ivas->hMasaIsmData->ism_dir_is_edited[obj] = 0u; + st_ivas->hMasaIsmData->ism_dir_is_edited[obj] = 0u; } } else { /* detect editing in ISM_MASA_MODE_DISC. optionally, add quantization-resolution -based thresholds */ - if ( fabsf( hIvasDec->st_ivas->hIsmMetaData[obj]->azimuth - hIvasEditableParameters.ism_metadata[obj].azimuth ) > OMASA_AZI_EDIT_THR || - fabsf( hIvasDec->st_ivas->hIsmMetaData[obj]->elevation - hIvasEditableParameters.ism_metadata[obj].elevation ) > OMASA_ELE_EDIT_THR ) + if ( fabsf( st_ivas->hIsmMetaData[obj]->azimuth - hIvasEditableParameters.ism_metadata[obj].azimuth ) > OMASA_AZI_EDIT_THR || + fabsf( st_ivas->hIsmMetaData[obj]->elevation - hIvasEditableParameters.ism_metadata[obj].elevation ) > OMASA_ELE_EDIT_THR ) { - hIvasDec->st_ivas->hMasaIsmData->azimuth_ism_edited[obj] = new_azi; - hIvasDec->st_ivas->hMasaIsmData->elevation_ism_edited[obj] = new_ele; + st_ivas->hMasaIsmData->azimuth_ism_edited[obj] = new_azi; + st_ivas->hMasaIsmData->elevation_ism_edited[obj] = new_ele; - hIvasDec->st_ivas->hMasaIsmData->ism_dir_is_edited[obj] = 1u; + st_ivas->hMasaIsmData->ism_dir_is_edited[obj] = 1u; } else { - hIvasDec->st_ivas->hMasaIsmData->ism_dir_is_edited[obj] = 0u; + st_ivas->hMasaIsmData->ism_dir_is_edited[obj] = 0u; } } /* compare pre-edit gain and the edited one to detect editing */ - if ( fabsf( hIvasDec->st_ivas->hIsmMetaData[obj]->edited_gain - hIvasEditableParameters.ism_metadata[obj].gain ) > OMASA_GAIN_EDIT_THR ) + if ( fabsf( st_ivas->hIsmMetaData[obj]->edited_gain - hIvasEditableParameters.ism_metadata[obj].gain ) > OMASA_GAIN_EDIT_THR ) { - hIvasDec->st_ivas->hMasaIsmData->ism_gain_is_edited[obj] = 1u; - hIvasDec->st_ivas->hMasaIsmData->gain_ism_edited[obj] = hIvasEditableParameters.ism_metadata[obj].gain; + st_ivas->hMasaIsmData->ism_gain_is_edited[obj] = 1u; + st_ivas->hMasaIsmData->gain_ism_edited[obj] = hIvasEditableParameters.ism_metadata[obj].gain; } else { - hIvasDec->st_ivas->hMasaIsmData->ism_gain_is_edited[obj] = 0u; + st_ivas->hMasaIsmData->ism_gain_is_edited[obj] = 0u; } } /* Copy edited values to hIsmMetaData struct */ - if ( hIvasDec->st_ivas->hIsmMetaData[obj] != NULL ) + if ( st_ivas->hIsmMetaData[obj] != NULL ) { - hIvasDec->st_ivas->hIsmMetaData[obj]->azimuth = hIvasEditableParameters.ism_metadata[obj].azimuth; - hIvasDec->st_ivas->hIsmMetaData[obj]->elevation = hIvasEditableParameters.ism_metadata[obj].elevation; - hIvasDec->st_ivas->hIsmMetaData[obj]->yaw = hIvasEditableParameters.ism_metadata[obj].yaw; - hIvasDec->st_ivas->hIsmMetaData[obj]->pitch = hIvasEditableParameters.ism_metadata[obj].pitch; - hIvasDec->st_ivas->hIsmMetaData[obj]->radius = hIvasEditableParameters.ism_metadata[obj].radius; - hIvasDec->st_ivas->hIsmMetaData[obj]->edited_gain = hIvasEditableParameters.ism_metadata[obj].gain; - hIvasDec->st_ivas->hIsmMetaData[obj]->non_diegetic_flag = hIvasEditableParameters.ism_metadata[obj].non_diegetic_flag; + st_ivas->hIsmMetaData[obj]->azimuth = hIvasEditableParameters.ism_metadata[obj].azimuth; + st_ivas->hIsmMetaData[obj]->elevation = hIvasEditableParameters.ism_metadata[obj].elevation; + st_ivas->hIsmMetaData[obj]->yaw = hIvasEditableParameters.ism_metadata[obj].yaw; + st_ivas->hIsmMetaData[obj]->pitch = hIvasEditableParameters.ism_metadata[obj].pitch; + st_ivas->hIsmMetaData[obj]->radius = hIvasEditableParameters.ism_metadata[obj].radius; + st_ivas->hIsmMetaData[obj]->edited_gain = hIvasEditableParameters.ism_metadata[obj].gain; + st_ivas->hIsmMetaData[obj]->non_diegetic_flag = hIvasEditableParameters.ism_metadata[obj].non_diegetic_flag; } } if ( fabsf( hIvasEditableParameters.gain_bed - 1.0f ) > OMASA_GAIN_EDIT_THR ) { - hIvasDec->st_ivas->hMasaIsmData->gain_masa_edited = hIvasEditableParameters.gain_bed; - hIvasDec->st_ivas->hMasaIsmData->masa_gain_is_edited = 1u; + st_ivas->hMasaIsmData->gain_masa_edited = hIvasEditableParameters.gain_bed; + st_ivas->hMasaIsmData->masa_gain_is_edited = 1u; } else { - hIvasDec->st_ivas->hMasaIsmData->masa_gain_is_edited = 0u; + st_ivas->hMasaIsmData->masa_gain_is_edited = 0u; } } -- GitLab From 4a0791ba5f65ef485f7f158d8b0325292adda759 Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 18 Dec 2024 08:21:14 +0100 Subject: [PATCH 5/6] wrap all changes within NONBE_1217_INIT_OBJ_EDIT --- lib_dec/lib_dec.c | 321 +++++++++++++++++++++++++++++++ scripts/config/self_test.prm | 14 -- scripts/config/self_test_ltv.prm | 13 -- 3 files changed, 321 insertions(+), 27 deletions(-) diff --git a/lib_dec/lib_dec.c b/lib_dec/lib_dec.c index 6de470f829..bef93cf29f 100644 --- a/lib_dec/lib_dec.c +++ b/lib_dec/lib_dec.c @@ -1213,14 +1213,17 @@ ivas_error IVAS_DEC_GetEditableParameters( ) { int16_t dirac_read_idx, obj; +#ifdef NONBE_1217_INIT_OBJ_EDIT Decoder_Struct *st_ivas; ISM_MODE ism_mode; +#endif if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL || hIvasEditableParameters == NULL ) { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } +#ifdef NONBE_1217_INIT_OBJ_EDIT st_ivas = hIvasDec->st_ivas; ism_mode = st_ivas->ism_mode; @@ -1345,6 +1348,114 @@ ivas_error IVAS_DEC_GetEditableParameters( #endif #endif } +#else + if ( !( hIvasDec->st_ivas->ivas_format == ISM_FORMAT || + hIvasDec->st_ivas->ivas_format == SBA_ISM_FORMAT || + hIvasDec->st_ivas->ivas_format == MASA_ISM_FORMAT || + ( hIvasDec->st_ivas->ivas_format == MASA_FORMAT && hIvasDec->st_ivas->nchan_ism > 0 ) ) ) + { + return IVAS_ERROR( IVAS_ERR_OBJECTS_EDITING_NOT_SUPPORTED, "Object editing is not supported in this operation mode." ); + } + + if ( hIvasEditableParameters == NULL || hIvasDec == NULL || hIvasDec->st_ivas == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + hIvasEditableParameters->gain_bed = 1.0f; + hIvasEditableParameters->num_obj = hIvasDec->st_ivas->nchan_ism; + if ( hIvasDec->st_ivas->ivas_format == ISM_FORMAT || hIvasDec->st_ivas->ivas_format == SBA_ISM_FORMAT ) + { + if ( hIvasDec->st_ivas->ism_mode == ISM_MODE_DISC || hIvasDec->st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + { + for ( obj = 0; obj < hIvasEditableParameters->num_obj; obj++ ) + { + hIvasEditableParameters->ism_metadata[obj].azimuth = hIvasDec->st_ivas->hIsmMetaData[obj]->azimuth; + hIvasEditableParameters->ism_metadata[obj].elevation = hIvasDec->st_ivas->hIsmMetaData[obj]->elevation; + hIvasEditableParameters->ism_metadata[obj].yaw = hIvasDec->st_ivas->hIsmMetaData[obj]->yaw; + hIvasEditableParameters->ism_metadata[obj].pitch = hIvasDec->st_ivas->hIsmMetaData[obj]->pitch; + hIvasEditableParameters->ism_metadata[obj].radius = hIvasDec->st_ivas->hIsmMetaData[obj]->radius; + hIvasEditableParameters->ism_metadata[obj].gain = hIvasDec->st_ivas->hIsmMetaData[obj]->edited_gain; + hIvasEditableParameters->ism_metadata[obj].non_diegetic_flag = hIvasDec->st_ivas->hIsmMetaData[obj]->non_diegetic_flag; + } + + if ( hIvasDec->st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + { + hIvasEditableParameters->gain_bed = 1.0f; + } + } + else if ( hIvasDec->st_ivas->ism_mode == ISM_MODE_PARAM ) + { + for ( obj = 0; obj < hIvasEditableParameters->num_obj; obj++ ) + { + hIvasEditableParameters->ism_metadata[obj].azimuth = hIvasDec->st_ivas->hParamIsmDec->azimuth_values[obj]; + hIvasEditableParameters->ism_metadata[obj].elevation = hIvasDec->st_ivas->hParamIsmDec->elevation_values[obj]; + hIvasEditableParameters->ism_metadata[obj].yaw = 0.0f; + hIvasEditableParameters->ism_metadata[obj].pitch = 0.0f; + hIvasEditableParameters->ism_metadata[obj].radius = 0.0f; + hIvasEditableParameters->ism_metadata[obj].gain = 1.0f; + hIvasEditableParameters->ism_metadata[obj].non_diegetic_flag = 0; + } + } + else if ( hIvasDec->st_ivas->ism_mode == ISM_MODE_NONE ) + { + hIvasEditableParameters->num_obj = 0; + } +#ifdef DEBUGGING + else + { + assert( 0 && "This should never happen!" ); + } +#endif + } + else if ( hIvasDec->st_ivas->ivas_format == MASA_ISM_FORMAT && ( hIvasDec->st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || hIvasDec->st_ivas->ism_mode == ISM_MASA_MODE_DISC ) ) + { + /* object editing possible only in two highest OMASA modes */ + if ( hIvasDec->st_ivas->ism_mode == ISM_MASA_MODE_DISC ) + { + for ( obj = 0; obj < hIvasEditableParameters->num_obj; obj++ ) + { + hIvasEditableParameters->ism_metadata[obj].azimuth = hIvasDec->st_ivas->hIsmMetaData[obj]->azimuth; + hIvasEditableParameters->ism_metadata[obj].elevation = hIvasDec->st_ivas->hIsmMetaData[obj]->elevation; + hIvasEditableParameters->ism_metadata[obj].yaw = hIvasDec->st_ivas->hIsmMetaData[obj]->yaw; + hIvasEditableParameters->ism_metadata[obj].pitch = hIvasDec->st_ivas->hIsmMetaData[obj]->pitch; + hIvasEditableParameters->ism_metadata[obj].radius = hIvasDec->st_ivas->hIsmMetaData[obj]->radius; + + /* reset the otherwise unused "gain" field for the object */ + hIvasDec->st_ivas->hIsmMetaData[obj]->edited_gain = 1.0f; + hIvasEditableParameters->ism_metadata[obj].gain = hIvasDec->st_ivas->hIsmMetaData[obj]->edited_gain; + hIvasEditableParameters->ism_metadata[obj].non_diegetic_flag = hIvasDec->st_ivas->hIsmMetaData[obj]->non_diegetic_flag; + } + } + else + { + /* Handle MONO output */ + if ( hIvasDec->st_ivas->renderer_type != RENDERER_MONO_DOWNMIX ) + { + dirac_read_idx = hIvasDec->st_ivas->hSpatParamRendCom->render_to_md_map[hIvasDec->st_ivas->hSpatParamRendCom->subframes_rendered]; + } + else + { + dirac_read_idx = 0; + } + + for ( obj = 0; obj < hIvasEditableParameters->num_obj; obj++ ) + { + hIvasEditableParameters->ism_metadata[obj].azimuth = hIvasDec->st_ivas->hMasaIsmData->azimuth_ism[obj][dirac_read_idx]; + hIvasEditableParameters->ism_metadata[obj].elevation = hIvasDec->st_ivas->hMasaIsmData->elevation_ism[obj][dirac_read_idx]; + + hIvasEditableParameters->ism_metadata[obj].yaw = hIvasDec->st_ivas->hIsmMetaData[obj]->yaw; + hIvasEditableParameters->ism_metadata[obj].pitch = hIvasDec->st_ivas->hIsmMetaData[obj]->pitch; + hIvasEditableParameters->ism_metadata[obj].radius = hIvasDec->st_ivas->hIsmMetaData[obj]->radius; + + /* reset the otherwise unused "gain" field for the object */ + hIvasDec->st_ivas->hIsmMetaData[obj]->edited_gain = 1.0f; + hIvasEditableParameters->ism_metadata[obj].gain = hIvasDec->st_ivas->hIsmMetaData[obj]->edited_gain; + hIvasEditableParameters->ism_metadata[obj].non_diegetic_flag = hIvasDec->st_ivas->hIsmMetaData[obj]->non_diegetic_flag; + } + } + } +#endif return IVAS_ERR_OK; } @@ -1362,6 +1473,7 @@ ivas_error IVAS_DEC_SetEditableParameters( ) { int16_t dirac_read_idx, obj; +#ifdef NONBE_1217_INIT_OBJ_EDIT Decoder_Struct *st_ivas; ISM_MODE ism_mode; @@ -1577,6 +1689,215 @@ ivas_error IVAS_DEC_SetEditableParameters( st_ivas->hMasaIsmData->masa_gain_is_edited = 0u; } } +#else + if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + if ( !( hIvasDec->st_ivas->ivas_format == ISM_FORMAT || + hIvasDec->st_ivas->ivas_format == SBA_ISM_FORMAT || + hIvasDec->st_ivas->ivas_format == MASA_ISM_FORMAT || + ( hIvasDec->st_ivas->ivas_format == MASA_FORMAT && hIvasDec->st_ivas->nchan_ism > 0 ) ) ) + { + return IVAS_ERROR( IVAS_ERR_OBJECTS_EDITING_NOT_SUPPORTED, "Object editing no supported in this operation mode." ); + } + + if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + +#ifdef DEBUGGING + assert( hIvasEditableParameters.num_obj == hIvasDec->st_ivas->nchan_ism ); +#endif + + if ( hIvasDec->st_ivas->ivas_format == ISM_FORMAT || hIvasDec->st_ivas->ivas_format == SBA_ISM_FORMAT ) + { + if ( hIvasDec->st_ivas->ism_mode == ISM_MODE_DISC || hIvasDec->st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + { + for ( obj = 0; obj < hIvasEditableParameters.num_obj; obj++ ) + { + hIvasDec->st_ivas->hIsmMetaData[obj]->edited_azimuth = hIvasEditableParameters.ism_metadata[obj].azimuth; + hIvasDec->st_ivas->hIsmMetaData[obj]->edited_elevation = hIvasEditableParameters.ism_metadata[obj].elevation; + hIvasDec->st_ivas->hIsmMetaData[obj]->edited_radius = hIvasEditableParameters.ism_metadata[obj].radius; + + hIvasDec->st_ivas->hIsmMetaData[obj]->edited_gain = hIvasEditableParameters.ism_metadata[obj].gain; + + hIvasDec->st_ivas->hIsmMetaData[obj]->edited_yaw = hIvasEditableParameters.ism_metadata[obj].yaw; + hIvasDec->st_ivas->hIsmMetaData[obj]->edited_pitch = hIvasEditableParameters.ism_metadata[obj].pitch; + + hIvasDec->st_ivas->hIsmMetaData[obj]->non_diegetic_flag = hIvasEditableParameters.ism_metadata[obj].non_diegetic_flag; + } + + if ( hIvasDec->st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + { + hIvasDec->st_ivas->hSbaIsmData->gain_bed = hIvasEditableParameters.gain_bed; + } + } + else if ( hIvasDec->st_ivas->ism_mode == ISM_MODE_PARAM ) + { + for ( obj = 0; obj < hIvasEditableParameters.num_obj; obj++ ) + { + hIvasDec->st_ivas->hParamIsmDec->edited_azimuth_values[obj] = hIvasEditableParameters.ism_metadata[obj].azimuth; + hIvasDec->st_ivas->hParamIsmDec->edited_elevation_values[obj] = hIvasEditableParameters.ism_metadata[obj].elevation; + hIvasDec->st_ivas->hMasaIsmData->gain_ism_edited[obj] = hIvasEditableParameters.ism_metadata[obj].gain; + + /* Detect direction editing in Param-ISM mode */ + if ( fabsf( hIvasDec->st_ivas->hParamIsmDec->azimuth_values[obj] - hIvasEditableParameters.ism_metadata[obj].azimuth ) > OMASA_AZI_EDIT_THR || + fabsf( hIvasDec->st_ivas->hParamIsmDec->elevation_values[obj] - hIvasEditableParameters.ism_metadata[obj].elevation ) > OMASA_ELE_EDIT_THR ) + { + hIvasDec->st_ivas->hMasaIsmData->ism_dir_is_edited[obj] = 1u; + } + else + { + hIvasDec->st_ivas->hMasaIsmData->ism_dir_is_edited[obj] = 0u; + } + + /* Detect gain editing in Param-ISM mode */ + if ( fabsf( 1.0f - hIvasEditableParameters.ism_metadata[obj].gain ) > OMASA_GAIN_EDIT_THR ) + { + hIvasDec->st_ivas->hMasaIsmData->ism_gain_is_edited[obj] = 1u; + } + else + { + hIvasDec->st_ivas->hMasaIsmData->ism_gain_is_edited[obj] = 0u; + } + } + + /* MASA is not present with the ISM format */ + hIvasDec->st_ivas->hMasaIsmData->masa_gain_is_edited = 0u; + } + else if ( hIvasDec->st_ivas->ism_mode == ISM_MODE_NONE ) + { + if ( hIvasEditableParameters.num_obj != 0 ) + { + return IVAS_ERR_OBJECTS_EDITING_NOT_SUPPORTED; + } + } + else + { + assert( 0 && "This should never happen!" ); + } + } + else if ( hIvasDec->st_ivas->ivas_format == MASA_ISM_FORMAT && ( hIvasDec->st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || hIvasDec->st_ivas->ism_mode == ISM_MASA_MODE_DISC ) ) + { + int16_t id_th; + float threshold_azi, threshold_ele; + + for ( obj = 0; obj < hIvasEditableParameters.num_obj; obj++ ) + { + if ( hIvasDec->st_ivas->hMasaIsmData != NULL ) + { + /* copy relevant fields also to OMASA structs, but only if the value has been changed. original values are in st_ivas->hIsmMetaData */ + /* first, need to convert float values to ints used internally */ + int16_t new_azi, new_ele; + if ( hIvasEditableParameters.ism_metadata[obj].azimuth > 0.0f ) + { + new_azi = (int16_t) ( hIvasEditableParameters.ism_metadata[obj].azimuth + 0.5f ); + } + else + { + new_azi = (int16_t) ( hIvasEditableParameters.ism_metadata[obj].azimuth - 0.5f ); + } + + if ( hIvasEditableParameters.ism_metadata[obj].elevation > 0.0f ) + { + new_ele = (int16_t) ( hIvasEditableParameters.ism_metadata[obj].elevation + 0.5f ); + } + else + { + new_ele = (int16_t) ( hIvasEditableParameters.ism_metadata[obj].elevation - 0.5f ); + } + + if ( hIvasDec->st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) + { + /* Handle MONO output */ + if ( hIvasDec->st_ivas->renderer_type != RENDERER_MONO_DOWNMIX ) + { + dirac_read_idx = hIvasDec->st_ivas->hSpatParamRendCom->render_to_md_map[hIvasDec->st_ivas->hSpatParamRendCom->subframes_rendered]; + } + else + { + dirac_read_idx = 0; + } + + /* determine thresholds for detecting object metadata edit for direction based on quantization resolution of the spatial direction parameters. + * these depend from the number of bits used to transmit the directions, + * which in turn depends from the object priority and importance: + * importance -> priority -> number of bits -> elevation resolution -> elevation ring index -> azimuth resolution. + * leading to elevation_resolution -> elevation threshold and azimuth resolution -> azimuth threshold */ + id_th = (int16_t) ( fabsf( (float) hIvasDec->st_ivas->hMasaIsmData->elevation_ism[obj][dirac_read_idx] ) / delta_theta_masa[hIvasDec->st_ivas->hMasaIsmData->bits_ism[obj] - 3] + 0.5f ); + threshold_azi = 360.0f / (float) no_phi_masa[hIvasDec->st_ivas->hMasaIsmData->bits_ism[obj] - 1][id_th]; + threshold_ele = delta_theta_masa[hIvasDec->st_ivas->hMasaIsmData->bits_ism[obj] - 3]; + + if ( ( (float) abs( new_azi - hIvasDec->st_ivas->hMasaIsmData->azimuth_ism[obj][dirac_read_idx] ) > threshold_azi ) || + ( (float) abs( new_ele - hIvasDec->st_ivas->hMasaIsmData->elevation_ism[obj][dirac_read_idx] ) > threshold_ele ) ) + { + /* at least one of the threshold is exceeded, so use new direction value and set editing detection flag */ + hIvasDec->st_ivas->hMasaIsmData->azimuth_ism_edited[obj] = new_azi; + hIvasDec->st_ivas->hMasaIsmData->elevation_ism_edited[obj] = new_ele; + + hIvasDec->st_ivas->hMasaIsmData->ism_dir_is_edited[obj] = 1u; + } + else + { + hIvasDec->st_ivas->hMasaIsmData->ism_dir_is_edited[obj] = 0u; + } + } + else + { + /* detect editing in ISM_MASA_MODE_DISC. optionally, add quantization-resolution -based thresholds */ + if ( fabsf( hIvasDec->st_ivas->hIsmMetaData[obj]->azimuth - hIvasEditableParameters.ism_metadata[obj].azimuth ) > OMASA_AZI_EDIT_THR || + fabsf( hIvasDec->st_ivas->hIsmMetaData[obj]->elevation - hIvasEditableParameters.ism_metadata[obj].elevation ) > OMASA_ELE_EDIT_THR ) + { + hIvasDec->st_ivas->hMasaIsmData->azimuth_ism_edited[obj] = new_azi; + hIvasDec->st_ivas->hMasaIsmData->elevation_ism_edited[obj] = new_ele; + + hIvasDec->st_ivas->hMasaIsmData->ism_dir_is_edited[obj] = 1u; + } + else + { + hIvasDec->st_ivas->hMasaIsmData->ism_dir_is_edited[obj] = 0u; + } + } + + /* compare pre-edit gain and the edited one to detect editing */ + if ( fabsf( hIvasDec->st_ivas->hIsmMetaData[obj]->edited_gain - hIvasEditableParameters.ism_metadata[obj].gain ) > OMASA_GAIN_EDIT_THR ) + { + hIvasDec->st_ivas->hMasaIsmData->ism_gain_is_edited[obj] = 1u; + hIvasDec->st_ivas->hMasaIsmData->gain_ism_edited[obj] = hIvasEditableParameters.ism_metadata[obj].gain; + } + else + { + hIvasDec->st_ivas->hMasaIsmData->ism_gain_is_edited[obj] = 0u; + } + } + + /* Copy edited values to hIsmMetaData struct */ + if ( hIvasDec->st_ivas->hIsmMetaData[obj] != NULL ) + { + hIvasDec->st_ivas->hIsmMetaData[obj]->azimuth = hIvasEditableParameters.ism_metadata[obj].azimuth; + hIvasDec->st_ivas->hIsmMetaData[obj]->elevation = hIvasEditableParameters.ism_metadata[obj].elevation; + hIvasDec->st_ivas->hIsmMetaData[obj]->yaw = hIvasEditableParameters.ism_metadata[obj].yaw; + hIvasDec->st_ivas->hIsmMetaData[obj]->pitch = hIvasEditableParameters.ism_metadata[obj].pitch; + hIvasDec->st_ivas->hIsmMetaData[obj]->radius = hIvasEditableParameters.ism_metadata[obj].radius; + hIvasDec->st_ivas->hIsmMetaData[obj]->edited_gain = hIvasEditableParameters.ism_metadata[obj].gain; + hIvasDec->st_ivas->hIsmMetaData[obj]->non_diegetic_flag = hIvasEditableParameters.ism_metadata[obj].non_diegetic_flag; + } + } + + if ( fabsf( hIvasEditableParameters.gain_bed - 1.0f ) > OMASA_GAIN_EDIT_THR ) + { + hIvasDec->st_ivas->hMasaIsmData->gain_masa_edited = hIvasEditableParameters.gain_bed; + hIvasDec->st_ivas->hMasaIsmData->masa_gain_is_edited = 1u; + } + else + { + hIvasDec->st_ivas->hMasaIsmData->masa_gain_is_edited = 0u; + } + } +#endif return IVAS_ERR_OK; } diff --git a/scripts/config/self_test.prm b/scripts/config/self_test.prm index 543683bd54..ca4ee1880f 100644 --- a/scripts/config/self_test.prm +++ b/scripts/config/self_test.prm @@ -1947,17 +1947,3 @@ eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_10pct.g // OSBA 3OA 4ISM at 512 kbps, 48kHz in, 48kHz out, BINAURAL_ROOM_REVERB out ../IVAS_cod -ism_sba 4 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 512000 48 testv/stvOSBA_4ISM_3OA48c.wav bit ../IVAS_dec -render_config testv/rend_config_hospital_patientroom.cfg BINAURAL_ROOM_REVERB 48 bit testv/stvOSBA_4ISM_3OA48c.wav_BINAURAL_ROOM_REVERB_512000_48-48_custom_configuration.tst - - - -// 3 ISM with extended metadata bitrate switching, 48kHz in, 48kHz out, BINAURAL out, object editing -../IVAS_cod -ism +3 testv/stvISM1.csv null testv/stvISM3.csv ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/stv3ISM48s.wav bit -../IVAS_dec -obj_edit BINAURAL 48 bit testv/stv3ISM48s.wav_brate_sw_48-48_BINAURAL_ObjEdit.tst - -// OMASA 2Dir2TC 2ISM bitrate switching, 48kHz in, 48kHz out, BINAURAL out, object editing -../IVAS_cod -ism_masa 2 2 testv/stvOMASA_2ISM_2MASA2TC48c_ISM1.csv null testv/stvOMASA_2ISM_2MASA2TC48c.met ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/stvOMASA_2ISM_2MASA2TC48c.wav bit -../IVAS_dec -obj_edit BINAURAL 48 bit testv/stvOMASA_2ISM_2MASA2TC48c.wav_brate_sw_48-48_BINAURAL_ObjEdit.tst - -// OSBA FOA 3ISM bitrate switching 48kHz in, 48kHz out, BINAURAL out, object editing -../IVAS_cod -ism_sba 2 1 testv/stvISM1.csv null ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/stvOSBA_2ISM_FOA48c.wav bit -../IVAS_dec -obj_edit BINAURAL 48 bit testv/stvOSBA_2ISM_FOA48c.wav_brate_sw_48-48_BINAURAL_ObjEdit.tst diff --git a/scripts/config/self_test_ltv.prm b/scripts/config/self_test_ltv.prm index 75afb08cac..9b4df02363 100644 --- a/scripts/config/self_test_ltv.prm +++ b/scripts/config/self_test_ltv.prm @@ -1946,16 +1946,3 @@ eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_10pct.g ../IVAS_cod -ism_sba 4 3 testv/ltvISM1.csv testv/ltvISM2.csv testv/ltvISM3.csv testv/ltvISM4.csv 512000 48 testv/ltv48_OSBA_4ISM_HOA3.wav bit ../IVAS_dec -render_config testv/rend_config_hospital_patientroom.cfg BINAURAL_ROOM_REVERB 48 bit testv/ltv48_OSBA_4ISM_HOA3.wav_BINAURAL_ROOM_REVERB_512000_48-48_custom_configuration.tst - - -// 3 ISM with extended metadata bitrate switching, 48kHz in, 48kHz out, BINAURAL out, object editing -../IVAS_cod -ism +3 testv/ltvISM1.csv null testv/stvISM3.csv ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/ltv48_3ISM.wav bit -../IVAS_dec -obj_edit BINAURAL 48 bit testv/ltv48_3ISM.wav_brate_sw_48-48_BINAURAL_ObjEdit.tst - -// OMASA 2Dir2TC 2ISM bitrate switching, 48kHz in, 48kHz out, BINAURAL out, object editing -../IVAS_cod -ism_masa 2 2 testv/ltv48_OMASA_2ISM_2TC_ISM1.csv null testv/ltv48_OMASA_2ISM_2TC.met ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/ltv48_OMASA_2ISM_2TC.wav bit -../IVAS_dec -obj_edit BINAURAL 48 bit testv/ltv48_OMASA_2ISM_2TC.wav_brate_sw_48-48_BINAURAL_ObjEdit.tst - -// OSBA FOA 3ISM bitrate switching 48kHz in, 48kHz out, BINAURAL out, object editing -../IVAS_cod -ism_sba 2 1 testv/ltvISM1.csv null ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/ltv48_OSBA_2ISM_FOA.wav bit -../IVAS_dec -obj_edit BINAURAL 48 bit testv/ltv48_OSBA_2ISM_FOA.wav_brate_sw_48-48_BINAURAL_ObjEdit.tst -- GitLab From bf5f83776327b82aa6375af8d9ad0807f48e4104 Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 18 Dec 2024 12:09:27 +0100 Subject: [PATCH 6/6] remove nested switches --- lib_dec/lib_dec.c | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/lib_dec/lib_dec.c b/lib_dec/lib_dec.c index ae2b747071..a9abea3115 100644 --- a/lib_dec/lib_dec.c +++ b/lib_dec/lib_dec.c @@ -1283,11 +1283,7 @@ ivas_error IVAS_DEC_GetEditableParameters( } #endif } -#ifdef NONBE_1217_INIT_OBJ_EDIT else if ( st_ivas->ivas_format == MASA_ISM_FORMAT || ( st_ivas->ivas_format == MASA_FORMAT && st_ivas->nchan_ism > 0 ) ) -#else - else if ( st_ivas->ivas_format == MASA_ISM_FORMAT && ( ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || ism_mode == ISM_MASA_MODE_DISC ) ) -#endif { /* object editing possible only in two highest OMASA modes */ if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC ) @@ -1306,11 +1302,7 @@ ivas_error IVAS_DEC_GetEditableParameters( hIvasEditableParameters->ism_metadata[obj].non_diegetic_flag = st_ivas->hIsmMetaData[obj]->non_diegetic_flag; } } -#ifdef NONBE_1217_INIT_OBJ_EDIT else if ( ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) -#else - else -#endif { /* Handle MONO output */ if ( st_ivas->renderer_type != RENDERER_MONO_DOWNMIX ) @@ -1337,7 +1329,6 @@ ivas_error IVAS_DEC_GetEditableParameters( hIvasEditableParameters->ism_metadata[obj].non_diegetic_flag = st_ivas->hIsmMetaData[obj]->non_diegetic_flag; } } -#ifdef NONBE_1217_INIT_OBJ_EDIT else if ( ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || ism_mode == ISM_MODE_NONE ) { hIvasEditableParameters->num_obj = 0; @@ -1347,7 +1338,6 @@ ivas_error IVAS_DEC_GetEditableParameters( { assert( 0 && "This should never happen!" ); } -#endif #endif } #else -- GitLab