Commit 77b73565 authored by fotopoulou's avatar fotopoulou
Browse files

Merge branch 'main' into fix-879-diff-conceal-path

parents e7bf3124 7c8eaa92
Loading
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -2170,6 +2170,7 @@ uint16_t get_indice_1(
 * Reset the buffer of encoder indices
 *-------------------------------------------------------------------*/

#ifndef IVAS_FLOAT_FIXED
void reset_indices_enc(
    BSTR_ENC_HANDLE hBstr,       /* i/o: encoder bitstream handle    */
    const Word16 max_num_indices /* i  : max number of indices       */
@@ -2187,6 +2188,28 @@ void reset_indices_enc(

    return;
}
#else
void reset_indices_enc(
    BSTR_ENC_HANDLE hBstr,       /* i/o: encoder bitstream handle    */
    const Word16 max_num_indices /* i  : max number of indices       */
)
{
    Word16 i;

    hBstr->nb_bits_tot = 0;
    move16();
    hBstr->nb_ind_tot = 0;
    move16();

    FOR( i = 0; i < max_num_indices; i++ )
    {
        hBstr->ind_list[i].nb_bits = -1;
        move16();
    }

    return;
}
#endif

/*-------------------------------------------------------------------*
 * reset_indices_dec()
+34 −17
Original line number Diff line number Diff line
@@ -1950,7 +1950,9 @@ void analysisCldfbEncoder_ivas(

void analysisCldfbEncoder_ivas_fx(
    Encoder_State *st, /* i/o: encoder state structure   */
    const Word16 *timeIn,
    Word32 *timeIn,    /*q11*/
    Word16 timeInq,
    Word16 samplesToProcess,
    Word32 realBuffer[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX],
    Word32 imagBuffer[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX],
    Word16 realBuffer16[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX],
@@ -1965,7 +1967,11 @@ void analysisCldfbEncoder_ivas_fx(
    Word32 *ppBuf_Imag[CLDFB_NO_COL_MAX];
    Word16 *ppBuf_Real16[CLDFB_NO_COL_MAX];
    Word16 *ppBuf_Imag16[CLDFB_NO_COL_MAX];
    Word32 workBuffer[256];
    Word32 l_timeIn[L_FRAME48k];
    Word16 norm_timeIn = L_norm_arr( timeIn, samplesToProcess );
    Word16 guard_bits = find_guarded_bits_fx( shl( samplesToProcess, 1 ) );
    Word16 shift = 0;
    move16();

    FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ )
    {
@@ -1974,13 +1980,24 @@ void analysisCldfbEncoder_ivas_fx(
        ppBuf_Real16[i] = &realBuffer16[i][0];
        ppBuf_Imag16[i] = &imagBuffer16[i][0];
    }
    IF( GT_16( guard_bits, norm_timeIn ) )
    {
        shift = sub( guard_bits, norm_timeIn );
        v_shr_32( timeIn, l_timeIn, samplesToProcess, shift );
    }
    ELSE
    {
        Copy32( timeIn, l_timeIn, samplesToProcess );
    }

    cldfbAnalysisFiltering( st->cldfbAnaEnc, ppBuf_Real, ppBuf_Imag, scale, timeIn, 0, CLDFB_NO_COL_MAX, workBuffer );
    cldfbAnalysis_ivas_fx( l_timeIn, ppBuf_Real, ppBuf_Imag, samplesToProcess, st->cldfbAnaEnc );

    scale->lb_scale = sub( 16 + 5, sub( timeInq, shift ) );
    enerScale.lb_scale = negate( scale->lb_scale );
    enerScale.lb_scale16 = negate( scale->lb_scale );
    move16();
    move16();
    move16();

    AnalysisPostSpectrumScaling_Fx( st->cldfbAnaEnc, ppBuf_Real, ppBuf_Imag, ppBuf_Real16, ppBuf_Imag16, &enerScale.lb_scale16 );

@@ -2793,7 +2810,7 @@ static void cldfb_init_proto_and_twiddles_enc(
#ifdef IVAS_FLOAT_FIXED
                hs->p_filter_sf = (Word16) 17036;
                hs->scale = cldfb_scale_2_5ms[0];
                hs->p_filter = cldfb_protoFilter_2_5ms[0];
                hs->p_filter = CLDFB80_10_fx;
#endif
            }
            else if ( hs->prototype == CLDFB_PROTOTYPE_5_00MS )
@@ -2808,7 +2825,7 @@ static void cldfb_init_proto_and_twiddles_enc(
                hs->rot_vec_syn_delay_im = rot_vec_delay_im_LDQMF;
#ifdef IVAS_FLOAT_FIXED
                hs->p_filter_sf = (Word16) 15388;
                hs->p_filter = cldfb_protoFilter_5_0ms[0];
                hs->p_filter = LDQMF_10_fx;
                hs->scale = cldfb_scale_5_0ms[0];
#endif
            }
@@ -2843,7 +2860,7 @@ static void cldfb_init_proto_and_twiddles_enc(
                hs->rot_vec_syn_delay_im = NULL;
#ifdef IVAS_FLOAT_FIXED
                hs->p_filter_sf = (Word16) 17051;
                hs->p_filter = cldfb_protoFilter_2_5ms[1];
                hs->p_filter = CLDFB80_16_fx;
                hs->scale = cldfb_scale_2_5ms[1];
#endif
            }
@@ -2859,7 +2876,7 @@ static void cldfb_init_proto_and_twiddles_enc(
                hs->rot_vec_syn_delay_im = rot_vec_delay_im_LDQMF;
#ifdef IVAS_FLOAT_FIXED
                hs->p_filter_sf = (Word16) 15388;
                hs->p_filter = cldfb_protoFilter_5_0ms[1];
                hs->p_filter = LDQMF_16_fx;
                hs->scale = cldfb_scale_5_0ms[1];
#endif
            }
@@ -2900,7 +2917,7 @@ static void cldfb_init_proto_and_twiddles_enc(
                hs->rot_vec_syn_delay_im = NULL;
#ifdef IVAS_FLOAT_FIXED
                hs->p_filter_sf = (Word16) 17050;
                hs->p_filter = cldfb_protoFilter_2_5ms[2];
                hs->p_filter = CLDFB80_20_fx;
                hs->scale = cldfb_scale_2_5ms[2];
#endif
            }
@@ -2916,7 +2933,7 @@ static void cldfb_init_proto_and_twiddles_enc(
                hs->rot_vec_syn_delay_im = rot_vec_delay_im_LDQMF;
#ifdef IVAS_FLOAT_FIXED
                hs->p_filter_sf = (Word16) 15390;
                hs->p_filter = cldfb_protoFilter_5_0ms[2];
                hs->p_filter = LDQMF_20_fx;
                hs->scale = cldfb_scale_5_0ms[2];
#endif
            }
@@ -2958,7 +2975,7 @@ static void cldfb_init_proto_and_twiddles_enc(
#ifdef IVAS_FLOAT_FIXED
                hs->p_filter_sf = (Word16) 17051;
                hs->scale = cldfb_scale_2_5ms[6];
                hs->p_filter = cldfb_protoFilter_2_5ms[6];
                hs->p_filter = CLDFB80_30_fx;
#endif
            }
            else if ( hs->prototype == CLDFB_PROTOTYPE_5_00MS )
@@ -2974,7 +2991,7 @@ static void cldfb_init_proto_and_twiddles_enc(
#ifdef IVAS_FLOAT_FIXED
                hs->p_filter_sf = (Word16) 15388;
                hs->scale = cldfb_scale_5_0ms[6];
                hs->p_filter = cldfb_protoFilter_5_0ms[6];
                hs->p_filter = LDQMF_30_fx;
#endif
            }
            break;
@@ -3008,7 +3025,7 @@ static void cldfb_init_proto_and_twiddles_enc(
                hs->rot_vec_syn_delay_im = NULL;
#ifdef IVAS_FLOAT_FIXED
                hs->p_filter_sf = (Word16) 17050;
                hs->p_filter = cldfb_protoFilter_2_5ms[3];
                hs->p_filter = CLDFB80_32_fx;
                hs->scale = cldfb_scale_2_5ms[3];
#endif
            }
@@ -3025,7 +3042,7 @@ static void cldfb_init_proto_and_twiddles_enc(
#ifdef IVAS_FLOAT_FIXED
                hs->p_filter_sf = (Word16) 15392;
                hs->scale = cldfb_scale_5_0ms[3];
                hs->p_filter = cldfb_protoFilter_5_0ms[3];
                hs->p_filter = LDQMF_32_fx;
#endif
            }
            break;
@@ -3067,7 +3084,7 @@ static void cldfb_init_proto_and_twiddles_enc(
                hs->p_filter_sf = (Word16) 17051;
                hs->q_scale = norm_s( (Word16) CLDFB80_40_SCALE );
                hs->scale = cldfb_scale_2_5ms[4];
                hs->p_filter = cldfb_protoFilter_2_5ms[4];
                hs->p_filter = CLDFB80_40_fx;
#endif
            }
            else if ( hs->prototype == CLDFB_PROTOTYPE_5_00MS )
@@ -3086,7 +3103,7 @@ static void cldfb_init_proto_and_twiddles_enc(
                hs->rot_vec_syn_delay_re_fx = rot_vec_delay_re_LDQMF_fx;
                hs->rot_vec_syn_delay_im_fx = rot_vec_delay_im_LDQMF_fx;
                hs->p_filter_sf = (Word16) 15391;
                hs->p_filter = cldfb_protoFilter_5_0ms[4];
                hs->p_filter = LDQMF_40_fx;
                hs->scale = cldfb_scale_5_0ms[4];
#endif
            }
@@ -3131,7 +3148,7 @@ static void cldfb_init_proto_and_twiddles_enc(
                hs->rot_vec_syn_delay_re_fx = NULL;
                hs->rot_vec_syn_delay_im_fx = NULL;
                hs->p_filter_sf = (Word16) 17051;
                hs->p_filter = cldfb_protoFilter_2_5ms[5];
                hs->p_filter = CLDFB80_60_fx;
                hs->scale = cldfb_scale_2_5ms[5];
#endif
            }
@@ -3151,7 +3168,7 @@ static void cldfb_init_proto_and_twiddles_enc(
                hs->rot_vec_syn_delay_re_fx = rot_vec_delay_re_LDQMF_fx;
                hs->rot_vec_syn_delay_im_fx = rot_vec_delay_im_LDQMF_fx;
                hs->p_filter_sf = (Word16) 15391;
                hs->p_filter = cldfb_protoFilter_5_0ms[5];
                hs->p_filter = LDQMF_60_fx;
                hs->scale = cldfb_scale_5_0ms[5];
#endif
            }
+24 −1
Original line number Diff line number Diff line
@@ -209,6 +209,15 @@ enum{
#define L_FRAME8k                       160             /* Frame size in samples at 8kHz */
#define L_FRAME4k                       80              /* Frame size in samples at 4kHz */

#define ONE_BY_L_FRAME48k_Q31           2236962
#define ONE_BY_L_FRAME32k_Q31           3355443
#define ONE_BY_L_FRAME25_6k_Q31         4194304
#define ONE_BY_L_FRAME16k_Q31           6710886
#define ONE_BY_L_FRAME_Q31              8388608
#define ONE_BY_240_Q31                  8947849
#define ONE_BY_L_FRAME8k_Q31            13421772
#define ONE_BY_L_FRAME4k_Q31            26843546

#define L_SPEC48k                       800             /* HQ spectrum length at 48kHz */
#define L_SPEC32k                       640             /* HQ spectrum length at 32kHz */
#define L_SPEC16k                       320             /* HQ spectrum length at 16kHz */
@@ -238,6 +247,7 @@ enum{
#define INV_LOG_2_FX                    23637 /*Q14*//* 1/log(2)  */
#endif // IVAS_FLOAT_FIXED
#define INV_SQRT_2                      0.70710676908493f  /* 1/sqrt(2) */
#define INV_SQRT_2_Q30                  759250112  /* 1/sqrt(2) in Q30*/
#define INV_SQRT_2_Q15                  23170  /* 1/sqrt(2) in Q15 */
#define INV_SQRT_2_Q31                  (Word32)1.51850022e+09  /* 1/sqrt(2) in Q31 */

@@ -736,11 +746,14 @@ enum
#define PIT_UP_SAMP6                        6
#define PIT_L_INTERPOL6_2                   17
#define PIT_FIR_SIZE6_2                     ( PIT_UP_SAMP6 * PIT_L_INTERPOL6_2 + 1 )
#define E_MIN_Q11_FX                            7                      /* minimum allowable energy in Q11*/
#define E_MIN                               0.0035f                /* minimum allowable energy */
#define E_MIN_Q11_FX                            7                      /* minimum allowable energy in Q11*/
#define STEP_DELTA                          0.0625f                /* quantization step for tilt compensation of gaussian cb. excitation */
#define GAMMA_EV                            0.92f                  /* weighting factor for core synthesis error weighting */
#define FORMANT_SHARPENING_NOISE_THRESHOLD  21.0f                  /* lp_noise level above which formant sharpening is deactivated */
#define E_MIN_FX                              1       /* QSCALE (Q7)*/
#define E_MIN_IVAS_FX                         1835       /* (Q19) (E12) */
#define STEP_DELTA_FX                         11
#define FORMANT_SHARPENING_NOISE_THRESHOLD_FX   5376     /* 21 (!8)lp_noise level above which formant sharpening is deactivated - at this level most of 20 dB SNR office noisy speech still uses sharpening */

@@ -772,6 +785,7 @@ enum
#define CLDFB_OVRLP_MIN_SLOTS               3                      /* CLDFB resampling - minimize processing to minimum required for transition frame ACELP->TCX/HQ */
#define INV_CLDFB_BANDWIDTH                 ( 1.f / 800.f )
#define INV_CLDFB_BANDWIDTH_Q31             ( 2684355l )
#define INV_CLDFB_BANDWIDTH_MDFT_FAC_Q31             ( 10737418 )
#define CLDFB_BANDWIDTH                     800

#define L_FILT_2OVER3                       12
@@ -1000,6 +1014,7 @@ typedef enum
#define BWD_COUNT_MAX                       100                     /* maximum value of BWD counter              */
#define BWD_N_BINS_MAX                      13                      /* maximum number of BWD bins */
#define BWS_TRAN_PERIOD                     5                       /* BWS - number of frames for transition period */
#define ONE_BY_BWS_TRAN_PERIOD_Q15          6554

#define PREEMPH_FAC_FLT                         0.68f                   /* preemphasis factor at 12.8kHz                */
#define PREEMPH_FAC_16k_FLT                     0.72f
@@ -1425,6 +1440,7 @@ enum
#define NB_LEADER                           36
#define NB_LDQ4                             27
#define FAC_LOG2                            3.321928095f
#define FAC_LOG2_BY10_Q16                   21771                   

#define NSV_MAX                             34                      /* maximal number of sub-vectors used by the AVQ */

@@ -1549,6 +1565,7 @@ enum
#define SHB_GAIN_QDELTA_1k75                0.08f                   /* SHB gain scalar quantizer stepsize */
#define SHB_GAIN_QLOW_1k75_FX                  0                    /* SHB gain lowest scalar quantizer value */
#define SHB_GAIN_QDELTA_1k75_FX                10486                   /* SHB gain scalar quantizer stepsize Q17 */
#define SHB_GAIN_QDELTA_1k75_FX_15             2622                   /* SHB gain scalar quantizer stepsize */
#define SHB_GAIN_QLOW_FX                      -262144              /* Q18*/   /* SHB gain lowest scalar quantizer value */
#define SHB_GAIN_QLOW_FX_16                   -65536               /* SHB gain lowest scalar quantizer value */
#define SHB_GAIN_QDELTA_FX_15                 4915                 /* SHB gain scalar quantizer step size */
@@ -1941,10 +1958,15 @@ typedef enum _DCTTYPE
#define ATT_NSEG                            32                      /* strong attack detection - number of time blocks */

#define TOD_NSPEC                           80                      /* number of spectral bins of the tonal detector */
#define TOD_NSPEC_INV_Q31                   26843546                /* inverse of number of spectral bins of the tonal detector */
#define TOD_THR_MASS                        0.86f                   /* initial value for the adaptive threshold of the tonal detector */
#define TOD_THR_MASS_FX_Q22                 3607101                 /* initial value for the adaptive threshold of the tonal detector */
#define P2A_FACT                            0.9f                    /* long-term averaging factor for peak-to-average ratio */
#define P2A_FACT_FX_Q15                     29491                   /* long-term averaging factor for peak-to-average ratio */
#define THR_P2A_HIGH                        95.0f                   /* higher threshold to detect strongly peaky signals at low bitrates*/
#define THR_P2A                             80.0f                   /* lower threshold to detect strongly peaky signals at higher bitrates */
#define THR_P2A_HIGH_FX                     95                      /* Q0, higher threshold to detect strongly peaky signals at low bitrates*/
#define THR_P2A_FX                          80                      /* Q0, lower threshold to detect strongly peaky signals at higher bitrates */

/*----------------------------------------------------------------------------------*
 * LD music post-filter constants
@@ -2750,6 +2772,7 @@ enum
#define Fs_2_16k                              20480     /* lsf max value (Use in reorder_fx.c) */

#define LG10                                  24660       /*  10*log10(2)  in Q13                 */
#define TEN_MULT_LOG10_2_IN_Q29               1616142464             /* (10 * log10(2)) =  3.0103 (in Q29) */
#define LG10_s3_0                             16440       /* 10*log10(2)/1.55 = 1.00343331 in Q14              */
#define LOG2_10                               27213      /* log base 2 of 10 in Q12 */
#define LOG2_10_Q29                           1783446566      /* log base 2 of 10 in Q12 */
@@ -3022,7 +3045,7 @@ enum
#define EVS_2PI_FX                           51472    /* 2 * pi in Q13 */
#define EVS_PI_FX_Q27                        421657428     /* pi in Q28 */
#define EVS_2PI_FX_Q27                       843314856    /* 2 * pi in Q28 */
#define EVS_PI_BY_2_FX                            (Word16)(0x3244)
#define EVS_PI_BY_2_FX                            (Word16)(0x3244) // Q13
//#define EVS_PI_FX                            (Word16)(0x6488)

#define LG10                                 24660    /*  10*log10(2)  in Q13 */
+1 −1
Original line number Diff line number Diff line
@@ -1082,7 +1082,7 @@ void WMOPS_destroy( void )
    {
        if ( NULL != objectName[i] )
        {
            free_( objectName[i] );
            free( objectName[i] );
            objectName[i] = NULL;
        }
    }
+1 −1
Original line number Diff line number Diff line
@@ -746,7 +746,7 @@ void edxt_fx(
                move32();
            }

            y[sub( Nm1, imult1616( Nm1, shl( kernelType, 1 ) ) )] = L_shr( re[0], 1 );
            y[sub( Nm1, imult1616( Nm1, shr( kernelType, 1 ) ) )] = L_shr( re[0], 1 );
            move32();
        }
        ELSE /* inverse II = III */
Loading