Commit 45f1ef52 authored by Manuel Jander's avatar Manuel Jander
Browse files

Fix one regression: -stereo 13200 32 scripts/testv/stvST32c.wav out.192

parent 104f068e
Loading
Loading
Loading
Loading
+33 −7
Original line number Diff line number Diff line
@@ -505,7 +505,11 @@ ivas_error pre_proc_front_ivas_fx(
        Scale_sig( new_inp_12k8_fx, new_inp_out_size, negate( Q_new_inp ) );                                                                                                                      /* scaling back to st->q_inp*/
        st->mem_q = st->q_inp;
        move16();
#ifdef NONBE_FIX_ISSUE_2206
        Copy( st->mem_decim_fx_q_inp, mem_decim_dummy_fx, 2 * L_FILT_MAX ); /* q_inp */
#else
        Copy( st->mem_decim_fx_q_inp, mem_decim_dummy_fx, 2 * L_FILT_MAX ); /* Q(-1) */
#endif
        set16_fx( temp1F_icatdmResampBuf_fx, 0, L_FILT_MAX );
        new_inp_out_size = modify_Fs_ivas_fx( temp1F_icatdmResampBuf_fx, NS2SA_FX2( st->input_Fs, DELAY_FIR_RESAMPL_NS ), input_Fs, new_inp_12k8_fx + L_FRAME, INT_FS_12k8, mem_decim_dummy_fx, 0, &Q_new_inp, &mem_decim_size ); /* st->q_inp */
        Scale_sig( new_inp_12k8_fx + L_FRAME, new_inp_out_size, negate( Q_new_inp ) );                                                                                                                                            /* scaling back to st->q_inp*/
@@ -541,26 +545,36 @@ ivas_error pre_proc_front_ivas_fx(
    ELSE /* DFT stereo */
    {
        /* update the FIR resampling filter memory, needed for switching to time-domain (FIR) resampling */
#ifdef NONBE_FIX_ISSUE_2206
        Copy_Scale_sig( signal_in_fx + sub( input_frame, add( NS2SA_FX2( input_Fs, L_MEM_RECALC_NS ), 2 * NS2SA_FX2( input_Fs, DELAY_FIR_RESAMPL_NS ) ) ), st->mem_decim_fx_q_inp, 2 * NS2SA_FX2( input_Fs, DELAY_FIR_RESAMPL_NS ), sub( -Q1, st->q_inp ) ); /* st->q_inp */
        st->mem_q = -Q1;
        move16();
#else
        Copy( signal_in_fx + sub( input_frame, add( NS2SA_FX2( input_Fs, L_MEM_RECALC_NS ), 2 * NS2SA_FX2( input_Fs, DELAY_FIR_RESAMPL_NS ) ) ), st->mem_decim_fx_q_inp, 2 * NS2SA_FX2( input_Fs, DELAY_FIR_RESAMPL_NS ) ); /* st->q_inp */
        st->mem_q = st->q_inp;
        move16();
#endif

        scale_sig( old_inp_12k8_fx, L_INP_MEM - STEREO_DFT_OVL_12k8, sub( Q_inp_const, st->q_inp ) );
#ifndef NONBE_FIX_ISSUE_2206
        scale_sig( st->input_fx - input_frame, input_frame_full, sub( Q_inp_const, st->q_inp ) );
#endif
        Copy_Scale_sig( st->mem_decim_fx_q_inp, st->mem_decim_fx, 2 * L_FILT_MAX, sub( Q_inp_const, st->q_inp ) ); /* Q(-1) */
        // Scale_sig( st->mem_decim_fx, 2 * L_FILT_MAX, sub( Q_inp_const, st->q_inp ) );                           /* Q(-1) */
#ifndef NONBE_FIX_ISSUE_2206
        st->q_inp = Q_inp_const;
        move16();
        st->q_old_inp = Q_inp_const;
        move16();
#endif
    }

#ifdef NONBE_FIX_ISSUE_2206
    Copy_Scale_sig( st->mem_decim_fx_q_inp, st->mem_decim_fx, 2 * L_FILT_MAX, sub( Q_inp_const, st->q_inp ) ); /* Q(-1) */
#else
    IF( NE_16( Q_inp_const, st->q_inp ) )
    {
        Copy_Scale_sig( st->mem_decim_fx_q_inp, st->mem_decim_fx, 2 * L_FILT_MAX, sub( Q_inp_const, st->q_inp ) ); /* Q(-1) */
    }
#endif

    Scale_sig( st->buf_speech_enc, L_PAST_MAX_32k + L_FRAME32k + L_NEXT_MAX_32k, sub( -1, sub( 15, st->exp_buf_speech_enc ) ) ); /* Q(-1) */
    st->exp_buf_speech_enc = 16;
@@ -570,7 +584,11 @@ ivas_error pre_proc_front_ivas_fx(
    test();
    IF( EQ_16( element_mode, IVAS_CPE_DFT ) )
    {
#ifdef NONBE_FIX_ISSUE_2206
        Copy_Scale_sig( new_inp_12k8_fx - STEREO_DFT_OVL_12k8, st->buf_speech_enc + L_FRAME32k - STEREO_DFT_OVL_12k8, L_FRAME + STEREO_DFT_OVL_12k8, sub( st->q_inp, st->q_inp ) ); /* Q_inp_const */
#else
        Copy_Scale_sig( new_inp_12k8_fx - STEREO_DFT_OVL_12k8, st->buf_speech_enc + L_FRAME32k - STEREO_DFT_OVL_12k8, L_FRAME + STEREO_DFT_OVL_12k8, sub( Q_inp_const, st->q_inp ) ); /* Q_inp_const */
#endif
    }
    ELSE IF( EQ_16( element_mode, IVAS_CPE_TD ) || EQ_16( element_mode, IVAS_CPE_MDCT ) )
    {
@@ -599,8 +617,11 @@ ivas_error pre_proc_front_ivas_fx(
    test();
    IF( EQ_16( element_mode, IVAS_CPE_DFT ) )
    {
#ifdef NONBE_FIX_ISSUE_2206
        Copy_Scale_sig( new_inp_12k8_fx - STEREO_DFT_OVL_12k8 + L_FRAME, st->inp_12k8_mem_stereo_sw_fx, STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT, sub( st->q_inp, st->q_inp ) ); /* memory for TD/DFT stereo switching		st->q_inp */
#else
        Copy_Scale_sig( new_inp_12k8_fx - STEREO_DFT_OVL_12k8 + L_FRAME, st->inp_12k8_mem_stereo_sw_fx, STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT, sub( Q_inp_const, st->q_inp ) ); /* memory for TD/DFT stereo switching		Q_inp_const*/

#endif
        st->mem_preemph_fx_q_inp = st->mem_preemph_DFT_fx_q_inp; /* st->q_inp */
        move16();
        st->mem_preemph_DFT_fx_q_inp = old_inp_12k8_fx[L_INP_MEM - STEREO_DFT_OVL_12k8 + L_FRAME - 1]; /* st->q_inp */
@@ -626,7 +647,11 @@ ivas_error pre_proc_front_ivas_fx(
            {
                st->mem_preemph_fx_q_inp = st->mem_preemph_DFT_fx_q_inp; /* st->q_inp */
                move16();
#ifdef NONBE_FIX_ISSUE_2206
                Copy( st->inp_12k8_mem_stereo_sw_fx, new_inp_12k8_fx - L_MEM_RECALC_12K8 - ( STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT ), STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT ); /* st->q_inp */
#else
                Copy_Scale_sig( st->inp_12k8_mem_stereo_sw_fx, new_inp_12k8_fx - L_MEM_RECALC_12K8 - ( STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT ), STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT, sub( st->q_inp, Q_inp_const ) ); /* st->q_inp */
#endif
                // PREEMPH_FX( new_inp_12k8_fx - L_MEM_RECALC_12K8 - ( STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT ), PREEMPH_FAC, STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT, &st->mem_preemph_fx );
                PREEMPH_32FX( new_inp_12k8_fx - L_MEM_RECALC_12K8 - ( STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT ), sig_out, PREEMPH_FAC, STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT, &st->mem_preemph_fx_q_inp );
                preemp_start_idx = new_inp_12k8_fx - L_MEM_RECALC_12K8 - ( STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT );
@@ -715,7 +740,6 @@ ivas_error pre_proc_front_ivas_fx(
    }
    st->Q_max[i] = shift;
    move16();

    *Q_new = add( *Q_new, Q_inp_const );
    move16();
#ifndef FIX_2015_PREMPH_SAT_ALT
@@ -1561,7 +1585,6 @@ ivas_error pre_proc_front_ivas_fx(

                st->mem_wsp_enc = shl( st->mem_wsp_enc, sub( 0, sub( Q15, st->exp_buf_wspeech_enc ) ) ); // Q0
                move16();

                *Q_new = add( *Q_new, Q_inp_const ); // actual Q_new
                move16();
                Scale_sig( old_inp_12k8_fx, L_INP_12k8, sub( *Q_new, Q_old_inp_12k8 ) ); /* Q_new */
@@ -1653,8 +1676,11 @@ ivas_error pre_proc_front_ivas_fx(
    st->exp_old_inp_12k8 = sub( Q15, add( *Q_new, shift ) );
    move16();


#ifdef NONBE_FIX_ISSUE_2206
    *Q_new = sub( *Q_new, st->q_inp ); // ivas_core_enc will assume inp signal (12k8 and 16k) in Q_new - st->q_inp
#else
    *Q_new = sub( *Q_new, Q_inp_const ); // ivas_core_enc will assume inp signal (12k8 and 16k) in Q_new - 1
#endif
    move16();

    free( mem_decim_dummy_fx );
+7 −1
Original line number Diff line number Diff line
@@ -460,12 +460,18 @@ ivas_error ivas_cpe_enc_fx(
    {
        Copy32( sts[n]->input32_fx, orig_input_fx32[n], input_frame );        /* sts->q_inp32 */
        Copy( sts[n]->input_fx, orig_input_fx[n], input_frame );              /* sts->q_inp */
#ifdef NONBE_FIX_ISSUE_2206
        Q_orig_inp[n] = sts[n]->q_inp;
        Q_orig_inp32[n] = sts[n]->q_inp32;
        move16();
        move16();
#else
        Scale_sig( orig_input_fx[n], input_frame, sub( -1, sts[n]->q_inp ) ); // Q(-1)
        Q_orig_inp[n] = -1;
        Q_orig_inp32[n] = sts[n]->q_inp32;
        move16();
        move16();

#endif
        IF( hCPE->hStereoICBWE != NULL )
        {
            hCPE->hStereoICBWE->dataChan_fx[n] = &orig_input_fx[n][0]; // Q_orig_inp
+9 −1
Original line number Diff line number Diff line
@@ -682,7 +682,11 @@ void stereo_switching_enc_fx(
        /* window DFT synthesis overlap memory @input_Fs, primary channel */
        FOR( i = 0; i < dft_ovl; i++ )
        {
#ifdef NONBE_FIX_ISSUE_2206
            hCPE->hStereoDft->output_mem_dmx_fx[i] = Mpy_32_32_r( hCPE->hStereoDft->win_fx[dft_ovl - 1 - i], old_input_signal_pri[input_frame - dft_ovl + i] ); // q_inp
#else
            hCPE->hStereoDft->output_mem_dmx_fx[i] = L_shl( Mpy_32_32_r( hCPE->hStereoDft->win_fx[dft_ovl - 1 - i], old_input_signal_pri[input_frame - dft_ovl + i] ), sub( 15, q_inp ) ); // Q15
#endif
            move32();
        }
        /* reset 48kHz BWE overlap memory */
@@ -723,6 +727,10 @@ void stereo_switching_enc_fx(
        move16();
        /* update DFT synthesis overlap memory @16kHz, primary channel only */
        L_lerp_fx( hCPE->hStereoDft->output_mem_dmx_fx, hCPE->hStereoDft->output_mem_dmx_16k_fx, STEREO_DFT_OVL_16k, dft_ovl, &q_dmx );
#ifdef NONBE_FIX_ISSUE_2206
        scale_sig32( hCPE->hStereoDft->output_mem_dmx_16k_fx, STEREO_DFT_OVL_16k, sub( q_inp, q_dmx ) );
        scale_sig32( hCPE->hStereoDft->output_mem_dmx_fx, STEREO_DFT_OVL_MAX, sub( q_inp, q_dmx ) );
#else
        FOR( i = 0; i < STEREO_DFT_OVL_16k; i++ )
        {
            hCPE->hStereoDft->output_mem_dmx_16k_fx[i] = L_shl( hCPE->hStereoDft->output_mem_dmx_16k_fx[i], sub( Q15, q_dmx ) ); // Q15
@@ -734,7 +742,7 @@ void stereo_switching_enc_fx(
            hCPE->hStereoDft->output_mem_dmx_fx[i] = L_shl( hCPE->hStereoDft->output_mem_dmx_fx[i], sub( Q15, q_dmx ) ); // Q15
            move32();
        }

#endif
        /* reset DFT synthesis overlap memory @8kHz, secondary channel */
        set32_fx( hCPE->hStereoDft->output_mem_res_8k_fx, 0, STEREO_DFT_OVL_8k );