1 /***********************************************************************
2 **
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)
6 **
7 **   � 2004 Polycom, Inc.
8 **
9 **   All rights reserved.
10 **
11 ***********************************************************************/
12 
13 /***********************************************************************
14   Filename:    dct4_s.h
15 
16   Purpose:     Contains tables used by dct4_s.c
17 
18   Design Notes:
19 
20 ***********************************************************************/
21 
22 /***************************************************************************
23  Include files
24 ***************************************************************************/
25 
26 typedef struct
27 {
28     Word16 cosine;
29     Word16 minus_sine;
30 } cos_msin_t;
31 
32 /***************************************************************************
33   The dct_core_s table was generated by the following code
34 
35       for(i=0;i<10;++i)
36       {
37           for(k=0;k<10;++k)
38           {
39               dct_core_s[i][k]=(short) (FTOI(((.9*32768.)*cos(3.1415926*(k+0.5)*(i+0.5)/10.))));
40           }
41       }
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 }
54 };
55 
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};
89 
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};
123 
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
189 };
190 
191 
192 /********************************************************************************
193   The s_cos_min tables were generated by the following code:
194       double		angle, scale;
195       int		    index;
196 
197       for (index = 0;index < length;index++)
198       {
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))));
202       }
203 
204 
205 ********************************************************************************/
206 
207 cos_msin_t	s_cos_msin_2[DCT_LENGTH_DIV_32] = {
208     {  18413   ,   -723   } ,
209     {  18299   ,   -2166   } ,
210     {  18073   ,   -3595   } ,
211     {  17735   ,   -5002   } ,
212     {  17288   ,   -6378   } ,
213     {  16734   ,   -7715   } ,
214     {  16077   ,   -9004   } ,
215     {  15321   ,   -10237   } ,
216     {  14471   ,   -11408   } ,
217     {  13531   ,   -12508   }
218     };
219 cos_msin_t	s_cos_msin_4[DCT_LENGTH_DIV_16] = {
220     {  18423   ,   -362   } ,
221     {  18395   ,   -1085   } ,
222     {  18338   ,   -1806   } ,
223     {  18253   ,   -2525   } ,
224     {  18140   ,   -3239   } ,
225     {  17999   ,   -3949   } ,
226     {  17830   ,   -4653   } ,
227     {  17634   ,   -5349   } ,
228     {  17410   ,   -6037   } ,
229     {  17159   ,   -6716   } ,
230     {  16883   ,   -7385   } ,
231     {  16580   ,   -8042   } ,
232     {  16251   ,   -8686   } ,
233     {  15898   ,   -9318   } ,
234     {  15520   ,   -9935   } ,
235     {  15118   ,   -10536   } ,
236     {  14692   ,   -11122   } ,
237     {  14244   ,   -11690   } ,
238     {  13774   ,   -12240   } ,
239     {  13283   ,   -12772   }
240     };
241 cos_msin_t	s_cos_msin_8[DCT_LENGTH_DIV_8] = {
242     {  18426   ,   -181   } ,
243     {  18419   ,   -543   } ,
244     {  18405   ,   -904   } ,
245     {  18384   ,   -1265   } ,
246     {  18355   ,   -1626   } ,
247     {  18320   ,   -1986   } ,
248     {  18277   ,   -2345   } ,
249     {  18228   ,   -2704   } ,
250     {  18171   ,   -3061   } ,
251     {  18107   ,   -3417   } ,
252     {  18037   ,   -3772   } ,
253     {  17959   ,   -4126   } ,
254     {  17875   ,   -4477   } ,
255     {  17783   ,   -4827   } ,
256     {  17685   ,   -5176   } ,
257     {  17580   ,   -5522   } ,
258     {  17468   ,   -5866   } ,
259     {  17350   ,   -6208   } ,
260     {  17225   ,   -6547   } ,
261     {  17093   ,   -6884   } ,
262     {  16954   ,   -7219   } ,
263     {  16809   ,   -7550   } ,
264     {  16658   ,   -7879   } ,
265     {  16500   ,   -8204   } ,
266     {  16336   ,   -8526   } ,
267     {  16165   ,   -8846   } ,
268     {  15988   ,   -9161   } ,
269     {  15805   ,   -9473   } ,
270     {  15616   ,   -9782   } ,
271     {  15421   ,   -10087   } ,
272     {  15220   ,   -10387   } ,
273     {  15013   ,   -10684   } ,
274     {  14801   ,   -10977   } ,
275     {  14582   ,   -11265   } ,
276     {  14358   ,   -11550   } ,
277     {  14129   ,   -11829   } ,
278     {  13894   ,   -12104   } ,
279     {  13654   ,   -12375   } ,
280     {  13408   ,   -12641   } ,
281     {  13157   ,   -12901   }
282     };
283 cos_msin_t	s_cos_msin_16[DCT_LENGTH_DIV_4] = {
284     {  18427   ,   -90   } ,
285     {  18425   ,   -271   } ,
286     {  18421   ,   -452   } ,
287     {  18416   ,   -633   } ,
288     {  18409   ,   -814   } ,
289     {  18400   ,   -995   } ,
290     {  18389   ,   -1175   } ,
291     {  18377   ,   -1356   } ,
292     {  18363   ,   -1536   } ,
293     {  18347   ,   -1716   } ,
294     {  18329   ,   -1896   } ,
295     {  18310   ,   -2076   } ,
296     {  18288   ,   -2256   } ,
297     {  18265   ,   -2435   } ,
298     {  18241   ,   -2614   } ,
299     {  18214   ,   -2793   } ,
300     {  18186   ,   -2972   } ,
301     {  18156   ,   -3150   } ,
302     {  18124   ,   -3328   } ,
303     {  18090   ,   -3506   } ,
304     {  18055   ,   -3684   } ,
305     {  18018   ,   -3861   } ,
306     {  17979   ,   -4037   } ,
307     {  17939   ,   -4214   } ,
308     {  17897   ,   -4390   } ,
309     {  17853   ,   -4565   } ,
310     {  17807   ,   -4740   } ,
311     {  17760   ,   -4915   } ,
312     {  17710   ,   -5089   } ,
313     {  17660   ,   -5262   } ,
314     {  17607   ,   -5436   } ,
315     {  17553   ,   -5608   } ,
316     {  17497   ,   -5780   } ,
317     {  17439   ,   -5952   } ,
318     {  17380   ,   -6123   } ,
319     {  17319   ,   -6293   } ,
320     {  17257   ,   -6463   } ,
321     {  17192   ,   -6632   } ,
322     {  17126   ,   -6800   } ,
323     {  17059   ,   -6968   } ,
324     {  16990   ,   -7135   } ,
325     {  16919   ,   -7302   } ,
326     {  16846   ,   -7467   } ,
327     {  16772   ,   -7632   } ,
328     {  16696   ,   -7797   } ,
329     {  16619   ,   -7960   } ,
330     {  16540   ,   -8123   } ,
331     {  16459   ,   -8285   } ,
332     {  16377   ,   -8446   } ,
333     {  16294   ,   -8607   } ,
334     {  16208   ,   -8766   } ,
335     {  16121   ,   -8925   } ,
336     {  16033   ,   -9083   } ,
337     {  15943   ,   -9240   } ,
338     {  15852   ,   -9396   } ,
339     {  15759   ,   -9551   } ,
340     {  15664   ,   -9705   } ,
341     {  15568   ,   -9858   } ,
342     {  15471   ,   -10011   } ,
343     {  15372   ,   -10162   } ,
344     {  15271   ,   -10313   } ,
345     {  15169   ,   -10462   } ,
346     {  15066   ,   -10610   } ,
347     {  14961   ,   -10758   } ,
348     {  14854   ,   -10904   } ,
349     {  14747   ,   -11049   } ,
350     {  14637   ,   -11194   } ,
351     {  14527   ,   -11337   } ,
352     {  14415   ,   -11479   } ,
353     {  14301   ,   -11620   } ,
354     {  14187   ,   -11760   } ,
355     {  14071   ,   -11898   } ,
356     {  13953   ,   -12036   } ,
357     {  13834   ,   -12172   } ,
358     {  13714   ,   -12308   } ,
359     {  13593   ,   -12442   } ,
360     {  13470   ,   -12575   } ,
361     {  13346   ,   -12706   } ,
362     {  13220   ,   -12837   } ,
363     {  13094   ,   -12966   }
364     };
365 cos_msin_t	s_cos_msin_32[DCT_LENGTH_DIV_2] = {
366     {  18427   ,   -45   } ,
367     {  18427   ,   -136   } ,
368     {  18426   ,   -226   } ,
369     {  18424   ,   -317   } ,
370     {  18423   ,   -407   } ,
371     {  18420   ,   -497   } ,
372     {  18418   ,   -588   } ,
373     {  18415   ,   -678   } ,
374     {  18411   ,   -769   } ,
375     {  18407   ,   -859   } ,
376     {  18403   ,   -949   } ,
377     {  18398   ,   -1040   } ,
378     {  18392   ,   -1130   } ,
379     {  18387   ,   -1220   } ,
380     {  18380   ,   -1310   } ,
381     {  18374   ,   -1401   } ,
382     {  18367   ,   -1491   } ,
383     {  18359   ,   -1581   } ,
384     {  18351   ,   -1671   } ,
385     {  18343   ,   -1761   } ,
386     {  18334   ,   -1851   } ,
387     {  18324   ,   -1941   } ,
388     {  18315   ,   -2031   } ,
389     {  18305   ,   -2121   } ,
390     {  18294   ,   -2211   } ,
391     {  18283   ,   -2301   } ,
392     {  18271   ,   -2390   } ,
393     {  18259   ,   -2480   } ,
394     {  18247   ,   -2570   } ,
395     {  18234   ,   -2659   } ,
396     {  18221   ,   -2749   } ,
397     {  18207   ,   -2838   } ,
398     {  18193   ,   -2927   } ,
399     {  18178   ,   -3017   } ,
400     {  18163   ,   -3106   } ,
401     {  18148   ,   -3195   } ,
402     {  18132   ,   -3284   } ,
403     {  18116   ,   -3373   } ,
404     {  18099   ,   -3462   } ,
405     {  18082   ,   -3551   } ,
406     {  18064   ,   -3639   } ,
407     {  18046   ,   -3728   } ,
408     {  18027   ,   -3816   } ,
409     {  18009   ,   -3905   } ,
410     {  17989   ,   -3993   } ,
411     {  17969   ,   -4081   } ,
412     {  17949   ,   -4170   } ,
413     {  17928   ,   -4258   } ,
414     {  17907   ,   -4346   } ,
415     {  17886   ,   -4434   } ,
416     {  17864   ,   -4521   } ,
417     {  17841   ,   -4609   } ,
418     {  17818   ,   -4696   } ,
419     {  17795   ,   -4784   } ,
420     {  17772   ,   -4871   } ,
421     {  17747   ,   -4958   } ,
422     {  17723   ,   -5045   } ,
423     {  17698   ,   -5132   } ,
424     {  17672   ,   -5219   } ,
425     {  17647   ,   -5306   } ,
426     {  17620   ,   -5392   } ,
427     {  17594   ,   -5479   } ,
428     {  17567   ,   -5565   } ,
429     {  17539   ,   -5651   } ,
430     {  17511   ,   -5737   } ,
431     {  17483   ,   -5823   } ,
432     {  17454   ,   -5909   } ,
433     {  17425   ,   -5994   } ,
434     {  17395   ,   -6080   } ,
435     {  17365   ,   -6165   } ,
436     {  17335   ,   -6250   } ,
437     {  17304   ,   -6335   } ,
438     {  17272   ,   -6420   } ,
439     {  17241   ,   -6505   } ,
440     {  17208   ,   -6590   } ,
441     {  17176   ,   -6674   } ,
442     {  17143   ,   -6758   } ,
443     {  17110   ,   -6842   } ,
444     {  17076   ,   -6926   } ,
445     {  17042   ,   -7010   } ,
446     {  17007   ,   -7093   } ,
447     {  16972   ,   -7177   } ,
448     {  16937   ,   -7260   } ,
449     {  16901   ,   -7343   } ,
450     {  16864   ,   -7426   } ,
451     {  16828   ,   -7509   } ,
452     {  16791   ,   -7591   } ,
453     {  16753   ,   -7674   } ,
454     {  16715   ,   -7756   } ,
455     {  16677   ,   -7838   } ,
456     {  16638   ,   -7919   } ,
457     {  16599   ,   -8001   } ,
458     {  16560   ,   -8082   } ,
459     {  16520   ,   -8164   } ,
460     {  16480   ,   -8245   } ,
461     {  16439   ,   -8325   } ,
462     {  16398   ,   -8406   } ,
463     {  16357   ,   -8486   } ,
464     {  16315   ,   -8567   } ,
465     {  16272   ,   -8647   } ,
466     {  16230   ,   -8726   } ,
467     {  16187   ,   -8806   } ,
468     {  16143   ,   -8885   } ,
469     {  16100   ,   -8964   } ,
470     {  16055   ,   -9043   } ,
471     {  16011   ,   -9122   } ,
472     {  15966   ,   -9200   } ,
473     {  15920   ,   -9279   } ,
474     {  15875   ,   -9357   } ,
475     {  15829   ,   -9435   } ,
476     {  15782   ,   -9512   } ,
477     {  15735   ,   -9589   } ,
478     {  15688   ,   -9667   } ,
479     {  15640   ,   -9744   } ,
480     {  15592   ,   -9820   } ,
481     {  15544   ,   -9897   } ,
482     {  15495   ,   -9973   } ,
483     {  15446   ,   -10049   } ,
484     {  15396   ,   -10124   } ,
485     {  15347   ,   -10200   } ,
486     {  15296   ,   -10275   } ,
487     {  15246   ,   -10350   } ,
488     {  15195   ,   -10425   } ,
489     {  15143   ,   -10499   } ,
490     {  15092   ,   -10573   } ,
491     {  15040   ,   -10647   } ,
492     {  14987   ,   -10721   } ,
493     {  14934   ,   -10794   } ,
494     {  14881   ,   -10868   } ,
495     {  14828   ,   -10941   } ,
496     {  14774   ,   -11013   } ,
497     {  14719   ,   -11086   } ,
498     {  14665   ,   -11158   } ,
499     {  14610   ,   -11230   } ,
500     {  14555   ,   -11301   } ,
501     {  14499   ,   -11372   } ,
502     {  14443   ,   -11444   } ,
503     {  14387   ,   -11514   } ,
504     {  14330   ,   -11585   } ,
505     {  14273   ,   -11655   } ,
506     {  14216   ,   -11725   } ,
507     {  14158   ,   -11795   } ,
508     {  14100   ,   -11864   } ,
509     {  14041   ,   -11933   } ,
510     {  13983   ,   -12002   } ,
511     {  13924   ,   -12070   } ,
512     {  13864   ,   -12138   } ,
513     {  13804   ,   -12206   } ,
514     {  13744   ,   -12274   } ,
515     {  13684   ,   -12341   } ,
516     {  13623   ,   -12408   } ,
517     {  13562   ,   -12475   } ,
518     {  13501   ,   -12541   } ,
519     {  13439   ,   -12608   } ,
520     {  13377   ,   -12673   } ,
521     {  13314   ,   -12739   } ,
522     {  13252   ,   -12804   } ,
523     {  13189   ,   -12869   } ,
524     {  13125   ,   -12934   } ,
525     {  13062   ,   -12998   }
526     };
527 cos_msin_t	s_cos_msin_64[DCT_LENGTH] = {
528 {18426,	-21},
529 {18426,	-66},
530 {18426,	-110},
531 {18426,	-154},
532 {18425,	-198},
533 {18425,	-242},
534 {18424,	-286},
535 {18424,	-331},
536 {18423,	-374},
537 {18421,	-419},
538 {18421,	-463},
539 {18419,	-507},
540 {18418,	-552},
541 {18417,	-595},
542 {18415,	-639},
543 {18414,	-684},
544 {18412,	-728},
545 {18410,	-772},
546 {18408,	-816},
547 {18406,	-860},
548 {18404,	-904},
549 {18402,	-949},
550 {18400,	-992},
551 {18397,	-1037},
552 {18394,	-1081},
553 {18392,	-1125},
554 {18389,	-1169},
555 {18387,	-1213},
556 {18384,	-1257},
557 {18380,	-1301},
558 {18378,	-1345},
559 {18374,	-1389},
560 {18371,	-1433},
561 {18367,	-1477},
562 {18364,	-1521},
563 {18360,	-1566},
564 {18356,	-1609},
565 {18352,	-1653},
566 {18348,	-1697},
567 {18344,	-1742},
568 {18339,	-1785},
569 {18335,	-1829},
570 {18331,	-1873},
571 {18326,	-1917},
572 {18322,	-1961},
573 {18317,	-2005},
574 {18312,	-2049},
575 {18307,	-2092},
576 {18302,	-2137},
577 {18297,	-2180},
578 {18292,	-2224},
579 {18286,	-2268},
580 {18281,	-2312},
581 {18275,	-2356},
582 {18270,	-2399},
583 {18264,	-2443},
584 {18258,	-2487},
585 {18252,	-2531},
586 {18246,	-2574},
587 {18240,	-2618},
588 {18233,	-2662},
589 {18227,	-2706},
590 {18220,	-2749},
591 {18214,	-2793},
592 {18207,	-2836},
593 {18200,	-2880},
594 {18193,	-2924},
595 {18186,	-2967},
596 {18179,	-3011},
597 {18172,	-3055},
598 {18164,	-3098},
599 {18157,	-3142},
600 {18149,	-3185},
601 {18141,	-3229},
602 {18134,	-3272},
603 {18126,	-3316},
604 {18118,	-3359},
605 {18109,	-3403},
606 {18101,	-3446},
607 {18094,	-3489},
608 {18085,	-3533},
609 {18076,	-3576},
610 {18068,	-3619},
611 {18059,	-3663},
612 {18050,	-3706},
613 {18041,	-3749},
614 {18032,	-3792},
615 {18023,	-3836},
616 {18014,	-3879},
617 {18005,	-3922},
618 {17995,	-3965},
619 {17986,	-4008},
620 {17975,	-4051},
621 {17966,	-4094},
622 {17956,	-4138},
623 {17946,	-4180},
624 {17936,	-4224},
625 {17926,	-4266},
626 {17916,	-4309},
627 {17905,	-4353},
628 {17895,	-4395},
629 {17884,	-4438},
630 {17874,	-4481},
631 {17863,	-4524},
632 {17852,	-4567},
633 {17841,	-4609},
634 {17830,	-4652},
635 {17819,	-4695},
636 {17807,	-4738},
637 {17796,	-4780},
638 {17784,	-4823},
639 {17772,	-4865},
640 {17761,	-4908},
641 {17749,	-4951},
642 {17738,	-4993},
643 {17725,	-5036},
644 {17713,	-5078},
645 {17701,	-5121},
646 {17689,	-5163},
647 {17676,	-5205},
648 {17664,	-5248},
649 {17651,	-5290},
650 {17638,	-5333},
651 {17626,	-5375},
652 {17613,	-5417},
653 {17599,	-5459},
654 {17586,	-5501},
655 {17573,	-5544},
656 {17560,	-5586},
657 {17546,	-5627},
658 {17533,	-5670},
659 {17519,	-5712},
660 {17505,	-5753},
661 {17492,	-5795},
662 {17478,	-5837},
663 {17464,	-5879},
664 {17450,	-5921},
665 {17435,	-5963},
666 {17421,	-6005},
667 {17406,	-6046},
668 {17392,	-6088},
669 {17377,	-6130},
670 {17363,	-6172},
671 {17348,	-6213},
672 {17333,	-6254},
673 {17318,	-6296},
674 {17303,	-6338},
675 {17288,	-6379},
676 {17272,	-6420},
677 {17257,	-6462},
678 {17241,	-6503},
679 {17225,	-6545},
680 {17210,	-6586},
681 {17194,	-6627},
682 {17178,	-6668},
683 {17162,	-6709},
684 {17145,	-6750},
685 {17130,	-6791},
686 {17113,	-6832},
687 {17097,	-6874},
688 {17080,	-6915},
689 {17064,	-6956},
690 {17047,	-6996},
691 {17030,	-7037},
692 {17013,	-7078},
693 {16996,	-7119},
694 {16979,	-7159},
695 {16962,	-7200},
696 {16945,	-7241},
697 {16927,	-7281},
698 {16910,	-7322},
699 {16892,	-7362},
700 {16874,	-7403},
701 {16856,	-7444},
702 {16838,	-7484},
703 {16821,	-7524},
704 {16802,	-7564},
705 {16784,	-7605},
706 {16766,	-7645},
707 {16748,	-7685},
708 {16729,	-7725},
709 {16711,	-7765},
710 {16692,	-7805},
711 {16674,	-7845},
712 {16654,	-7885},
713 {16635,	-7925},
714 {16616,	-7964},
715 {16597,	-8004},
716 {16578,	-8044},
717 {16559,	-8084},
718 {16539,	-8124},
719 {16520,	-8164},
720 {16500,	-8203},
721 {16480,	-8242},
722 {16461,	-8282},
723 {16441,	-8322},
724 {16421,	-8361},
725 {16401,	-8400},
726 {16380,	-8440},
727 {16360,	-8479},
728 {16340,	-8518},
729 {16319,	-8557},
730 {16299,	-8597},
731 {16278,	-8635},
732 {16257,	-8674},
733 {16237,	-8713},
734 {16215,	-8752},
735 {16195,	-8791},
736 {16173,	-8829},
737 {16152,	-8868},
738 {16131,	-8907},
739 {16110,	-8946},
740 {16088,	-8985},
741 {16067,	-9023},
742 {16045,	-9061},
743 {16023,	-9100},
744 {16001,	-9138},
745 {15979,	-9176},
746 {15957,	-9215},
747 {15935,	-9253},
748 {15913,	-9291},
749 {15891,	-9329},
750 {15868,	-9367},
751 {15846,	-9405},
752 {15823,	-9443},
753 {15800,	-9481},
754 {15778,	-9519},
755 {15755,	-9557},
756 {15732,	-9595},
757 {15709,	-9632},
758 {15686,	-9670},
759 {15662,	-9708},
760 {15639,	-9745},
761 {15615,	-9782},
762 {15592,	-9820},
763 {15569,	-9857},
764 {15544,	-9894},
765 {15521,	-9932},
766 {15497,	-9969},
767 {15473,	-10006},
768 {15449,	-10043},
769 {15425,	-10080},
770 {15401,	-10117},
771 {15377,	-10154},
772 {15352,	-10191},
773 {15327,	-10227},
774 {15303,	-10264},
775 {15278,	-10301},
776 {15254,	-10337},
777 {15229,	-10374},
778 {15204,	-10411},
779 {15180,	-10447},
780 {15154,	-10483},
781 {15129,	-10519},
782 {15104,	-10556},
783 {15078,	-10592},
784 {15053,	-10628},
785 {15027,	-10664},
786 {15002,	-10700},
787 {14976,	-10736},
788 {14950,	-10772},
789 {14924,	-10808},
790 {14898,	-10844},
791 {14872,	-10879},
792 {14846,	-10915},
793 {14820,	-10950},
794 {14794,	-10985},
795 {14767,	-11021},
796 {14741,	-11056},
797 {14714,	-11092},
798 {14687,	-11127},
799 {14661,	-11162},
800 {14635,	-11197},
801 {14607,	-11232},
802 {14581,	-11267},
803 {14554,	-11302},
804 {14526,	-11337},
805 {14499,	-11372},
806 {14472,	-11407},
807 {14444,	-11441},
808 {14417,	-11476},
809 {14389,	-11511},
810 {14362,	-11545},
811 {14334,	-11579},
812 {14306,	-11614},
813 {14278,	-11648},
814 {14251,	-11682},
815 {14222,	-11716},
816 {14194,	-11750},
817 {14166,	-11784},
818 {14137,	-11818},
819 {14109,	-11852},
820 {14081,	-11886},
821 {14053,	-11919},
822 {14023,	-11953},
823 {13995,	-11987},
824 {13966,	-12020},
825 {13937,	-12054},
826 {13909,	-12087},
827 {13879,	-12120},
828 {13851,	-12153},
829 {13821,	-12187},
830 {13792,	-12220},
831 {13763,	-12253},
832 {13733,	-12286},
833 {13704,	-12319},
834 {13674,	-12351},
835 {13645,	-12385},
836 {13615,	-12417},
837 {13585,	-12450},
838 {13555,	-12482},
839 {13525,	-12514},
840 {13495,	-12546},
841 {13465,	-12579},
842 {13435,	-12611},
843 {13405,	-12644},
844 {13374,	-12676},
845 {13345,	-12708},
846 {13314,	-12739},
847 {13283,	-12772}
848 };
849 
850 
851 
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
855                                   };
856 
857