1
/***********************************************************************
3
** ITU-T G.722.1 (2005-05) - Fixed point implementation for main body and Annex C
4
** > Software Release 2.1 (2008-06)
5
** (Simple repackaging; no change from 2005-05 Release 2.0 code)
7
** � 2004 Polycom, Inc.
9
** All rights reserved.
11
***********************************************************************/
13
/***********************************************************************
16
Purpose: Contains tables used by dct4_s.c
20
***********************************************************************/
22
/***************************************************************************
24
***************************************************************************/
32
/***************************************************************************
33
The dct_core_s table was generated by the following code
39
dct_core_s[i][k]=(short) (FTOI(((.9*32768.)*cos(3.1415926*(k+0.5)*(i+0.5)/10.))));
42
***************************************************************************/
43
Word16 dct_core_s[10][10] = {
44
{ 29400, 28676, 27246, 25145, 22425, 19153, 15409, 11286, 6885, 2314 },
45
{ 28676, 22425, 11286, -2314, -15409, -25145, -29400, -27246, -19153, -6885 },
46
{ 27246, 11286, -11286, -27246, -27246, -11286, 11286, 27246, 27246, 11286 },
47
{ 25145, -2314, -27246, -22425, 6885, 28676, 19153, -11286, -29400, -15409 },
48
{ 22425, -15409, -27246, 6885, 29400, 2314, -28676, -11286, 25145, 19153 },
49
{ 19153, -25145, -11286, 28676, 2314, -29400, 6885, 27246, -15409, -22425 },
50
{ 15409, -29400, 11286, 19153, -28676, 6885, 22425, -27246, 2314, 25145 },
51
{ 11286, -27246, 27246, -11286, -11286, 27246, -27246, 11286, 11286, -27246 },
52
{ 6885, -19153, 27246, -29400, 25145, -15409, 2314, 11286, -22425, 28676 },
53
{ 2314, -6885, 11286, -15409, 19153, -22425, 25145, -27246, 28676, -29400 }
56
Word16 syn_bias_7khz[DCT_LENGTH] = {
57
-4, 4, -5, -2, 0, -4, 6, 2, -2, -4,
58
-3, 3, 0, 0, -2, 4, 0, 0, 3, -6,
59
8, 5, 4, 5, -8, 0, -2, 0, 0, -3,
60
3, 0, 0, 0, 1, -1, -2, 0, 0, 2,
61
-2, -5, -2, 3, 2, -1, -1, -6, 3, 1,
62
-7, 4, 4, 0, 1, 4, 1, 0, 1, -5,
63
-1, 1, -6, 0, -1, -1, 3, 0, -2, 1,
64
2, -4, 0, 9, 0, -3, 1, 1, 1, 0,
65
-3, -2, -1, -4, -2, 0, 5, 2, -3, 5,
66
0, -2, 4, 4, 0, -6, -4, 2, 0, 0,
67
0, -1, -1, -2, 0, 6, 1, 0, 0, -1,
68
0, -4, -1, 0, -4, 1, -1, -5, 0, 1,
69
2, 4, 0, -8, -4, 0, -2, -2, 2, 5,
70
-3, -1, 1, -4, 0, 0, 0, -1, -3, 0,
71
-5, -4, 0, -2, 0, 7, 1, 0, 5, -2,
72
-1, 2, 2, -2, 3, 7, -3, 4, 1, -4,
73
0, 0, 3, -7, -5, 0, 0, 4, 0, -2,
74
-1, 0, -5, 0, 2, 0, 11, 5, -1, 0,
75
2, 2, -2, -2, 5, 4, -3, 1, 0, -2,
76
1, 3, 2, 0, 1, 0, 0, 0, 5, 6,
77
-2, -1, 0, 2, 3, 2, 0, -3, 4, 5,
78
0, -1, 0, 3, 1, -2, -3, -2, -1, 2,
79
-1, -1, -2, -7, 4, 6, -5, -6, -3, -4,
80
0, 2, -5, -2, 3, 0, 0, 0, 2, -2,
81
-4, 3, 3, 1, 0, 0, 4, -1, 8, 13,
82
1, 2, 0, 2, 0, -1, 4, -3, 1, 0,
83
-1, 3, 0, 0, -5, 0, 6, 2, 4, 5,
84
2, -1, -1, 3, 6, 1, 1, 2, -4, 0,
85
-1, -6, -2, -2, 2, 1, 2, 6, 2, 0,
86
-2, -2, 0, -1, 2, 0, 0, 3, -2, 1,
87
3, 1, 2, -1, -2, 2, 2, -4, 0, 0,
88
-3, 0, -4, -3, 6, 7, 2, 2, 0, -3};
90
Word16 dither[DCT_LENGTH]= {
91
1, 0, 0, 0, 1, 0, 0, 1, 1, 1,
92
1, 0, 0, 0, 1, 1, 1, 1, 1, 0,
93
0, 1, 1, 1, 0, 1, 1, 0, 0, 0,
94
1, 0, 0, 1, 0, 1, 0, 0, 1, 0,
95
1, 0, 0, 0, 1, 0, 1, 0, 0, 0,
96
1, 1, 1, 1, 1, 0, 0, 1, 0, 0,
97
0, 0, 1, 0, 0, 0, 1, 0, 0, 1,
98
1, 1, 1, 1, 1, 0, 1, 0, 0, 1,
99
1, 0, 0, 1, 0, 0, 0, 1, 0, 1,
100
0, 0, 1, 1, 0, 1, 0, 1, 1, 1,
101
1, 0, 0, 0, 0, 1, 1, 1, 1, 1,
102
0, 0, 0, 1, 0, 1, 0, 0, 0, 1,
103
1, 1, 0, 0, 1, 1, 1, 1, 1, 0,
104
0, 1, 1, 1, 1, 0, 1, 1, 1, 0,
105
1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
106
1, 0, 1, 1, 1, 1, 0, 0, 0, 0,
107
1, 1, 0, 1, 0, 0, 1, 0, 0, 1,
108
0, 0, 0, 1, 1, 0, 0, 1, 1, 1,
109
1, 0, 0, 0, 0, 0, 1, 1, 1, 1,
110
1, 0, 0, 1, 1, 0, 1, 1, 0, 0,
111
1, 1, 1, 0, 1, 1, 0, 1, 0, 1,
112
0, 0, 1, 1, 1, 1, 1, 1, 0, 1,
113
0, 1, 1, 1, 1, 0, 1, 1, 1, 0,
114
1, 1, 1, 0, 1, 1, 1, 0, 1, 0,
115
1, 1, 0, 0, 1, 0, 0, 1, 0, 1,
116
0, 1, 1, 0, 1, 0, 1, 0, 1, 1,
117
1, 0, 1, 0, 1, 0, 1, 1, 1, 1,
118
0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
119
1, 0, 0, 0, 1, 0, 0, 1, 0, 1,
120
1, 0, 1, 1, 0, 0, 1, 1, 0, 1,
121
1, 0, 1, 1, 1, 1, 1, 1, 0, 1,
122
1, 1, 1, 0, 1, 0, 0, 0, 1, 0};
124
Word16 max_dither[MAX_DCT_LENGTH]= {
125
1, 0, 1, 0, 1, 1, 0, 1, 0, 1,
126
1, 1, 0, 0, 0, 0, 0, 1, 1, 1,
127
1, 1, 1, 0, 1, 1, 0, 0, 0, 1,
128
0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
129
1, 1, 1, 0, 1, 0, 1, 1, 1, 1,
130
0, 1, 0, 1, 1, 1, 1, 1, 1, 0,
131
1, 0, 1, 1, 0, 1, 0, 0, 0, 1,
132
0, 1, 1, 1, 1, 1, 0, 1, 1, 0,
133
0, 0, 1, 1, 0, 0, 0, 1, 1, 1,
134
1, 0, 1, 1, 1, 1, 1, 0, 0, 0,
135
1, 0, 1, 0, 1, 0, 0, 0, 1, 1,
136
0, 1, 1, 1, 1, 1, 1, 0, 1, 0,
137
0, 0, 1, 0, 1, 0, 0, 0, 1, 0,
138
0, 1, 0, 1, 0, 0, 0, 0, 1, 0,
139
1, 0, 0, 1, 0, 1, 0, 0, 0, 1,
140
0, 1, 0, 0, 1, 1, 1, 1, 0, 1,
141
1, 0, 0, 0, 1, 1, 0, 1, 0, 1,
142
0, 1, 0, 1, 0, 1, 1, 1, 0, 1,
143
1, 0, 0, 1, 1, 1, 1, 0, 1, 1,
144
1, 1, 1, 0, 1, 1, 0, 0, 0, 0,
145
1, 0, 1, 0, 0, 0, 0, 1, 1, 0,
146
1, 1, 0, 0, 0, 0, 1, 0, 0, 1,
147
1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
148
0, 0, 1, 1, 1, 0, 1, 1, 1, 0,
149
0, 1, 1, 1, 1, 1, 1, 1, 0, 0,
150
1, 1, 1, 1, 1, 1, 0, 1, 1, 1,
151
0, 0, 1, 1, 0, 1, 0, 1, 0, 1,
152
0, 0, 1, 1, 1, 1, 1, 1, 0, 1,
153
0, 1, 1, 1, 0, 1, 0, 1, 0, 0,
154
0, 1, 0, 1, 1, 0, 0, 0, 1, 0,
155
1, 1, 0, 0, 1, 1, 1, 1, 0, 0,
156
0, 0, 1, 1, 1, 1, 0, 0, 1, 1,
157
1, 1, 1, 0, 1, 0, 0, 0, 1, 0,
158
0, 1, 1, 1, 0, 1, 0, 1, 0, 0,
159
1, 1, 0, 1, 0, 1, 1, 0, 0, 0,
160
0, 1, 1, 0, 1, 1, 1, 0, 1, 1,
161
0, 0, 1, 1, 1, 1, 1, 1, 0, 1,
162
1, 1, 0, 0, 0, 1, 1, 1, 1, 0,
163
0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
164
1, 1, 1, 0, 0, 1, 1, 0, 0, 1,
165
0, 1, 0, 0, 0, 1, 1, 0, 0, 1,
166
0, 0, 1, 1, 0, 1, 0, 1, 0, 1,
167
1, 1, 0, 1, 0, 0, 1, 1, 0, 0,
168
1, 0, 1, 0, 1, 0, 0, 1, 0, 0,
169
0, 1, 0, 1, 1, 1, 1, 1, 1, 0,
170
0, 1, 1, 0, 0, 0, 1, 1, 1, 0,
171
1, 1, 1, 0, 1, 1, 1, 0, 0, 0,
172
0, 0, 1, 0, 0, 1, 0, 0, 0, 1,
173
0, 0, 0, 1, 1, 0, 0, 1, 0, 1,
174
1, 1, 1, 1, 0, 0, 1, 0, 1, 0,
175
0, 1, 0, 1, 1, 1, 1, 1, 1, 0,
176
0, 0, 1, 0, 1, 0, 0, 1, 0, 1,
177
1, 0, 1, 0, 1, 1, 0, 0, 1, 1,
178
1, 1, 1, 0, 1, 0, 0, 1, 1, 1,
179
0, 1, 0, 1, 0, 1, 0, 0, 0, 1,
180
1, 0, 0, 1, 0, 0, 1, 1, 0, 1,
181
1, 0, 1, 0, 1, 1, 0, 0, 1, 1,
182
0, 0, 0, 1, 0, 1, 1, 1, 0, 0,
183
1, 0, 1, 0, 1, 1, 0, 0, 0, 1,
184
1, 0, 1, 0, 0, 1, 1, 1, 0, 1,
185
0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
186
0, 1, 0, 1, 0, 0, 1, 0, 1, 0,
187
0, 1, 1, 1, 1, 0, 0, 0, 1, 0,
188
0, 1, 0, 1, 0, 1, 0, 0, 0, 0
192
/********************************************************************************
193
The s_cos_min tables were generated by the following code:
197
for (index = 0;index < length;index++)
199
angle = scale * ((double)index + 0.5);
200
table[index].cosine = (short) (FTOI((18427)* cos(angle)));
201
table[index].minus_sine = (short) (FTOI((18427)*(-sin(angle))));
205
********************************************************************************/
207
cos_msin_t s_cos_msin_2[DCT_LENGTH_DIV_32] = {
219
cos_msin_t s_cos_msin_4[DCT_LENGTH_DIV_16] = {
241
cos_msin_t s_cos_msin_8[DCT_LENGTH_DIV_8] = {
283
cos_msin_t s_cos_msin_16[DCT_LENGTH_DIV_4] = {
365
cos_msin_t s_cos_msin_32[DCT_LENGTH_DIV_2] = {
527
cos_msin_t s_cos_msin_64[DCT_LENGTH] = {
852
cos_msin_t *s_cos_msin_table[] = {s_cos_msin_2, s_cos_msin_4,
853
s_cos_msin_8, s_cos_msin_16,
854
s_cos_msin_32, s_cos_msin_64