Commit 6be769c3 authored by Jean-Marc Valin's avatar Jean-Marc Valin
Browse files

Apply 02f3ac22 fix for divide-by-zero to the SSE4.1 version of silk_burg_modified()

parent 1a94b2b8
...@@ -300,6 +300,7 @@ void silk_burg_modified_sse4_1( ...@@ -300,6 +300,7 @@ void silk_burg_modified_sse4_1(
/* Max prediction gain exceeded; set reflection coefficient such that max prediction gain is exactly hit */ /* Max prediction gain exceeded; set reflection coefficient such that max prediction gain is exactly hit */
tmp2 = ( (opus_int32)1 << 30 ) - silk_DIV32_varQ( minInvGain_Q30, invGain_Q30, 30 ); /* Q30 */ tmp2 = ( (opus_int32)1 << 30 ) - silk_DIV32_varQ( minInvGain_Q30, invGain_Q30, 30 ); /* Q30 */
rc_Q31 = silk_SQRT_APPROX( tmp2 ); /* Q15 */ rc_Q31 = silk_SQRT_APPROX( tmp2 ); /* Q15 */
if( rc_Q31 > 0 ) {
/* Newton-Raphson iteration */ /* Newton-Raphson iteration */
rc_Q31 = silk_RSHIFT32( rc_Q31 + silk_DIV32( tmp2, rc_Q31 ), 1 ); /* Q15 */ rc_Q31 = silk_RSHIFT32( rc_Q31 + silk_DIV32( tmp2, rc_Q31 ), 1 ); /* Q15 */
rc_Q31 = silk_LSHIFT32( rc_Q31, 16 ); /* Q31 */ rc_Q31 = silk_LSHIFT32( rc_Q31, 16 ); /* Q31 */
...@@ -307,6 +308,7 @@ void silk_burg_modified_sse4_1( ...@@ -307,6 +308,7 @@ void silk_burg_modified_sse4_1(
/* Ensure adjusted reflection coefficients has the original sign */ /* Ensure adjusted reflection coefficients has the original sign */
rc_Q31 = -rc_Q31; rc_Q31 = -rc_Q31;
} }
}
invGain_Q30 = minInvGain_Q30; invGain_Q30 = minInvGain_Q30;
reached_max_gain = 1; reached_max_gain = 1;
} else { } else {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment