Commit 71876747 authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

Merge branch '3gpp_issue_1383_fix' into 'main'

Fix for 3GPP issue 1383: audible spatial leakage issue at SBA 160 kbps, 48 khz [allow regression]

See merge request !1288
parents 2d6aaa67 ac57521b
Loading
Loading
Loading
Loading
+18 −3
Original line number Diff line number Diff line
@@ -1203,19 +1203,22 @@ void ivas_dirac_param_est_enc_fx(
                move16();
            }

            Word16 buffer_intensity_real_single_q;
            Word16 buffer_intensity_real_single_q, min_shift = MAX_16;
            move16();
            buffer_intensity_real_single_q = hDirAC->buffer_intensity_real_q[0][0][0];
            move16();
            FOR( i = 0; i < DIRAC_NUM_DIMS; i++ )
            {
                FOR( j = 0; j < hDirAC->no_col_avg_diff; j++ )
                {
                    min_shift = s_min( min_shift, L_norm_arr( hDirAC->buffer_intensity_real_fx[i][j], num_freq_bands ) );
                    FOR( k = 0; k < num_freq_bands; k++ )
                    {
                        buffer_intensity_real_single_q = s_min( buffer_intensity_real_single_q, hDirAC->buffer_intensity_real_q[i][j][k] );
                    }
                }
            }
            buffer_intensity_real_single_q = add( buffer_intensity_real_single_q, min_shift );
            FOR( i = 0; i < DIRAC_NUM_DIMS; i++ )
            {
                FOR( j = 0; j < hDirAC->no_col_avg_diff; j++ )
@@ -1569,8 +1572,20 @@ static void computeIntensityVector_enc_fx(
#endif
        }
#ifdef NONBE_IMPROVE_DIRAC_INTENSITY_PREC
        norm = s_min( W_norm( tmp_1 ), W_norm( tmp_2 ) );
        norm = 63;
        move16();
        IF( tmp_1 != 0 )
        {
            norm = s_min( norm, W_norm( tmp_1 ) );
        }
        IF( tmp_2 != 0 )
        {
            norm = s_min( norm, W_norm( tmp_2 ) );
        }
        IF( tmp_3 != 0 )
        {
            norm = s_min( norm, W_norm( tmp_3 ) );
        }
        intensity_real[0][i] = W_extract_h( W_shl( tmp_1, norm ) ); // shift_value - (gb - norm)
        move32();
        intensity_real[1][i] = W_extract_h( W_shl( tmp_2, norm ) ); // shift_value - (gb - norm)