Commit f92c665e authored by thomas dettbarn's avatar thomas dettbarn
Browse files

improving bit exactness.

parent 8db6d403
Loading
Loading
Loading
Loading
+65 −29
Original line number Diff line number Diff line
@@ -611,6 +611,8 @@ static void tcx_ltp_synth_filter32(
                synth[j] = L_sub_sat( synth[j], zir[j] );
            }
        }
        IF ( fade != 0)
        {
            FOR( j = 0; j < length; j++ )
            {
                s = L_deposit_l( 0 );
@@ -647,6 +649,40 @@ static void tcx_ltp_synth_filter32(
            }
        }
        ELSE
        {
            FOR( j = 0; j < length; j++ )
            {
                s = L_deposit_l( 0 );
                s2 = L_deposit_l( 0 );
                k = 0;
                move16();
                FOR( i = 0; i < L; i++ )
                {
                    s = Madd_32_16_r( Madd_32_16_r( s, x0[i], w0[k] ), x1[-i], w1[k] );   /* Qx */
                    s2 = Madd_32_16_r( Madd_32_16_r( s2, y0[i], v0[k] ), y1[-i], v1[k] ); /* Qx */
                    k = k + pitch_res;
                }
    
                /* s2 *= ALPHA;
                   normal:      synth_ltp[j] = synth[j] - gain * s2 + gain * s;
                   zir:         synth_ltp[j] = synth[j] - gain * s2 + gain * s - zir[j];
                   fade-in/out: synth_ltp[j] = synth[j] - alpha * gain * s2 + alpha * gain * s; */
                L_tmp = L_sub_sat( s, Mpy_32_16_r( s2, ALPHA ) ); /* Qx */
                L_tmp2 = Mpy_32_16_r( L_tmp, gain );              /* Qx */
                L_tmp2 = L_add_sat( synth[j], L_tmp2 );           /* Qx */
    
                synth_ltp[j] = L_tmp2; /* Qx */
                move16();
    
                x0++;
                x1++;
                y0++;
                y1++;
            }

        }
    }
    ELSE
    {
        Copy32( synth, synth_ltp, length ); /* Qx */
    }