From fd85c52469f785ea41696c1c8a57631d67622d56 Mon Sep 17 00:00:00 2001 From: Vidhya V P <100825@ittiam.com> Date: Tue, 22 Aug 2023 12:27:42 +0530 Subject: [PATCH 1/4] Fix for issue #723 --- lib_com/options.h | 2 +- lib_dec/ivas_dirac_dec.c | 12 ++++++++++++ lib_dec/ivas_spar_md_dec.c | 10 +++++++++- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index be3261f808..c24987c3fd 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -180,7 +180,7 @@ #define CR_FIX_586_BPF_DFT_MEM /* FhG: issue 586: set input memory of DFT analysis of BPF signal to zero for HQ core to fix issue with PLC and bitrate switching */ #define CR_FIX_ISM_DTX_INFINITE_CNG_ON_TRAILING_SILENCE /* FhG: fix for cng in ISM DTX on sudden silence periods */ #define CR_FIX_698_SBA_MSAN /* Dlb: issue 698: Uninitialized memory read in SBA init */ - +#define CR_FIX_723_SBA_BR_SWITCH_MSAN /* Dlb: issue 723: Uninitialised value used after BR switching*/ /* ##################### End NON-BE CR switches ########################### */ /* ################## End DEVELOPMENT switches ######################### */ diff --git a/lib_dec/ivas_dirac_dec.c b/lib_dec/ivas_dirac_dec.c index 853e51631c..13bf9a5b20 100644 --- a/lib_dec/ivas_dirac_dec.c +++ b/lib_dec/ivas_dirac_dec.c @@ -1098,6 +1098,9 @@ void ivas_dirac_dec_read_BS( hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].azimuth[i] = hQMetaData->q_direction[0].band_data[1].azimuth[0]; hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].elevation[i] = hQMetaData->q_direction[0].band_data[1].elevation[0]; hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].energy_ratio[i] = hQMetaData->q_direction[0].band_data[1].energy_ratio[0]; +#ifdef CR_FIX_723_SBA_BR_SWITCH_MSAN + hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].energy_ratio_index[i] = hQMetaData->q_direction[0].band_data[1].energy_ratio_index[0]; +#endif } for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) { @@ -1106,6 +1109,9 @@ void ivas_dirac_dec_read_BS( hQMetaData->q_direction[0].band_data[j].azimuth[i] = hQMetaData->q_direction[0].band_data[0].azimuth[0]; hQMetaData->q_direction[0].band_data[j].elevation[i] = hQMetaData->q_direction[0].band_data[0].elevation[0]; hQMetaData->q_direction[0].band_data[j].energy_ratio[i] = hQMetaData->q_direction[0].band_data[0].energy_ratio[0]; +#ifdef CR_FIX_723_SBA_BR_SWITCH_MSAN + hQMetaData->q_direction[0].band_data[j].energy_ratio_index[i] = hQMetaData->q_direction[0].band_data[0].energy_ratio_index[0]; +#endif } } @@ -1164,6 +1170,9 @@ void ivas_dirac_dec_read_BS( hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].azimuth[i] = hQMetaData->q_direction[0].band_data[1].azimuth[0]; hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].elevation[i] = hQMetaData->q_direction[0].band_data[1].elevation[0]; hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].energy_ratio[i] = hQMetaData->q_direction[0].band_data[1].energy_ratio[0]; +#ifdef CR_FIX_723_SBA_BR_SWITCH_MSAN + hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].energy_ratio_index[i] = hQMetaData->q_direction[0].band_data[1].energy_ratio_index[0]; +#endif } for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) { @@ -1172,6 +1181,9 @@ void ivas_dirac_dec_read_BS( hQMetaData->q_direction[0].band_data[j].azimuth[i] = hQMetaData->q_direction[0].band_data[0].azimuth[0]; hQMetaData->q_direction[0].band_data[j].elevation[i] = hQMetaData->q_direction[0].band_data[0].elevation[0]; hQMetaData->q_direction[0].band_data[j].energy_ratio[i] = hQMetaData->q_direction[0].band_data[0].energy_ratio[0]; +#ifdef CR_FIX_723_SBA_BR_SWITCH_MSAN + hQMetaData->q_direction[0].band_data[j].energy_ratio_index[i] = hQMetaData->q_direction[0].band_data[0].energy_ratio_index[0]; +#endif } } diff --git a/lib_dec/ivas_spar_md_dec.c b/lib_dec/ivas_spar_md_dec.c index 909284d810..67cd3a8f41 100644 --- a/lib_dec/ivas_spar_md_dec.c +++ b/lib_dec/ivas_spar_md_dec.c @@ -1498,7 +1498,9 @@ static void ivas_spar_dec_parse_md_bs( float quant[IVAS_SPAR_MAX_C_COEFF]; int16_t do_repeat[IVAS_MAX_NUM_BANDS]; int16_t bw_final, bw_fact; - +#ifdef CR_FIX_723_SBA_BR_SWITCH_MSAN + int32_t active_brate; +#endif *dtx_vad = 1; *bands_bw = 1; qsi = 0; @@ -1569,8 +1571,13 @@ static void ivas_spar_dec_parse_md_bs( } ivas_parse_parameter_bitstream_dtx( &hMdDec->spar_md, st0, *bands_bw, *nB, hMdDec->spar_md_cfg.num_dmx_chans_per_band, hMdDec->spar_md_cfg.num_decorr_per_band ); +#ifdef CR_FIX_723_SBA_BR_SWITCH_MSAN + active_brate = ( ivas_total_brate > IVAS_SID_5k2 ) ? ivas_total_brate : last_active_brate; + if ( active_brate >= IVAS_24k4 ) +#else if ( last_active_brate >= IVAS_24k4 ) +#endif { bw_final = 1; } @@ -1578,6 +1585,7 @@ static void ivas_spar_dec_parse_md_bs( { bw_final = 2; } + bw_fact = *bands_bw / bw_final; for ( i = *nB - 1; i >= 0; i-- ) -- GitLab From 7ed25dcfc827bfb8e21c8378d08d0f963e2334a6 Mon Sep 17 00:00:00 2001 From: Vidhya V P <100825@ittiam.com> Date: Tue, 22 Aug 2023 12:45:46 +0530 Subject: [PATCH 2/4] Clang format fix --- lib_dec/ivas_spar_md_dec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_spar_md_dec.c b/lib_dec/ivas_spar_md_dec.c index 67cd3a8f41..8659f28bbd 100644 --- a/lib_dec/ivas_spar_md_dec.c +++ b/lib_dec/ivas_spar_md_dec.c @@ -1500,7 +1500,7 @@ static void ivas_spar_dec_parse_md_bs( int16_t bw_final, bw_fact; #ifdef CR_FIX_723_SBA_BR_SWITCH_MSAN int32_t active_brate; -#endif +#endif *dtx_vad = 1; *bands_bw = 1; qsi = 0; -- GitLab From e2a32df915a28d919ee8dc19fc5a7450fb1bbadc Mon Sep 17 00:00:00 2001 From: Vidhya V P <100825@ittiam.com> Date: Tue, 22 Aug 2023 14:05:11 +0530 Subject: [PATCH 3/4] Renamed the switch as selection test is BE --- lib_com/options.h | 3 +-- lib_dec/ivas_dirac_dec.c | 8 ++++---- lib_dec/ivas_spar_md_dec.c | 4 ++-- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index c24987c3fd..f3d916ee06 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -167,7 +167,7 @@ #define FIX_718_JBM_MD_UDPATE /* Fhg: fix issue #718, wrong setting of the update flag in the TD obj renderer in the JBM path */ #define FIX_719_CRASH_IN_CLEANUP /* VA: issue 719: fix Decoder crash after call to goto to cleanup */ - +#define FIX_723_SBA_BR_SWITCH_MSAN /* Dlb: issue 723: Uninitialised value used after BR switching*/ /* ################## End BE DEVELOPMENT switches ######################### */ @@ -180,7 +180,6 @@ #define CR_FIX_586_BPF_DFT_MEM /* FhG: issue 586: set input memory of DFT analysis of BPF signal to zero for HQ core to fix issue with PLC and bitrate switching */ #define CR_FIX_ISM_DTX_INFINITE_CNG_ON_TRAILING_SILENCE /* FhG: fix for cng in ISM DTX on sudden silence periods */ #define CR_FIX_698_SBA_MSAN /* Dlb: issue 698: Uninitialized memory read in SBA init */ -#define CR_FIX_723_SBA_BR_SWITCH_MSAN /* Dlb: issue 723: Uninitialised value used after BR switching*/ /* ##################### End NON-BE CR switches ########################### */ /* ################## End DEVELOPMENT switches ######################### */ diff --git a/lib_dec/ivas_dirac_dec.c b/lib_dec/ivas_dirac_dec.c index 13bf9a5b20..dab13c0c73 100644 --- a/lib_dec/ivas_dirac_dec.c +++ b/lib_dec/ivas_dirac_dec.c @@ -1098,7 +1098,7 @@ void ivas_dirac_dec_read_BS( hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].azimuth[i] = hQMetaData->q_direction[0].band_data[1].azimuth[0]; hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].elevation[i] = hQMetaData->q_direction[0].band_data[1].elevation[0]; hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].energy_ratio[i] = hQMetaData->q_direction[0].band_data[1].energy_ratio[0]; -#ifdef CR_FIX_723_SBA_BR_SWITCH_MSAN +#ifdef FIX_723_SBA_BR_SWITCH_MSAN hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].energy_ratio_index[i] = hQMetaData->q_direction[0].band_data[1].energy_ratio_index[0]; #endif } @@ -1109,7 +1109,7 @@ void ivas_dirac_dec_read_BS( hQMetaData->q_direction[0].band_data[j].azimuth[i] = hQMetaData->q_direction[0].band_data[0].azimuth[0]; hQMetaData->q_direction[0].band_data[j].elevation[i] = hQMetaData->q_direction[0].band_data[0].elevation[0]; hQMetaData->q_direction[0].band_data[j].energy_ratio[i] = hQMetaData->q_direction[0].band_data[0].energy_ratio[0]; -#ifdef CR_FIX_723_SBA_BR_SWITCH_MSAN +#ifdef FIX_723_SBA_BR_SWITCH_MSAN hQMetaData->q_direction[0].band_data[j].energy_ratio_index[i] = hQMetaData->q_direction[0].band_data[0].energy_ratio_index[0]; #endif } @@ -1170,7 +1170,7 @@ void ivas_dirac_dec_read_BS( hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].azimuth[i] = hQMetaData->q_direction[0].band_data[1].azimuth[0]; hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].elevation[i] = hQMetaData->q_direction[0].band_data[1].elevation[0]; hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].energy_ratio[i] = hQMetaData->q_direction[0].band_data[1].energy_ratio[0]; -#ifdef CR_FIX_723_SBA_BR_SWITCH_MSAN +#ifdef FIX_723_SBA_BR_SWITCH_MSAN hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].energy_ratio_index[i] = hQMetaData->q_direction[0].band_data[1].energy_ratio_index[0]; #endif } @@ -1181,7 +1181,7 @@ void ivas_dirac_dec_read_BS( hQMetaData->q_direction[0].band_data[j].azimuth[i] = hQMetaData->q_direction[0].band_data[0].azimuth[0]; hQMetaData->q_direction[0].band_data[j].elevation[i] = hQMetaData->q_direction[0].band_data[0].elevation[0]; hQMetaData->q_direction[0].band_data[j].energy_ratio[i] = hQMetaData->q_direction[0].band_data[0].energy_ratio[0]; -#ifdef CR_FIX_723_SBA_BR_SWITCH_MSAN +#ifdef FIX_723_SBA_BR_SWITCH_MSAN hQMetaData->q_direction[0].band_data[j].energy_ratio_index[i] = hQMetaData->q_direction[0].band_data[0].energy_ratio_index[0]; #endif } diff --git a/lib_dec/ivas_spar_md_dec.c b/lib_dec/ivas_spar_md_dec.c index 8659f28bbd..5836d97e69 100644 --- a/lib_dec/ivas_spar_md_dec.c +++ b/lib_dec/ivas_spar_md_dec.c @@ -1498,7 +1498,7 @@ static void ivas_spar_dec_parse_md_bs( float quant[IVAS_SPAR_MAX_C_COEFF]; int16_t do_repeat[IVAS_MAX_NUM_BANDS]; int16_t bw_final, bw_fact; -#ifdef CR_FIX_723_SBA_BR_SWITCH_MSAN +#ifdef FIX_723_SBA_BR_SWITCH_MSAN int32_t active_brate; #endif *dtx_vad = 1; @@ -1571,7 +1571,7 @@ static void ivas_spar_dec_parse_md_bs( } ivas_parse_parameter_bitstream_dtx( &hMdDec->spar_md, st0, *bands_bw, *nB, hMdDec->spar_md_cfg.num_dmx_chans_per_band, hMdDec->spar_md_cfg.num_decorr_per_band ); -#ifdef CR_FIX_723_SBA_BR_SWITCH_MSAN +#ifdef FIX_723_SBA_BR_SWITCH_MSAN active_brate = ( ivas_total_brate > IVAS_SID_5k2 ) ? ivas_total_brate : last_active_brate; if ( active_brate >= IVAS_24k4 ) -- GitLab From e05122f9a8657575b804b6f8f9361a151c8e7d45 Mon Sep 17 00:00:00 2001 From: Vidhya V P <100825@ittiam.com> Date: Wed, 30 Aug 2023 10:51:25 +0530 Subject: [PATCH 4/4] Renaming the switch with the CR_* tag --- lib_com/options.h | 3 ++- lib_dec/ivas_dirac_dec.c | 8 ++++---- lib_dec/ivas_spar_md_dec.c | 4 ++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index f3d916ee06..c24987c3fd 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -167,7 +167,7 @@ #define FIX_718_JBM_MD_UDPATE /* Fhg: fix issue #718, wrong setting of the update flag in the TD obj renderer in the JBM path */ #define FIX_719_CRASH_IN_CLEANUP /* VA: issue 719: fix Decoder crash after call to goto to cleanup */ -#define FIX_723_SBA_BR_SWITCH_MSAN /* Dlb: issue 723: Uninitialised value used after BR switching*/ + /* ################## End BE DEVELOPMENT switches ######################### */ @@ -180,6 +180,7 @@ #define CR_FIX_586_BPF_DFT_MEM /* FhG: issue 586: set input memory of DFT analysis of BPF signal to zero for HQ core to fix issue with PLC and bitrate switching */ #define CR_FIX_ISM_DTX_INFINITE_CNG_ON_TRAILING_SILENCE /* FhG: fix for cng in ISM DTX on sudden silence periods */ #define CR_FIX_698_SBA_MSAN /* Dlb: issue 698: Uninitialized memory read in SBA init */ +#define CR_FIX_723_SBA_BR_SWITCH_MSAN /* Dlb: issue 723: Uninitialised value used after BR switching*/ /* ##################### End NON-BE CR switches ########################### */ /* ################## End DEVELOPMENT switches ######################### */ diff --git a/lib_dec/ivas_dirac_dec.c b/lib_dec/ivas_dirac_dec.c index dab13c0c73..13bf9a5b20 100644 --- a/lib_dec/ivas_dirac_dec.c +++ b/lib_dec/ivas_dirac_dec.c @@ -1098,7 +1098,7 @@ void ivas_dirac_dec_read_BS( hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].azimuth[i] = hQMetaData->q_direction[0].band_data[1].azimuth[0]; hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].elevation[i] = hQMetaData->q_direction[0].band_data[1].elevation[0]; hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].energy_ratio[i] = hQMetaData->q_direction[0].band_data[1].energy_ratio[0]; -#ifdef FIX_723_SBA_BR_SWITCH_MSAN +#ifdef CR_FIX_723_SBA_BR_SWITCH_MSAN hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].energy_ratio_index[i] = hQMetaData->q_direction[0].band_data[1].energy_ratio_index[0]; #endif } @@ -1109,7 +1109,7 @@ void ivas_dirac_dec_read_BS( hQMetaData->q_direction[0].band_data[j].azimuth[i] = hQMetaData->q_direction[0].band_data[0].azimuth[0]; hQMetaData->q_direction[0].band_data[j].elevation[i] = hQMetaData->q_direction[0].band_data[0].elevation[0]; hQMetaData->q_direction[0].band_data[j].energy_ratio[i] = hQMetaData->q_direction[0].band_data[0].energy_ratio[0]; -#ifdef FIX_723_SBA_BR_SWITCH_MSAN +#ifdef CR_FIX_723_SBA_BR_SWITCH_MSAN hQMetaData->q_direction[0].band_data[j].energy_ratio_index[i] = hQMetaData->q_direction[0].band_data[0].energy_ratio_index[0]; #endif } @@ -1170,7 +1170,7 @@ void ivas_dirac_dec_read_BS( hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].azimuth[i] = hQMetaData->q_direction[0].band_data[1].azimuth[0]; hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].elevation[i] = hQMetaData->q_direction[0].band_data[1].elevation[0]; hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].energy_ratio[i] = hQMetaData->q_direction[0].band_data[1].energy_ratio[0]; -#ifdef FIX_723_SBA_BR_SWITCH_MSAN +#ifdef CR_FIX_723_SBA_BR_SWITCH_MSAN hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].energy_ratio_index[i] = hQMetaData->q_direction[0].band_data[1].energy_ratio_index[0]; #endif } @@ -1181,7 +1181,7 @@ void ivas_dirac_dec_read_BS( hQMetaData->q_direction[0].band_data[j].azimuth[i] = hQMetaData->q_direction[0].band_data[0].azimuth[0]; hQMetaData->q_direction[0].band_data[j].elevation[i] = hQMetaData->q_direction[0].band_data[0].elevation[0]; hQMetaData->q_direction[0].band_data[j].energy_ratio[i] = hQMetaData->q_direction[0].band_data[0].energy_ratio[0]; -#ifdef FIX_723_SBA_BR_SWITCH_MSAN +#ifdef CR_FIX_723_SBA_BR_SWITCH_MSAN hQMetaData->q_direction[0].band_data[j].energy_ratio_index[i] = hQMetaData->q_direction[0].band_data[0].energy_ratio_index[0]; #endif } diff --git a/lib_dec/ivas_spar_md_dec.c b/lib_dec/ivas_spar_md_dec.c index 5836d97e69..8659f28bbd 100644 --- a/lib_dec/ivas_spar_md_dec.c +++ b/lib_dec/ivas_spar_md_dec.c @@ -1498,7 +1498,7 @@ static void ivas_spar_dec_parse_md_bs( float quant[IVAS_SPAR_MAX_C_COEFF]; int16_t do_repeat[IVAS_MAX_NUM_BANDS]; int16_t bw_final, bw_fact; -#ifdef FIX_723_SBA_BR_SWITCH_MSAN +#ifdef CR_FIX_723_SBA_BR_SWITCH_MSAN int32_t active_brate; #endif *dtx_vad = 1; @@ -1571,7 +1571,7 @@ static void ivas_spar_dec_parse_md_bs( } ivas_parse_parameter_bitstream_dtx( &hMdDec->spar_md, st0, *bands_bw, *nB, hMdDec->spar_md_cfg.num_dmx_chans_per_band, hMdDec->spar_md_cfg.num_decorr_per_band ); -#ifdef FIX_723_SBA_BR_SWITCH_MSAN +#ifdef CR_FIX_723_SBA_BR_SWITCH_MSAN active_brate = ( ivas_total_brate > IVAS_SID_5k2 ) ? ivas_total_brate : last_active_brate; if ( active_brate >= IVAS_24k4 ) -- GitLab