Commit 9c0b56d0 authored by Vladimir Malenovsky's avatar Vladimir Malenovsky
Browse files

Merge branch 'main' into...

Merge branch 'main' into 897-no-complexity-numbers-for-ivas-internal-evs-implementation-shown-in-automated-complexity
parents 7d4a327e 722287dd
Loading
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1425,6 +1425,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 +1550,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 */
+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 */
+7 −0
Original line number Diff line number Diff line
@@ -78,6 +78,13 @@ void floatToFixed_arr32( float *f, Word32 *i, Word16 Q, Word16 l )
    }
}

float fixedToFloat_16( Word16 i, Word16 Q )
{
    if ( Q < 0 )
        return ( i * (float) ( ( (unsigned) 1 ) << ( -Q ) ) );
    else
        return (float) ( i ) / (float) ( (unsigned int) 1 << Q );
}
float fixedToFloat_32( Word32 number, Word16 Q )
{
    float val = 0.0f;
+79 −0
Original line number Diff line number Diff line
@@ -314,3 +314,82 @@ void int_lsp4_fx(

    return;
}

void int_lsp4_ivas_fx(
    const Word16 L_frame,        /* i  : length of the frame                   */
    const Word16 lsp_old[],      /* i  : LSPs from past frame               Q15*/
    const Word16 lsp_mid[],      /* i  : LSPs from mid-frame				  Q15*/
    const Word16 lsp_new[],      /* i  : LSPs from present frame            Q15*/
    Word16 *Aq,                  /* o  : LP coefficients in both subframes  Q12*/
    const Word16 m,              /* i  : order of LP filter                    */
    Word16 relax_prev_lsf_interp /* i  : relax prev frame lsf interp after erasure */
)
{
    Word16 lsp[M16k];
    Word16 i, j, k;
    Word32 L_tmp;
    const Word16 *pt_int_coeffs;

    IF( EQ_16( L_frame, L_FRAME ) )
    {
        IF( EQ_16( relax_prev_lsf_interp, 1 ) )
        {
            pt_int_coeffs = interpol_frac_mid_relaxprev_12k8_fx;
        }
        ELSE IF( EQ_16( relax_prev_lsf_interp, 2 ) )
        {
            pt_int_coeffs = interpol_frac_mid_FEC_fx;
        }
        ELSE IF( EQ_16( relax_prev_lsf_interp, -1 ) )
        {
            pt_int_coeffs = interpol_frac_mid_relaxprev_pred_12k8_fx;
        }
        ELSE IF( EQ_16( relax_prev_lsf_interp, -2 ) )
        {
            pt_int_coeffs = interpol_frac2_mid_fx;
        }
        ELSE
        {
            pt_int_coeffs = interpol_frac_mid_fx;
        }
    }
    ELSE /* L_frame == L_FRAME16k */
    {
        IF( EQ_16( relax_prev_lsf_interp, 1 ) )
        {
            pt_int_coeffs = interpol_frac_mid_relaxprev_16k_fx;
        }
        ELSE IF( EQ_16( relax_prev_lsf_interp, 2 ) )
        {
            pt_int_coeffs = interpol_frac_mid_16k_FEC_fx;
        }
        ELSE IF( EQ_16( relax_prev_lsf_interp, -1 ) )
        {
            pt_int_coeffs = interpol_frac_mid_relaxprev_pred_16k_fx;
        }
        ELSE
        {
            pt_int_coeffs = interpol_frac_mid_16k_fx;
        }
    }
    k = sub( shr( L_frame, 6 ), 1 );
    FOR( j = 0; j < k; j++ )
    {
        FOR( i = 0; i < m; i++ )
        {
            L_tmp = L_mult( lsp_old[i], *pt_int_coeffs );               /*Q31 */
            L_tmp = L_mac( L_tmp, lsp_mid[i], *( pt_int_coeffs + 1 ) ); /*Q31 */
            lsp[i] = mac_r( L_tmp, lsp_new[i], *( pt_int_coeffs + 2 ) );
            move16();
        }
        pt_int_coeffs += 3;

        E_LPC_f_lsp_a_conversion( lsp, Aq, m );
        Aq += add( m, 1 );
    }

    /* Last subframe */
    E_LPC_f_lsp_a_conversion( lsp_new, Aq, m );

    return;
}
+17 −12
Original line number Diff line number Diff line
@@ -317,8 +317,8 @@ ivas_error pre_proc_ivas(
    const int16_t loc_harm,                                     /* i  : harmonicity flag                        */
    const float cor_map_sum,                                    /* i  : speech/music clasif. parameter          */
    const int16_t vad_flag_dtx,                                 /* i  : HE-SAD flag with additional DTX HO      */
    const float enerBuffer[CLDFB_NO_CHANNELS_MAX],              /* i  : energy buffer                           */
    const float fft_buff[2 * L_FFT],                            /* i  : FFT buffer                              */
    /*const*/ float enerBuffer[CLDFB_NO_CHANNELS_MAX],              /* i  : energy buffer                           */
    /*const*/ float fft_buff[2 * L_FFT],                            /* i  : FFT buffer                              */
    const int16_t MCT_flag,                                     /* i  : hMCT handle allocated (1) or not (0)    */
    const int16_t vad_hover_flag,                               /* i  : VAD hangover flag                       */
    const int16_t flag_16k_smc                                  /* i  : flag to indicate if the OL SMC is run at 16 kHz */
@@ -635,6 +635,7 @@ ivas_error ivas_core_dec(
#endif


#ifndef IVAS_FLOAT_FIXED
void encod_gen_2sbfr(
    Encoder_State *st,                                          /* i/o: state structure                         */
    const float speech[],                                       /* i  : input speech                            */
@@ -650,6 +651,7 @@ void encod_gen_2sbfr(
    const int16_t tdm_Pitch_reuse_flag,                         /* i  : primary channel pitch reuse flag        */
    const float tdm_Pri_pitch_buf[]                             /* i  : pitch values for primary channel        */
);
#endif

void decod_gen_2sbfr(
    Decoder_State *st,                                          /* i/o: decoder static memory                   */
@@ -799,6 +801,7 @@ int16_t ivas_acelp_tcx20_switching(
    const int16_t flag_16k_smc                                  /* i  : flag to indicate if the OL SMC is run at 16 kHz */
);

#ifndef IVAS_FLOAT_FIXED
void ivas_decision_matrix_enc(
    Encoder_State *st,                                          /* i/o: encoder state structure                 */
    const int32_t element_brate,                                /* i  : element bitrate                         */
@@ -806,6 +809,16 @@ void ivas_decision_matrix_enc(
    const float enerBuffer[],                                   /* i  : energy buffer                           */
    const int16_t last_element_mode                             /* i  : last element mode                       */
);
#else
void ivas_decision_matrix_enc_fx(
    Encoder_State *st,          /* i  : encoder state structure                 */
    const Word32 element_brate, /* i  : element bitrate                         */
    const Word16 fft_buff[],    /* i  : FFT buffer                              */
    const Word32 enerBuffer[],  /* i  : energy buffer                           */
    Word16 enerBuffer_exp,
    const Word16 last_element_mode /* i  : last element mode                       */
);
#endif

#ifdef IVAS_FLOAT_FIXED
void ivas_signaling_enc_fx(
@@ -4122,14 +4135,6 @@ void ivas_mdct_quant_coder(
    const int16_t MCT_flag                                      /* i  : hMCT handle allocated (1) or not (0)    */
);

void ivas_mdct_quant_coder_fx(
    CPE_ENC_HANDLE hCPE,                   /* i/o: Encoder CPE handle                   */
    int16_t tnsBits[CPE_CHANNELS][NB_DIV], /* i  : bits needed for TNS parameters       */
    int16_t tnsSize[CPE_CHANNELS][NB_DIV], /* i  : size of TNS                          */
    int16_t p_param[CPE_CHANNELS][NB_DIV], /* i  : pointer to parameter array           */
    const int16_t MCT_flag                 /* i  : hMCT handle allocated (1) or not (0) */
);

void apply_MCT_enc(
    MCT_ENC_HANDLE hMCT,                                        /* i/o: MCT encoder structure                   */
    Encoder_State **sts,                                        /* i/o: encoder state structure                 */
@@ -8009,8 +8014,8 @@ void ivas_omasa_dirac_rend_jbm(
#ifdef IVAS_FLOAT_FIXED
void ivas_omasa_preProcessStereoTransportsForMovedObjects_fx(
    Decoder_Struct *st_ivas,
    Word32 inRe_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX],
    Word32 inIm_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX],
    Word32 inRe_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /*cldfb_buf_q*/
    Word32 inIm_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /*cldfb_buf_q*/
    Word16 *cldfb_buf_q,
    const Word16 nBins,
    const Word16 subframe
Loading