d6e833b1f5625b01c4b04ca6880e506a04071bcf
[speexdsp.git] / libspeex / modes.c
1 /* Copyright (C) 2002 Jean-Marc Valin 
2    File: modes.c
3
4    Describes the different modes of the codec
5
6    This library is free software; you can redistribute it and/or
7    modify it under the terms of the GNU Lesser General Public
8    License as published by the Free Software Foundation; either
9    version 2.1 of the License, or (at your option) any later version.
10    
11    This library is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14    Lesser General Public License for more details.
15    
16    You should have received a copy of the GNU Lesser General Public
17    License along with this library; if not, write to the Free Software
18    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19
20 */
21
22 #include <stdlib.h>
23 #include "modes.h"
24 #include "ltp.h"
25 #include "quant_lsp.h"
26 #include "cb_search.h"
27
28 extern float gain_cdbk_nb[];
29 extern float exc_gains_table[];
30 extern float exc_table[];
31 extern float exc_wb_table[];
32
33 ltp_params ltp_params_nb = {
34    gain_cdbk_nb,
35    7,
36    7
37 };
38
39 ltp_params ltp_params_wb = {
40    gain_cdbk_nb,
41    7,
42    8
43 };
44
45 split_cb_params split_cb_nb = {
46    8,               /*subvect_size*/
47    5,               /*nb_subvect*/
48    exc_table,       /*shape_cb*/
49    7,               /*shape_bits*/
50    exc_gains_table, /*gain_cb*/
51    8                /*gain_bits*/
52 };
53
54 split_cb_params split_cb_wb = {
55    8,               /*subvect_size*/
56    8,               /*nb_subvect*/
57    exc_wb_table,    /*shape_cb*/
58    7,               /*shape_bits*/
59    NULL, /*gain_cb*/
60    8                /*gain_bits*/
61 };
62
63
64 SpeexMode nb_mode = {
65    160,    /*frameSize*/
66    40,     /*subframeSize*/
67    320,    /*windowSize*/
68    10,     /*lpcSize*/
69    640,    /*bufSize*/
70    17,     /*pitchStart*/
71    144,    /*pitchEnd*/
72    0.9,    /*gamma1*/
73    0.6,    /*gamma2*/
74    .01,
75    1.0001,
76    /*LSP quantization*/
77    lsp_quant_nb,
78    lsp_unquant_nb,
79    /*Pitch quantization*/
80    pitch_search_3tap,
81    pitch_unquant_3tap,
82    &ltp_params_nb,
83    /*Innovation quantization*/
84    split_cb_search,
85    split_cb_unquant,
86    &split_cb_nb
87 };
88
89
90
91 SpeexMode wb_mode = {
92    320,    /*frameSize*/
93    64,     /*subframeSize*/
94    640,    /*windowSize*/
95    16,     /*lpcSize*/
96    1280,   /*bufSize*/
97    35,     /*pitchStart*/
98    290,    /*pitchEnd*/
99    0.9,    /*gamma1*/
100    0.4,    /*gamma2*/
101    .001,
102    1.00001,
103    /*LSP quantization*/
104    lsp_quant_wb,
105    lsp_unquant_wb,
106    /*Pitch quantization*/
107    pitch_search_3tap,
108    pitch_unquant_3tap,
109    &ltp_params_wb,
110    /*Innovation quantization*/
111    split_cb_search,
112    split_cb_unquant,
113    &split_cb_wb
114 };