From 8002b6e6cd02a38aa7adbcb780d05993677399c3 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Mon, 9 Dec 2024 14:17:20 +0530 Subject: [PATCH] Optimization for 3GPP issue 851: Issue in dft stereo at 32 kbps for residual spectral lines decoding link #851 --- lib_dec/ivas_range_uni_dec.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lib_dec/ivas_range_uni_dec.c b/lib_dec/ivas_range_uni_dec.c index 65adec996..785d5e9f5 100644 --- a/lib_dec/ivas_range_uni_dec.c +++ b/lib_dec/ivas_range_uni_dec.c @@ -384,20 +384,21 @@ UWord16 rc_uni_dec_read_bits( UWord32 val; UWord32 low; /* local copy (2 to 6 uses) */ UWord32 range; /* local copy (4 to 7 uses) */ - Word16 norm_range; - UWord32 temp1, temp2; - Word16 exp_temp1; + UWord32 tmp; low = rc_st_dec->rc_low; /*Q0*/ range = rc_st_dec->rc_range; /*Q0*/ move32(); move32(); range = (UWord32) W_shr( range, bits ); /*range >>= bits*/ - exp_temp1 = sub( W_norm( low ), 31 + 1 ); - temp1 = (UWord32) W_shl( low, exp_temp1 ); /*Q : W_norm( low ) - 32*/ - norm_range = sub( W_norm( range ), 31 ); - temp2 = (UWord32) W_shl( range, norm_range ); /*Q : W_norm( range ) - 31*/ - val = (UWord32) W_shr( UL_div( temp1, temp2 ), sub( add( 32, exp_temp1 ), norm_range ) ); /*Q0*/ + + val = 0; + move32(); + + FOR( tmp = range; tmp <= low; tmp += range ) + { + val = add( val, 1 ); + } /* in case of bitstream errors it is possible that val >= (1 << bits) */ IF( W_shr( val, bits ) != 0 ) /* equivalent condition */ -- GitLab