Commit 02978032 authored by Fabian Bauer's avatar Fabian Bauer
Browse files

Merge branch 'main' of ssh://forge.3gpp.org:29419/sa4/audio/ivas-basop into...

Merge branch 'main' of ssh://forge.3gpp.org:29419/sa4/audio/ivas-basop into 1799-replace-l_shr_o-by-overflow-free-alternatives
parents e605de18 b480684c
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -232,6 +232,9 @@ void ivas_reverb_t2f_f2t_ClearHistory(
        move32();
    }

    t2f_f2t->prev_shift = 31;
    move16();

    return;
}
/*-----------------------------------------------------------------------------------------*
+24 −2
Original line number Diff line number Diff line
@@ -1824,6 +1824,7 @@ static void reverb_block_fx(
    Word32 pTemp_fx[INNER_BLK_SIZE];
    Word32 *ppOutput_fx[IVAS_REV_MAX_NR_BRANCHES];
    Word32 Output_fx[IVAS_REV_MAX_NR_BRANCHES][INNER_BLK_SIZE];
    Word16 shift;
    move16();
    move16();
    move16();
@@ -1894,6 +1895,27 @@ static void reverb_block_fx(
        }
    }

    shift = s_min( L_norm_arr( pOut0_fx, hReverb->fft_filter_ols.block_size ), L_norm_arr( pOut1_fx, hReverb->fft_filter_ols.block_size ) );

    IF( LT_16( shift, hReverb->fft_filter_ols.prev_shift ) )
    {
        scale_sig32( pOut0_fx, hReverb->fft_filter_ols.block_size, shift );
        scale_sig32( pOut1_fx, hReverb->fft_filter_ols.block_size, shift );
        scale_sig32( hReverb->fft_filter_ols.fft_history_L_fx, hReverb->fft_filter_ols.hist_size, sub( shift, hReverb->fft_filter_ols.prev_shift ) );
        scale_sig32( hReverb->fft_filter_ols.fft_history_R_fx, hReverb->fft_filter_ols.hist_size, sub( shift, hReverb->fft_filter_ols.prev_shift ) );

        hReverb->fft_filter_ols.prev_shift = shift;
        move16();
    }
    ELSE
    {
        scale_sig32( pOut0_fx, hReverb->fft_filter_ols.block_size, hReverb->fft_filter_ols.prev_shift );
        scale_sig32( pOut1_fx, hReverb->fft_filter_ols.block_size, hReverb->fft_filter_ols.prev_shift );

        shift = hReverb->fft_filter_ols.prev_shift;
        move16();
    }

    Word16 r_shift;
    r_shift = add( find_guarded_bits_fx( hReverb->fft_filter_ols.fft_size ), 1 );
    // Applying guard bits for the DoRTFT inside the post_fft_filter function
@@ -1913,9 +1935,9 @@ static void reverb_block_fx(

    FOR( k = 0; k < hReverb->fft_filter_ols.block_size; k++ )
    {
        pOut0_fx[k] = (Word32) L_shl( pOut0_fx[k], 1 );
        pOut0_fx[k] = (Word32) L_shl( pOut0_fx[k], sub( 1, shift ) );
        move32();
        pOut1_fx[k] = (Word32) L_shl( pOut1_fx[k], 1 );
        pOut1_fx[k] = (Word32) L_shl( pOut1_fx[k], sub( 1, shift ) );
        move32();
    }

+1 −0
Original line number Diff line number Diff line
@@ -895,6 +895,7 @@ typedef struct ivas_reverb_t2f_f2t_t
    Word32 fft_history_L_fx[RV_FILTER_MAX_HISTORY];
    // float fft_history_R[RV_FILTER_MAX_HISTORY];
    Word32 fft_history_R_fx[RV_FILTER_MAX_HISTORY];
    Word16 prev_shift;

} ivas_reverb_t2f_f2t_t;
/* FFT filter with its frequency response coefficients */