Commit 8002b6e6 authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

Optimization for 3GPP issue 851: Issue in dft stereo at 32 kbps for residual...

Optimization for 3GPP issue 851: Issue in dft stereo at 32 kbps for residual spectral lines decoding

link #851
parent c52e9fe3
Loading
Loading
Loading
Loading
Loading
+9 −8
Original line number Diff line number Diff line
@@ -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 */