#ifndef SILK_MAIN_FIX_H
#define SILK_MAIN_FIX_H
#include "SigProc_FIX.h"
#include "structs_FIX.h"
#include "control.h"
#include "main.h"
#include "PLC.h"
#include "debug.h"
#include "entenc.h"
#if ((defined(OPUS_ARM_ASM) && defined(FIXED_POINT)) \
|| defined(OPUS_ARM_MAY_HAVE_NEON_INTR))
#include "fixed/arm/warped_autocorrelation_FIX_arm.h"
#endif
#define silk_encoder_state_Fxx silk_encoder_state_FIX
#define silk_encode_do_VAD_Fxx silk_encode_do_VAD_FIX
#define silk_encode_frame_Fxx silk_encode_frame_FIX
#define QC 10
#define QS 13
void silk_HP_variable_cutoff(
silk_encoder_state_Fxx state_Fxx[]
);
void silk_encode_do_VAD_FIX(
silk_encoder_state_FIX *psEnc,
opus_int activity
);
opus_int silk_encode_frame_FIX(
silk_encoder_state_FIX *psEnc,
opus_int32 *pnBytesOut,
ec_enc *psRangeEnc,
opus_int condCoding,
opus_int maxBits,
opus_int useCBR
);
opus_int silk_init_encoder(
silk_encoder_state_Fxx *psEnc,
int arch
);
opus_int silk_control_encoder(
silk_encoder_state_Fxx *psEnc,
silk_EncControlStruct *encControl,
const opus_int allow_bw_switch,
const opus_int channelNb,
const opus_int force_fs_kHz
);
void silk_noise_shape_analysis_FIX(
silk_encoder_state_FIX *psEnc,
silk_encoder_control_FIX *psEncCtrl,
const opus_int16 *pitch_res,
const opus_int16 *x,
int arch
);
void silk_warped_autocorrelation_FIX_c(
opus_int32 *corr,
opus_int *scale,
const opus_int16 *input,
const opus_int warping_Q16,
const opus_int length,
const opus_int order
);
#if !defined(OVERRIDE_silk_warped_autocorrelation_FIX)
#define silk_warped_autocorrelation_FIX(corr, scale, input, warping_Q16, length, order, arch) \
((void)(arch), silk_warped_autocorrelation_FIX_c(corr, scale, input, warping_Q16, length, order))
#endif
void silk_LTP_scale_ctrl_FIX(
silk_encoder_state_FIX *psEnc,
silk_encoder_control_FIX *psEncCtrl,
opus_int condCoding
);
void silk_find_pitch_lags_FIX(
silk_encoder_state_FIX *psEnc,
silk_encoder_control_FIX *psEncCtrl,
opus_int16 res[],
const opus_int16 x[],
int arch
);
void silk_find_pred_coefs_FIX(
silk_encoder_state_FIX *psEnc,
silk_encoder_control_FIX *psEncCtrl,
const opus_int16 res_pitch[],
const opus_int16 x[],
opus_int condCoding
);
void silk_find_LPC_FIX(
silk_encoder_state *psEncC,
opus_int16 NLSF_Q15[],
const opus_int16 x[],
const opus_int32 minInvGain_Q30
);
void silk_find_LTP_FIX(
opus_int32 XXLTP_Q17[ MAX_NB_SUBFR * LTP_ORDER * LTP_ORDER ],
opus_int32 xXLTP_Q17[ MAX_NB_SUBFR * LTP_ORDER ],
const opus_int16 r_lpc[],
const opus_int lag[ MAX_NB_SUBFR ],
const opus_int subfr_length,
const opus_int nb_subfr,
int arch
);
void silk_LTP_analysis_filter_FIX(
opus_int16 *LTP_res,
const opus_int16 *x,
const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ],
const opus_int pitchL[ MAX_NB_SUBFR ],
const opus_int32 invGains_Q16[ MAX_NB_SUBFR ],
const opus_int subfr_length,
const opus_int nb_subfr,
const opus_int pre_length
);
void silk_residual_energy_FIX(
opus_int32 nrgs[ MAX_NB_SUBFR ],
opus_int nrgsQ[ MAX_NB_SUBFR ],
const opus_int16 x[],
opus_int16 a_Q12[ 2 ][ MAX_LPC_ORDER ],
const opus_int32 gains[ MAX_NB_SUBFR ],
const opus_int subfr_length,
const opus_int nb_subfr,
const opus_int LPC_order,
int arch
);
opus_int32 silk_residual_energy16_covar_FIX(
const opus_int16 *c,
const opus_int32 *wXX,
const opus_int32 *wXx,
opus_int32 wxx,
opus_int D,
opus_int cQ
);
void silk_process_gains_FIX(
silk_encoder_state_FIX *psEnc,
silk_encoder_control_FIX *psEncCtrl,
opus_int condCoding
);
void silk_corrMatrix_FIX(
const opus_int16 *x,
const opus_int L,
const opus_int order,
opus_int32 *XX,
opus_int32 *nrg,
opus_int *rshifts,
int arch
);
void silk_corrVector_FIX(
const opus_int16 *x,
const opus_int16 *t,
const opus_int L,
const opus_int order,
opus_int32 *Xt,
const opus_int rshifts,
int arch
);
#endif