Commit b5173cf0 authored by Vladimir Malenovsky's avatar Vladimir Malenovsky
Browse files

Merge branch 'main' into 503-address-sanitizer-issue-with-ind_list_dyn

parents f59a7789 b74476db
Loading
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -2240,5 +2240,13 @@ enum
    VOIP_RTPDUMP
};

#ifdef FIX_489_COV_SMOOTHING
typedef enum _COV_SMOOTHING_TYPE
{
    COV_SMOOTH_SPAR,
    COV_SMOOTH_MC
} COV_SMOOTHING_TYPE;
#endif

/* clang-format on */
#endif /* CNST_H */
+41 −1
Original line number Diff line number Diff line
@@ -35,6 +35,9 @@
#ifdef DEBUGGING
#include "debug.h"
#endif
#ifdef FIX_489_COV_SMOOTHING
#include "cnst.h"
#endif
#include "ivas_prot.h"
#include "wmc_auto.h"
#include "prot.h"
@@ -50,7 +53,12 @@ static void ivas_set_up_cov_smoothing(
    ivas_cov_smooth_state_t *hCovState,
    ivas_filterbank_t *pFb,
    const float max_update_rate,
    const int16_t min_pool_size,
    const int16_t min_pool_size
#ifdef FIX_489_COV_SMOOTHING
    ,
    const COV_SMOOTHING_TYPE smooth_mode /* i  : flag multichannel vs SPAR       */
#endif
    ,
    const int32_t ivas_total_brate )
{
    int16_t j, k;
@@ -88,7 +96,30 @@ static void ivas_set_up_cov_smoothing(
            }
        }
    }
#ifdef FIX_489_COV_SMOOTHING
    else if ( smooth_mode == COV_SMOOTH_MC )
    {
        for ( j = 0; j < pFb->filterbank_num_bands; j++ )
        {
            float update_factor;
            update_factor = 0.0f;

            for ( k = 0; k < pFb->fb_bin_to_band.pFb_active_bins_per_band[j]; k++ )
            {
                update_factor += pFb->fb_bin_to_band.pFb_bin_to_band[j][k];
            }

            hCovState->pSmoothing_factor[j] = update_factor / min_pool_size;

            if ( hCovState->pSmoothing_factor[j] > max_update_rate )
            {
                hCovState->pSmoothing_factor[j] = max_update_rate;
            }
        }
    }
#endif
    else
    {
        for ( j = 0; j < pFb->filterbank_num_bands; j++ )
        {
            float update_factor;
@@ -108,6 +139,8 @@ static void ivas_set_up_cov_smoothing(
                hCovState->pSmoothing_factor[j] = max_update_rate;
            }
        }
    }

    hCovState->prior_bank_idx = -1;

    return;
@@ -126,6 +159,9 @@ ivas_error ivas_spar_covar_smooth_enc_open(
    ivas_filterbank_t *pFb,                      /* i/o: FB handle                      */
    const int16_t nchan_inp                      /* i  : number of input channels       */
    ,
#ifdef FIX_489_COV_SMOOTHING
    COV_SMOOTHING_TYPE smooth_mode, /* i : Smooth covariance for SPAR or MC */
#endif
    const int32_t ivas_total_brate /* i  : IVAS total bitrate             */
)
{
@@ -155,7 +191,11 @@ ivas_error ivas_spar_covar_smooth_enc_open(
    }


#ifdef FIX_489_COV_SMOOTHING
    ivas_set_up_cov_smoothing( hCovState, pFb, cov_smooth_cfg->max_update_rate, cov_smooth_cfg->min_pool_size, smooth_mode, ivas_total_brate );
#else
    ivas_set_up_cov_smoothing( hCovState, pFb, cov_smooth_cfg->max_update_rate, cov_smooth_cfg->min_pool_size, ivas_total_brate );
#endif

    *hCovState_out = hCovState;

+6 −0
Original line number Diff line number Diff line
@@ -4733,6 +4733,9 @@ ivas_error ivas_spar_covar_enc_open(
    const int32_t input_Fs,                                     /* i  : input sampling rate                     */
    const int16_t nchan_inp                                     /* i  : number of input channels                */
	,
#ifdef FIX_489_COV_SMOOTHING
    COV_SMOOTHING_TYPE smooth_mode,                    /* i : Smooth covariance for SPAR or MC*/
#endif
	const int32_t ivas_total_brate                              /* i  : IVAS total bitrate                      */
);

@@ -4763,6 +4766,9 @@ ivas_error ivas_spar_covar_smooth_enc_open(
    ivas_filterbank_t *pFb,                                     /* i/o: FB handle                               */
    const int16_t nchan_inp                                     /* i  : number of input channels                */
    ,
#ifdef FIX_489_COV_SMOOTHING
    COV_SMOOTHING_TYPE smooth_mode,                    /* i : Smooth covariance for SPAR or MC*/
#endif
    const int32_t ivas_total_brate                              /* i  : IVAS total bitrate             */
);

+2 −0
Original line number Diff line number Diff line
@@ -203,6 +203,8 @@
#define FIX_HBR_MASAMETA                                /* Nokia: Fixes to HBR MASA metadata at 384 and 512 kbps. Addresses issues 438 and 477 as well. */
#define FIX_482_DUMMYDEC_INIT                           /* Nokia: fix issue #428: missing inits for dummyDec in IVAS_rend */
#define FIX_468_16KHZ_PUPMIX                            /* Dlb: Fix issue 468 for Param Upmix at 16kHz sampling rate */
#define FIX_489_COV_SMOOTHING                           /* Dlb: Fix covariance smoothing for ParamUpmix */


#define FIX_485_STATIC_BUFFERS                          /* FhG: move static buffers in DirAC parameter estimator to the DirAC struct */
#define FIX_I503_ASAN_ERROR_IND_LIST                    /* VA: fix issue #503: address sanitizer error with IND_LIST_DYN */
+19 −0
Original line number Diff line number Diff line
@@ -68,6 +68,9 @@ ivas_error ivas_spar_covar_enc_open(
    const int32_t input_Fs,                 /* i  : input sampling rate            */
    const int16_t nchan_inp                 /* i  : number of input channels       */
    ,
#ifdef FIX_489_COV_SMOOTHING
    COV_SMOOTHING_TYPE smooth_mode, /* i : Smooth covariance for SPAR or MC */
#endif
    const int32_t ivas_total_brate /* i  : IVAS total bitrate              */
)
{
@@ -85,13 +88,25 @@ ivas_error ivas_spar_covar_enc_open(
    cov_smooth_cfg.max_bands = IVAS_MAX_NUM_BANDS;
    cov_smooth_cfg.max_update_rate = MAX_UPDATE_RATE;
    cov_smooth_cfg.min_pool_size = MIN_POOL_SIZE;
#ifdef FIX_489_COV_SMOOTHING
    if ( smooth_mode == COV_SMOOTH_MC )
    {
        cov_smooth_cfg.max_update_rate = 1.0f;
        cov_smooth_cfg.min_pool_size = 20;
    }
#else
    if ( nchan_inp == 3 ) /* to discriminate between SPAR and mc there could be a better solution */
    {
        cov_smooth_cfg.max_update_rate = 1.0f;
        cov_smooth_cfg.min_pool_size = 20;
    }
#endif

#ifdef FIX_489_COV_SMOOTHING
    if ( ( error = ivas_spar_covar_smooth_enc_open( &hCovState->pCov_state, &cov_smooth_cfg, pFb, nchan_inp, smooth_mode, ivas_total_brate ) ) != IVAS_ERR_OK )
#else
    if ( ( error = ivas_spar_covar_smooth_enc_open( &hCovState->pCov_state, &cov_smooth_cfg, pFb, nchan_inp, ivas_total_brate ) ) != IVAS_ERR_OK )
#endif
    {
        return error;
    }
@@ -99,7 +114,11 @@ ivas_error ivas_spar_covar_enc_open(
    cov_smooth_cfg.max_update_rate = MAX_UPDATE_RATE_DTX;
    cov_smooth_cfg.min_pool_size = MIN_POOL_SIZE_DTX;

#ifdef FIX_489_COV_SMOOTHING
    if ( ( error = ivas_spar_covar_smooth_enc_open( &hCovState->pCov_dtx_state, &cov_smooth_cfg, pFb, nchan_inp, smooth_mode, ivas_total_brate ) ) != IVAS_ERR_OK )
#else
    if ( ( error = ivas_spar_covar_smooth_enc_open( &hCovState->pCov_dtx_state, &cov_smooth_cfg, pFb, nchan_inp, ivas_total_brate ) ) != IVAS_ERR_OK )
#endif
    {
        return error;
    }
Loading