More cleanup in codebook search...
[speexdsp.git] / libspeex / cb_search.h
1 /* Copyright (C) 2002 Jean-Marc Valin & David Rowe
2    File: cb_search.c
3    Overlapped codebook search
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 #ifndef CB_SEARCH_H
21 #define CB_SEARCH_H
22
23 #include "bits.h"
24
25 float overlap_cb_search(
26 float target[],                 /* target vector */
27 float ak[],                     /* LPCs for this subframe */
28 float awk1[],                   /* Weighted LPCs for this subframe */
29 float awk2[],                   /* Weighted LPCs for this subframe */
30 float codebook[],               /* overlapping codebook */
31 int   entries,                  /* number of overlapping entries to search */
32 float *gain,                    /* gain of optimum entry */
33 int   *index,                   /* index of optimum entry */
34 int   p,                        /* number of LPC coeffs */
35 int   nsf                       /* number of samples in subframe */
36 );
37
38
39 typedef struct split_cb_params {
40    int     subvect_size;
41    int     nb_subvect;
42    float  *shape_cb;
43    int     shape_bits;
44    float  *gain_cb;
45    int     gain_bits;
46 } split_cb_params;
47
48 extern split_cb_params split_cb_nb;
49
50 void split_cb_search(
51 float target[],                 /* target vector */
52 float ak[],                     /* LPCs for this subframe */
53 float awk1[],                   /* Weighted LPCs for this subframe */
54 float awk2[],                   /* Weighted LPCs for this subframe */
55 void *par,                      /* Codebook/search parameters*/
56 int   p,                        /* number of LPC coeffs */
57 int   nsf,                      /* number of samples in subframe */
58 float *exc,
59 FrameBits *bits,
60 float *stack
61 );
62
63 void split_cb_unquant(
64 float *exc,
65 float codebook[][8],            /* non-overlapping codebook */
66 int   nsf,                      /* number of samples in subframe */
67 FrameBits *bits
68 );
69
70 #endif