Commit 57228408 authored by vaclav's avatar vaclav
Browse files

- Merge remote-tracking branch 'remotes/origin/main' into...

- Merge remote-tracking branch 'remotes/origin/main' into float-1539-decoder-format-switching-for-g-192-bitstreams
parents 4dc4fce1 1c2b4c54
Loading
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -385,7 +385,17 @@ void ivas_get_dirac_sba_max_md_bits(
        *metadata_max_bits = MAX16B; /* no limit */
    }

#ifdef FIX_FLOAT_1544_SBA_META_IMPRECISION_UNSAFE_MATH
    /*
      original formula was:
      *metadata_max_bits = (int16_t) min( (float) MAX16B, ceilf( (float) *metadata_max_bits * nbands / 5 ) );
      The division by 5 is replaced by a multiplication by 0.2f, since the division is causing problems for
      certain optimizations using -funsafe-math-optimizations
    */
    *metadata_max_bits = (int16_t) min( (float) MAX16B, ceilf( *metadata_max_bits * nbands * 0.2f ) );
#else
    *metadata_max_bits = (int16_t) min( (float) MAX16B, ceilf( (float) *metadata_max_bits * nbands / 5 ) );
#endif
    *qmetadata_max_bit_req = QMETADATA_MAXBIT_REQ_SBA >> 1;

    return;
+4 −1
Original line number Diff line number Diff line
@@ -162,6 +162,9 @@
#define TMP_1342_WORKAROUND_DEC_FLUSH_BROKEN_IN_SR      /* FhG: Temporary workaround for incorrect implementation of decoder flush with split rendering */
#define NONBE_1122_KEEP_EVS_MODE_UNCHANGED              /* FhG: Disables fix for issue 1122 in EVS mode to keep BE tests green. This switch should be removed once the 1122 fix is added to EVS via a CR.  */
#define FIX_BASOP_2469_OBJ_EDIT_TD_REND_GAIN            /* Eri: Basop issue 2469: TD renderer gain has wrong Q. In float this is just a synch of the cleanup done in BASOP */
#define FIX_ISSUE_1546_DEAD_CODE                        /* FhG: remove dead code reported in the issue*/
#define FIX_FLOAT_1544_SBA_META_IMPRECISION_UNSAFE_MATH /* FhG: float issue 1544: imprecision in ivas_get_dirac_sba_max_md_bits() with -funsafe-math-optimizations */
#define FIX_FLOAT_1544_ITD_IMPRECISION_UNSAFE_MATH      /* FhG: float issue 1544: Avoid assert() with -funsafe-math-optimizations in stereo_td_itd() */
#define FIX_FLOAT_1539_G192_FORMAT_SWITCH               /* Nokia: reintroduce format switching for g192 bitstreams */

/* #################### End BE switches ################################## */
@@ -172,7 +175,7 @@
#define FIX_1543_MID_LSF_BITS                           /* VA: float issue 1543: Resolve "MSAN: use-of-uninitialized-value in lib_enc/lsf_enc.c:262:5 for EVS encoder" */
#define FIX_1547_ISMDTX_HANDLE                          /* VA: float issue 1547: fix use of 'hISMDTX' handle */
#define FIX_1540_EXPOSE_PT_IN_RTP_HEADER_API            /* Expose Payload Type setting in RTP Header */

#define FIX_1563_FIX_STEREO_SW                          /* VA: float issue 1563: fix clicks in stereo switching */

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

+6 −0
Original line number Diff line number Diff line
@@ -1563,6 +1563,12 @@ void stereo_switching_dec(
            mvr2r( sts[0]->delay_buf_out, sts[1]->delay_buf_out, HQ_DELTA_MAX * HQ_DELAY_COMP );
            mvr2r( sts[0]->hTcxDec->old_syn_Overl, sts[1]->hTcxDec->old_syn_Overl, 256 );
        }
#ifdef FIX_1563_FIX_STEREO_SW
        else if ( hCPE->element_mode == IVAS_CPE_TD )
        {
            sts[1]->last_core = ACELP_CORE;
        }
#endif
    }
    else if ( hCPE->element_mode == IVAS_CPE_TD && hCPE->last_element_mode == IVAS_CPE_MDCT )
    {
+5 −1
Original line number Diff line number Diff line
@@ -291,9 +291,13 @@ void stereo_td_itd(
        size_ovl = dft_ovl;

        itd_max = ( STEREO_DFT_ITD_MAX * input_frame ) / L_FRAME32k;

#ifdef FIX_FLOAT_1544_ITD_IMPRECISION_UNSAFE_MATH
        assert( ( (int16_t) fabsf( hITD->itd[k_offset] ) <= itd_max ) && "ITD value is too high!" );
        assert( ( (int16_t) fabsf( hITD->itd[k_offset - 1] ) <= itd_max ) && "ITD value is too high!" );
#else
        assert( ( fabsf( hITD->itd[k_offset] ) <= itd_max ) && "ITD value is too high!" );
        assert( ( fabsf( hITD->itd[k_offset - 1] ) <= itd_max ) && "ITD value is too high!" );
#endif

        itd = hITD->td_itd[k_offset];

+6 −0
Original line number Diff line number Diff line
@@ -821,6 +821,12 @@ void stereo_switching_enc(
            sts[1]->last_coder_type = sts[0]->last_coder_type;
            sts[1]->last_bwidth = sts[0]->last_bwidth;
        }
#ifdef FIX_1563_FIX_STEREO_SW
        else if ( hCPE->element_mode == IVAS_CPE_TD )
        {
            sts[1]->last_core = ACELP_CORE;
        }
#endif
    }
    else if ( hCPE->element_mode == IVAS_CPE_TD && hCPE->last_element_mode == IVAS_CPE_MDCT )
    {
Loading