Commit 26f6c3e0 authored by Manuel Jander's avatar Manuel Jander
Browse files

Improve mem_wsp_enc handling.

parent af28880d
Loading
Loading
Loading
Loading
Loading
+18 −10
Original line number Diff line number Diff line
@@ -1355,10 +1355,6 @@ static void init_sig_buffers_ivas_fx( Encoder_State *st, const Word16 L_frame_ol
            Copy( st->old_wsp_fx, st->buf_wspeech_enc + st->L_frame + L_SUBFR - L_WSP_MEM, L_WSP_MEM );
            st->exp_buf_wspeech_enc = st->exp_old_wsp;
            move16();
#ifdef NONBE_FIX_ISSUE_2206
            st->mem_wsp_enc = st->buf_wspeech_enc[st->L_frame + L_SUBFR - 1];
            move16();
#endif

            /*Resamp buffers needed only for ACELP*/
            test();
@@ -1401,7 +1397,10 @@ static void init_sig_buffers_ivas_fx( Encoder_State *st, const Word16 L_frame_ol
            move16();
            st->exp_mem_preemph_enc = st->exp_buf_speech_enc;
            move16();
#ifndef NONBE_FIX_ISSUE_2206
#ifdef NONBE_FIX_ISSUE_2206
            st->mem_wsp_enc = st->buf_wspeech_enc[st->L_frame + L_SUBFR - 1];
            move16();
#else
            st->mem_wsp_enc = shr( st->buf_wspeech_enc[st->L_frame + L_SUBFR - 1], sub( Q16, st->exp_buf_wspeech_enc ) ); // Q-1
            move16();
#endif
@@ -1409,23 +1408,32 @@ static void init_sig_buffers_ivas_fx( Encoder_State *st, const Word16 L_frame_ol
        /*coming from TCXonly modes*/
        ELSE IF( !st->tcxonly && GE_32( last_total_brate, ACELP_32k ) )
        {
#ifdef NONBE_FIX_ISSUE_2206
            Word16 exp_buf_wspeech_enc;

            exp_buf_wspeech_enc = s_max( st->exp_old_wsp, st->exp_buf_wspeech_enc );
            Scale_sig( st->buf_wspeech_enc, L_FRAME16k + L_SUBFR + L_FRAME16k + L_NEXT_MAX_16k + 320, sub( st->exp_buf_wspeech_enc, exp_buf_wspeech_enc ) );
            Copy_Scale_sig_nosat( st->old_wsp_fx, st->buf_wspeech_enc + st->L_frame + L_SUBFR - L_WSP_MEM, L_WSP_MEM, sub( st->exp_old_wsp, exp_buf_wspeech_enc ) );
            st->exp_buf_wspeech_enc = exp_buf_wspeech_enc;
            move16(); /*Resamp buffers needed only for ACELP*/
#else

            Scale_sig( st->buf_wspeech_enc, L_FRAME16k + L_SUBFR + L_FRAME16k + L_NEXT_MAX_16k + 320, sub( 0, sub( st->exp_old_wsp, st->exp_buf_wspeech_enc ) ) );
            Copy( st->old_wsp_fx, st->buf_wspeech_enc + st->L_frame + L_SUBFR - L_WSP_MEM, L_WSP_MEM );
            // Copy_Scale_sig( st->old_wsp_fx, st->buf_wspeech_enc + st->L_frame + L_SUBFR - L_WSP_MEM, L_WSP_MEM, sub( st->prev_Q_new, st->prev_Q_old ) );
#ifdef NONBE_FIX_ISSUE_2206
            st->mem_wsp_enc = st->buf_wspeech_enc[st->L_frame + L_SUBFR - 1];
            move16();
#endif
            st->exp_buf_wspeech_enc = st->exp_old_wsp;
            move16(); /*Resamp buffers needed only for ACELP*/
#endif
            IF( EQ_16( st->L_frame, L_FRAME16k ) )
            {
                lerp( st->buf_wspeech_enc + st->L_frame + L_SUBFR - L_WSP_MEM, st->buf_wspeech_enc + st->L_frame + L_SUBFR - 310, 310, L_WSP_MEM );
            }
            hLPDmem->mem_w0 = 0;
            move16();
#ifndef NONBE_FIX_ISSUE_2206
#ifdef NONBE_FIX_ISSUE_2206
            st->mem_wsp_enc = st->buf_wspeech_enc[st->L_frame + L_SUBFR - 1];
            move16();
#else
            st->mem_wsp_enc = shr( st->buf_wspeech_enc[st->L_frame + L_SUBFR - 1], sub( Q16, st->exp_buf_wspeech_enc ) ); // Q-1
            move16();
#endif
+1 −1
Original line number Diff line number Diff line
@@ -906,7 +906,7 @@ Word16 ivas_acelp_tcx20_switching_fx(
        move16();
    }
#ifdef NONBE_FIX_ISSUE_2206
    e_x = sub( 15, q_inp ); /*exponent for xn_buf_fx*/
    e_x = sub( Q15, q_inp ); /*exponent for xn_buf_fx*/
#else
    e_x = sub( 16, q_inp ); /*exponent for xn_buf_fx*/
#endif