dct4_s.h 23 KB

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