diff --git a/lib_com/ivas_omasa_com.c b/lib_com/ivas_omasa_com.c index 8e385537c3738d0099c6f0ff060192ff4ba7eb0d..bee378307b33a404592a5356a77a2fd4cb52ed0e 100644 --- a/lib_com/ivas_omasa_com.c +++ b/lib_com/ivas_omasa_com.c @@ -240,19 +240,58 @@ int32_t ivas_interformat_brate( ( ism_mode == ISM_MASA_MODE_DISC && element_brate == 9600 ) /* this condition corresponds to the ivas_total_brate = 24400 and 1 object */ ) { +#ifdef FIX_694_OMASA_EXTREME + if ( ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ && element_brate == IVAS_13k2 ) + { + if ( ism_imp == ISM_LOW_IMP ) + { + nBits = (int16_t) ( nBits * GAMMA_ISM_LOW_IMP3 ); + } + else if ( ism_imp == ISM_MEDIUM_IMP ) + { + nBits = (int16_t) ( nBits * GAMMA_ISM_MEDIUM_IMP3 ); + } + else /* ISM_HIGH_IMP */ + { + nBits = (int16_t) ( nBits * GAMMA_ISM_HIGH_IMP4 ); + } + } + else + { +#endif + if ( ism_imp == ISM_LOW_IMP ) + { + nBits = (int16_t) ( nBits * GAMMA_ISM_LOW_IMP3 ); + } + else if ( ism_imp == ISM_MEDIUM_IMP ) + { + nBits = (int16_t) ( nBits * GAMMA_ISM_MEDIUM_IMP3 ); + } + else /* ISM_HIGH_IMP */ + { + nBits = (int16_t) ( nBits * GAMMA_ISM_HIGH_IMP3 ); + } +#ifdef FIX_694_OMASA_EXTREME + } +#endif + } +#ifdef FIX_694_OMASA_EXTREME + else if ( ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ && element_brate == 16000 ) + { if ( ism_imp == ISM_LOW_IMP ) { - nBits = (int16_t) ( nBits * GAMMA_ISM_LOW_IMP3 ); + nBits = (int16_t) ( nBits * GAMMA_ISM_LOW_IMP ); } else if ( ism_imp == ISM_MEDIUM_IMP ) { - nBits = (int16_t) ( nBits * GAMMA_ISM_MEDIUM_IMP3 ); + nBits = (int16_t) ( nBits * GAMMA_ISM_MEDIUM_IMP ); } else /* ISM_HIGH_IMP */ { nBits = (int16_t) ( nBits * GAMMA_ISM_HIGH_IMP3 ); } } +#endif else { if ( ism_imp == ISM_LOW_IMP ) diff --git a/lib_com/ivas_stereo_td_bit_alloc.c b/lib_com/ivas_stereo_td_bit_alloc.c index 823c1b194458b3fcc6cf4c424997ed104b3b3250..f77a0a093321a6bf09405e8e7127931451bd8551 100644 --- a/lib_com/ivas_stereo_td_bit_alloc.c +++ b/lib_com/ivas_stereo_td_bit_alloc.c @@ -313,6 +313,10 @@ void tdm_bit_alloc( else { *total_brate_sec = min( *total_brate_sec, element_brate_wo_meta - ( 5900 + BWE_brate ) ); + +#ifdef FIX_694_OMASA_EXTREME + *total_brate_sec = max( *total_brate_sec, tdm_bit_allc_tbl[idx][coder_type] ); /* sanity check to ensure the secondary channel always gets the minimal bitrate it needs */ +#endif } /* Secondary channel bitrate adjusment */ diff --git a/lib_com/options.h b/lib_com/options.h index 5e2938d7605e379309c511360c5ade3db2eb0aae..43d94c665961a5662edf2a22c289c91c828a4d60 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -172,6 +172,8 @@ #define FIX_691_OSBA_CRASH /* FhG: Fix for issue 691: Crash for OSBA Stereo out */ +#define FIX_694_OMASA_EXTREME /* Nokia: fix for crash in OMASA on extreme sample */ + /* ################## End BE DEVELOPMENT switches ######################### */ /* #################### Start NON-BE CR switches ########################## */