From c41f67fde1d11f69f25f7137b9e7fa576573bce4 Mon Sep 17 00:00:00 2001 From: Shanush Prema Thasarathan Date: Thu, 24 Nov 2022 09:07:59 +1100 Subject: [PATCH] Make way for 3 extra bits in the AGC by removing an unnecessary bit from the AGC and slightly reducing the dirac max metadata rate for 24.4kbps --- lib_com/ivas_dirac_com.c | 4 ++++ lib_com/options.h | 2 +- lib_dec/ivas_agc_dec.c | 4 ++++ lib_enc/ivas_agc_enc.c | 2 ++ 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib_com/ivas_dirac_com.c b/lib_com/ivas_dirac_com.c index a3bfeabdb2..b7265987d5 100644 --- a/lib_com/ivas_dirac_com.c +++ b/lib_com/ivas_dirac_com.c @@ -372,7 +372,11 @@ ivas_error ivas_dirac_sba_config( else if ( sba_total_brate <= IVAS_24k4 ) { hQMetaData->bits_frame_nominal = ACELP_16k40 / FRAMES_PER_SEC; +#ifdef FIX_185_REDUCE_MD_BITS + hQMetaData->metadata_max_bits = 103; +#else hQMetaData->metadata_max_bits = 106; +#endif } else if ( sba_total_brate <= IVAS_32k ) { diff --git a/lib_com/options.h b/lib_com/options.h index d717b4ebb2..edc0d9ae06 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -163,7 +163,7 @@ #define FIX_158_DIRAC_MEM /* Issue 158: Reduce memory consumption in the hDirac_mem handle */ #define BRATE_SWITCHING_FRAMEWORK /* Bitrate switching changes related to the general framework */ #define BRATE_SWITCHING_RENDERING /* Bitrate switching changes related to the renderers */ - +#define FIX_185_REDUCE_MD_BITS /* Issue 185: Crash in SBA encoder for 24.4 kbps HOA3 input with longer testvector */ /* ################## End DEVELOPMENT switches ######################### */ /* clang-format on */ diff --git a/lib_dec/ivas_agc_dec.c b/lib_dec/ivas_agc_dec.c index 0b25c8216c..99585a8829 100644 --- a/lib_dec/ivas_agc_dec.c +++ b/lib_dec/ivas_agc_dec.c @@ -308,7 +308,11 @@ void ivas_agc_read_bits( if ( per_ch_bit[i] == 1 ) { pState->gain_data[i].absGainExpCurr = get_next_indice( st0, (int16_t) pState->agc_com.betaE ); +#ifdef FIX_185_REDUCE_MD_BITS + pState->gain_data[i].gainException = false; +#else pState->gain_data[i].gainException = get_next_indice( st0, 1 ); +#endif } else { diff --git a/lib_enc/ivas_agc_enc.c b/lib_enc/ivas_agc_enc.c index f39f2b8148..0da76da143 100644 --- a/lib_enc/ivas_agc_enc.c +++ b/lib_enc/ivas_agc_enc.c @@ -512,7 +512,9 @@ void ivas_agc_enc_process( if ( per_ch_bit[i] == 1 ) { push_next_indice( hMetaData, (uint16_t) pState->gain_data[i].absGainExpCurr, (int16_t) pState->agc_com.betaE ); +#ifndef FIX_185_REDUCE_MD_BITS push_next_indice( hMetaData, (uint16_t) pState->gain_data[i].gainException, 1 ); +#endif assert( pState->gain_data[i].gainException == FALSE ); } } -- GitLab