ffmpeg / libavcodec / truespeech_data.h @ 2912e87a
History  View  Annotate  Download (5.29 KB)
1 
/*


2 
* DSP Group TrueSpeech compatible decoder

3 
* copyright (c) 2005 Konstantin Shishkov

4 
*

5 
* This file is part of Libav.

6 
*

7 
* Libav is free software; you can redistribute it and/or

8 
* modify it under the terms of the GNU Lesser General Public

9 
* License as published by the Free Software Foundation; either

10 
* version 2.1 of the License, or (at your option) any later version.

11 
*

12 
* Libav is distributed in the hope that it will be useful,

13 
* but WITHOUT ANY WARRANTY; without even the implied warranty of

14 
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU

15 
* Lesser General Public License for more details.

16 
*

17 
* You should have received a copy of the GNU Lesser General Public

18 
* License along with Libav; if not, write to the Free Software

19 
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 021101301 USA

20 
*/

21  
22 
#ifndef AVCODEC_TRUESPEECH_DATA_H

23 
#define AVCODEC_TRUESPEECH_DATA_H

24  
25 
#include <stdint.h> 
26  
27 
/* codebooks fo expanding input filter */

28 
static const int16_t ts_cb_0[32] = { 
29 
0x8240, 0x8364, 0x84CE, 0x865D, 0x8805, 0x89DE, 0x8BD7, 0x8DF4, 
30 
0x9051, 0x92E2, 0x95DE, 0x990F, 0x9C81, 0xA079, 0xA54C, 0xAAD2, 
31 
0xB18A, 0xB90A, 0xC124, 0xC9CC, 0xD339, 0xDDD3, 0xE9D6, 0xF893, 
32 
0x096F, 0x1ACA, 0x29EC, 0x381F, 0x45F9, 0x546A, 0x63C3, 0x73B5, 
33 
}; 
34  
35 
static const int16_t ts_cb_1[32] = { 
36 
0x9F65, 0xB56B, 0xC583, 0xD371, 0xE018, 0xEBB4, 0xF61C, 0xFF59, 
37 
0x085B, 0x1106, 0x1952, 0x214A, 0x28C9, 0x2FF8, 0x36E6, 0x3D92, 
38 
0x43DF, 0x49BB, 0x4F46, 0x5467, 0x5930, 0x5DA3, 0x61EC, 0x65F9, 
39 
0x69D4, 0x6D5A, 0x709E, 0x73AD, 0x766B, 0x78F0, 0x7B5A, 0x7DA5, 
40 
}; 
41  
42 
static const int16_t ts_cb_2[16] = { 
43 
0x96F8, 0xA3B4, 0xAF45, 0xBA53, 0xC4B1, 0xCECC, 0xD86F, 0xE21E, 
44 
0xEBF3, 0xF640, 0x00F7, 0x0C20, 0x1881, 0x269A, 0x376B, 0x4D60, 
45 
}; 
46  
47 
static const int16_t ts_cb_3[16] = { 
48 
0xC654, 0xDEF2, 0xEFAA, 0xFD94, 0x096A, 0x143F, 0x1E7B, 0x282C, 
49 
0x3176, 0x3A89, 0x439F, 0x4CA2, 0x557F, 0x5E50, 0x6718, 0x6F8D, 
50 
}; 
51  
52 
static const int16_t ts_cb_4[16] = { 
53 
0xABE7, 0xBBA8, 0xC81C, 0xD326, 0xDD0E, 0xE5D4, 0xEE22, 0xF618, 
54 
0xFE28, 0x064F, 0x0EB7, 0x17B8, 0x21AA, 0x2D8B, 0x3BA2, 0x4DF9, 
55 
}; 
56  
57 
static const int16_t ts_cb_5[8] = { 
58 
0xD51B, 0xF12E, 0x042E, 0x13C7, 0x2260, 0x311B, 0x40DE, 0x5385, 
59 
}; 
60  
61 
static const int16_t ts_cb_6[8] = { 
62 
0xB550, 0xC825, 0xD980, 0xE997, 0xF883, 0x0752, 0x1811, 0x2E18, 
63 
}; 
64  
65 
static const int16_t ts_cb_7[8] = { 
66 
0xCEF0, 0xE4F9, 0xF6BB, 0x0646, 0x14F5, 0x23FF, 0x356F, 0x4A8D, 
67 
}; 
68  
69 
static const int16_t * const ts_codebook[8] = { 
70 
ts_cb_0, ts_cb_1, ts_cb_2, ts_cb_3, ts_cb_4, ts_cb_5, ts_cb_6, ts_cb_7 
71 
}; 
72  
73 
/* table used for decoding pulse positions */

74 
static const int16_t ts_pulse_values[120] = { 
75 
0x0E46, 0x0CCC, 0x0B6D, 0x0A28, 0x08FC, 0x07E8, 0x06EB, 0x0604, 
76 
0x0532, 0x0474, 0x03C9, 0x0330, 0x02A8, 0x0230, 0x01C7, 0x016C, 
77 
0x011E, 0x00DC, 0x00A5, 0x0078, 0x0054, 0x0038, 0x0023, 0x0014, 
78 
0x000A, 0x0004, 0x0001, 0x0000, 0x0000, 0x0000, 
79  
80 
0x0196, 0x017A, 0x015F, 0x0145, 0x012C, 0x0114, 0x00FD, 0x00E7, 
81 
0x00D2, 0x00BE, 0x00AB, 0x0099, 0x0088, 0x0078, 0x0069, 0x005B, 
82 
0x004E, 0x0042, 0x0037, 0x002D, 0x0024, 0x001C, 0x0015, 0x000F, 
83 
0x000A, 0x0006, 0x0003, 0x0001, 0x0000, 0x0000, 
84  
85 
0x001D, 0x001C, 0x001B, 0x001A, 0x0019, 0x0018, 0x0017, 0x0016, 
86 
0x0015, 0x0014, 0x0013, 0x0012, 0x0011, 0x0010, 0x000F, 0x000E, 
87 
0x000D, 0x000C, 0x000B, 0x000A, 0x0009, 0x0008, 0x0007, 0x0006, 
88 
0x0005, 0x0004, 0x0003, 0x0002, 0x0001, 0x0000, 
89  
90 
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 
91 
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 
92 
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 
93 
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001 
94 
}; 
95  
96 
/* filter for correlated input filter */

97 
static const int16_t ts_decay_994_1000[8] = 
98 
{ 0x7F3B, 0x7E78, 0x7DB6, 0x7CF5, 0x7C35, 0x7B76, 0x7AB8, 0x79FC }; 
99  
100 
/* twopoint filters table */

101 
static const int16_t ts_order2_coeffs[25 * 2] = { 
102 
0xED2F, 0x5239, 
103 
0x54F1, 0xE4A9, 
104 
0x2620, 0xEE3E, 
105 
0x09D6, 0x2C40, 
106 
0xEFB5, 0x2BE0, 
107  
108 
0x3FE1, 0x3339, 
109 
0x442F, 0xE6FE, 
110 
0x4458, 0xF9DF, 
111 
0xF231, 0x43DB, 
112 
0x3DB0, 0xF705, 
113  
114 
0x4F7B, 0xFEFB, 
115 
0x26AD, 0x0CDC, 
116 
0x33C2, 0x0739, 
117 
0x12BE, 0x43A2, 
118 
0x1BDF, 0x1F3E, 
119  
120 
0x0211, 0x0796, 
121 
0x2AEB, 0x163F, 
122 
0x050D, 0x3A38, 
123 
0x0D1E, 0x0D78, 
124 
0x150F, 0x3346, 
125  
126 
0x38A4, 0x0B7D, 
127 
0x2D5D, 0x1FDF, 
128 
0x19B7, 0x2822, 
129 
0x0D99, 0x1F12, 
130 
0x194C, 0x0CE6 
131 
}; 
132  
133 
/* possible pulse values */

134 
static const int16_t ts_pulse_scales[64] = { 
135 
0x0002, 0x0006, 0xFFFE, 0xFFFA, 
136 
0x0004, 0x000C, 0xFFFC, 0xFFF4, 
137 
0x0006, 0x0012, 0xFFFA, 0xFFEE, 
138 
0x000A, 0x001E, 0xFFF6, 0xFFE2, 
139 
0x0010, 0x0030, 0xFFF0, 0xFFD0, 
140 
0x0019, 0x004B, 0xFFE7, 0xFFB5, 
141 
0x0028, 0x0078, 0xFFD8, 0xFF88, 
142 
0x0040, 0x00C0, 0xFFC0, 0xFF40, 
143 
0x0065, 0x012F, 0xFF9B, 0xFED1, 
144 
0x00A1, 0x01E3, 0xFF5F, 0xFE1D, 
145 
0x0100, 0x0300, 0xFF00, 0xFD00, 
146 
0x0196, 0x04C2, 0xFE6A, 0xFB3E, 
147 
0x0285, 0x078F, 0xFD7B, 0xF871, 
148 
0x0400, 0x0C00, 0xFC00, 0xF400, 
149 
0x0659, 0x130B, 0xF9A7, 0xECF5, 
150 
0x0A14, 0x1E3C, 0xF5EC, 0xE1C4 
151 
}; 
152  
153 
/* filters used in final output calculations */

154 
static const int16_t ts_decay_35_64[8] = 
155 
{ 0x4666, 0x26B8, 0x154C, 0x0BB6, 0x0671, 0x038B, 0x01F3, 0x0112 }; 
156 
static const int16_t ts_decay_3_4[8] = 
157 
{ 0x6000, 0x4800, 0x3600, 0x2880, 0x1E60, 0x16C8, 0x1116, 0x0CD1 }; 
158  
159 
#endif /* AVCODEC_TRUESPEECH_DATA_H */ 