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

Fix for 3GPP issue 1434: [regression] Encoder crash for MDCT Stereo at 80 kbps...

Fix for 3GPP issue 1434: [regression] Encoder crash for MDCT Stereo at 80 kbps and above in stereo_mdct_core_enc_fx()

Link #1434
parent 3f263d12
Loading
Loading
Loading
Loading
Loading
+11 −13
Original line number Diff line number Diff line
@@ -362,27 +362,25 @@ void stereo_mdct_core_enc_fx(
        Word16 hdrm_min = MAX_16;
        move16();
        FOR( ch = 0; ch < CPE_CHANNELS; ch++ )
        {
            IF( EQ_16( sts[ch]->hTcxEnc->tcxMode, TCX_20 ) )
        {
            length = sts[ch]->hTcxEnc->L_frameTCX;
            move16();
            }
            ELSE
            if ( NE_16( sts[ch]->hTcxEnc->tcxMode, TCX_20 ) )
            {
                length = shr( sts[ch]->hTcxEnc->L_frameTCX, 1 );
            }
            FOR( k = 0; k <= ( ( sts[ch]->core == TCX_20_CORE ) ? 1 : NB_DIV ) - 1; k++ )

            hdrm_min = s_min( hdrm_min, L_norm_arr( sts[ch]->hTcxEnc->spectrum_fx[0], length ) );
            hdrm_min = s_min( hdrm_min, L_norm_arr( mdst_spectrum_fx[ch][0], length ) );

            IF( NE_16( sts[ch]->hTcxEnc->tcxMode, TCX_20 ) )
            {
                hdrm_min = s_min( hdrm_min, L_norm_arr( sts[ch]->hTcxEnc->spectrum_fx[k], length ) );
                hdrm_min = s_min( hdrm_min, L_norm_arr( mdst_spectrum_fx[ch][k], length ) );
                hdrm_min = s_min( hdrm_min, L_norm_arr( sts[ch]->hTcxEnc->spectrum_fx[1], length ) );
                hdrm_min = s_min( hdrm_min, L_norm_arr( mdst_spectrum_fx[ch][1], length ) );
            }
        }

        IF( hdrm_min != 0 )
        {
            q_spec = sub( add( hdrm_min, q_spec ), 1 ); /*1 guard bit to avoid over-flows*/
        }
        q_spec = sub( add( hdrm_min, q_spec ), 2 ); /* 2 guard bits to avoid over-flows (1 for stereo_coder_tcx_fx and other for power spectrum calculation )*/

        FOR( ch = 0; ch < CPE_CHANNELS; ch++ )
        {