Commit b0b037b4 authored by bayers's avatar bayers
Browse files

fix for #1091, change limit calculation for the regularized inverse of Kx in...

fix for #1091, change limit calculation for the regularized inverse of Kx in the mixing matrix calculation of the covariance synthesis.
parent 86862b41
Loading
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -174,7 +174,7 @@
#define NONBE_FIX_1070_USAN_SEGFAULT_MC_TO_BIN_BTSW_HEADROT   /* fix 1070 USAN: nullptr-with-offset and Segfaults in 7_1_4 to BINAURAL and BINAURAL_ROOM_REVERB decoding with bitrate switching and head rotation*/ 
#define NONBE_FIX_MC_LFE_LPF                            /* Dlb: Adding the LFE LPF filter back for MC content. */
#define NONBE_FIX_1052_SBA_EXT                          /* Dlb: SBA external output support */

#define NONBE_FIX_1091_PMC_LOW_SIGNAL_BURSTS            /* FhG: fix for #1091, fix limit calculation for the regularized inverse of Kx to avoid bursts in very low signals */
/* ##################### End NON-BE switches ########################### */

/* ################## End DEVELOPMENT switches ######################### */
+11 −1
Original line number Diff line number Diff line
@@ -51,6 +51,13 @@
#include "wmc_auto.h"
#include "rom_dec.h"

#ifdef NONBE_FIX_1091_PMC_LOW_SIGNAL_BURSTS
/*-----------------------------------------------------------------------*
 * Local constants
 *-----------------------------------------------------------------------*/

#define SQRT_EPSILON 3.16227755e-08 /* square root of EPSILON */
#endif

/*-------------------------------------------------------------------*
 * ivas_dirac_dec_output_synthesis_cov_open()
@@ -577,8 +584,11 @@ int16_t computeMixingMatrices(
     *-----------------------------------------------------------------*/

    maximum( svd_s_buffer, lengthCx, &limit );
#ifdef NONBE_FIX_1091_PMC_LOW_SIGNAL_BURSTS
    limit = (float) max( limit * reg_Sx, SQRT_EPSILON );
#else
    limit = limit * reg_Sx + EPSILON;

#endif
    for ( i = 0; i < lengthCx; ++i )
    {
        svd_s_buffer[i] = ( ( svd_s_buffer[i] > limit ) ? svd_s_buffer[i] : limit );