Commit 1e8be99d authored by Marek Szczerba's avatar Marek Szczerba
Browse files

Merge branch 'ivas-float-update' into 'philips/fix-render-config-reader-ivas-float-update'

parents b1803b40 d18cbee3
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -164,6 +164,10 @@
#define FIX_828_PORT_1152_FROM_FLT_REPO                  /* FhG: fix for issue 828 - fix uninitialized value used in BASOP */
#define NONE_BE_FIX_816_LFE_PLC_FLOAT                   /* DLB: issue 816: reduce required precision to float for LFE-PLC*/
#define FIX_835_PARAMMC_BUFFER_VALUES                   /* FhG: issue 835: wide range of buffer values for cx in ParamMC */
#define NONBE_FIX_943_PORT_1208_DFT_STEREO_PLC_BURST    /* Ericsson: BASOP Issue 943, Float Issue 1208, fix for overflow of sample offset counter for burst error in DFT Stereo PLC. */
#define FIX_903_ZERO_OUT_IMDCT_BUFFERS_FOR_MCT_IGNORE   /* FhG: zero out all relevant imdct buffers in MCT decoding of channels with mct_chan_mode == MCT_CHAN_MODE_IGNORE */
#define FIX_853_DECODE_MASA_ISM_AZIMUTH_PREC_FP        /* Nokia: Fixes ivas_decode_masaism_metadata decision logic change due to precision difference; this is the fix in floating point */

#define FIX_777_COMBI_RENDER_CONFIG_FILE                /* Philips: isse #777 (IVAS codec): Fix for combined renderer config file support */
#define FIX_1020_AEID_SELECTION_ERRORS                  /* Philips: issue #1020 (IVAS codec): fix for acoustic environment ID selection errors */

+16 −8
Original line number Diff line number Diff line
@@ -2347,13 +2347,21 @@ static int16_t ivas_decode_masaism_metadata(
                if ( azimuth * hMasaIsmData->q_azimuth_old[obj] > 0 )
                {
                    delta_phi = 180.0f / (float) ( no_phi_masa[bits_ism[obj] - 1][idx_el] ); /* 360/2*/
#ifdef FIX_853_DECODE_MASA_ISM_AZIMUTH_PREC_FP
                    if ( roundf( 100 * ( no_phi_masa[bits_ism[obj] - 1][idx_el] ) * ( azimuth - hMasaIsmData->q_azimuth_old[obj] ) ) / (float) 100.0f > 180.0f )
#else
                    if ( azimuth - hMasaIsmData->q_azimuth_old[obj] > delta_phi )
#endif
                    {
                        azimuth -= delta_phi;
                    }
                    else
                    {
#ifdef FIX_853_DECODE_MASA_ISM_AZIMUTH_PREC_FP
                        if ( roundf( 100 * ( no_phi_masa[bits_ism[obj] - 1][idx_el] ) * ( hMasaIsmData->q_azimuth_old[obj] - azimuth ) ) / 100.0f > 180.0f )
#else
                        if ( hMasaIsmData->q_azimuth_old[obj] - azimuth > delta_phi )
#endif
                        {
                            azimuth += delta_phi;
                        }
+10 −0
Original line number Diff line number Diff line
@@ -865,6 +865,16 @@ void ivas_mdct_core_reconstruct(
                {
                    set_f( &synth[k * L_frame[ch]], 0.f, L_frame[ch] );
                    set_f( &synthFB[k * L_frame[ch]], 0.f, L_frameTCX[ch] );
#ifdef FIX_903_ZERO_OUT_IMDCT_BUFFERS_FOR_MCT_IGNORE
                    /* Note: these buffers are not subframe-based, hence no indexing with k */
                    set_f( &st->hHQ_core->old_outLB[0], 0.f, L_frame[ch] );
                    set_f( &st->hHQ_core->old_out[0], 0.f, L_frameTCX[ch] );
                    set_f( &st->hTcxDec->syn_Overl[0], 0.f, L_frame[ch] / 2 );
                    set_f( &st->hTcxDec->syn_OverlFB[0], 0.f, L_frameTCX[ch] / 2 );
                    set_f( &st->hTcxDec->syn_Overl_TDAC[0], 0.f, L_frame[ch] / 2 );
                    set_f( &st->hTcxDec->syn_Overl_TDACFB[0], 0.f, L_frameTCX[ch] / 2 );
#endif

                }
            }

+12 −0
Original line number Diff line number Diff line
@@ -80,6 +80,9 @@ void stereo_dft_res_ecu(
    float fac;
    float trigo_dec[STEREO_DFT32MS_N_8k / 2 + 1];
    int16_t trigo_step;
#ifdef NONBE_FIX_943_PORT_1208_DFT_STEREO_PLC_BURST
    int16_t time_offs;
#endif

    set_zero( pDFT_RES, L_FRAME8k );

@@ -106,7 +109,12 @@ void stereo_dft_res_ecu(
    if ( k == 0 )
    {
        mvr2r( pDFT_RES, res_buf, L_FRAME8k );
#ifdef NONBE_FIX_943_PORT_1208_DFT_STEREO_PLC_BURST
        time_offs = min( MAX16B, hStereoDft->time_offs + output_frame );
        stereo_dft_res_subst_spec( hStereoDft, res_buf, DFT_PRED_RES, time_offs, L_res, L_FRAME8k, k, num_plocs, plocs, plocsi, FALSE );
#else
        stereo_dft_res_subst_spec( hStereoDft, res_buf, DFT_PRED_RES, hStereoDft->time_offs + output_frame, L_res, L_FRAME8k, k, num_plocs, plocs, plocsi, FALSE );
#endif

        rfft( res_buf, trigo_dec, L_FRAME8k, +1 );

@@ -133,7 +141,11 @@ void stereo_dft_res_ecu(
        }

        /*in case of burst error*/
#ifdef NONBE_FIX_943_PORT_1208_DFT_STEREO_PLC_BURST
        hStereoDft->time_offs = min( MAX16B, hStereoDft->time_offs + L_FRAME8k );
#else
        hStereoDft->time_offs += L_FRAME8k;
#endif
    }

    set_zero( DFT_PRED_RES, 2 * L_res );