tables.c 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509
  1. /*
  2. * MPEG layer 3 tables source file
  3. *
  4. * Copyright (c) 1999 Albert L Faber
  5. *
  6. * This library is free software; you can redistribute it and/or
  7. * modify it under the terms of the GNU Library General Public
  8. * License as published by the Free Software Foundation; either
  9. * version 2 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. * Library General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU Library General Public
  17. * License along with this library; if not, write to the
  18. * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  19. * Boston, MA 02111-1307, USA.
  20. */
  21. /* $Id: tables.c,v 1.17 2001/03/12 20:40:36 markt Exp $ */
  22. #ifdef HAVE_CONFIG_H
  23. # include <config.h>
  24. #endif
  25. #include "util.h"
  26. #include "tables.h"
  27. #ifdef WITH_DMALLOC
  28. #include <dmalloc.h>
  29. #endif
  30. static const short t1HB[] = {
  31. 1, 1,
  32. 1, 0};
  33. static const short t2HB[] = {
  34. 1, 2, 1,
  35. 3, 1, 1,
  36. 3, 2, 0};
  37. static const short t3HB[] = {
  38. 3, 2, 1,
  39. 1, 1, 1,
  40. 3, 2, 0};
  41. static const short t5HB[] = {
  42. 1, 2, 6, 5,
  43. 3, 1, 4, 4,
  44. 7, 5, 7, 1,
  45. 6, 1, 1, 0};
  46. static const short t6HB[] = {
  47. 7, 3, 5, 1,
  48. 6, 2, 3, 2,
  49. 5, 4, 4, 1,
  50. 3, 3, 2, 0};
  51. static const short t7HB[] = {
  52. 1, 2,10,19,16,10,
  53. 3, 3, 7,10, 5, 3,
  54. 11, 4,13,17, 8, 4,
  55. 12,11,18,15,11, 2,
  56. 7, 6, 9,14, 3, 1,
  57. 6, 4, 5, 3, 2, 0};
  58. static const short t8HB[] = {
  59. 3, 4, 6, 18,12, 5,
  60. 5, 1, 2, 16, 9, 3,
  61. 7, 3, 5, 14, 7, 3,
  62. 19,17,15, 13,10, 4,
  63. 13, 5, 8, 11, 5, 1,
  64. 12, 4, 4, 1, 1, 0};
  65. static const short t9HB[] = {
  66. 7, 5, 9, 14, 15, 7,
  67. 6, 4, 5, 5, 6, 7,
  68. 7, 6, 8, 8, 8, 5,
  69. 15, 6, 9, 10, 5, 1,
  70. 11, 7, 9, 6, 4, 1,
  71. 14, 4, 6, 2, 6, 0};
  72. static const short t10HB[] = {
  73. 1, 2, 10, 23, 35, 30, 12, 17,
  74. 3, 3, 8, 12, 18, 21, 12, 7,
  75. 11, 9, 15, 21, 32, 40, 19, 6,
  76. 14,13, 22, 34, 46, 23, 18, 7,
  77. 20,19, 33, 47, 27, 22, 9, 3,
  78. 31,22, 41, 26, 21, 20, 5, 3,
  79. 14,13, 10, 11, 16, 6, 5, 1,
  80. 9, 8, 7, 8, 4, 4, 2, 0};
  81. static const short t11HB[] = {
  82. 3, 4, 10, 24, 34, 33, 21, 15,
  83. 5, 3, 4, 10, 32, 17, 11, 10,
  84. 11, 7, 13, 18, 30, 31, 20, 5,
  85. 25,11, 19, 59, 27, 18, 12, 5,
  86. 35,33, 31, 58, 30, 16, 7, 5,
  87. 28,26, 32, 19, 17, 15, 8, 14,
  88. 14,12, 9, 13, 14, 9, 4, 1,
  89. 11, 4, 6, 6, 6, 3, 2, 0};
  90. static const short t12HB[] = {
  91. 9, 6, 16, 33, 41, 39, 38,26,
  92. 7, 5, 6, 9, 23, 16, 26,11,
  93. 17, 7, 11, 14, 21, 30, 10, 7,
  94. 17, 10, 15, 12, 18, 28, 14, 5,
  95. 32, 13, 22, 19, 18, 16, 9, 5,
  96. 40, 17, 31, 29, 17, 13, 4, 2,
  97. 27, 12, 11, 15, 10, 7, 4, 1,
  98. 27, 12, 8, 12, 6, 3, 1, 0};
  99. static const short t13HB[] = {
  100. 1, 5, 14, 21, 34, 51, 46, 71, 42, 52, 68, 52, 67, 44, 43, 19,
  101. 3, 4, 12, 19, 31, 26, 44, 33, 31, 24, 32, 24, 31, 35, 22, 14,
  102. 15, 13, 23, 36, 59, 49, 77, 65, 29, 40, 30, 40, 27, 33, 42, 16,
  103. 22, 20, 37, 61, 56, 79, 73, 64, 43, 76, 56, 37, 26, 31, 25, 14,
  104. 35, 16, 60, 57, 97, 75,114, 91, 54, 73, 55, 41, 48, 53, 23, 24,
  105. 58, 27, 50, 96, 76, 70, 93, 84, 77, 58, 79, 29, 74, 49, 41, 17,
  106. 47, 45, 78, 74,115, 94, 90, 79, 69, 83, 71, 50, 59, 38, 36, 15,
  107. 72, 34, 56, 95, 92, 85, 91, 90, 86, 73, 77, 65, 51, 44, 43, 42,
  108. 43, 20, 30, 44, 55, 78, 72, 87, 78, 61, 46, 54, 37, 30, 20, 16,
  109. 53, 25, 41, 37, 44, 59, 54, 81, 66, 76, 57, 54, 37, 18, 39, 11,
  110. 35, 33, 31, 57, 42, 82, 72, 80, 47, 58, 55, 21, 22, 26, 38, 22,
  111. 53, 25, 23, 38, 70, 60, 51, 36, 55, 26, 34, 23, 27, 14, 9, 7,
  112. 34, 32, 28, 39, 49, 75, 30, 52, 48, 40, 52, 28, 18, 17, 9, 5,
  113. 45, 21, 34, 64, 56, 50, 49, 45, 31, 19, 12, 15, 10, 7, 6, 3,
  114. 48, 23, 20, 39, 36, 35, 53, 21, 16, 23, 13, 10, 6, 1, 4, 2,
  115. 16, 15, 17, 27, 25, 20, 29, 11, 17, 12, 16, 8, 1, 1, 0, 1};
  116. static const short t15HB[] = {
  117. 7, 12, 18, 53, 47, 76,124,108, 89,123,108,119,107, 81,122, 63,
  118. 13, 5, 16, 27, 46, 36, 61, 51, 42, 70, 52, 83, 65, 41, 59, 36,
  119. 19, 17, 15, 24, 41, 34, 59, 48, 40, 64, 50, 78, 62, 80, 56, 33,
  120. 29, 28, 25, 43, 39, 63, 55, 93, 76, 59, 93, 72, 54, 75, 50, 29,
  121. 52, 22, 42, 40, 67, 57, 95, 79, 72, 57, 89, 69, 49, 66, 46, 27,
  122. 77, 37, 35, 66, 58, 52, 91, 74, 62, 48, 79, 63, 90, 62, 40, 38,
  123. 125, 32, 60, 56, 50, 92, 78, 65, 55, 87, 71, 51, 73, 51, 70, 30,
  124. 109, 53, 49, 94, 88, 75, 66,122, 91, 73, 56, 42, 64, 44, 21, 25,
  125. 90, 43, 41, 77, 73, 63, 56, 92, 77, 66, 47, 67, 48, 53, 36, 20,
  126. 71, 34, 67, 60, 58, 49, 88, 76, 67,106, 71, 54, 38, 39, 23, 15,
  127. 109, 53, 51, 47, 90, 82, 58, 57, 48, 72, 57, 41, 23, 27, 62, 9,
  128. 86, 42, 40, 37, 70, 64, 52, 43, 70, 55, 42, 25, 29, 18, 11, 11,
  129. 118, 68, 30, 55, 50, 46, 74, 65, 49, 39, 24, 16, 22, 13, 14, 7,
  130. 91, 44, 39, 38, 34, 63, 52, 45, 31, 52, 28, 19, 14, 8, 9, 3,
  131. 123, 60, 58, 53, 47, 43, 32, 22, 37, 24, 17, 12, 15, 10, 2, 1,
  132. 71, 37, 34, 30, 28, 20, 17, 26, 21, 16, 10, 6, 8, 6, 2, 0};
  133. static const short t16HB[] = {
  134. 1, 5, 14, 44, 74, 63, 110, 93, 172, 149, 138, 242, 225, 195, 376, 17,
  135. 3, 4, 12, 20, 35, 62, 53, 47, 83, 75, 68, 119, 201, 107, 207, 9,
  136. 15, 13, 23, 38, 67, 58, 103, 90, 161, 72, 127, 117, 110, 209, 206, 16,
  137. 45, 21, 39, 69, 64,114, 99, 87, 158, 140, 252, 212, 199, 387, 365, 26,
  138. 75, 36, 68, 65,115,101, 179,164, 155, 264, 246, 226, 395, 382, 362, 9,
  139. 66, 30, 59, 56,102,185, 173,265, 142, 253, 232, 400, 388, 378, 445, 16,
  140. 111, 54, 52,100,184,178, 160,133, 257, 244, 228, 217, 385, 366, 715, 10,
  141. 98, 48, 91, 88,165,157, 148,261, 248, 407, 397, 372, 380, 889, 884, 8,
  142. 85, 84, 81,159,156,143, 260,249, 427, 401, 392, 383, 727, 713, 708, 7,
  143. 154, 76, 73,141,131,256, 245,426, 406, 394, 384, 735, 359, 710, 352, 11,
  144. 139, 129, 67,125,247,233, 229,219, 393, 743, 737, 720, 885, 882, 439, 4,
  145. 243, 120,118,115,227,223, 396,746, 742, 736, 721, 712, 706, 223, 436, 6,
  146. 202, 224,222,218,216,389, 386,381, 364, 888, 443, 707, 440, 437,1728, 4,
  147. 747, 211,210,208,370,379, 734,723, 714,1735, 883, 877, 876,3459, 865, 2,
  148. 377, 369,102,187,726,722, 358,711, 709, 866,1734, 871,3458, 870, 434, 0,
  149. 12, 10, 7, 11, 10, 17, 11, 9, 13, 12, 10, 7, 5, 3, 1, 3};
  150. static const short t24HB[] = {
  151. 15, 13, 46, 80, 146, 262, 248, 434, 426, 669, 653, 649, 621, 517, 1032, 88,
  152. 14, 12, 21, 38, 71, 130, 122, 216, 209, 198, 327, 345, 319, 297, 279, 42,
  153. 47, 22, 41, 74, 68, 128, 120, 221, 207, 194, 182, 340, 315, 295, 541, 18,
  154. 81, 39, 75, 70, 134, 125, 116, 220, 204, 190, 178, 325, 311, 293, 271, 16,
  155. 147, 72, 69,135, 127, 118, 112, 210, 200, 188, 352, 323, 306, 285, 540, 14,
  156. 263, 66,129,126, 119, 114, 214, 202, 192, 180, 341, 317, 301, 281, 262, 12,
  157. 249,123,121,117, 113, 215, 206, 195, 185, 347, 330, 308, 291, 272, 520, 10,
  158. 435,115,111,109, 211, 203, 196, 187, 353, 332, 313, 298, 283, 531, 381, 17,
  159. 427,212,208,205, 201, 193, 186, 177, 169, 320, 303, 286, 268, 514, 377, 16,
  160. 335,199,197,191, 189, 181, 174, 333, 321, 305, 289, 275, 521, 379, 371, 11,
  161. 668,184,183,179, 175, 344, 331, 314, 304, 290, 277, 530, 383, 373, 366, 10,
  162. 652,346,171,168, 164, 318, 309, 299, 287, 276, 263, 513, 375, 368, 362, 6,
  163. 648,322,316,312, 307, 302, 292, 284, 269, 261, 512, 376, 370, 364, 359, 4,
  164. 620,300,296,294, 288, 282, 273, 266, 515, 380, 374, 369, 365, 361, 357, 2,
  165. 1033,280,278,274, 267, 264, 259, 382, 378, 372, 367, 363, 360, 358, 356, 0,
  166. 43, 20, 19, 17, 15, 13, 11, 9, 7, 6, 4, 7, 5, 3, 1, 3};
  167. static const short t32HB[] = {
  168. 1 << 0, 5 << 1, 4 << 1, 5 << 2, 6 << 1, 5 << 2, 4 << 2, 4 << 3,
  169. 7 << 1, 3 << 2, 6 << 2, 0 << 3, 7 << 2, 2 << 3, 3 << 3, 1 << 4};
  170. static const short t33HB[] = {
  171. 15 << 0, 14 << 1, 13 << 1, 12 << 2, 11 << 1, 10 << 2, 9 << 2, 8 << 3,
  172. 7 << 1, 6 << 2, 5 << 2, 4 << 3, 3 << 2, 2 << 3, 1 << 3, 0 << 4};
  173. const char t1l[] = {
  174. 1, 4,
  175. 3, 5};
  176. const char t2l[] = {
  177. 1, 4, 7,
  178. 4, 5, 7,
  179. 6, 7, 8};
  180. const char t3l[] = {
  181. 2, 3, 7,
  182. 4, 4, 7,
  183. 6, 7, 8};
  184. const char t5l[] = {
  185. 1, 4, 7, 8,
  186. 4, 5, 8, 9,
  187. 7, 8, 9, 10,
  188. 8, 8, 9, 10};
  189. const char t6l[] = {
  190. 3, 4, 6, 8,
  191. 4, 4, 6, 7,
  192. 5, 6, 7, 8,
  193. 7, 7, 8, 9};
  194. const char t7l[] = {
  195. 1, 4, 7, 9, 9, 10,
  196. 4, 6, 8, 9, 9, 10,
  197. 7, 7, 9, 10, 10, 11,
  198. 8, 9, 10, 11, 11, 11,
  199. 8, 9, 10, 11, 11, 12,
  200. 9, 10, 11, 12, 12, 12};
  201. const char t8l[] = {
  202. 2, 4, 7, 9, 9, 10,
  203. 4, 4, 6, 10, 10, 10,
  204. 7, 6, 8, 10, 10, 11,
  205. 9, 10, 10, 11, 11, 12,
  206. 9, 9, 10, 11, 12, 12,
  207. 10, 10, 11, 11, 13, 13};
  208. const char t9l[] = {
  209. 3, 4, 6, 7, 9, 10,
  210. 4, 5, 6, 7, 8, 10,
  211. 5, 6, 7, 8, 9, 10,
  212. 7, 7, 8, 9, 9, 10,
  213. 8, 8, 9, 9, 10, 11,
  214. 9, 9, 10, 10, 11, 11};
  215. const char t10l[] = {
  216. 1, 4, 7, 9, 10, 10, 10, 11,
  217. 4, 6, 8, 9, 10, 11, 10, 10,
  218. 7, 8, 9, 10, 11, 12, 11, 11,
  219. 8, 9, 10, 11, 12, 12, 11, 12,
  220. 9, 10, 11, 12, 12, 12, 12, 12,
  221. 10, 11, 12, 12, 13, 13, 12, 13,
  222. 9, 10, 11, 12, 12, 12, 13, 13,
  223. 10, 10, 11, 12, 12, 13, 13, 13};
  224. const char t11l[] = {
  225. 2, 4, 6, 8, 9, 10, 9, 10,
  226. 4, 5, 6, 8, 10, 10, 9, 10,
  227. 6, 7, 8, 9, 10, 11, 10, 10,
  228. 8, 8, 9, 11, 10, 12, 10, 11,
  229. 9, 10, 10, 11, 11, 12, 11, 12,
  230. 9, 10, 11, 12, 12, 13, 12, 13,
  231. 9, 9, 9, 10, 11, 12, 12, 12,
  232. 9, 9, 10, 11, 12, 12, 12, 12};
  233. const char t12l[] = {
  234. 4, 4, 6, 8, 9, 10, 10, 10,
  235. 4, 5, 6, 7, 9, 9, 10, 10,
  236. 6, 6, 7, 8, 9, 10, 9, 10,
  237. 7, 7, 8, 8, 9, 10, 10, 10,
  238. 8, 8, 9, 9, 10, 10, 10, 11,
  239. 9, 9, 10, 10, 10, 11, 10, 11,
  240. 9, 9, 9, 10, 10, 11, 11, 12,
  241. 10, 10, 10, 11, 11, 11, 11, 12};
  242. const char t13l[] = {
  243. 1, 5, 7, 8, 9, 10, 10, 11, 10, 11, 12, 12, 13, 13, 14, 14,
  244. 4, 6, 8, 9, 10, 10, 11, 11, 11, 11, 12, 12, 13, 14, 14, 14,
  245. 7, 8, 9, 10, 11, 11, 12, 12, 11, 12, 12, 13, 13, 14, 15, 15,
  246. 8, 9, 10, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 15, 15,
  247. 9, 9, 11, 11, 12, 12, 13, 13, 12, 13, 13, 14, 14, 15, 15, 16,
  248. 10, 10, 11, 12, 12, 12, 13, 13, 13, 13, 14, 13, 15, 15, 16, 16,
  249. 10, 11, 12, 12, 13, 13, 13, 13, 13, 14, 14, 14, 15, 15, 16, 16,
  250. 11, 11, 12, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 16, 18, 18,
  251. 10, 10, 11, 12, 12, 13, 13, 14, 14, 14, 14, 15, 15, 16, 17, 17,
  252. 11, 11, 12, 12, 13, 13, 13, 15, 14, 15, 15, 16, 16, 16, 18, 17,
  253. 11, 12, 12, 13, 13, 14, 14, 15, 14, 15, 16, 15, 16, 17, 18, 19,
  254. 12, 12, 12, 13, 14, 14, 14, 14, 15, 15, 15, 16, 17, 17, 17, 18,
  255. 12, 13, 13, 14, 14, 15, 14, 15, 16, 16, 17, 17, 17, 18, 18, 18,
  256. 13, 13, 14, 15, 15, 15, 16, 16, 16, 16, 16, 17, 18, 17, 18, 18,
  257. 14, 14, 14, 15, 15, 15, 17, 16, 16, 19, 17, 17, 17, 19, 18, 18,
  258. 13, 14, 15, 16, 16, 16, 17, 16, 17, 17, 18, 18, 21, 20, 21, 18};
  259. const char t15l[] = {
  260. 3, 5, 6, 8, 8, 9, 10, 10, 10, 11, 11, 12, 12, 12, 13, 14,
  261. 5, 5, 7, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 12, 13, 13,
  262. 6, 7, 7, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 13, 13, 13,
  263. 7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13,
  264. 8, 8, 9, 9, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 13,
  265. 9, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 13, 13, 13, 14,
  266. 10, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 14, 14,
  267. 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 14,
  268. 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 14, 14, 14,
  269. 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14,
  270. 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 15, 14,
  271. 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 15,
  272. 12, 12, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 14, 14, 15, 15,
  273. 12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 14, 15, 15,
  274. 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 14, 15,
  275. 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 15, 15, 15, 15};
  276. const char t16_5l[] = {
  277. 1, 5, 7, 9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 14, 11,
  278. 4, 6, 8, 9, 10, 11, 11, 11, 12, 12, 12, 13, 14, 13, 14, 11,
  279. 7, 8, 9, 10, 11, 11, 12, 12, 13, 12, 13, 13, 13, 14, 14, 12,
  280. 9, 9, 10, 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 13,
  281. 10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 12,
  282. 10, 10, 11, 11, 12, 13, 13, 14, 13, 14, 14, 15, 15, 15, 16, 13,
  283. 11, 11, 11, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 16, 13,
  284. 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 17, 17, 13,
  285. 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 13,
  286. 12, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 15, 16, 15, 14,
  287. 12, 13, 12, 13, 14, 14, 14, 14, 15, 16, 16, 16, 17, 17, 16, 13,
  288. 13, 13, 13, 13, 14, 14, 15, 16, 16, 16, 16, 16, 16, 15, 16, 14,
  289. 13, 14, 14, 14, 14, 15, 15, 15, 15, 17, 16, 16, 16, 16, 18, 14,
  290. 15, 14, 14, 14, 15, 15, 16, 16, 16, 18, 17, 17, 17, 19, 17, 14,
  291. 14, 15, 13, 14, 16, 16, 15, 16, 16, 17, 18, 17, 19, 17, 16, 14,
  292. 11, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 12};
  293. const char t16l[] = {
  294. 1, 5, 7, 9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 14, 10,
  295. 4, 6, 8, 9, 10, 11, 11, 11, 12, 12, 12, 13, 14, 13, 14, 10,
  296. 7, 8, 9, 10, 11, 11, 12, 12, 13, 12, 13, 13, 13, 14, 14, 11,
  297. 9, 9, 10, 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 12,
  298. 10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 11,
  299. 10, 10, 11, 11, 12, 13, 13, 14, 13, 14, 14, 15, 15, 15, 16, 12,
  300. 11, 11, 11, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 16, 12,
  301. 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 17, 17, 12,
  302. 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 12,
  303. 12, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 15, 16, 15, 13,
  304. 12, 13, 12, 13, 14, 14, 14, 14, 15, 16, 16, 16, 17, 17, 16, 12,
  305. 13, 13, 13, 13, 14, 14, 15, 16, 16, 16, 16, 16, 16, 15, 16, 13,
  306. 13, 14, 14, 14, 14, 15, 15, 15, 15, 17, 16, 16, 16, 16, 18, 13,
  307. 15, 14, 14, 14, 15, 15, 16, 16, 16, 18, 17, 17, 17, 19, 17, 13,
  308. 14, 15, 13, 14, 16, 16, 15, 16, 16, 17, 18, 17, 19, 17, 16, 13,
  309. 10, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 10};
  310. const char t24l[] = {
  311. 4, 5, 7, 8, 9, 10, 10, 11, 11, 12, 12, 12, 12, 12, 13, 10,
  312. 5, 6, 7, 8, 9, 10, 10, 11, 11, 11, 12, 12, 12, 12, 12, 10,
  313. 7, 7, 8, 9, 9, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 9,
  314. 8, 8, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 9,
  315. 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 12, 12, 12, 12, 13, 9,
  316. 10, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 9,
  317. 10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 9,
  318. 11, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 10,
  319. 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 10,
  320. 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 10,
  321. 12, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 10,
  322. 12, 12, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 10,
  323. 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 10,
  324. 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 10,
  325. 13, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 10,
  326. 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 6};
  327. const char t32l[] = {
  328. 1+0, 4+1, 4+1, 5+2, 4+1, 6+2, 5+2, 6+3,
  329. 4+1, 5+2, 5+2, 6+3, 5+2, 6+3, 6+3, 6+4};
  330. const char t33l[] = {
  331. 4+0, 4+1, 4+1, 4+2, 4+1, 4+2, 4+2, 4+3,
  332. 4+1, 4+2, 4+2, 4+3, 4+2, 4+3, 4+3, 4+4};
  333. const struct huffcodetab ht[HTN] =
  334. {
  335. /* xlen, linmax, table, hlen */
  336. { 0, 0,NULL,NULL},
  337. { 2, 0,t1HB, t1l},
  338. { 3, 0,t2HB, t2l},
  339. { 3, 0,t3HB, t3l},
  340. { 0, 0,NULL,NULL},/* Apparently not used */
  341. { 4, 0,t5HB, t5l},
  342. { 4, 0,t6HB, t6l},
  343. { 6, 0,t7HB, t7l},
  344. { 6, 0,t8HB, t8l},
  345. { 6, 0,t9HB, t9l},
  346. { 8, 0,t10HB, t10l},
  347. { 8, 0,t11HB, t11l},
  348. { 8, 0,t12HB, t12l},
  349. {16, 0,t13HB, t13l},
  350. { 0, 0,NULL, t16_5l},/* Apparently not used */
  351. {16, 0,t15HB, t15l},
  352. { 1, 1,t16HB, t16l},
  353. { 2, 3,t16HB, t16l},
  354. { 3, 7,t16HB, t16l},
  355. { 4, 15,t16HB, t16l},
  356. { 6, 63,t16HB, t16l},
  357. { 8, 255,t16HB, t16l},
  358. {10,1023,t16HB, t16l},
  359. {13,8191,t16HB, t16l},
  360. { 4, 15,t24HB, t24l},
  361. { 5, 31,t24HB, t24l},
  362. { 6, 63,t24HB, t24l},
  363. { 7, 127,t24HB, t24l},
  364. { 8, 255,t24HB, t24l},
  365. { 9, 511,t24HB, t24l},
  366. {11,2047,t24HB, t24l},
  367. {13,8191,t24HB, t24l},
  368. { 0, 0,t32HB, t32l},
  369. { 0, 0,t33HB, t33l},
  370. };
  371. /* for (i = 0; i < 16*16; i++) {
  372. * largetbl[i] = ((ht[16].hlen[i]) << 16) + ht[24].hlen[i];
  373. * }
  374. */
  375. const unsigned int largetbl[16*16] = {
  376. 0x010004, 0x050005, 0x070007, 0x090008, 0x0a0009, 0x0a000a, 0x0b000a, 0x0b000b,
  377. 0x0c000b, 0x0c000c, 0x0c000c, 0x0d000c, 0x0d000c, 0x0d000c, 0x0e000d, 0x0a000a,
  378. 0x040005, 0x060006, 0x080007, 0x090008, 0x0a0009, 0x0b000a, 0x0b000a, 0x0b000b,
  379. 0x0c000b, 0x0c000b, 0x0c000c, 0x0d000c, 0x0e000c, 0x0d000c, 0x0e000c, 0x0a000a,
  380. 0x070007, 0x080007, 0x090008, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000b,
  381. 0x0d000b, 0x0c000b, 0x0d000b, 0x0d000c, 0x0d000c, 0x0e000c, 0x0e000d, 0x0b0009,
  382. 0x090008, 0x090008, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000a, 0x0c000b,
  383. 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0c0009,
  384. 0x0a0009, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000a, 0x0d000a, 0x0d000b,
  385. 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000d, 0x0b0009,
  386. 0x0a000a, 0x0a0009, 0x0b000a, 0x0b000a, 0x0c000a, 0x0d000a, 0x0d000b, 0x0e000b,
  387. 0x0d000b, 0x0e000b, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x0c0009,
  388. 0x0b000a, 0x0b000a, 0x0b000a, 0x0c000a, 0x0d000a, 0x0d000b, 0x0d000b, 0x0d000b,
  389. 0x0e000b, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x10000d, 0x0c0009,
  390. 0x0b000b, 0x0b000a, 0x0c000a, 0x0c000a, 0x0d000b, 0x0d000b, 0x0d000b, 0x0e000b,
  391. 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x11000d, 0x11000d, 0x0c000a,
  392. 0x0b000b, 0x0c000b, 0x0c000b, 0x0d000b, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000b,
  393. 0x0f000b, 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x10000d, 0x10000d, 0x0c000a,
  394. 0x0c000b, 0x0c000b, 0x0c000b, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000b, 0x0f000c,
  395. 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x0f000d, 0x10000d, 0x0f000d, 0x0d000a,
  396. 0x0c000c, 0x0d000b, 0x0c000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0e000c,
  397. 0x0f000c, 0x10000c, 0x10000c, 0x10000d, 0x11000d, 0x11000d, 0x10000d, 0x0c000a,
  398. 0x0d000c, 0x0d000c, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0f000c, 0x10000c,
  399. 0x10000c, 0x10000c, 0x10000c, 0x10000d, 0x10000d, 0x0f000d, 0x10000d, 0x0d000a,
  400. 0x0d000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c,
  401. 0x0f000c, 0x11000c, 0x10000d, 0x10000d, 0x10000d, 0x10000d, 0x12000d, 0x0d000a,
  402. 0x0f000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x10000c, 0x10000c,
  403. 0x10000d, 0x12000d, 0x11000d, 0x11000d, 0x11000d, 0x13000d, 0x11000d, 0x0d000a,
  404. 0x0e000d, 0x0f000c, 0x0d000c, 0x0e000c, 0x10000c, 0x10000c, 0x0f000c, 0x10000d,
  405. 0x10000d, 0x11000d, 0x12000d, 0x11000d, 0x13000d, 0x11000d, 0x10000d, 0x0d000a,
  406. 0x0a0009, 0x0a0009, 0x0a0009, 0x0b0009, 0x0b0009, 0x0c0009, 0x0c0009, 0x0c0009,
  407. 0x0d0009, 0x0d0009, 0x0d0009, 0x0d000a, 0x0d000a, 0x0d000a, 0x0d000a, 0x0a0006
  408. };
  409. /* for (i = 0; i < 3*3; i++) {
  410. * table23[i] = ((ht[2].hlen[i]) << 16) + ht[3].hlen[i];
  411. * }
  412. */
  413. const unsigned int table23[3*3] = {
  414. 0x010002, 0x040003, 0x070007,
  415. 0x040004, 0x050004, 0x070007,
  416. 0x060006, 0x070007, 0x080008
  417. };
  418. /* for (i = 0; i < 4*4; i++) {
  419. * table56[i] = ((ht[5].hlen[i]) << 16) + ht[6].hlen[i];
  420. * }
  421. */
  422. const unsigned int table56[4*4] = {
  423. 0x010003, 0x040004, 0x070006, 0x080008, 0x040004, 0x050004, 0x080006, 0x090007,
  424. 0x070005, 0x080006, 0x090007, 0x0a0008, 0x080007, 0x080007, 0x090008, 0x0a0009
  425. };
  426. /*
  427. * 0: MPEG-2 LSF
  428. * 1: MPEG-1
  429. * 2: MPEG-2.5 LSF FhG extention (1995-07-11 shn)
  430. */
  431. typedef enum {
  432. MPEG_2 = 0,
  433. MPEG_1 = 1,
  434. MPEG_25 = 2
  435. } MPEG_t;
  436. const int bitrate_table [3] [16] = {
  437. { 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, -1 },
  438. { 0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1 },
  439. { 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, -1 },
  440. };
  441. const int samplerate_table [3] [4] = {
  442. { 22050, 24000, 16000, -1 },
  443. { 44100, 48000, 32000, -1 },
  444. { 11025, 12000, 8000, -1 },
  445. };
  446. const char* version_string [3] = { "2", "1", "2.5" };
  447. const unsigned header_word [3] = { 0xFFF00000, 0xFFF80000, 0xFFE00000 };
  448. /* end of tables.h */