Commit cea8a984 authored by vaclav's avatar vaclav
Browse files
parents 0951530f f03f2c70
Loading
Loading
Loading
Loading

lib_com/options.h

100644 → 100755
+4 −0
Original line number Diff line number Diff line
@@ -164,6 +164,7 @@
#define FIX_RAM_COUNTING_5MS_RENDERING                  /* FhG: fix for correct RAM reporting with 5ms rendering */
#define FIX_786_ERROR_ISM_METADATA_READ                 /* VA: fix error reading past the last line of .csv metadata files */

#define FIX_632_USAN_ERROR_NULL_POINTER                /* FhG: issue 632 USAN offset to null pointer proto_diffuse_buffer_f in dirac rendering*/
/* #################### End BE switches ################################## */

/* #################### Start NON-BE switches ############################ */
@@ -177,6 +178,9 @@
#define NONBE_FIX_770_PLANAR_SBA_JBM                          /* FhG  : Issue #770: Crash in planar FOA decoding with JBM caused by uninitialized value */
#define NONBE_FIX_760_COHERENCE_MASA                          /* Nokia: Issue 760: fixes decoder crash for some cases when all energy ratios are 1 */
#define NONBE_FIX_752_OSBA_MISCONFIG_MCT                      /* FhG: issue 752: misconfiguration of MCT causes crashes for coding with sampling rate under 48kHz at 256kbps*/
#define NONBE_FIX_780_ISM_STARTS_WITH_SID                     /* VA: issue 780: fix Crash in ISM decoding when bitstream starts with an SID and output_config is not EXT */
#define NONBE_FIX_ISM_DTX_INFINITE_CNG_ON_TRAILING_SILENCE    /* FhG: fix for cng in ISM DTX on sudden silence periods - JBM addon (issue 552) */
#define NONBE_FIX_738_SBA_BR_SW_ASAN                       /* FhG: issue 738: fixes bug when switching to an MCT bitrate and previous frame was ACELP */

/* ##################### End NON-BE switches ############################# */

+3 −0
Original line number Diff line number Diff line
@@ -623,6 +623,9 @@ ivas_error ivas_dec_setup(
            st_ivas->nchan_ism = nchan_ism;

            /* read ism_mode */
#ifdef NONBE_FIX_780_ISM_STARTS_WITH_SID
            st_ivas->ism_mode = ISM_MODE_DISC;
#endif
            if ( nchan_ism > 2 )
            {
                k -= nchan_ism; /* SID metadata flags */
+21 −0
Original line number Diff line number Diff line
@@ -149,6 +149,16 @@ ivas_error ivas_jbm_dec_tc(
            {
                return error;
            }
#ifdef NONBE_FIX_ISM_DTX_INFINITE_CNG_ON_TRAILING_SILENCE

            /* decode dominant object first so the noise energy of the other objects can be limited */
            if ( ( error = ivas_sce_dec( st_ivas, st_ivas->hISMDTX.sce_id_dtx, &output[st_ivas->hISMDTX.sce_id_dtx], output_frame, nb_bits_metadata[st_ivas->hISMDTX.sce_id_dtx] ) ) != IVAS_ERR_OK )
            {
                return error;
            }

            ivas_ism_dtx_limit_noise_energy_for_near_silence( st_ivas->hSCE, st_ivas->hISMDTX.sce_id_dtx, st_ivas->nchan_transport );
#endif
        }
        else if ( st_ivas->ism_mode == ISM_MODE_PARAM )
        {
@@ -169,10 +179,21 @@ ivas_error ivas_jbm_dec_tc(

        for ( n = 0; n < st_ivas->nchan_transport; n++ )
        {
#ifdef NONBE_FIX_ISM_DTX_INFINITE_CNG_ON_TRAILING_SILENCE
            /* for DTX frames, dominant object has already been decoded before */
            if ( !( ( ivas_total_brate == IVAS_SID_5k2 || ivas_total_brate == FRAME_NO_DATA ) && n == st_ivas->hISMDTX.sce_id_dtx ) )
            {
                if ( ( error = ivas_sce_dec( st_ivas, n, &output[n], output_frame, nb_bits_metadata[n] ) ) != IVAS_ERR_OK )
                {
                    return error;
                }
            }
#else
            if ( ( error = ivas_sce_dec( st_ivas, n, &output[n], output_frame, nb_bits_metadata[n] ) ) != IVAS_ERR_OK )
            {
                return error;
            }
#endif

            /* HP filtering */
            hp20( output[n], output_frame, st_ivas->mem_hp20_out[n], output_Fs );

lib_enc/ivas_mct_core_enc.c

100644 → 100755
+14 −0
Original line number Diff line number Diff line
@@ -337,6 +337,13 @@ void ivas_mct_core_enc(
        }
        nSubframes = ( sts[ch]->hTcxEnc->tcxMode == TCX_20 ) ? 1 : NB_DIV;
        L_subframeTCX = sts[ch]->hTcxEnc->L_frameTCX / nSubframes;
#ifdef NONBE_FIX_738_SBA_BR_SW_ASAN
        /* in MCT only relevant for bitrate switching from non-MCT bitrates */
        if ( sts[ch]->last_core == ACELP_CORE )
        {
            L_subframeTCX += L_subframeTCX / 4;
        }
#endif

        for ( n = 0; n < nSubframes; n++ )
        {
@@ -387,6 +394,13 @@ void ivas_mct_core_enc(
        }
        nSubframes = ( st->hTcxEnc->tcxMode == TCX_20 ) ? 1 : NB_DIV;
        L_subframeTCX = st->hTcxEnc->L_frameTCX / nSubframes;
#ifdef NONBE_FIX_738_SBA_BR_SW_ASAN
        /* in MCT only relevant for bitrate switching from non-MCT bitrates */
        if ( st->last_core == ACELP_CORE )
        {
            L_subframeTCX += L_subframeTCX / 4;
        }
#endif

        if ( ( st->hTcxEnc->tcxMode == TCX_20 ) && ( st->total_brate < HQ_96k || st->igf ) )
        {
+6 −1
Original line number Diff line number Diff line
@@ -1522,7 +1522,12 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls(
        }

        /*Diffuse stream*/
#ifdef FIX_632_USAN_ERROR_NULL_POINTER
        if ( h_dirac_output_synthesis_params->max_band_decorr != 0 )
#endif
        {
            p_power_smooth_diff = h_dirac_output_synthesis_state->proto_diffuse_buffer_f + buf_idx * 2 * h_dirac_output_synthesis_params->max_band_decorr * nchan_out_woLFE;
        }
        p_gain_1 = gains_diff;
        p_gain_2 = h_dirac_output_synthesis_state->gains_diff_prev;
        for ( k = 0; k < nchan_out_woLFE; k++ )
Loading