28 #ifndef SILK_NSQ_DEL_DEC_ARM_H
29 #define SILK_NSQ_DEL_DEC_ARM_H
31 #include "arm/armcpu.h"
33 #if defined(OPUS_ARM_MAY_HAVE_NEON_INTR)
34 void silk_NSQ_del_dec_neon(
35 const silk_encoder_state *psEncC, silk_nsq_state *NSQ,
36 SideInfoIndices *psIndices,
const opus_int16 x16[], opus_int8 pulses[],
37 const opus_int16 PredCoef_Q12[2 * MAX_LPC_ORDER],
38 const opus_int16 LTPCoef_Q14[LTP_ORDER * MAX_NB_SUBFR],
39 const opus_int16 AR_Q13[MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER],
40 const opus_int HarmShapeGain_Q14[MAX_NB_SUBFR],
41 const opus_int Tilt_Q14[MAX_NB_SUBFR],
42 const opus_int32 LF_shp_Q14[MAX_NB_SUBFR],
43 const opus_int32 Gains_Q16[MAX_NB_SUBFR],
44 const opus_int pitchL[MAX_NB_SUBFR],
const opus_int Lambda_Q10,
45 const opus_int LTP_scale_Q14);
47 #if !defined(OPUS_HAVE_RTCD)
48 #define OVERRIDE_silk_NSQ_del_dec (1)
49 #define silk_NSQ_del_dec(psEncC, NSQ, psIndices, x16, pulses, PredCoef_Q12, \
50 LTPCoef_Q14, AR_Q13, HarmShapeGain_Q14, Tilt_Q14, \
51 LF_shp_Q14, Gains_Q16, pitchL, Lambda_Q10, \
52 LTP_scale_Q14, arch) \
54 PRESUME_NEON(silk_NSQ_del_dec)( \
55 psEncC, NSQ, psIndices, x16, pulses, PredCoef_Q12, LTPCoef_Q14, \
56 AR_Q13, HarmShapeGain_Q14, Tilt_Q14, LF_shp_Q14, Gains_Q16, pitchL, \
57 Lambda_Q10, LTP_scale_Q14))
61 #if !defined(OVERRIDE_silk_NSQ_del_dec)
63 #if defined(OPUS_HAVE_RTCD) && (defined(OPUS_ARM_MAY_HAVE_NEON_INTR) && \
64 !defined(OPUS_ARM_PRESUME_NEON_INTR))
65 extern void (*
const SILK_NSQ_DEL_DEC_IMPL[OPUS_ARCHMASK + 1])(
66 const silk_encoder_state *psEncC, silk_nsq_state *NSQ,
67 SideInfoIndices *psIndices,
const opus_int16 x16[], opus_int8 pulses[],
68 const opus_int16 PredCoef_Q12[2 * MAX_LPC_ORDER],
69 const opus_int16 LTPCoef_Q14[LTP_ORDER * MAX_NB_SUBFR],
70 const opus_int16 AR_Q13[MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER],
71 const opus_int HarmShapeGain_Q14[MAX_NB_SUBFR],
72 const opus_int Tilt_Q14[MAX_NB_SUBFR],
73 const opus_int32 LF_shp_Q14[MAX_NB_SUBFR],
74 const opus_int32 Gains_Q16[MAX_NB_SUBFR],
75 const opus_int pitchL[MAX_NB_SUBFR],
const opus_int Lambda_Q10,
76 const opus_int LTP_scale_Q14);
77 #define OVERRIDE_silk_NSQ_del_dec (1)
78 #define silk_NSQ_del_dec(psEncC, NSQ, psIndices, x16, pulses, PredCoef_Q12, \
79 LTPCoef_Q14, AR_Q13, HarmShapeGain_Q14, Tilt_Q14, \
80 LF_shp_Q14, Gains_Q16, pitchL, Lambda_Q10, \
81 LTP_scale_Q14, arch) \
82 ((*SILK_NSQ_DEL_DEC_IMPL[(arch)&OPUS_ARCHMASK])( \
83 psEncC, NSQ, psIndices, x16, pulses, PredCoef_Q12, LTPCoef_Q14, \
84 AR_Q13, HarmShapeGain_Q14, Tilt_Q14, LF_shp_Q14, Gains_Q16, pitchL, \
85 Lambda_Q10, LTP_scale_Q14))
86 #elif defined(OPUS_ARM_PRESUME_NEON_INTR)
87 #define OVERRIDE_silk_NSQ_del_dec (1)
88 #define silk_NSQ_del_dec(psEncC, NSQ, psIndices, x16, pulses, PredCoef_Q12, \
89 LTPCoef_Q14, AR_Q13, HarmShapeGain_Q14, Tilt_Q14, \
90 LF_shp_Q14, Gains_Q16, pitchL, Lambda_Q10, \
91 LTP_scale_Q14, arch) \
93 silk_NSQ_del_dec_neon(psEncC, NSQ, psIndices, x16, pulses, PredCoef_Q12, \
94 LTPCoef_Q14, AR_Q13, HarmShapeGain_Q14, Tilt_Q14, \
95 LF_shp_Q14, Gains_Q16, pitchL, Lambda_Q10, \