Cleaned up vocoder mode...
[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 float pitch_coef,               /* Voicing (pitch) coefficient */
45 int   p,                        /* Number of LPC coeffs */
46 int   nsf,                      /* Number of samples in subframe */
47 SpeexBits *bits,
48 float *stack,
49 float *exc2,
50 int   complexity
51 );
52
53 /*Unquantize adaptive codebook and update pitch contribution*/
54 void pitch_unquant_3tap(
55 float exc[],                    /* Excitation */
56 int   start,                    /* Smallest pitch value allowed */
57 int   end,                      /* Largest pitch value allowed */
58 float pitch_coef,               /* Voicing (pitch) coefficient */
59 void *par,
60 int   nsf,                      /* Number of samples in subframe */
61 int *pitch_val,
62 float *gain_val,
63 SpeexBits *bits,
64 float *stack,
65 int lost
66 );
67
68 float pitch_gain_search_3tap(
69 float target[],                 /* Target vector */
70 float ak[],                     /* LPCs for this subframe */
71 float awk1[],                   /* Weighted LPCs #1 for this subframe */
72 float awk2[],                   /* Weighted LPCs #2 for this subframe */
73 float exc[],                    /* Excitation */
74 void *par,
75 int   pitch,                    /* Pitch value */
76 int   p,                        /* Number of LPC coeffs */
77 int   nsf,                      /* Number of samples in subframe */
78 SpeexBits *bits,
79 float *stack,
80 float *exc2,
81 int  *cdbk_index
82 );
83
84
85 /** Forced pitch delay and gain */
86 int forced_pitch_quant(
87 float target[],                 /* Target vector */
88 float *sw,
89 float ak[],                     /* LPCs for this subframe */
90 float awk1[],                   /* Weighted LPCs #1 for this subframe */
91 float awk2[],                   /* Weighted LPCs #2 for this subframe */
92 float exc[],                    /* Excitation */
93 void *par,
94 int   start,                    /* Smallest pitch value allowed */
95 int   end,                      /* Largest pitch value allowed */
96 float pitch_coef,               /* Voicing (pitch) coefficient */
97 int   p,                        /* Number of LPC coeffs */
98 int   nsf,                      /* Number of samples in subframe */
99 SpeexBits *bits,
100 float *stack,
101 float *exc2,
102 int complexity
103 );
104
105 /** Unquantize forced pitch delay and gain */
106 void forced_pitch_unquant(
107 float exc[],                    /* Excitation */
108 int   start,                    /* Smallest pitch value allowed */
109 int   end,                      /* Largest pitch value allowed */
110 float pitch_coef,               /* Voicing (pitch) coefficient */
111 void *par,
112 int   nsf,                      /* Number of samples in subframe */
113 int *pitch_val,
114 float *gain_val,
115 SpeexBits *bits,
116 float *stack,
117 int lost);