The encoder (testenc) now produces a bitstream
[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 "bits.h"
21
22 extern float gain_cdbk_nb[];
23
24 /* Finds open-loop pitch */
25 void open_loop_pitch(float *sw, int start, int end, int len, int *pitch, int *vuv);
26
27 void closed_loop_fractional_pitch(
28 float target[],                 /* Target vector */
29 float ak[],                     /* LPCs for this subframe */
30 float awk1[],                   /* Weighted LPCs #1 for this subframe */
31 float awk2[],                   /* Weighted LPCs #2 for this subframe */
32 float exc[],                    /* Overlapping codebook */
33 float *filt,                    /* Over-sampling filter */
34 int   filt_side,                /* Over-sampling factor */
35 int   fact,                     /* Over-sampling factor */
36 int   start,                    /* Smallest pitch value allowed */
37 int   end,                      /* Largest pitch value allowed */
38 float *gain,                    /* 3-tab gains of optimum entry */
39 int   *pitch,                   /* Index of optimum entry */
40 int   p,                        /* Number of LPC coeffs */
41 int   nsf,                      /* Number of samples in subframe */
42 float *stack
43 );
44
45 /** Finds the best quantized 3-tap pitch predictor by analysis by synthesis */
46 float pitch_search_3tap(
47 float target[],                 /* Target vector */
48 float ak[],                     /* LPCs for this subframe */
49 float awk1[],                   /* Weighted LPCs #1 for this subframe */
50 float awk2[],                   /* Weighted LPCs #2 for this subframe */
51 float exc[],                    /* Overlapping codebook */
52 int   start,                    /* Smallest pitch value allowed */
53 int   end,                      /* Largest pitch value allowed */
54 float *gain,                    /* 3-tab gains of optimum entry */
55 int   *pitch,                   /* Best pitch delay */
56 int   *gain_index,              /* Index of optimum gain */
57 int   p,                        /* Number of LPC coeffs */
58 int   nsf,                      /* Number of samples in subframe */
59 FrameBits *bits
60 );
61
62 /** Finds the best quantized 3-tap pitch predictor by analysis by synthesis */
63 float pitch_search_3tap_unquant(
64 float target[],                 /* Target vector */
65 float ak[],                     /* LPCs for this subframe */
66 float awk1[],                   /* Weighted LPCs #1 for this subframe */
67 float awk2[],                   /* Weighted LPCs #2 for this subframe */
68 float exc[],                    /* Overlapping codebook */
69 int   start,                    /* Smallest pitch value allowed */
70 int   end,                      /* Largest pitch value allowed */
71 float *gain,                    /* 3-tab gains of optimum entry */
72 int   *pitch,                   /* Index of optimum entry */
73 int   p,                        /* Number of LPC coeffs */
74 int   nsf                       /* Number of samples in subframe */
75 );