From da8bf305903ff323cfb5beb027a7d8a251d3f451 Mon Sep 17 00:00:00 2001 From: Shikha Shetgeri <100861@ittiam.com> Date: Mon, 5 Jun 2023 18:34:47 +0530 Subject: [PATCH 1/2] Removed unused SPAR/Dirac flag --- lib_com/options.h | 2 ++ lib_dec/ivas_dirac_dec.c | 2 ++ lib_dec/ivas_init_dec.c | 2 ++ lib_dec/ivas_spar_decoder.c | 4 ++++ 4 files changed, 10 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index e9d887b5eb..c7bd187575 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -241,6 +241,8 @@ #define BINAURAL_AUDIO_CMDLINE +#define SBA_MODE_CLEANUP_2 /*Dlb : Clean up of Unused signaling bit in SBA SID*/ + /* ################## End DEVELOPMENT switches ######################### */ /* clang-format on */ diff --git a/lib_dec/ivas_dirac_dec.c b/lib_dec/ivas_dirac_dec.c index 502420781f..9b5b6fa557 100644 --- a/lib_dec/ivas_dirac_dec.c +++ b/lib_dec/ivas_dirac_dec.c @@ -1886,9 +1886,11 @@ void ivas_dirac_dec_read_BS( /* subtract mode signaling bits, since bitstream was moved after mode reading */ st->next_bit_pos = (int16_t) ( ivas_total_brate / FRAMES_PER_SEC - 1 - SID_FORMAT_NBITS ); +#ifndef SBA_MODE_CLEANUP_2 /* 1 bit flag for SPAR/DirAC, already read in read format function */ b = st->bit_stream[( st->next_bit_pos )--]; ( *nb_bits )++; +#endif hQMetaData->sba_inactive_mode = 1; orig_dirac_bands = hQMetaData->q_direction[0].cfg.nbands; diff --git a/lib_dec/ivas_init_dec.c b/lib_dec/ivas_init_dec.c index 2452b34edb..6767635e39 100644 --- a/lib_dec/ivas_init_dec.c +++ b/lib_dec/ivas_init_dec.c @@ -482,9 +482,11 @@ static ivas_error ivas_read_format( if ( st_ivas->ivas_format == SBA_FORMAT ) { +#ifndef SBA_MODE_CLEANUP_2 int16_t tc_mode_offset; tc_mode_offset = (int16_t) ( ivas_total_brate / FRAMES_PER_SEC - 1 ); idx = st_ivas->bit_stream[tc_mode_offset]; +#endif if ( st_ivas->sba_analysis_order == 0 ) { st_ivas->sba_analysis_order = SBA_FOA_ORDER; diff --git a/lib_dec/ivas_spar_decoder.c b/lib_dec/ivas_spar_decoder.c index f3fd5ed04c..d3eaa237b6 100755 --- a/lib_dec/ivas_spar_decoder.c +++ b/lib_dec/ivas_spar_decoder.c @@ -372,7 +372,11 @@ ivas_error ivas_spar_dec( int16_t zero_pad_bits; *nb_bits_read += SID_FORMAT_NBITS; zero_pad_bits = (int16_t) ( IVAS_SID_5k2 - SID_2k40 ) / FRAMES_PER_SEC - *nb_bits_read; +#ifdef SBA_MODE_CLEANUP_2 + assert( zero_pad_bits <= 2 ); +#else assert( zero_pad_bits <= 1 ); +#endif *nb_bits_read += zero_pad_bits; } -- GitLab From 65f624861f62b694ad4cffc586ff9fe6e6a45b66 Mon Sep 17 00:00:00 2001 From: Shikha Shetgeri <100861@ittiam.com> Date: Tue, 13 Jun 2023 19:14:18 +0530 Subject: [PATCH 2/2] addressed review comments --- lib_com/ivas_prot.h | 4 ++++ lib_dec/ivas_dirac_dec.c | 10 +++++++++- lib_dec/ivas_masa_dec.c | 4 ++++ lib_dec/ivas_qmetadata_dec.c | 17 ++++++++++++++++- lib_dec/ivas_spar_decoder.c | 4 ---- lib_enc/ivas_dirac_enc.c | 3 ++- lib_enc/ivas_qmetadata_enc.c | 10 +++++++++- 7 files changed, 44 insertions(+), 8 deletions(-) diff --git a/lib_com/ivas_prot.h b/lib_com/ivas_prot.h index 2804668e0f..113627bef0 100644 --- a/lib_com/ivas_prot.h +++ b/lib_com/ivas_prot.h @@ -3194,6 +3194,10 @@ int16_t ivas_qmetadata_dec_sid_decode( , const SBA_MODE sba_mode /* i : SBA mode */ #endif +#ifdef SBA_MODE_CLEANUP_2 + , + const int32_t ivas_total_brate /* i : IVAS total bitrate */ +#endif ); void ivas_qmetadata_to_dirac( diff --git a/lib_dec/ivas_dirac_dec.c b/lib_dec/ivas_dirac_dec.c index 9b5b6fa557..deb761fab4 100644 --- a/lib_dec/ivas_dirac_dec.c +++ b/lib_dec/ivas_dirac_dec.c @@ -1834,7 +1834,11 @@ void ivas_dirac_dec_read_BS( #ifndef SBA_MODE_CLEAN_UP *nb_bits += ivas_qmetadata_dec_sid_decode( hQMetaData, st->bit_stream, &( st->next_bit_pos ), 0, NULL, SBA_FORMAT, sba_mode ); #else - *nb_bits += ivas_qmetadata_dec_sid_decode( hQMetaData, st->bit_stream, &( st->next_bit_pos ), 0, NULL, SBA_FORMAT ); +#ifdef SBA_MODE_CLEANUP_2 + *nb_bits += ivas_qmetadata_dec_sid_decode( hQMetaData, st->bit_stream, &( st->next_bit_pos ), 0, NULL, SBA_FORMAT, ivas_total_brate ); +#else + *nb_bits += ivas_qmetadata_dec_sid_decode( hQMetaData, st->bit_stream, &( st->next_bit_pos ), 0, NULL, SBA_FORMAT, ivas_total_brate ); +#endif #endif for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) { @@ -1909,9 +1913,13 @@ void ivas_dirac_dec_read_BS( #ifndef SBA_MODE_CLEAN_UP *nb_bits += ivas_qmetadata_dec_sid_decode( hQMetaData, st->bit_stream, &( st->next_bit_pos ), 0, NULL, SBA_FORMAT, sba_mode ); +#else +#ifdef SBA_MODE_CLEANUP_2 + *nb_bits += ivas_qmetadata_dec_sid_decode( hQMetaData, st->bit_stream, &( st->next_bit_pos ), 0, NULL, SBA_FORMAT, ivas_total_brate ); #else *nb_bits += ivas_qmetadata_dec_sid_decode( hQMetaData, st->bit_stream, &( st->next_bit_pos ), 0, NULL, SBA_FORMAT ); #endif +#endif #ifndef SBA_MODE_CLEAN_UP if ( sba_mode == SBA_MODE_SPAR ) { diff --git a/lib_dec/ivas_masa_dec.c b/lib_dec/ivas_masa_dec.c index 8d6cebe036..26613f3cdd 100644 --- a/lib_dec/ivas_masa_dec.c +++ b/lib_dec/ivas_masa_dec.c @@ -289,8 +289,12 @@ ivas_error ivas_masa_decode( tmp_elem_mode = -1; #ifndef SBA_MODE_CLEAN_UP *nb_bits_read += ivas_qmetadata_dec_sid_decode( hQMetaData, st->bit_stream, &( st->next_bit_pos ), st_ivas->nchan_transport, &tmp_elem_mode, ivas_format, SBA_MODE_NONE ); +#else +#ifdef SBA_MODE_CLEANUP_2 + *nb_bits_read += ivas_qmetadata_dec_sid_decode( hQMetaData, st->bit_stream, &( st->next_bit_pos ), st_ivas->nchan_transport, &tmp_elem_mode, ivas_format, ivas_total_brate ); #else *nb_bits_read += ivas_qmetadata_dec_sid_decode( hQMetaData, st->bit_stream, &( st->next_bit_pos ), st_ivas->nchan_transport, &tmp_elem_mode, ivas_format ); +#endif #endif if ( st_ivas->nchan_transport == 2 ) { diff --git a/lib_dec/ivas_qmetadata_dec.c b/lib_dec/ivas_qmetadata_dec.c index cfd748afde..80ca53feda 100644 --- a/lib_dec/ivas_qmetadata_dec.c +++ b/lib_dec/ivas_qmetadata_dec.c @@ -1269,6 +1269,10 @@ int16_t ivas_qmetadata_dec_sid_decode( , const SBA_MODE sba_mode /* i : SBA mode */ #endif +#ifdef SBA_MODE_CLEANUP_2 + , + const int32_t ivas_total_brate /* i : IVAS total bitrate */ +#endif ) { int16_t b, m, i; @@ -1304,7 +1308,18 @@ int16_t ivas_qmetadata_dec_sid_decode( { #endif /* TODO: still use old sid frame size to keep bitexactness */ - metadata_sid_bits = (int16_t) ( 5000 /*IVAS_SID_5k2*/ - SID_2k40 ) / FRAMES_PER_SEC - ( SPAR_DTX_BANDS * 18 ) - 1; /* -1 for inactive mode header bit*/ +#ifdef SBA_MODE_CLEANUP_2 + if ( ivas_total_brate == IVAS_SID_5k2 ) + { + metadata_sid_bits = (int16_t) ( 5000 /*IVAS_SID_5k2*/ - SID_2k40 ) / FRAMES_PER_SEC - ( SPAR_DTX_BANDS * 18 ); + } + else + { + metadata_sid_bits = (int16_t) ( 5000 /*IVAS_SID_5k2*/ - SID_2k40 ) / FRAMES_PER_SEC - ( SPAR_DTX_BANDS * 18 ) - 1; /* -1 for inactive mode header bit*/ + } +#else + metadata_sid_bits = (int16_t) ( 5000 /*IVAS_SID_5k2*/ - SID_2k40 ) / FRAMES_PER_SEC - ( SPAR_DTX_BANDS * 18 ) - 1; /* -1 for inactive mode header bit*/ +#endif #ifndef SBA_MODE_CLEAN_UP } else diff --git a/lib_dec/ivas_spar_decoder.c b/lib_dec/ivas_spar_decoder.c index d3eaa237b6..f3fd5ed04c 100755 --- a/lib_dec/ivas_spar_decoder.c +++ b/lib_dec/ivas_spar_decoder.c @@ -372,11 +372,7 @@ ivas_error ivas_spar_dec( int16_t zero_pad_bits; *nb_bits_read += SID_FORMAT_NBITS; zero_pad_bits = (int16_t) ( IVAS_SID_5k2 - SID_2k40 ) / FRAMES_PER_SEC - *nb_bits_read; -#ifdef SBA_MODE_CLEANUP_2 - assert( zero_pad_bits <= 2 ); -#else assert( zero_pad_bits <= 1 ); -#endif *nb_bits_read += zero_pad_bits; } diff --git a/lib_enc/ivas_dirac_enc.c b/lib_enc/ivas_dirac_enc.c index 5aa872e434..2c38fa175e 100644 --- a/lib_enc/ivas_dirac_enc.c +++ b/lib_enc/ivas_dirac_enc.c @@ -632,9 +632,10 @@ void ivas_dirac_enc( hQMetaData->q_direction[0].band_data[1].elevation[i] = hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].elevation[i]; hQMetaData->q_direction[0].band_data[1].energy_ratio[i] = hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].energy_ratio[i]; } - +#ifndef SBA_MODE_CLEANUP_2 /* 1 bit to indicate mode MD coding : temp solution*/ push_next_indice( hMetaData, 1, 1 ); +#endif /* encode SID parameters */ ivas_qmetadata_enc_sid_encode( hMetaData, hQMetaData, -1, SBA_FORMAT ); diff --git a/lib_enc/ivas_qmetadata_enc.c b/lib_enc/ivas_qmetadata_enc.c index 213c0ce756..467eb1c152 100644 --- a/lib_enc/ivas_qmetadata_enc.c +++ b/lib_enc/ivas_qmetadata_enc.c @@ -1054,7 +1054,11 @@ void ivas_qmetadata_enc_sid_encode( { #endif /* TODO: still use old sid frame size to keep bitexactness */ - metadata_sid_bits = (int16_t) ( 5000 /*IVAS_SID_5k2*/ - SID_2k40 ) / FRAMES_PER_SEC - ( SPAR_DTX_BANDS * SPAR_SID_BITS_TAR_PER_BAND ) - 1; /* -1 for inactive mode header bit*/ +#ifdef SBA_MODE_CLEANUP_2 + metadata_sid_bits = (int16_t) ( 5000 /*IVAS_SID_5k2*/ - SID_2k40 ) / FRAMES_PER_SEC - ( SPAR_DTX_BANDS * SPAR_SID_BITS_TAR_PER_BAND ); +#else + metadata_sid_bits = (int16_t) ( 5000 /*IVAS_SID_5k2*/ - SID_2k40 ) / FRAMES_PER_SEC - ( SPAR_DTX_BANDS * SPAR_SID_BITS_TAR_PER_BAND ) - 1; /* -1 for inactive mode header bit*/ +#endif #ifndef SBA_MODE_CLEAN_UP } else @@ -1320,7 +1324,11 @@ void reset_metadata_spatial( #endif { #ifdef DEBUGGING +#ifdef SBA_MODE_CLEANUP_2 + assert( hMetaData->ind_list[0].nb_bits >= 1 ); +#else assert( hMetaData->ind_list[0].nb_bits == 1 ); +#endif #endif hMetaData->ind_list[0].value = 1; metadata_sid_bits = (int16_t) ( IVAS_SID_5k2 - SID_2k40 ) / FRAMES_PER_SEC - SID_FORMAT_NBITS; -- GitLab