ab51f16d4fb98053fb428a329d362ba2a9f50269
[speexdsp.git] / libspeex / ltp.h
1 /* Copyright (C) 2002 Jean-Marc Valin 
2    File: ltp.h
3    Lont-Term Prediction functions
4
5    This library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
9    
10    This library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
14    
15    You should have received a copy of the GNU Lesser General Public
16    License along with this library; if not, write to the Free Software
17    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18 */
19
20 #include "speex_bits.h"
21
22
23 typedef struct ltp_params {
24    float  *gain_cdbk;
25    int     gain_bits;
26    int     pitch_bits;
27 } ltp_params;
28
29
30 void open_loop_nbest_pitch(float *sw, int start, int end, int len, int *pitch, float *gain, int N, float *stack);
31
32
33 /** Finds the best quantized 3-tap pitch predictor by analysis by synthesis */
34 int pitch_search_3tap(
35 float target[],                 /* Target vector */
36 float *sw,
37 float ak[],                     /* LPCs for this subframe */
38 float awk1[],                   /* Weighted LPCs #1 for this subframe */
39 float awk2[],                   /* Weighted LPCs #2 for this subframe */
40 float exc[],                    /* Overlapping codebook */
41 void *par,
42 int   start,                    /* Smallest pitch value allowed */
43 int   end,                      /* Largest pitch value allowed */
44 int   p,                        /* Number of LPC coeffs */
45 int   nsf,                      /* Number of samples in subframe */
46 SpeexBits *bits,
47 float *stack,
48 float *exc2,
49 int   complexity
50 );
51
52 /*Unquantize adaptive codebook and update pitch contribution*/
53 void pitch_unquant_3tap(
54 float exc[],                    /* Excitation */
55 int   start,                    /* Smallest pitch value allowed */
56 int   end,                      /* Largest pitch value allowed */
57 void *par,
58 int   nsf,                      /* Number of samples in subframe */
59 int *pitch_val,
60 float *gain_val,
61 SpeexBits *bits,
62 float *stack,
63 int lost
64 );
65
66 float pitch_gain_search_3tap(
67 float target[],                 /* Target vector */
68 float ak[],                     /* LPCs for this subframe */
69 float awk1[],                   /* Weighted LPCs #1 for this subframe */
70 float awk2[],                   /* Weighted LPCs #2 for this subframe */
71 float exc[],                    /* Excitation */
72 void *par,
73 int   pitch,                    /* Pitch value */
74 int   p,                        /* Number of LPC coeffs */
75 int   nsf,                      /* Number of samples in subframe */
76 SpeexBits *bits,
77 float *stack,
78 float *exc2,
79 int  *cdbk_index
80 );