Commit b078c597 authored by Jan Kiene's avatar Jan Kiene
Browse files

Accept FIX_BASOP_2519_ICBWE_DEC_Q_TRACK

parent 6fce347c
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -105,7 +105,6 @@
/* Macros for issue 1966 are independent, phase diff is always BE for EVS_MONO */
/* The changes for F0+thdModification are mainly for IVAS better float compatibility, */
/* for EVS_MONO, all is kept BE. */
#define FIX_BASOP_2519_ICBWE_DEC_Q_TRACK                /* FhG: BASOP #2519: Track Q-format of dec_2over3_mem_fx across frames in stereo_icBWE_preproc_fx */
#define FIX_BASOP_2592_OVERFLOW                         /* FhG: BASOP #2592: fix overflow in GetF0() */
#define FIX_BASOP_2591_EDGE_DETECT_COMP                 /* FhG: BASOP #2591: Wrong comparison in edge_detect_fx() */
#define FIX_NONBE_2580_USE_LENGTH_NOT_CONSTANT          /* Dolby: fix 2580: use dynamic length denominator for average energy in unclr_calc_corr_features_fx() */
+0 −5
Original line number Diff line number Diff line
@@ -511,14 +511,9 @@ typedef struct stereo_icbwe_enc_data_structure
    Word32 prevRefEner_fx;     // Q31
    Word32 prevNonRefEner_fx;  // Q31
    Word32 memGsEnerMap_fx[2]; // Q31
#ifdef FIX_BASOP_2519_ICBWE_DEC_Q_TRACK
    Word16 dec_2over3_mem_fx[L_FILT_2OVER3];       // Q -> q_dec_2over3_mem_fx
    Word16 dec_2over3_mem_lp_fx[L_FILT_2OVER3_LP]; // Q -> q_dec_2over3_mem_fx
    Word16 q_dec_2over3_mem_fx;                    // current Q of dec_2over3_mem_fx and dec_2over3_mem_lp_fx
#else
    Word16 dec_2over3_mem_fx[L_FILT_2OVER3];       // Q -> q_dataChan_fx
    Word16 dec_2over3_mem_lp_fx[L_FILT_2OVER3_LP]; // Q -> q_dataChan_fx
#endif
    Word16 icbwe_inp_mem_fx[CPE_CHANNELS][NS2SA( 48000, L_MEM_RECALC_TBE_NS )]; // Q -> q_dataChan_fx
    Word16 *dataChan_fx[CPE_CHANNELS];
    Word16 q_dataChan_fx;
+0 −12
Original line number Diff line number Diff line
@@ -1146,10 +1146,8 @@ void stereo_icBWE_init_enc_fx(

    set16_fx( hStereoICBWE->dec_2over3_mem_fx, 0, L_FILT_2OVER3 );
    set16_fx( hStereoICBWE->dec_2over3_mem_lp_fx, 0, L_FILT_2OVER3_LP );
#ifdef FIX_BASOP_2519_ICBWE_DEC_Q_TRACK
    hStereoICBWE->q_dec_2over3_mem_fx = 0;
    move16();
#endif
    set16_fx( hStereoICBWE->memHPF_fx, 0, 8 );

    /* BWE ref channel */
@@ -1282,10 +1280,8 @@ void stereo_icBWE_preproc_fx(
    {
        set16_fx( hStereoICBWE->dec_2over3_mem_fx, 0, L_FILT_2OVER3 );
        set16_fx( hStereoICBWE->dec_2over3_mem_lp_fx, 0, L_FILT_2OVER3_LP );
#ifdef FIX_BASOP_2519_ICBWE_DEC_Q_TRACK
        hStereoICBWE->q_dec_2over3_mem_fx = 0;
        move16();
#endif
        set16_fx( hStereoICBWE->mem_decim_shb_ch0_fx, 0, ( 2 * L_FILT_MAX ) );
        set16_fx( shb_speech_nonref_fx, 0, L_FRAME16k );
        set16_fx( hStereoICBWE->memHPF_fx, 0, 8 );
@@ -1306,7 +1302,6 @@ void stereo_icBWE_preproc_fx(
                i = 2 * L_FILT48k + L_FILT_2OVER3;
                move16();

#ifdef FIX_BASOP_2519_ICBWE_DEC_Q_TRACK
                IF( NE_16( hStereoICBWE->q_dec_2over3_mem_fx, hStereoICBWE->q_dataChan_fx ) )
                {
                    Word16 scf = sub( hStereoICBWE->q_dataChan_fx, hStereoICBWE->q_dec_2over3_mem_fx );
@@ -1315,7 +1310,6 @@ void stereo_icBWE_preproc_fx(
                    hStereoICBWE->q_dec_2over3_mem_fx = hStereoICBWE->q_dataChan_fx;
                    move16();
                }
#endif
                decimate_2_over_3_allpass_fx( temp_in_fx + sub( input_frame, i ), i, temp_inp_fx + mult( sub( input_frame, i ), 21845 /* 2/3 Q15*/ ), hStereoICBWE->dec_2over3_mem_fx, allpass_poles_3_ov_2, decimate_3_ov_2_lowpass_num_fx, decimate_3_ov_2_lowpass_den_fx, hStereoICBWE->dec_2over3_mem_lp_fx );
            }
            /* flip the spectrum */
@@ -1337,7 +1331,6 @@ void stereo_icBWE_preproc_fx(
                move16();

                /* IVAS-219: the same filter memories are used for both channels; the continuity is thus lost; shouldn't the memories be separated? */
#ifdef FIX_BASOP_2519_ICBWE_DEC_Q_TRACK
                IF( NE_16( hStereoICBWE->q_dec_2over3_mem_fx, hStereoICBWE->q_dataChan_fx ) )
                {
                    Word16 scf = sub( hStereoICBWE->q_dataChan_fx, hStereoICBWE->q_dec_2over3_mem_fx );
@@ -1346,7 +1339,6 @@ void stereo_icBWE_preproc_fx(
                    hStereoICBWE->q_dec_2over3_mem_fx = hStereoICBWE->q_dataChan_fx;
                    move16();
                }
#endif

                decimate_2_over_3_allpass_fx( temp_in_fx + sub( input_frame, i ), i, temp_inp_fx + mult( sub( input_frame, i ), 21845 /* 2/3 Q15*/ ), hStereoICBWE->dec_2over3_mem_fx, allpass_poles_3_ov_2, decimate_3_ov_2_lowpass_num_fx, decimate_3_ov_2_lowpass_den_fx, hStereoICBWE->dec_2over3_mem_lp_fx );
            }
@@ -1383,10 +1375,8 @@ void stereo_icBWE_preproc_fx(

        set16_fx( hStereoICBWE->dec_2over3_mem_fx, 0, L_FILT_2OVER3 );
        set16_fx( hStereoICBWE->dec_2over3_mem_lp_fx, 0, L_FILT_2OVER3_LP );
#ifdef FIX_BASOP_2519_ICBWE_DEC_Q_TRACK
        hStereoICBWE->q_dec_2over3_mem_fx = 0;
        move16();
#endif
        set16_fx( hStereoICBWE->mem_decim_shb_ch0_fx, 0, ( 2 * L_FILT_MAX ) );
        set16_fx( shb_speech_nonref_fx, 0, L_FRAME16k );
        set16_fx( hStereoICBWE->memHPF_fx, 0, 8 );
@@ -1430,7 +1420,6 @@ void stereo_icBWE_preproc_fx(
        Copy( temp_inp_fx, temp_in_fx, L_FRAME48k ); /* q_dataChan_fx */
        set16_fx( temp_inp_fx, 0, L_FRAME48k );

#ifdef FIX_BASOP_2519_ICBWE_DEC_Q_TRACK
        IF( NE_16( hStereoICBWE->q_dec_2over3_mem_fx, hStereoICBWE->q_dataChan_fx ) )
        {
            Word16 scf = sub( hStereoICBWE->q_dataChan_fx, hStereoICBWE->q_dec_2over3_mem_fx );
@@ -1439,7 +1428,6 @@ void stereo_icBWE_preproc_fx(
            hStereoICBWE->q_dec_2over3_mem_fx = hStereoICBWE->q_dataChan_fx;
            move16();
        }
#endif

        decimate_2_over_3_allpass_fx( temp_in_fx, L_FRAME48k, temp_inp_fx, hStereoICBWE->dec_2over3_mem_fx, allpass_poles_3_ov_2, decimate_3_ov_2_lowpass_num_fx, decimate_3_ov_2_lowpass_den_fx, hStereoICBWE->dec_2over3_mem_lp_fx );
    }