xref: /aosp_15_r20/external/libopus/silk/float/main_FLP.h (revision a58d3d2adb790c104798cd88c8a3aff4fa8b82cc)
1*a58d3d2aSXin Li /***********************************************************************
2*a58d3d2aSXin Li Copyright (c) 2006-2011, Skype Limited. All rights reserved.
3*a58d3d2aSXin Li Redistribution and use in source and binary forms, with or without
4*a58d3d2aSXin Li modification, are permitted provided that the following conditions
5*a58d3d2aSXin Li are met:
6*a58d3d2aSXin Li - Redistributions of source code must retain the above copyright notice,
7*a58d3d2aSXin Li this list of conditions and the following disclaimer.
8*a58d3d2aSXin Li - Redistributions in binary form must reproduce the above copyright
9*a58d3d2aSXin Li notice, this list of conditions and the following disclaimer in the
10*a58d3d2aSXin Li documentation and/or other materials provided with the distribution.
11*a58d3d2aSXin Li - Neither the name of Internet Society, IETF or IETF Trust, nor the
12*a58d3d2aSXin Li names of specific contributors, may be used to endorse or promote
13*a58d3d2aSXin Li products derived from this software without specific prior written
14*a58d3d2aSXin Li permission.
15*a58d3d2aSXin Li THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16*a58d3d2aSXin Li AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17*a58d3d2aSXin Li IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18*a58d3d2aSXin Li ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
19*a58d3d2aSXin Li LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20*a58d3d2aSXin Li CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21*a58d3d2aSXin Li SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22*a58d3d2aSXin Li INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23*a58d3d2aSXin Li CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24*a58d3d2aSXin Li ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25*a58d3d2aSXin Li POSSIBILITY OF SUCH DAMAGE.
26*a58d3d2aSXin Li ***********************************************************************/
27*a58d3d2aSXin Li 
28*a58d3d2aSXin Li #ifndef SILK_MAIN_FLP_H
29*a58d3d2aSXin Li #define SILK_MAIN_FLP_H
30*a58d3d2aSXin Li 
31*a58d3d2aSXin Li #include "SigProc_FLP.h"
32*a58d3d2aSXin Li #include "SigProc_FIX.h"
33*a58d3d2aSXin Li #include "structs_FLP.h"
34*a58d3d2aSXin Li #include "main.h"
35*a58d3d2aSXin Li #include "define.h"
36*a58d3d2aSXin Li #include "debug.h"
37*a58d3d2aSXin Li #include "entenc.h"
38*a58d3d2aSXin Li 
39*a58d3d2aSXin Li #ifdef __cplusplus
40*a58d3d2aSXin Li extern "C"
41*a58d3d2aSXin Li {
42*a58d3d2aSXin Li #endif
43*a58d3d2aSXin Li 
44*a58d3d2aSXin Li #define silk_encoder_state_Fxx      silk_encoder_state_FLP
45*a58d3d2aSXin Li #define silk_encode_do_VAD_Fxx      silk_encode_do_VAD_FLP
46*a58d3d2aSXin Li #define silk_encode_frame_Fxx       silk_encode_frame_FLP
47*a58d3d2aSXin Li 
48*a58d3d2aSXin Li /*********************/
49*a58d3d2aSXin Li /* Encoder Functions */
50*a58d3d2aSXin Li /*********************/
51*a58d3d2aSXin Li 
52*a58d3d2aSXin Li /* High-pass filter with cutoff frequency adaptation based on pitch lag statistics */
53*a58d3d2aSXin Li void silk_HP_variable_cutoff(
54*a58d3d2aSXin Li     silk_encoder_state_Fxx          state_Fxx[]                         /* I/O  Encoder states                              */
55*a58d3d2aSXin Li );
56*a58d3d2aSXin Li 
57*a58d3d2aSXin Li /* Encoder main function */
58*a58d3d2aSXin Li void silk_encode_do_VAD_FLP(
59*a58d3d2aSXin Li     silk_encoder_state_FLP          *psEnc,                             /* I/O  Encoder state FLP                           */
60*a58d3d2aSXin Li     opus_int                        activity                            /* I    Decision of Opus voice activity detector    */
61*a58d3d2aSXin Li );
62*a58d3d2aSXin Li 
63*a58d3d2aSXin Li /* Encoder main function */
64*a58d3d2aSXin Li opus_int silk_encode_frame_FLP(
65*a58d3d2aSXin Li     silk_encoder_state_FLP          *psEnc,                             /* I/O  Encoder state FLP                           */
66*a58d3d2aSXin Li     opus_int32                      *pnBytesOut,                        /* O    Number of payload bytes;                    */
67*a58d3d2aSXin Li     ec_enc                          *psRangeEnc,                        /* I/O  compressor data structure                   */
68*a58d3d2aSXin Li     opus_int                        condCoding,                         /* I    The type of conditional coding to use       */
69*a58d3d2aSXin Li     opus_int                        maxBits,                            /* I    If > 0: maximum number of output bits       */
70*a58d3d2aSXin Li     opus_int                        useCBR                              /* I    Flag to force constant-bitrate operation    */
71*a58d3d2aSXin Li );
72*a58d3d2aSXin Li 
73*a58d3d2aSXin Li /* Initializes the Silk encoder state */
74*a58d3d2aSXin Li opus_int silk_init_encoder(
75*a58d3d2aSXin Li     silk_encoder_state_FLP          *psEnc,                             /* I/O  Encoder state FLP                           */
76*a58d3d2aSXin Li     int                              arch                               /* I    Run-tim architecture                        */
77*a58d3d2aSXin Li );
78*a58d3d2aSXin Li 
79*a58d3d2aSXin Li /* Control the Silk encoder */
80*a58d3d2aSXin Li opus_int silk_control_encoder(
81*a58d3d2aSXin Li     silk_encoder_state_FLP          *psEnc,                             /* I/O  Pointer to Silk encoder state FLP           */
82*a58d3d2aSXin Li     silk_EncControlStruct           *encControl,                        /* I    Control structure                           */
83*a58d3d2aSXin Li     const opus_int                  allow_bw_switch,                    /* I    Flag to allow switching audio bandwidth     */
84*a58d3d2aSXin Li     const opus_int                  channelNb,                          /* I    Channel number                              */
85*a58d3d2aSXin Li     const opus_int                  force_fs_kHz
86*a58d3d2aSXin Li );
87*a58d3d2aSXin Li 
88*a58d3d2aSXin Li /**************************/
89*a58d3d2aSXin Li /* Noise shaping analysis */
90*a58d3d2aSXin Li /**************************/
91*a58d3d2aSXin Li /* Compute noise shaping coefficients and initial gain values */
92*a58d3d2aSXin Li void silk_noise_shape_analysis_FLP(
93*a58d3d2aSXin Li     silk_encoder_state_FLP          *psEnc,                             /* I/O  Encoder state FLP                           */
94*a58d3d2aSXin Li     silk_encoder_control_FLP        *psEncCtrl,                         /* I/O  Encoder control FLP                         */
95*a58d3d2aSXin Li     const silk_float                *pitch_res,                         /* I    LPC residual from pitch analysis            */
96*a58d3d2aSXin Li     const silk_float                *x                                  /* I    Input signal [frame_length + la_shape]      */
97*a58d3d2aSXin Li );
98*a58d3d2aSXin Li 
99*a58d3d2aSXin Li /* Autocorrelations for a warped frequency axis */
100*a58d3d2aSXin Li void silk_warped_autocorrelation_FLP(
101*a58d3d2aSXin Li     silk_float                      *corr,                              /* O    Result [order + 1]                          */
102*a58d3d2aSXin Li     const silk_float                *input,                             /* I    Input data to correlate                     */
103*a58d3d2aSXin Li     const silk_float                warping,                            /* I    Warping coefficient                         */
104*a58d3d2aSXin Li     const opus_int                  length,                             /* I    Length of input                             */
105*a58d3d2aSXin Li     const opus_int                  order                               /* I    Correlation order (even)                    */
106*a58d3d2aSXin Li );
107*a58d3d2aSXin Li 
108*a58d3d2aSXin Li /* Calculation of LTP state scaling */
109*a58d3d2aSXin Li void silk_LTP_scale_ctrl_FLP(
110*a58d3d2aSXin Li     silk_encoder_state_FLP          *psEnc,                             /* I/O  Encoder state FLP                           */
111*a58d3d2aSXin Li     silk_encoder_control_FLP        *psEncCtrl,                         /* I/O  Encoder control FLP                         */
112*a58d3d2aSXin Li     opus_int                        condCoding                          /* I    The type of conditional coding to use       */
113*a58d3d2aSXin Li );
114*a58d3d2aSXin Li 
115*a58d3d2aSXin Li /**********************************************/
116*a58d3d2aSXin Li /* Prediction Analysis                        */
117*a58d3d2aSXin Li /**********************************************/
118*a58d3d2aSXin Li /* Find pitch lags */
119*a58d3d2aSXin Li void silk_find_pitch_lags_FLP(
120*a58d3d2aSXin Li     silk_encoder_state_FLP          *psEnc,                             /* I/O  Encoder state FLP                           */
121*a58d3d2aSXin Li     silk_encoder_control_FLP        *psEncCtrl,                         /* I/O  Encoder control FLP                         */
122*a58d3d2aSXin Li     silk_float                      res[],                              /* O    Residual                                    */
123*a58d3d2aSXin Li     const silk_float                x[],                                /* I    Speech signal                               */
124*a58d3d2aSXin Li     int                             arch                                /* I    Run-time architecture                       */
125*a58d3d2aSXin Li );
126*a58d3d2aSXin Li 
127*a58d3d2aSXin Li /* Find LPC and LTP coefficients */
128*a58d3d2aSXin Li void silk_find_pred_coefs_FLP(
129*a58d3d2aSXin Li     silk_encoder_state_FLP          *psEnc,                             /* I/O  Encoder state FLP                           */
130*a58d3d2aSXin Li     silk_encoder_control_FLP        *psEncCtrl,                         /* I/O  Encoder control FLP                         */
131*a58d3d2aSXin Li     const silk_float                res_pitch[],                        /* I    Residual from pitch analysis                */
132*a58d3d2aSXin Li     const silk_float                x[],                                /* I    Speech signal                               */
133*a58d3d2aSXin Li     opus_int                        condCoding                          /* I    The type of conditional coding to use       */
134*a58d3d2aSXin Li );
135*a58d3d2aSXin Li 
136*a58d3d2aSXin Li /* LPC analysis */
137*a58d3d2aSXin Li void silk_find_LPC_FLP(
138*a58d3d2aSXin Li     silk_encoder_state              *psEncC,                            /* I/O  Encoder state                               */
139*a58d3d2aSXin Li     opus_int16                      NLSF_Q15[],                         /* O    NLSFs                                       */
140*a58d3d2aSXin Li     const silk_float                x[],                                /* I    Input signal                                */
141*a58d3d2aSXin Li     const silk_float                minInvGain,                         /* I    Prediction gain from LTP (dB)               */
142*a58d3d2aSXin Li     int                             arch
143*a58d3d2aSXin Li );
144*a58d3d2aSXin Li 
145*a58d3d2aSXin Li /* LTP analysis */
146*a58d3d2aSXin Li void silk_find_LTP_FLP(
147*a58d3d2aSXin Li     silk_float                      XX[ MAX_NB_SUBFR * LTP_ORDER * LTP_ORDER ], /* O    Weight for LTP quantization         */
148*a58d3d2aSXin Li     silk_float                      xX[ MAX_NB_SUBFR * LTP_ORDER ],     /* O    Weight for LTP quantization                 */
149*a58d3d2aSXin Li     const silk_float                r_ptr[],                            /* I    LPC residual                                */
150*a58d3d2aSXin Li     const opus_int                  lag[  MAX_NB_SUBFR ],               /* I    LTP lags                                    */
151*a58d3d2aSXin Li     const opus_int                  subfr_length,                       /* I    Subframe length                             */
152*a58d3d2aSXin Li     const opus_int                  nb_subfr,                           /* I    number of subframes                         */
153*a58d3d2aSXin Li     int                             arch
154*a58d3d2aSXin Li );
155*a58d3d2aSXin Li 
156*a58d3d2aSXin Li void silk_LTP_analysis_filter_FLP(
157*a58d3d2aSXin Li     silk_float                      *LTP_res,                           /* O    LTP res MAX_NB_SUBFR*(pre_lgth+subfr_lngth) */
158*a58d3d2aSXin Li     const silk_float                *x,                                 /* I    Input signal, with preceding samples        */
159*a58d3d2aSXin Li     const silk_float                B[ LTP_ORDER * MAX_NB_SUBFR ],      /* I    LTP coefficients for each subframe          */
160*a58d3d2aSXin Li     const opus_int                  pitchL[   MAX_NB_SUBFR ],           /* I    Pitch lags                                  */
161*a58d3d2aSXin Li     const silk_float                invGains[ MAX_NB_SUBFR ],           /* I    Inverse quantization gains                  */
162*a58d3d2aSXin Li     const opus_int                  subfr_length,                       /* I    Length of each subframe                     */
163*a58d3d2aSXin Li     const opus_int                  nb_subfr,                           /* I    number of subframes                         */
164*a58d3d2aSXin Li     const opus_int                  pre_length                          /* I    Preceding samples for each subframe         */
165*a58d3d2aSXin Li );
166*a58d3d2aSXin Li 
167*a58d3d2aSXin Li /* Calculates residual energies of input subframes where all subframes have LPC_order   */
168*a58d3d2aSXin Li /* of preceding samples                                                                 */
169*a58d3d2aSXin Li void silk_residual_energy_FLP(
170*a58d3d2aSXin Li     silk_float                      nrgs[ MAX_NB_SUBFR ],               /* O    Residual energy per subframe                */
171*a58d3d2aSXin Li     const silk_float                x[],                                /* I    Input signal                                */
172*a58d3d2aSXin Li     silk_float                      a[ 2 ][ MAX_LPC_ORDER ],            /* I    AR coefs for each frame half                */
173*a58d3d2aSXin Li     const silk_float                gains[],                            /* I    Quantization gains                          */
174*a58d3d2aSXin Li     const opus_int                  subfr_length,                       /* I    Subframe length                             */
175*a58d3d2aSXin Li     const opus_int                  nb_subfr,                           /* I    number of subframes                         */
176*a58d3d2aSXin Li     const opus_int                  LPC_order                           /* I    LPC order                                   */
177*a58d3d2aSXin Li );
178*a58d3d2aSXin Li 
179*a58d3d2aSXin Li /* 16th order LPC analysis filter */
180*a58d3d2aSXin Li void silk_LPC_analysis_filter_FLP(
181*a58d3d2aSXin Li     silk_float                      r_LPC[],                            /* O    LPC residual signal                         */
182*a58d3d2aSXin Li     const silk_float                PredCoef[],                         /* I    LPC coefficients                            */
183*a58d3d2aSXin Li     const silk_float                s[],                                /* I    Input signal                                */
184*a58d3d2aSXin Li     const opus_int                  length,                             /* I    Length of input signal                      */
185*a58d3d2aSXin Li     const opus_int                  Order                               /* I    LPC order                                   */
186*a58d3d2aSXin Li );
187*a58d3d2aSXin Li 
188*a58d3d2aSXin Li /* LTP tap quantizer */
189*a58d3d2aSXin Li void silk_quant_LTP_gains_FLP(
190*a58d3d2aSXin Li     silk_float                      B[ MAX_NB_SUBFR * LTP_ORDER ],      /* O    Quantized LTP gains                         */
191*a58d3d2aSXin Li     opus_int8                       cbk_index[ MAX_NB_SUBFR ],          /* O    Codebook index                              */
192*a58d3d2aSXin Li     opus_int8                       *periodicity_index,                 /* O    Periodicity index                           */
193*a58d3d2aSXin Li     opus_int32                      *sum_log_gain_Q7,                   /* I/O  Cumulative max prediction gain  */
194*a58d3d2aSXin Li     silk_float                      *pred_gain_dB,                      /* O    LTP prediction gain                         */
195*a58d3d2aSXin Li     const silk_float                XX[ MAX_NB_SUBFR * LTP_ORDER * LTP_ORDER ], /* I    Correlation matrix                  */
196*a58d3d2aSXin Li     const silk_float                xX[ MAX_NB_SUBFR * LTP_ORDER ],     /* I    Correlation vector                          */
197*a58d3d2aSXin Li     const opus_int                  subfr_len,                          /* I    Number of samples per subframe              */
198*a58d3d2aSXin Li     const opus_int                  nb_subfr,                           /* I    Number of subframes                         */
199*a58d3d2aSXin Li     int                             arch                                /* I    Run-time architecture                       */
200*a58d3d2aSXin Li );
201*a58d3d2aSXin Li 
202*a58d3d2aSXin Li /* Residual energy: nrg = wxx - 2 * wXx * c + c' * wXX * c */
203*a58d3d2aSXin Li silk_float silk_residual_energy_covar_FLP(                              /* O    Weighted residual energy                    */
204*a58d3d2aSXin Li     const silk_float                *c,                                 /* I    Filter coefficients                         */
205*a58d3d2aSXin Li     silk_float                      *wXX,                               /* I/O  Weighted correlation matrix, reg. out       */
206*a58d3d2aSXin Li     const silk_float                *wXx,                               /* I    Weighted correlation vector                 */
207*a58d3d2aSXin Li     const silk_float                wxx,                                /* I    Weighted correlation value                  */
208*a58d3d2aSXin Li     const opus_int                  D                                   /* I    Dimension                                   */
209*a58d3d2aSXin Li );
210*a58d3d2aSXin Li 
211*a58d3d2aSXin Li /* Processing of gains */
212*a58d3d2aSXin Li void silk_process_gains_FLP(
213*a58d3d2aSXin Li     silk_encoder_state_FLP          *psEnc,                             /* I/O  Encoder state FLP                           */
214*a58d3d2aSXin Li     silk_encoder_control_FLP        *psEncCtrl,                         /* I/O  Encoder control FLP                         */
215*a58d3d2aSXin Li     opus_int                        condCoding                          /* I    The type of conditional coding to use       */
216*a58d3d2aSXin Li );
217*a58d3d2aSXin Li 
218*a58d3d2aSXin Li /******************/
219*a58d3d2aSXin Li /* Linear Algebra */
220*a58d3d2aSXin Li /******************/
221*a58d3d2aSXin Li /* Calculates correlation matrix X'*X */
222*a58d3d2aSXin Li void silk_corrMatrix_FLP(
223*a58d3d2aSXin Li     const silk_float                *x,                                 /* I    x vector [ L+order-1 ] used to create X     */
224*a58d3d2aSXin Li     const opus_int                  L,                                  /* I    Length of vectors                           */
225*a58d3d2aSXin Li     const opus_int                  Order,                              /* I    Max lag for correlation                     */
226*a58d3d2aSXin Li     silk_float                      *XX,                                /* O    X'*X correlation matrix [order x order]     */
227*a58d3d2aSXin Li     int                             arch
228*a58d3d2aSXin Li );
229*a58d3d2aSXin Li 
230*a58d3d2aSXin Li /* Calculates correlation vector X'*t */
231*a58d3d2aSXin Li void silk_corrVector_FLP(
232*a58d3d2aSXin Li     const silk_float                *x,                                 /* I    x vector [L+order-1] used to create X       */
233*a58d3d2aSXin Li     const silk_float                *t,                                 /* I    Target vector [L]                           */
234*a58d3d2aSXin Li     const opus_int                  L,                                  /* I    Length of vecors                            */
235*a58d3d2aSXin Li     const opus_int                  Order,                              /* I    Max lag for correlation                     */
236*a58d3d2aSXin Li     silk_float                      *Xt,                                /* O    X'*t correlation vector [order]             */
237*a58d3d2aSXin Li     int                             arch
238*a58d3d2aSXin Li );
239*a58d3d2aSXin Li 
240*a58d3d2aSXin Li /* Apply sine window to signal vector.  */
241*a58d3d2aSXin Li /* Window types:                        */
242*a58d3d2aSXin Li /*  1 -> sine window from 0 to pi/2     */
243*a58d3d2aSXin Li /*  2 -> sine window from pi/2 to pi    */
244*a58d3d2aSXin Li void silk_apply_sine_window_FLP(
245*a58d3d2aSXin Li     silk_float                      px_win[],                           /* O    Pointer to windowed signal                  */
246*a58d3d2aSXin Li     const silk_float                px[],                               /* I    Pointer to input signal                     */
247*a58d3d2aSXin Li     const opus_int                  win_type,                           /* I    Selects a window type                       */
248*a58d3d2aSXin Li     const opus_int                  length                              /* I    Window length, multiple of 4                */
249*a58d3d2aSXin Li );
250*a58d3d2aSXin Li 
251*a58d3d2aSXin Li /* Wrapper functions. Call flp / fix code */
252*a58d3d2aSXin Li 
253*a58d3d2aSXin Li /* Convert AR filter coefficients to NLSF parameters */
254*a58d3d2aSXin Li void silk_A2NLSF_FLP(
255*a58d3d2aSXin Li     opus_int16                      *NLSF_Q15,                          /* O    NLSF vector      [ LPC_order ]              */
256*a58d3d2aSXin Li     const silk_float                *pAR,                               /* I    LPC coefficients [ LPC_order ]              */
257*a58d3d2aSXin Li     const opus_int                  LPC_order                           /* I    LPC order                                   */
258*a58d3d2aSXin Li );
259*a58d3d2aSXin Li 
260*a58d3d2aSXin Li /* Convert NLSF parameters to AR prediction filter coefficients */
261*a58d3d2aSXin Li void silk_NLSF2A_FLP(
262*a58d3d2aSXin Li     silk_float                      *pAR,                               /* O    LPC coefficients [ LPC_order ]              */
263*a58d3d2aSXin Li     const opus_int16                *NLSF_Q15,                          /* I    NLSF vector      [ LPC_order ]              */
264*a58d3d2aSXin Li     const opus_int                  LPC_order,                          /* I    LPC order                                   */
265*a58d3d2aSXin Li     int                             arch                                /* I    Run-time architecture                       */
266*a58d3d2aSXin Li );
267*a58d3d2aSXin Li 
268*a58d3d2aSXin Li /* Limit, stabilize, and quantize NLSFs */
269*a58d3d2aSXin Li void silk_process_NLSFs_FLP(
270*a58d3d2aSXin Li     silk_encoder_state              *psEncC,                            /* I/O  Encoder state                               */
271*a58d3d2aSXin Li     silk_float                      PredCoef[ 2 ][ MAX_LPC_ORDER ],     /* O    Prediction coefficients                     */
272*a58d3d2aSXin Li     opus_int16                      NLSF_Q15[      MAX_LPC_ORDER ],     /* I/O  Normalized LSFs (quant out) (0 - (2^15-1))  */
273*a58d3d2aSXin Li     const opus_int16                prev_NLSF_Q15[ MAX_LPC_ORDER ]      /* I    Previous Normalized LSFs (0 - (2^15-1))     */
274*a58d3d2aSXin Li );
275*a58d3d2aSXin Li 
276*a58d3d2aSXin Li /* Floating-point Silk NSQ wrapper      */
277*a58d3d2aSXin Li void silk_NSQ_wrapper_FLP(
278*a58d3d2aSXin Li     silk_encoder_state_FLP          *psEnc,                             /* I/O  Encoder state FLP                           */
279*a58d3d2aSXin Li     silk_encoder_control_FLP        *psEncCtrl,                         /* I/O  Encoder control FLP                         */
280*a58d3d2aSXin Li     SideInfoIndices                 *psIndices,                         /* I/O  Quantization indices                        */
281*a58d3d2aSXin Li     silk_nsq_state                  *psNSQ,                             /* I/O  Noise Shaping Quantzation state             */
282*a58d3d2aSXin Li     opus_int8                       pulses[],                           /* O    Quantized pulse signal                      */
283*a58d3d2aSXin Li     const silk_float                x[]                                 /* I    Prefiltered input signal                    */
284*a58d3d2aSXin Li );
285*a58d3d2aSXin Li 
286*a58d3d2aSXin Li #ifdef __cplusplus
287*a58d3d2aSXin Li }
288*a58d3d2aSXin Li #endif
289*a58d3d2aSXin Li 
290*a58d3d2aSXin Li #endif
291