diff --git a/lib_com/options.h b/lib_com/options.h index 48d7a6cb28dc7eb4e67e2e3aee258797b31cbee2..43efa024c80d56ef7a2cb60530f4933f02de4d14 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -181,6 +181,7 @@ #endif #define NONBE_FIX_984_OMASA_EXT_OUTPUT /* Nokia: issue #984: complete the OMASA EXT output implementation */ +#define NONBE_FIX_1000_G1_G2_SWB_TBE /* VA: issue 1000: avoid div by zero due to g1 + g2 being zero in SWB TBE */ /* ##################### End NON-BE switches ########################### */ diff --git a/lib_com/swb_tbe_com.c b/lib_com/swb_tbe_com.c index 95b8a53080441100a17708fdc9dc9b543c0c109d..8e21ef1748f841dc6bba8b610270613c1d20b047 100644 --- a/lib_com/swb_tbe_com.c +++ b/lib_com/swb_tbe_com.c @@ -938,6 +938,14 @@ void GenShapedSHBExcitation( } den = 4.0f * c0 * c2 - c4 * c4; + +#ifdef NONBE_FIX_1000_G1_G2_SWB_TBE + if ( den == 0.0f ) + { + den = 1e-7f; + } +#endif + g1 = ( c3 * c4 - 2 * c1 * c2 ) / den; g2 = ( c1 * c4 - 2 * c0 * c3 ) / den; @@ -964,7 +972,17 @@ void GenShapedSHBExcitation( else { /* normalize gain */ +#ifdef NONBE_FIX_1000_G1_G2_SWB_TBE + temp = 0.0f; + if ( g1 + g2 == 0.0f ) + { + temp = 1e-7f; + } + + g = g2 / ( g1 + g2 + temp ); +#else g = g2 / ( g1 + g2 ); +#endif /* quantization of the mixing factor */ cbsize = 1 << NUM_BITS_SHB_VF;