Commit 8bbe5705 authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

Merge branch...

Merge branch '697-crash-in-48kbps-stereo-decoding-due-to-negative-q-value-in-fix16_to_float-function' into 'main'

Resolve "Crash in 48kbps stereo decoding due to negative q value in fix16_to_float function"

Closes #697

See merge request !195
parents 3dfcc105 a97df9bd
Loading
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1296,7 +1296,7 @@ ivas_error acelp_core_dec(
                    if ( !( ( st->element_mode == IVAS_CPE_TD || st->element_mode == IVAS_CPE_DFT ) && ( st->hFdCngDec->hFdCngCom->active_frame_counter > 0 ) ) )
                    {
                        st->hTcxDec->CngLevelBackgroundTrace_bfi = fix_to_float( st->hTcxDec->CngLevelBackgroundTrace_bfi_fx, ( 31 - st->hTcxDec->CngLevelBackgroundTrace_bfi_exp ) );
                        st->cngTDLevel_float = fix16_to_float( st->cngTDLevel, ( 15 - st->cngTDLevel_e ) );
                        st->cngTDLevel_float = fixedToFloat( st->cngTDLevel, ( 15 - st->cngTDLevel_e ) );
                        for ( int p = 0; p < ( st->hFdCngDec->hFdCngCom->stopFFTbin - st->hFdCngDec->hFdCngCom->startBand ); p++ )
                        {
                            st->hFdCngDec->hFdCngCom->cngNoiseLevel_flt[p] = ( (float) st->hFdCngDec->hFdCngCom->cngNoiseLevel[p] / ( 1u << ( 31 - st->hFdCngDec->hFdCngCom->cngNoiseLevelExp ) ) );
@@ -1517,7 +1517,7 @@ ivas_error acelp_core_dec(
                            if ( !( ( st->element_mode == IVAS_CPE_TD || st->element_mode == IVAS_CPE_DFT ) && ( st->hFdCngDec->hFdCngCom->active_frame_counter > 0 ) ) )
                            {
                                st->hTcxDec->CngLevelBackgroundTrace_bfi = fix_to_float( st->hTcxDec->CngLevelBackgroundTrace_bfi_fx, ( 31 - st->hTcxDec->CngLevelBackgroundTrace_bfi_exp ) );
                                st->cngTDLevel_float = fix16_to_float( st->cngTDLevel, ( 15 - st->cngTDLevel_e ) );
                                st->cngTDLevel_float = fixedToFloat( st->cngTDLevel, ( 15 - st->cngTDLevel_e ) );
                                for ( int p = 0; p < ( st->hFdCngDec->hFdCngCom->stopFFTbin - st->hFdCngDec->hFdCngCom->startBand ); p++ )
                                {
                                    st->hFdCngDec->hFdCngCom->cngNoiseLevel_flt[p] = ( (float) st->hFdCngDec->hFdCngCom->cngNoiseLevel[p] / ( 1u << ( 31 - st->hFdCngDec->hFdCngCom->cngNoiseLevelExp ) ) );
+1 −1
Original line number Diff line number Diff line
@@ -1034,7 +1034,7 @@ static void run_min_stats_fx(
                }

                st->hTcxDec->CngLevelBackgroundTrace_bfi = (float) ( st->hTcxDec->CngLevelBackgroundTrace_bfi_fx / powf( 2.f, (Float32)( 31 - st->hTcxDec->CngLevelBackgroundTrace_bfi_exp ) ) );
                st->cngTDLevel_float = fix16_to_float( st->cngTDLevel, ( 15 - st->cngTDLevel_e ) );
                st->cngTDLevel_float = fixedToFloat( st->cngTDLevel, ( 15 - st->cngTDLevel_e ) );

                for ( int p = 0; p < ( st->hFdCngDec->hFdCngCom->stopFFTbin - st->hFdCngDec->hFdCngCom->startBand ); p++ )
                {
+2 −2
Original line number Diff line number Diff line
@@ -928,7 +928,7 @@ void stereo_tcx_core_dec(
                 ( st->m_frame_type == ZERO_FRAME ) )
            {
                st->hTcxDec->CngLevelBackgroundTrace_bfi = fix_to_float( st->hTcxDec->CngLevelBackgroundTrace_bfi_fx, ( 31 - st->hTcxDec->CngLevelBackgroundTrace_bfi_exp ) );
                st->cngTDLevel_float = fix16_to_float( st->cngTDLevel, ( 15 - st->cngTDLevel_e ) );
                st->cngTDLevel_float = fixedToFloat( st->cngTDLevel, ( 15 - st->cngTDLevel_e ) );
                for ( int p = 0; p < st->hFdCngDec->hFdCngCom->fftlen; p++ )
                {
                    st->hFdCngDec->hFdCngCom->fftBuffer_flt[p] = ( (float) st->hFdCngDec->hFdCngCom->fftBuffer[p] / ( 1u << ( 31 - st->hFdCngDec->hFdCngCom->fftBuffer_exp ) ) );
@@ -1135,7 +1135,7 @@ void stereo_tcx_core_dec(
                 ( st->m_frame_type == ZERO_FRAME ) )
            {
                st->hTcxDec->CngLevelBackgroundTrace_bfi = fix_to_float( st->hTcxDec->CngLevelBackgroundTrace_bfi_fx, ( 31 - st->hTcxDec->CngLevelBackgroundTrace_bfi_exp ) );
                st->cngTDLevel_float = fix16_to_float( st->cngTDLevel, ( 15 - st->cngTDLevel_e ) );
                st->cngTDLevel_float = fixedToFloat( st->cngTDLevel, ( 15 - st->cngTDLevel_e ) );
                for ( int p = 0; p < st->hFdCngDec->hFdCngCom->fftlen; p++ )
                {
                    st->hFdCngDec->hFdCngCom->fftBuffer_flt[p] = ( (float) st->hFdCngDec->hFdCngCom->fftBuffer[p] / ( 1u << ( 31 - st->hFdCngDec->hFdCngCom->fftBuffer_exp ) ) );