Commit f94c6dcb authored by multrus's avatar multrus
Browse files

fix for scaling problem in apa_exec_ivas_fx()

parent 049c5ad5
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -91,6 +91,7 @@
#define FIX_1990_SANITIZER_IN_REVERB_LOAD                    /* Nokia: Fix issue part of issue 1990 by introducing missing free of structure. */
#define FIX_1995_REVERB_INIT                                 /* VA/Nokia: issue 1995: Fix use-of-uninitialized-value in ivas_binaural_reverb_init() */
#define FIX_1996_MASKING_NOISE                               /* Dlb: Heavy precision loss in ola buffers causing discontinuity*/
#define FIX1998_APA_EXEC_SCALING                             /* FhG: fix scaling of apa_exec_ivas_fx(); avoid continuously worse scaling with previous data */

/* #################### Start BASOP porting switches ############################ */

+6 −1
Original line number Diff line number Diff line
@@ -964,8 +964,13 @@ UWord8 apa_exec_ivas_fx(
    {
        Word16 a_tmp[APA_BUF];
        Word16 *buf_out_ptr = &( ps->buf_out_fx[ps->l_buf_out - ps->l_frm] );
#ifdef FIX1998_APA_EXEC_SCALING
        Word16 Q_buf_out_tmp = norm_arr( ps->buf_out_fx, ps->buf_out_capacity );

        Q_a_out = s_min( Q_a_out, Q_buf_out_tmp );
#else
        Q_a_out = s_min( Q_a_out, ps->Q_buf_out );
#endif
        Scale_sig( ps->buf_out_fx, ps->buf_out_capacity, sub( Q_a_out, ps->Q_buf_out ) ); // Q_buf_out -> Q_a_out
        IF( EQ_32( ps->scale, 100 ) )
        {
@@ -983,7 +988,7 @@ UWord8 apa_exec_ivas_fx(

            FOR( i = 0; i < ps->num_channels * APA_BUF_PER_CHANNEL; i++ )
            {
                a_tmp[i] = extract_h( L_shl( a_in[i], add( Q_a_out, Q5 ) ) ); // Q_a_out
                a_tmp[i] = extract_h( L_shl( a_in[i], add( Q_a_out, Q16 - Q11 ) ) ); // Q_a_out
                move16();
            }
            /* fill input frame */