From 723179670bb976179c389cd6e8a8f0d58587bb75 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Mon, 14 Aug 2023 11:05:11 +0200 Subject: [PATCH 1/7] do not dereference hSCE in ivas_ism_metadata_enc for OSBA with ISM_SBA_MODE_DISC --- lib_enc/ivas_ism_metadata_enc.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib_enc/ivas_ism_metadata_enc.c b/lib_enc/ivas_ism_metadata_enc.c index 9ee8effec3..183f9d8245 100755 --- a/lib_enc/ivas_ism_metadata_enc.c +++ b/lib_enc/ivas_ism_metadata_enc.c @@ -798,7 +798,9 @@ ivas_error ivas_ism_metadata_enc( } #ifdef MASA_AND_OBJECTS - for ( ch = 0; ch < nchan_transport; ch++ ) + if ( ism_mode != ISM_SBA_MODE_DISC ) + { + for ( ch = 0; ch < nchan_transport; ch++ ) { hSCE[ch]->hCoreCoder[0]->low_rate_mode = 0; if ( ism_mode == ISM_MODE_DISC ) @@ -827,6 +829,7 @@ ivas_error ivas_ism_metadata_enc( reset_indices_enc( hSCE[ch]->hMetaData, hSCE[ch]->hMetaData->nb_ind_tot ); } } + } #else for ( ch = 0; ch < nchan_transport; ch++ ) { -- GitLab From e5b5d2dedd398b2f779cd806ecf128a164700bf1 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Mon, 14 Aug 2023 12:06:56 +0200 Subject: [PATCH 2/7] preliminarily fix metadata bit in OSBA in encoder --- lib_enc/ivas_ism_metadata_enc.c | 91 ++++++++++++++++----------------- 1 file changed, 44 insertions(+), 47 deletions(-) diff --git a/lib_enc/ivas_ism_metadata_enc.c b/lib_enc/ivas_ism_metadata_enc.c index 183f9d8245..bae39b9903 100755 --- a/lib_enc/ivas_ism_metadata_enc.c +++ b/lib_enc/ivas_ism_metadata_enc.c @@ -386,38 +386,31 @@ ivas_error ivas_ism_metadata_enc( hIsmMeta[ch]->ism_md_null_flag = null_metadata_flag[ch]; hIsmMeta[ch]->ism_md_lowrate_flag = lowrate_metadata_flag[ch]; } - else -#ifdef SBA_AND_OBJECTS - if ( ism_mode != ISM_SBA_MODE_DISC ) -#endif + else if ( null_metadata_flag[ch] ) { -#endif - if ( null_metadata_flag[ch] ) - { - /* signal NULL metadata frame */ - push_indice( hBstr, IND_ISM_MD_NULL_FLAG, 1, ISM_METADATA_MD_FLAG_BITS ); + /* signal NULL metadata frame */ + push_indice( hBstr, IND_ISM_MD_NULL_FLAG, 1, ISM_METADATA_MD_FLAG_BITS ); - /* write the ISM class to ISM_NO_META and again the true ISM class */ - push_indice( hBstr, IND_ISM_METADATA_FLAG, ISM_NO_META, ISM_METADATA_FLAG_BITS ); + /* write the ISM class to ISM_NO_META and again the true ISM class */ + push_indice( hBstr, IND_ISM_METADATA_FLAG, ISM_NO_META, ISM_METADATA_FLAG_BITS ); + if ( ism_mode != ISM_SBA_MODE_DISC ) + { push_indice( hBstr, IND_ISM_MD_INACTIVE_FLAG, ism_imp[ch], ISM_METADATA_FLAG_BITS ); } - else - { - push_indice( hBstr, IND_ISM_METADATA_FLAG, ism_imp[ch], ISM_METADATA_FLAG_BITS ); + } + else if ( ism_mode != ISM_SBA_MODE_DISC ) + { + push_indice( hBstr, IND_ISM_METADATA_FLAG, ism_imp[ch], ISM_METADATA_FLAG_BITS ); - if ( ism_imp[ch] == ISM_NO_META ) - { - /* signal low-rate ISM_NO_META frame */ - push_indice( hBstr, IND_ISM_MD_NULL_FLAG, 0, ISM_METADATA_MD_FLAG_BITS ); + if ( ism_imp[ch] == ISM_NO_META ) + { + /* signal low-rate ISM_NO_META frame */ + push_indice( hBstr, IND_ISM_MD_NULL_FLAG, 0, ISM_METADATA_MD_FLAG_BITS ); - /* signal presence of MD in low-rate ISM_NO_META frame */ - push_indice( hBstr, IND_ISM_MD_INACTIVE_FLAG, lowrate_metadata_flag[ch], ISM_METADATA_INACTIVE_FLAG_BITS ); - } + /* signal presence of MD in low-rate ISM_NO_META frame */ + push_indice( hBstr, IND_ISM_MD_INACTIVE_FLAG, lowrate_metadata_flag[ch], ISM_METADATA_INACTIVE_FLAG_BITS ); } -#ifdef MASA_AND_OBJECTS } -#endif -#ifdef SBA_AND_OBJECTS else /*ism_mode == ISM_SBA_MODE_DISC*/ { /* all objects are considered active*/ @@ -685,7 +678,7 @@ ivas_error ivas_ism_metadata_enc( total_bits_metadata = hBstr->nb_bits_tot - nb_bits_start; /* bits per ISM*/ - bits_metadata_ism = (int16_t) ( total_bits_metadata / nchan_transport ); + bits_metadata_ism = ( int16_t )( total_bits_metadata / nchan_transport ); /* Divide the metadata bits into n_Isms*/ nb_bits_objcod_written = 0; @@ -717,7 +710,7 @@ ivas_error ivas_ism_metadata_enc( ism_total_brate_ref = *ism_total_brate; brate_limit_flag = calculate_brate_limit_flag( ism_imp, nchan_ism ); - bits_ism = (int16_t) ( *ism_total_brate / FRAMES_PER_SECOND ); + bits_ism = ( int16_t )( *ism_total_brate / FRAMES_PER_SECOND ); set_s( bits_element, bits_ism / nchan_ism, nchan_ism ); bits_element[nchan_ism - 1] += bits_ism % nchan_ism; bitbudget_to_brate( bits_element, element_brate, nchan_ism ); @@ -801,35 +794,39 @@ ivas_error ivas_ism_metadata_enc( if ( ism_mode != ISM_SBA_MODE_DISC ) { for ( ch = 0; ch < nchan_transport; ch++ ) - { - hSCE[ch]->hCoreCoder[0]->low_rate_mode = 0; - if ( ism_mode == ISM_MODE_DISC ) { - if ( ism_imp[ch] == ISM_NO_META && ( ( total_brate[ch] < ACELP_8k00 && element_brate[ch] < SCE_CORE_16k_LOW_LIMIT ) || - ( total_brate[ch] <= ACELP_16k_LOW_LIMIT && element_brate[ch] >= SCE_CORE_16k_LOW_LIMIT ) ) ) + hSCE[ch]->hCoreCoder[0]->low_rate_mode = 0; + if ( ism_mode == ISM_MODE_DISC ) { - hSCE[ch]->hCoreCoder[0]->low_rate_mode = 1; - } + if ( ism_imp[ch] == ISM_NO_META && ( ( total_brate[ch] < ACELP_8k00 && element_brate[ch] < SCE_CORE_16k_LOW_LIMIT ) || + ( total_brate[ch] <= ACELP_16k_LOW_LIMIT && element_brate[ch] >= SCE_CORE_16k_LOW_LIMIT ) ) ) + { + hSCE[ch]->hCoreCoder[0]->low_rate_mode = 1; + } - hSCE[ch]->element_brate = element_brate[ch]; - } - else if ( ism_mode == ISM_MASA_MODE_DISC || ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) - { - if ( ism_imp[ch] == ISM_INACTIVE_IMP ) + hSCE[ch]->element_brate = element_brate[ch]; + } + else if ( ism_mode == ISM_MASA_MODE_DISC || ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) { - hSCE[ch]->hCoreCoder[0]->low_rate_mode = 1; + if ( ism_imp[ch] == ISM_INACTIVE_IMP ) + { + hSCE[ch]->hCoreCoder[0]->low_rate_mode = 1; + } } - } - hSCE[ch]->hCoreCoder[0]->total_brate = total_brate[ch]; + hSCE[ch]->hCoreCoder[0]->total_brate = total_brate[ch]; - /* write metadata only in active frames */ - if ( hSCE[0]->hCoreCoder[0]->core_brate > SID_2k40 ) - { - reset_indices_enc( hSCE[ch]->hMetaData, hSCE[ch]->hMetaData->nb_ind_tot ); + /* write metadata only in active frames */ + if ( hSCE[0]->hCoreCoder[0]->core_brate > SID_2k40 ) + { + reset_indices_enc( hSCE[ch]->hMetaData, hSCE[ch]->hMetaData->nb_ind_tot ); + } } } - } + else + { + return error; + } #else for ( ch = 0; ch < nchan_transport; ch++ ) { @@ -1437,7 +1434,7 @@ void ivas_ism_metadata_sid_enc( continue; } - idx = (int16_t) ( hISMDTX->coh[ch] * ( ( 1 << nBits_coh ) - 1 ) + 0.5f ); + idx = ( int16_t )( hISMDTX->coh[ch] * ( ( 1 << nBits_coh ) - 1 ) + 0.5f ); assert( ( idx >= 0 ) && ( idx <= ( ( 1 << nBits_coh ) - 1 ) ) ); push_indice( hBstr, IND_ISM_DTX_COH_SCA, idx, nBits_coh ); } -- GitLab From f1a7b982acba72b45c327df4bda21d0632fafc47 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Mon, 14 Aug 2023 13:06:06 +0200 Subject: [PATCH 3/7] Revert "preliminarily fix metadata bit in OSBA in encoder" This reverts commit e5b5d2dedd398b2f779cd806ecf128a164700bf1. --- lib_enc/ivas_ism_metadata_enc.c | 91 +++++++++++++++++---------------- 1 file changed, 47 insertions(+), 44 deletions(-) diff --git a/lib_enc/ivas_ism_metadata_enc.c b/lib_enc/ivas_ism_metadata_enc.c index bae39b9903..183f9d8245 100755 --- a/lib_enc/ivas_ism_metadata_enc.c +++ b/lib_enc/ivas_ism_metadata_enc.c @@ -386,31 +386,38 @@ ivas_error ivas_ism_metadata_enc( hIsmMeta[ch]->ism_md_null_flag = null_metadata_flag[ch]; hIsmMeta[ch]->ism_md_lowrate_flag = lowrate_metadata_flag[ch]; } - else if ( null_metadata_flag[ch] ) - { - /* signal NULL metadata frame */ - push_indice( hBstr, IND_ISM_MD_NULL_FLAG, 1, ISM_METADATA_MD_FLAG_BITS ); - - /* write the ISM class to ISM_NO_META and again the true ISM class */ - push_indice( hBstr, IND_ISM_METADATA_FLAG, ISM_NO_META, ISM_METADATA_FLAG_BITS ); + else +#ifdef SBA_AND_OBJECTS if ( ism_mode != ISM_SBA_MODE_DISC ) +#endif + { +#endif + if ( null_metadata_flag[ch] ) { + /* signal NULL metadata frame */ + push_indice( hBstr, IND_ISM_MD_NULL_FLAG, 1, ISM_METADATA_MD_FLAG_BITS ); + + /* write the ISM class to ISM_NO_META and again the true ISM class */ + push_indice( hBstr, IND_ISM_METADATA_FLAG, ISM_NO_META, ISM_METADATA_FLAG_BITS ); push_indice( hBstr, IND_ISM_MD_INACTIVE_FLAG, ism_imp[ch], ISM_METADATA_FLAG_BITS ); } - } - else if ( ism_mode != ISM_SBA_MODE_DISC ) - { - push_indice( hBstr, IND_ISM_METADATA_FLAG, ism_imp[ch], ISM_METADATA_FLAG_BITS ); - - if ( ism_imp[ch] == ISM_NO_META ) + else { - /* signal low-rate ISM_NO_META frame */ - push_indice( hBstr, IND_ISM_MD_NULL_FLAG, 0, ISM_METADATA_MD_FLAG_BITS ); + push_indice( hBstr, IND_ISM_METADATA_FLAG, ism_imp[ch], ISM_METADATA_FLAG_BITS ); - /* signal presence of MD in low-rate ISM_NO_META frame */ - push_indice( hBstr, IND_ISM_MD_INACTIVE_FLAG, lowrate_metadata_flag[ch], ISM_METADATA_INACTIVE_FLAG_BITS ); + if ( ism_imp[ch] == ISM_NO_META ) + { + /* signal low-rate ISM_NO_META frame */ + push_indice( hBstr, IND_ISM_MD_NULL_FLAG, 0, ISM_METADATA_MD_FLAG_BITS ); + + /* signal presence of MD in low-rate ISM_NO_META frame */ + push_indice( hBstr, IND_ISM_MD_INACTIVE_FLAG, lowrate_metadata_flag[ch], ISM_METADATA_INACTIVE_FLAG_BITS ); + } } +#ifdef MASA_AND_OBJECTS } +#endif +#ifdef SBA_AND_OBJECTS else /*ism_mode == ISM_SBA_MODE_DISC*/ { /* all objects are considered active*/ @@ -678,7 +685,7 @@ ivas_error ivas_ism_metadata_enc( total_bits_metadata = hBstr->nb_bits_tot - nb_bits_start; /* bits per ISM*/ - bits_metadata_ism = ( int16_t )( total_bits_metadata / nchan_transport ); + bits_metadata_ism = (int16_t) ( total_bits_metadata / nchan_transport ); /* Divide the metadata bits into n_Isms*/ nb_bits_objcod_written = 0; @@ -710,7 +717,7 @@ ivas_error ivas_ism_metadata_enc( ism_total_brate_ref = *ism_total_brate; brate_limit_flag = calculate_brate_limit_flag( ism_imp, nchan_ism ); - bits_ism = ( int16_t )( *ism_total_brate / FRAMES_PER_SECOND ); + bits_ism = (int16_t) ( *ism_total_brate / FRAMES_PER_SECOND ); set_s( bits_element, bits_ism / nchan_ism, nchan_ism ); bits_element[nchan_ism - 1] += bits_ism % nchan_ism; bitbudget_to_brate( bits_element, element_brate, nchan_ism ); @@ -794,39 +801,35 @@ ivas_error ivas_ism_metadata_enc( if ( ism_mode != ISM_SBA_MODE_DISC ) { for ( ch = 0; ch < nchan_transport; ch++ ) + { + hSCE[ch]->hCoreCoder[0]->low_rate_mode = 0; + if ( ism_mode == ISM_MODE_DISC ) { - hSCE[ch]->hCoreCoder[0]->low_rate_mode = 0; - if ( ism_mode == ISM_MODE_DISC ) + if ( ism_imp[ch] == ISM_NO_META && ( ( total_brate[ch] < ACELP_8k00 && element_brate[ch] < SCE_CORE_16k_LOW_LIMIT ) || + ( total_brate[ch] <= ACELP_16k_LOW_LIMIT && element_brate[ch] >= SCE_CORE_16k_LOW_LIMIT ) ) ) { - if ( ism_imp[ch] == ISM_NO_META && ( ( total_brate[ch] < ACELP_8k00 && element_brate[ch] < SCE_CORE_16k_LOW_LIMIT ) || - ( total_brate[ch] <= ACELP_16k_LOW_LIMIT && element_brate[ch] >= SCE_CORE_16k_LOW_LIMIT ) ) ) - { - hSCE[ch]->hCoreCoder[0]->low_rate_mode = 1; - } - - hSCE[ch]->element_brate = element_brate[ch]; + hSCE[ch]->hCoreCoder[0]->low_rate_mode = 1; } - else if ( ism_mode == ISM_MASA_MODE_DISC || ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) + + hSCE[ch]->element_brate = element_brate[ch]; + } + else if ( ism_mode == ISM_MASA_MODE_DISC || ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) + { + if ( ism_imp[ch] == ISM_INACTIVE_IMP ) { - if ( ism_imp[ch] == ISM_INACTIVE_IMP ) - { - hSCE[ch]->hCoreCoder[0]->low_rate_mode = 1; - } + hSCE[ch]->hCoreCoder[0]->low_rate_mode = 1; } + } - hSCE[ch]->hCoreCoder[0]->total_brate = total_brate[ch]; + hSCE[ch]->hCoreCoder[0]->total_brate = total_brate[ch]; - /* write metadata only in active frames */ - if ( hSCE[0]->hCoreCoder[0]->core_brate > SID_2k40 ) - { - reset_indices_enc( hSCE[ch]->hMetaData, hSCE[ch]->hMetaData->nb_ind_tot ); - } + /* write metadata only in active frames */ + if ( hSCE[0]->hCoreCoder[0]->core_brate > SID_2k40 ) + { + reset_indices_enc( hSCE[ch]->hMetaData, hSCE[ch]->hMetaData->nb_ind_tot ); } } - else - { - return error; - } + } #else for ( ch = 0; ch < nchan_transport; ch++ ) { @@ -1434,7 +1437,7 @@ void ivas_ism_metadata_sid_enc( continue; } - idx = ( int16_t )( hISMDTX->coh[ch] * ( ( 1 << nBits_coh ) - 1 ) + 0.5f ); + idx = (int16_t) ( hISMDTX->coh[ch] * ( ( 1 << nBits_coh ) - 1 ) + 0.5f ); assert( ( idx >= 0 ) && ( idx <= ( ( 1 << nBits_coh ) - 1 ) ) ); push_indice( hBstr, IND_ISM_DTX_COH_SCA, idx, nBits_coh ); } -- GitLab From f52c0ce8109d0617cc7fb71415c103478ee27614 Mon Sep 17 00:00:00 2001 From: rhb Date: Mon, 14 Aug 2023 13:30:01 +0200 Subject: [PATCH 4/7] fix for OSBA bitstream writing with NULL metadata --- lib_com/options.h | 1 + lib_dec/ivas_ism_metadata_dec.c | 7 +++ lib_enc/ivas_ism_metadata_enc.c | 76 ++++++++++++++++++++++++++++----- 3 files changed, 74 insertions(+), 10 deletions(-) mode change 100644 => 100755 lib_com/options.h diff --git a/lib_com/options.h b/lib_com/options.h old mode 100644 new mode 100755 index 96f7e04740..12347a2e10 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -166,6 +166,7 @@ #define SBA_AND_OBJECTS #ifdef SBA_AND_OBJECTS #define OSBA_BR_SWITCHING +#define FIX_691_OSBA_NULL_META #endif #define FIX_264_AUDIO_CHANNELS_TO_HEAP /* VA: issue 243: Move audio channels memory from stack to heap */ diff --git a/lib_dec/ivas_ism_metadata_dec.c b/lib_dec/ivas_ism_metadata_dec.c index 108a9428f1..bc42e3cc13 100755 --- a/lib_dec/ivas_ism_metadata_dec.c +++ b/lib_dec/ivas_ism_metadata_dec.c @@ -321,7 +321,11 @@ ivas_error ivas_ism_metadata_dec( } /* read ISM_NO_META class signalling */ +#ifdef FIX_691_OSBA_NULL_META + if ( ism_mode == ISM_MODE_DISC || ism_mode == ISM_SBA_MODE_DISC ) +#else if ( ism_mode == ISM_MODE_DISC ) +#endif { for ( ch = 0; ch < *nchan_transport; ch++ ) { @@ -356,6 +360,9 @@ ivas_error ivas_ism_metadata_dec( } } else +#endif +#ifdef FIX_691_OSBA_NULL_META + if ( ism_mode != ISM_SBA_MODE_DISC ) #endif { if ( null_metadata_flag[ch] ) diff --git a/lib_enc/ivas_ism_metadata_enc.c b/lib_enc/ivas_ism_metadata_enc.c index 183f9d8245..3c2999761b 100755 --- a/lib_enc/ivas_ism_metadata_enc.c +++ b/lib_enc/ivas_ism_metadata_enc.c @@ -259,7 +259,7 @@ ivas_error ivas_ism_metadata_enc( #endif ) #else - else if ( ism_mode == ISM_MODE_DISC ) + else if ( ism_mode == ISM_MODE_DISC ) #endif { null_metadata_flag[ch] = !hIsmMeta[ch]->ism_metadata_flag; @@ -320,7 +320,7 @@ ivas_error ivas_ism_metadata_enc( rate_ism_importance( nchan_transport, hIsmMeta, hSCE, lowrate_metadata_flag, ism_imp ); } #else - rate_ism_importance( nchan_transport, hIsmMeta, hSCE, lowrate_metadata_flag, ism_imp ); + rate_ism_importance( nchan_transport, hIsmMeta, hSCE, lowrate_metadata_flag, ism_imp ); #endif #ifdef MASA_AND_OBJECTS } @@ -335,7 +335,7 @@ ivas_error ivas_ism_metadata_enc( #ifdef SBA_AND_OBJECTS && ism_mode != ISM_SBA_MODE_DISC #endif - ) + ) { #endif /* write number of objects - unary coding */ @@ -375,6 +375,56 @@ ivas_error ivas_ism_metadata_enc( } } +#ifdef FIX_691_OSBA_NULL_META + /* write ISM metadata flag (one per object) */ + for ( ch = 0; ch < nchan_transport; ch++ ) + { +#ifdef MASA_AND_OBJECTS + if ( ism_mode == ISM_MASA_MODE_DISC || ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) + { + /* flags will be written in ivas_masa_encode() */ + hIsmMeta[ch]->ism_imp = ism_imp[ch]; + hIsmMeta[ch]->ism_md_null_flag = null_metadata_flag[ch]; + hIsmMeta[ch]->ism_md_lowrate_flag = lowrate_metadata_flag[ch]; + } + else + { +#endif + if ( null_metadata_flag[ch] ) + { + /* signal NULL metadata frame */ + push_indice( hBstr, IND_ISM_MD_NULL_FLAG, 1, ISM_METADATA_MD_FLAG_BITS ); + + /* write the ISM class to ISM_NO_META and again the true ISM class */ + push_indice( hBstr, IND_ISM_METADATA_FLAG, ISM_NO_META, 1 ); + if ( ism_mode != ISM_SBA_MODE_DISC ) + { + push_indice( hBstr, IND_ISM_MD_INACTIVE_FLAG, ism_imp[ch], ISM_METADATA_FLAG_BITS ); + } + } + else if ( ism_mode != ISM_SBA_MODE_DISC ) + { + push_indice( hBstr, IND_ISM_METADATA_FLAG, ism_imp[ch], ISM_METADATA_FLAG_BITS ); + + if ( ism_imp[ch] == ISM_NO_META ) + { + /* signal low-rate ISM_NO_META frame */ + push_indice( hBstr, IND_ISM_MD_NULL_FLAG, 0, ISM_METADATA_MD_FLAG_BITS ); + + /* signal presence of MD in low-rate ISM_NO_META frame */ + push_indice( hBstr, IND_ISM_MD_INACTIVE_FLAG, lowrate_metadata_flag[ch], ISM_METADATA_INACTIVE_FLAG_BITS ); + } + } + else /*ism_mode == ISM_SBA_MODE_DISC*/ + { + /* all objects are considered active*/ + push_indice( hBstr, IND_ISM_METADATA_FLAG, 1, 1 ); + } +#ifdef MASA_AND_OBJECTS + } +#endif + } +#else /* write ISM metadata flag (one per object) */ for ( ch = 0; ch < nchan_transport; ch++ ) { @@ -426,6 +476,8 @@ ivas_error ivas_ism_metadata_enc( #endif } +#endif + if ( ism_metadata_flag_global ) { @@ -450,7 +502,7 @@ ivas_error ivas_ism_metadata_enc( #ifdef SBA_AND_OBJECTS || ism_mode == ISM_SBA_MODE_DISC #endif - ) + ) #else if ( ism_mode == ISM_MODE_DISC ) #endif @@ -493,7 +545,7 @@ ivas_error ivas_ism_metadata_enc( #ifdef SBA_AND_OBJECTS || ism_mode == ISM_SBA_MODE_DISC #endif - ) + ) #else if ( ism_mode == ISM_MODE_DISC ) #endif @@ -540,7 +592,7 @@ ivas_error ivas_ism_metadata_enc( #ifdef SBA_AND_OBJECTS || ism_mode == ISM_SBA_MODE_DISC #endif - ) + ) #else if ( ism_mode == ISM_MODE_DISC ) #endif @@ -703,6 +755,12 @@ ivas_error ivas_ism_metadata_enc( } } } +#ifdef FIX_691_OSBA_NULL_META + else if ( ism_mode == ISM_SBA_MODE_DISC ) + { + return error; + } +#endif #ifdef MASA_AND_OBJECTS /*----------------------------------------------------------------* @@ -798,9 +856,8 @@ ivas_error ivas_ism_metadata_enc( } #ifdef MASA_AND_OBJECTS - if ( ism_mode != ISM_SBA_MODE_DISC ) - { - for ( ch = 0; ch < nchan_transport; ch++ ) + + for ( ch = 0; ch < nchan_transport; ch++ ) { hSCE[ch]->hCoreCoder[0]->low_rate_mode = 0; if ( ism_mode == ISM_MODE_DISC ) @@ -829,7 +886,6 @@ ivas_error ivas_ism_metadata_enc( reset_indices_enc( hSCE[ch]->hMetaData, hSCE[ch]->hMetaData->nb_ind_tot ); } } - } #else for ( ch = 0; ch < nchan_transport; ch++ ) { -- GitLab From bba62c288836b8f455ec23a2bb1cd3e96c18d8f1 Mon Sep 17 00:00:00 2001 From: rhb Date: Mon, 14 Aug 2023 13:42:53 +0200 Subject: [PATCH 5/7] avoid problem with instrumentation --- lib_enc/ivas_ism_metadata_enc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_enc/ivas_ism_metadata_enc.c b/lib_enc/ivas_ism_metadata_enc.c index 3c2999761b..13565029fe 100755 --- a/lib_enc/ivas_ism_metadata_enc.c +++ b/lib_enc/ivas_ism_metadata_enc.c @@ -758,6 +758,7 @@ ivas_error ivas_ism_metadata_enc( #ifdef FIX_691_OSBA_NULL_META else if ( ism_mode == ISM_SBA_MODE_DISC ) { + pop_wmops(); return error; } #endif @@ -856,7 +857,6 @@ ivas_error ivas_ism_metadata_enc( } #ifdef MASA_AND_OBJECTS - for ( ch = 0; ch < nchan_transport; ch++ ) { hSCE[ch]->hCoreCoder[0]->low_rate_mode = 0; -- GitLab From 542fdaeaa00076a002b3c7fda26dc282eb16bab1 Mon Sep 17 00:00:00 2001 From: rhb Date: Mon, 14 Aug 2023 14:14:08 +0200 Subject: [PATCH 6/7] fix problem accidentally introduced for regular ISM modes --- lib_enc/ivas_ism_metadata_enc.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib_enc/ivas_ism_metadata_enc.c b/lib_enc/ivas_ism_metadata_enc.c index 13565029fe..3e9cf613dd 100755 --- a/lib_enc/ivas_ism_metadata_enc.c +++ b/lib_enc/ivas_ism_metadata_enc.c @@ -396,11 +396,15 @@ ivas_error ivas_ism_metadata_enc( push_indice( hBstr, IND_ISM_MD_NULL_FLAG, 1, ISM_METADATA_MD_FLAG_BITS ); /* write the ISM class to ISM_NO_META and again the true ISM class */ - push_indice( hBstr, IND_ISM_METADATA_FLAG, ISM_NO_META, 1 ); if ( ism_mode != ISM_SBA_MODE_DISC ) { + push_indice( hBstr, IND_ISM_METADATA_FLAG, ISM_NO_META, ISM_METADATA_FLAG_BITS ); push_indice( hBstr, IND_ISM_MD_INACTIVE_FLAG, ism_imp[ch], ISM_METADATA_FLAG_BITS ); } + else + { + push_indice( hBstr, IND_ISM_METADATA_FLAG, ISM_NO_META, 1 ); + } } else if ( ism_mode != ISM_SBA_MODE_DISC ) { -- GitLab From 0f4b96a85596d3c97a0aecd581353065133cf8af Mon Sep 17 00:00:00 2001 From: rhb Date: Tue, 15 Aug 2023 09:03:27 +0200 Subject: [PATCH 7/7] clang format --- lib_enc/ivas_ism_metadata_enc.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) mode change 100755 => 100644 lib_enc/ivas_ism_metadata_enc.c diff --git a/lib_enc/ivas_ism_metadata_enc.c b/lib_enc/ivas_ism_metadata_enc.c old mode 100755 new mode 100644 index a143587c86..1b608987ae --- a/lib_enc/ivas_ism_metadata_enc.c +++ b/lib_enc/ivas_ism_metadata_enc.c @@ -259,7 +259,7 @@ ivas_error ivas_ism_metadata_enc( #endif ) #else - else if ( ism_mode == ISM_MODE_DISC ) + else if ( ism_mode == ISM_MODE_DISC ) #endif { null_metadata_flag[ch] = !hIsmMeta[ch]->ism_metadata_flag; @@ -320,7 +320,7 @@ ivas_error ivas_ism_metadata_enc( rate_ism_importance( nchan_transport, hIsmMeta, hSCE, lowrate_metadata_flag, ism_imp ); } #else - rate_ism_importance( nchan_transport, hIsmMeta, hSCE, lowrate_metadata_flag, ism_imp ); + rate_ism_importance( nchan_transport, hIsmMeta, hSCE, lowrate_metadata_flag, ism_imp ); #endif #ifdef MASA_AND_OBJECTS } @@ -335,7 +335,7 @@ ivas_error ivas_ism_metadata_enc( #ifdef SBA_AND_OBJECTS && ism_mode != ISM_SBA_MODE_DISC #endif - ) + ) { #endif /* write number of objects - unary coding */ @@ -506,7 +506,7 @@ ivas_error ivas_ism_metadata_enc( #ifdef SBA_AND_OBJECTS || ism_mode == ISM_SBA_MODE_DISC #endif - ) + ) #else if ( ism_mode == ISM_MODE_DISC ) #endif @@ -549,7 +549,7 @@ ivas_error ivas_ism_metadata_enc( #ifdef SBA_AND_OBJECTS || ism_mode == ISM_SBA_MODE_DISC #endif - ) + ) #else if ( ism_mode == ISM_MODE_DISC ) #endif @@ -596,7 +596,7 @@ ivas_error ivas_ism_metadata_enc( #ifdef SBA_AND_OBJECTS || ism_mode == ISM_SBA_MODE_DISC #endif - ) + ) #else if ( ism_mode == ISM_MODE_DISC ) #endif -- GitLab