Commit 0b0f1c4f authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

Merge branch '3gpp_issue_979_fix' into 'main'

Fix for 3GPP issue 979: OSBA 128kbps JBM - Saturations across whole signal [allow regression]

See merge request !739
parents a41b2422 a930638c
Loading
Loading
Loading
Loading
+0 −7
Original line number Diff line number Diff line
@@ -2163,11 +2163,6 @@ void ivas_mdct_core_reconstruct_fx(
        ELSE /*ACELP core for ACELP-PLC */
        {
            assert( EQ_16( st->bfi, 1 ) );
            Scale_sig( synth_buf_fx, add( add( st->hTcxDec->old_synth_len, L_FRAME_PLUS ), M ), negate( q_syn ) );     // Q0
            Scale_sig( synth_bufFB_fx, add( add( st->hTcxDec->old_synth_lenFB, L_FRAME_PLUS ), M ), negate( q_syn ) ); // Q0
            q_syn = 0;
            move16();
            move16();
            /* PLC: [TCX: TD PLC] */
            IF( MCT_flag != 0 )
            {
@@ -2184,8 +2179,6 @@ void ivas_mdct_core_reconstruct_fx(
                    con_tcx_ivas_fx( st, &synthFB_fx[0], hCPE->hStereoMdct->lastCoh_fx, &sts[0]->seed_acelp, 0, &st->hFdCngDec->hFdCngCom->A_cng[0] );
                }
            }

            Scale_sig( synthFB_fx, st->hTcxDec->L_frameTCX, q_syn ); // q_syn
            IF( ( EQ_16( st->nbLostCmpt, 1 ) ) || ( st->hTcxDec->tcxConceal_recalc_exc != 0 ) )
            {
                Scale_sig( synthFB_fx - add( add( shr( st->hTcxDec->L_frameTCX, 1 ), st->hTcxDec->pit_max_TCX ), 2 * M ), add( add( shr( st->hTcxDec->L_frameTCX, 1 ), st->hTcxDec->pit_max_TCX ), 2 * M ), sub( q_syn, sub( st->Q_exc, 1 ) ) ); // 2 * q_syn - (st->Q_exc - 1)
+15 −2
Original line number Diff line number Diff line
@@ -1105,9 +1105,22 @@ ivas_error IVAS_DEC_GetSamples(
            }
            ELSE
            {
                Word32 max_val;
                Word16 max_shift;

                maximum_32_fx( hIvasDec->apaExecBuffer_fx, APA_BUF_PER_CHANNEL * nTransportChannels, &max_val );
                IF( max_val )
                {
                    max_shift = s_max( Q12, sub( 31 - 3, norm_l( L_shr( max_val, 11 ) ) ) );
                }
                ELSE
                {
                    max_shift = Q12;
                    move16();
                }
                FOR( Word32 i = 0; i < APA_BUF_PER_CHANNEL * nTransportChannels; ++i )
                {
                    tmp_apaExecBuffer[i] = extract_l( L_shr( hIvasDec->apaExecBuffer_fx[i], Q12 ) ); // Q(-1)
                    tmp_apaExecBuffer[i] = extract_l( L_shr( hIvasDec->apaExecBuffer_fx[i], max_shift ) ); // Q(-1)
                }
                IF( apa_exec_ivas_fx( hIvasDec->hTimeScaler, tmp_apaExecBuffer, (UWord16) imult3216( hIvasDec->nSamplesFrame, nTransportChannels ), (UWord16) hIvasDec->tsm_max_scaling, tmp_apaExecBuffer, &nTimeScalerOutSamples ) != 0 )
                {
@@ -1116,7 +1129,7 @@ ivas_error IVAS_DEC_GetSamples(

                FOR( Word32 i = 0; i < APA_BUF_PER_CHANNEL * nTransportChannels; ++i )
                {
                    hIvasDec->apaExecBuffer_fx[i] = L_shl( tmp_apaExecBuffer[i], Q12 ); // Q11
                    hIvasDec->apaExecBuffer_fx[i] = L_shl( tmp_apaExecBuffer[i], max_shift ); // Q11
                }
            }
            assert( LE_32( (Word32) nTimeScalerOutSamples, APA_BUF ) );