TAB_LD8A.C
上传用户:meifeng08
上传日期:2013-06-18
资源大小:5304k
文件大小:27k
源码类别:

语音压缩

开发平台:

C/C++

  1. /*
  2.    ITU-T G.729A Speech Coder    ANSI-C Source Code
  3.    Version 1.1    Last modified: September 1996
  4.    Copyright (c) 1996,
  5.    AT&T, France Telecom, NTT, Universite de Sherbrooke
  6.    All rights reserved.
  7. */
  8. /* This file contains all the tables used by the G.729A codec */
  9. #include "typedef.h"
  10. #include "ld8a.h"
  11. #include "tab_ld8a.h"
  12. /* Hamming_cos window for LPC analysis.           */
  13. /*   Create with function ham_cos(window,200,40)  */
  14. Word16 hamwindow[L_WINDOW] = {
  15.   2621,  2623,  2629,  2638,  2651,  2668,  2689,  2713,  2741,  2772,
  16.   2808,  2847,  2890,  2936,  2986,  3040,  3097,  3158,  3223,  3291,
  17.   3363,  3438,  3517,  3599,  3685,  3774,  3867,  3963,  4063,  4166,
  18.   4272,  4382,  4495,  4611,  4731,  4853,  4979,  5108,  5240,  5376,
  19.   5514,  5655,  5800,  5947,  6097,  6250,  6406,  6565,  6726,  6890,
  20.   7057,  7227,  7399,  7573,  7750,  7930,  8112,  8296,  8483,  8672,
  21.   8863,  9057,  9252,  9450,  9650,  9852, 10055, 10261, 10468, 10677,
  22.  10888, 11101, 11315, 11531, 11748, 11967, 12187, 12409, 12632, 12856,
  23.  13082, 13308, 13536, 13764, 13994, 14225, 14456, 14688, 14921, 15155,
  24.  15389, 15624, 15859, 16095, 16331, 16568, 16805, 17042, 17279, 17516,
  25.  17754, 17991, 18228, 18465, 18702, 18939, 19175, 19411, 19647, 19882,
  26.  20117, 20350, 20584, 20816, 21048, 21279, 21509, 21738, 21967, 22194,
  27.  22420, 22644, 22868, 23090, 23311, 23531, 23749, 23965, 24181, 24394,
  28.  24606, 24816, 25024, 25231, 25435, 25638, 25839, 26037, 26234, 26428,
  29.  26621, 26811, 26999, 27184, 27368, 27548, 27727, 27903, 28076, 28247,
  30.  28415, 28581, 28743, 28903, 29061, 29215, 29367, 29515, 29661, 29804,
  31.  29944, 30081, 30214, 30345, 30472, 30597, 30718, 30836, 30950, 31062,
  32.  31170, 31274, 31376, 31474, 31568, 31659, 31747, 31831, 31911, 31988,
  33.  32062, 32132, 32198, 32261, 32320, 32376, 32428, 32476, 32521, 32561,
  34.  32599, 32632, 32662, 32688, 32711, 32729, 32744, 32755, 32763, 32767,
  35.  32767, 32741, 32665, 32537, 32359, 32129, 31850, 31521, 31143, 30716,
  36.  30242, 29720, 29151, 28538, 27879, 27177, 26433, 25647, 24821, 23957,
  37.  23055, 22117, 21145, 20139, 19102, 18036, 16941, 15820, 14674, 13505,
  38.  12315, 11106,  9879,  8637,  7381,  6114,  4838,  3554,  2264,   971};
  39. /*-----------------------------------------------------*
  40.  | Table of lag_window for autocorrelation.            |
  41.  | noise floor = 1.0001   = (0.9999  on r[1] ..r[10])  |
  42.  | Bandwidth expansion = 60 Hz                         |
  43.  |                                                     |
  44.  | Special double precision format. See "oper_32b.c"   |
  45.  |                                                     |
  46.  | lag_wind[0] =  1.00000000    (not stored)           |
  47.  | lag_wind[1] =  0.99879038                           |
  48.  | lag_wind[2] =  0.99546897                           |
  49.  | lag_wind[3] =  0.98995781                           |
  50.  | lag_wind[4] =  0.98229337                           |
  51.  | lag_wind[5] =  0.97252619                           |
  52.  | lag_wind[6] =  0.96072036                           |
  53.  | lag_wind[7] =  0.94695264                           |
  54.  | lag_wind[8] =  0.93131179                           |
  55.  | lag_wind[9] =  0.91389757                           |
  56.  | lag_wind[10]=  0.89481968                           |
  57.  -----------------------------------------------------*/
  58. Word16 lag_h[M] = {
  59.     32728,
  60.     32619,
  61.     32438,
  62.     32187,
  63.     31867,
  64.     31480,
  65.     31029,
  66.     30517,
  67.     29946,
  68.     29321};
  69. Word16 lag_l[M] = {
  70.     11904,
  71.     17280,
  72.     30720,
  73.     25856,
  74.     24192,
  75.     28992,
  76.     24384,
  77.      7360,
  78.     19520,
  79.     14784};
  80. /*-----------------------------------------------------*
  81.  | Tables for function Lsf_lsp() and Lsp_lsf()         |
  82.   -----------------------------------------------------*/
  83. /* table of cos(x) in Q15 */
  84. Word16 table[65] = {
  85.   32767,  32729,  32610,  32413,  32138,  31786,  31357,  30853,
  86.   30274,  29622,  28899,  28106,  27246,  26320,  25330,  24279,
  87.   23170,  22006,  20788,  19520,  18205,  16846,  15447,  14010,
  88.   12540,  11039,   9512,   7962,   6393,   4808,   3212,   1608,
  89.       0,  -1608,  -3212,  -4808,  -6393,  -7962,  -9512, -11039,
  90.  -12540, -14010, -15447, -16846, -18205, -19520, -20788, -22006,
  91.  -23170, -24279, -25330, -26320, -27246, -28106, -28899, -29622,
  92.  -30274, -30853, -31357, -31786, -32138, -32413, -32610, -32729,
  93.  -32768L };
  94. /* slope in Q12 used to compute y = acos(x) */
  95. Word16 slope[64] = {
  96.  -26887,  -8812,  -5323,  -3813,  -2979,  -2444,  -2081,  -1811,
  97.   -1608,  -1450,  -1322,  -1219,  -1132,  -1059,   -998,   -946,
  98.    -901,   -861,   -827,   -797,   -772,   -750,   -730,   -713,
  99.    -699,   -687,   -677,   -668,   -662,   -657,   -654,   -652,
  100.    -652,   -654,   -657,   -662,   -668,   -677,   -687,   -699,
  101.    -713,   -730,   -750,   -772,   -797,   -827,   -861,   -901,
  102.    -946,   -998,  -1059,  -1132,  -1219,  -1322,  -1450,  -1608,
  103.   -1811,  -2081,  -2444,  -2979,  -3813,  -5323,  -8812, -26887};
  104. /*-----------------------------------------------------*
  105.  | Tables for function Lsf_lsp() and Lsp_lsf()         |
  106.   -----------------------------------------------------*/
  107. /* table of cos(x) in Q15 */
  108. Word16 table2[64] = {
  109.   32767,  32729,  32610,  32413,  32138,  31786,  31357,  30853,
  110.   30274,  29622,  28899,  28106,  27246,  26320,  25330,  24279,
  111.   23170,  22006,  20788,  19520,  18205,  16846,  15447,  14010,
  112.   12540,  11039,   9512,   7962,   6393,   4808,   3212,   1608,
  113.       0,  -1608,  -3212,  -4808,  -6393,  -7962,  -9512, -11039,
  114.  -12540, -14010, -15447, -16846, -18205, -19520, -20788, -22006,
  115.  -23170, -24279, -25330, -26320, -27246, -28106, -28899, -29622,
  116.  -30274, -30853, -31357, -31786, -32138, -32413, -32610, -32729 };
  117. /* slope in Q19 used to compute y = cos(x) */
  118. Word16 slope_cos[64] = {
  119.    -632,  -1893,  -3150,  -4399,  -5638,  -6863,  -8072,  -9261,
  120.  -10428, -11570, -12684, -13767, -14817, -15832, -16808, -17744,
  121.  -18637, -19486, -20287, -21039, -21741, -22390, -22986, -23526,
  122.  -24009, -24435, -24801, -25108, -25354, -25540, -25664, -25726,
  123.  -25726, -25664, -25540, -25354, -25108, -24801, -24435, -24009,
  124.  -23526, -22986, -22390, -21741, -21039, -20287, -19486, -18637,
  125.  -17744, -16808, -15832, -14817, -13767, -12684, -11570, -10428,
  126.   -9261,  -8072,  -6863,  -5638,  -4399,  -3150,  -1893,   -632 };
  127. /* slope in Q12 used to compute y = acos(x) */
  128. Word16 slope_acos[64] = {
  129.  -26887,  -8812,  -5323,  -3813,  -2979,  -2444,  -2081,  -1811,
  130.   -1608,  -1450,  -1322,  -1219,  -1132,  -1059,   -998,   -946,
  131.    -901,   -861,   -827,   -797,   -772,   -750,   -730,   -713,
  132.    -699,   -687,   -677,   -668,   -662,   -657,   -654,   -652,
  133.    -652,   -654,   -657,   -662,   -668,   -677,   -687,   -699,
  134.    -713,   -730,   -750,   -772,   -797,   -827,   -861,   -901,
  135.    -946,   -998,  -1059,  -1132,  -1219,  -1322,  -1450,  -1608,
  136.   -1811,  -2081,  -2444,  -2979,  -3813,  -5323,  -8812, -26887};
  137. /* lsp    code book   <../f7s55m1.v2> */
  138. Word16 lspcb1[NC0][M] = {        /* Q13 */
  139. { 1486,  2168,  3751,  9074, 12134, 13944, 17983, 19173, 21190, 21820},
  140. { 1730,  2640,  3450,  4870,  6126,  7876, 15644, 17817, 20294, 21902},
  141. { 1568,  2256,  3088,  4874, 11063, 13393, 18307, 19293, 21109, 21741},
  142. { 1733,  2512,  3357,  4708,  6977, 10296, 17024, 17956, 19145, 20350},
  143. { 1744,  2436,  3308,  8731, 10432, 12007, 15614, 16639, 21359, 21913},
  144. { 1786,  2369,  3372,  4521,  6795, 12963, 17674, 18988, 20855, 21640},
  145. { 1631,  2433,  3361,  6328, 10709, 12013, 13277, 13904, 19441, 21088},
  146. { 1489,  2364,  3291,  6250,  9227, 10403, 13843, 15278, 17721, 21451},
  147. { 1869,  2533,  3475,  4365,  9152, 14513, 15908, 17022, 20611, 21411},
  148. { 2070,  3025,  4333,  5854,  7805,  9231, 10597, 16047, 20109, 21834},
  149. { 1910,  2673,  3419,  4261, 11168, 15111, 16577, 17591, 19310, 20265},
  150. { 1141,  1815,  2624,  4623,  6495,  9588, 13968, 16428, 19351, 21286},
  151. { 2192,  3171,  4707,  5808, 10904, 12500, 14162, 15664, 21124, 21789},
  152. { 1286,  1907,  2548,  3453,  9574, 11964, 15978, 17344, 19691, 22495},
  153. { 1921,  2720,  4604,  6684, 11503, 12992, 14350, 15262, 16997, 20791},
  154. { 2052,  2759,  3897,  5246,  6638, 10267, 15834, 16814, 18149, 21675},
  155. { 1798,  2497,  5617, 11449, 13189, 14711, 17050, 18195, 20307, 21182},
  156. { 1009,  1647,  2889,  5709,  9541, 12354, 15231, 18494, 20966, 22033},
  157. { 3016,  3794,  5406,  7469, 12488, 13984, 15328, 16334, 19952, 20791},
  158. { 2203,  3040,  3796,  5442, 11987, 13512, 14931, 16370, 17856, 18803},
  159. { 2912,  4292,  7988,  9572, 11562, 13244, 14556, 16529, 20004, 21073},
  160. { 2861,  3607,  5923,  7034,  9234, 12054, 13729, 18056, 20262, 20974},
  161. { 3069,  4311,  5967,  7367, 11482, 12699, 14309, 16233, 18333, 19172},
  162. { 2434,  3661,  4866,  5798, 10383, 11722, 13049, 15668, 18862, 19831},
  163. { 2020,  2605,  3860,  9241, 13275, 14644, 16010, 17099, 19268, 20251},
  164. { 1877,  2809,  3590,  4707, 11056, 12441, 15622, 17168, 18761, 19907},
  165. { 2107,  2873,  3673,  5799, 13579, 14687, 15938, 17077, 18890, 19831},
  166. { 1612,  2284,  2944,  3572,  8219, 13959, 15924, 17239, 18592, 20117},
  167. { 2420,  3156,  6542, 10215, 12061, 13534, 15305, 16452, 18717, 19880},
  168. { 1667,  2612,  3534,  5237, 10513, 11696, 12940, 16798, 18058, 19378},
  169. { 2388,  3017,  4839,  9333, 11413, 12730, 15024, 16248, 17449, 18677},
  170. { 1875,  2786,  4231,  6320,  8694, 10149, 11785, 17013, 18608, 19960},
  171. {  679,  1411,  4654,  8006, 11446, 13249, 15763, 18127, 20361, 21567},
  172. { 1838,  2596,  3578,  4608,  5650, 11274, 14355, 15886, 20579, 21754},
  173. { 1303,  1955,  2395,  3322, 12023, 13764, 15883, 18077, 20180, 21232},
  174. { 1438,  2102,  2663,  3462,  8328, 10362, 13763, 17248, 19732, 22344},
  175. {  860,  1904,  6098,  7775,  9815, 12007, 14821, 16709, 19787, 21132},
  176. { 1673,  2723,  3704,  6125,  7668,  9447, 13683, 14443, 20538, 21731},
  177. { 1246,  1849,  2902,  4508,  7221, 12710, 14835, 16314, 19335, 22720},
  178. { 1525,  2260,  3862,  5659,  7342, 11748, 13370, 14442, 18044, 21334},
  179. { 1196,  1846,  3104,  7063, 10972, 12905, 14814, 17037, 19922, 22636},
  180. { 2147,  3106,  4475,  6511,  8227,  9765, 10984, 12161, 18971, 21300},
  181. { 1585,  2405,  2994,  4036, 11481, 13177, 14519, 15431, 19967, 21275},
  182. { 1778,  2688,  3614,  4680,  9465, 11064, 12473, 16320, 19742, 20800},
  183. { 1862,  2586,  3492,  6719, 11708, 13012, 14364, 16128, 19610, 20425},
  184. { 1395,  2156,  2669,  3386, 10607, 12125, 13614, 16705, 18976, 21367},
  185. { 1444,  2117,  3286,  6233,  9423, 12981, 14998, 15853, 17188, 21857},
  186. { 2004,  2895,  3783,  4897,  6168,  7297, 12609, 16445, 19297, 21465},
  187. { 1495,  2863,  6360,  8100, 11399, 14271, 15902, 17711, 20479, 22061},
  188. { 2484,  3114,  5718,  7097,  8400, 12616, 14073, 14847, 20535, 21396},
  189. { 2424,  3277,  5296,  6284, 11290, 12903, 16022, 17508, 19333, 20283},
  190. { 2565,  3778,  5360,  6989,  8782, 10428, 14390, 15742, 17770, 21734},
  191. { 2727,  3384,  6613,  9254, 10542, 12236, 14651, 15687, 20074, 21102},
  192. { 1916,  2953,  6274,  8088,  9710, 10925, 12392, 16434, 20010, 21183},
  193. { 3384,  4366,  5349,  7667, 11180, 12605, 13921, 15324, 19901, 20754},
  194. { 3075,  4283,  5951,  7619,  9604, 11010, 12384, 14006, 20658, 21497},
  195. { 1751,  2455,  5147,  9966, 11621, 13176, 14739, 16470, 20788, 21756},
  196. { 1442,  2188,  3330,  6813,  8929, 12135, 14476, 15306, 19635, 20544},
  197. { 2294,  2895,  4070,  8035, 12233, 13416, 14762, 17367, 18952, 19688},
  198. { 1937,  2659,  4602,  6697,  9071, 12863, 14197, 15230, 16047, 18877},
  199. { 2071,  2663,  4216,  9445, 10887, 12292, 13949, 14909, 19236, 20341},
  200. { 1740,  2491,  3488,  8138,  9656, 11153, 13206, 14688, 20896, 21907},
  201. { 2199,  2881,  4675,  8527, 10051, 11408, 14435, 15463, 17190, 20597},
  202. { 1943,  2988,  4177,  6039,  7478,  8536, 14181, 15551, 17622, 21579},
  203. { 1825,  3175,  7062,  9818, 12824, 15450, 18330, 19856, 21830, 22412},
  204. { 2464,  3046,  4822,  5977,  7696, 15398, 16730, 17646, 20588, 21320},
  205. { 2550,  3393,  5305,  6920, 10235, 14083, 18143, 19195, 20681, 21336},
  206. { 3003,  3799,  5321,  6437,  7919, 11643, 15810, 16846, 18119, 18980},
  207. { 3455,  4157,  6838,  8199,  9877, 12314, 15905, 16826, 19949, 20892},
  208. { 3052,  3769,  4891,  5810,  6977, 10126, 14788, 15990, 19773, 20904},
  209. { 3671,  4356,  5827,  6997,  8460, 12084, 14154, 14939, 19247, 20423},
  210. { 2716,  3684,  5246,  6686,  8463, 10001, 12394, 14131, 16150, 19776},
  211. { 1945,  2638,  4130,  7995, 14338, 15576, 17057, 18206, 20225, 20997},
  212. { 2304,  2928,  4122,  4824,  5640, 13139, 15825, 16938, 20108, 21054},
  213. { 1800,  2516,  3350,  5219, 13406, 15948, 17618, 18540, 20531, 21252},
  214. { 1436,  2224,  2753,  4546,  9657, 11245, 15177, 16317, 17489, 19135},
  215. { 2319,  2899,  4980,  6936,  8404, 13489, 15554, 16281, 20270, 20911},
  216. { 2187,  2919,  4610,  5875,  7390, 12556, 14033, 16794, 20998, 21769},
  217. { 2235,  2923,  5121,  6259,  8099, 13589, 15340, 16340, 17927, 20159},
  218. { 1765,  2638,  3751,  5730,  7883, 10108, 13633, 15419, 16808, 18574},
  219. { 3460,  5741,  9596, 11742, 14413, 16080, 18173, 19090, 20845, 21601},
  220. { 3735,  4426,  6199,  7363,  9250, 14489, 16035, 17026, 19873, 20876},
  221. { 3521,  4778,  6887,  8680, 12717, 14322, 15950, 18050, 20166, 21145},
  222. { 2141,  2968,  6865,  8051, 10010, 13159, 14813, 15861, 17528, 18655},
  223. { 4148,  6128,  9028, 10871, 12686, 14005, 15976, 17208, 19587, 20595},
  224. { 4403,  5367,  6634,  8371, 10163, 11599, 14963, 16331, 17982, 18768},
  225. { 4091,  5386,  6852,  8770, 11563, 13290, 15728, 16930, 19056, 20102},
  226. { 2746,  3625,  5299,  7504, 10262, 11432, 13172, 15490, 16875, 17514},
  227. { 2248,  3556,  8539, 10590, 12665, 14696, 16515, 17824, 20268, 21247},
  228. { 1279,  1960,  3920,  7793, 10153, 14753, 16646, 18139, 20679, 21466},
  229. { 2440,  3475,  6737,  8654, 12190, 14588, 17119, 17925, 19110, 19979},
  230. { 1879,  2514,  4497,  7572, 10017, 14948, 16141, 16897, 18397, 19376},
  231. { 2804,  3688,  7490, 10086, 11218, 12711, 16307, 17470, 20077, 21126},
  232. { 2023,  2682,  3873,  8268, 10255, 11645, 15187, 17102, 18965, 19788},
  233. { 2823,  3605,  5815,  8595, 10085, 11469, 16568, 17462, 18754, 19876},
  234. { 2851,  3681,  5280,  7648,  9173, 10338, 14961, 16148, 17559, 18474},
  235. { 1348,  2645,  5826,  8785, 10620, 12831, 16255, 18319, 21133, 22586},
  236. { 2141,  3036,  4293,  6082,  7593, 10629, 17158, 18033, 21466, 22084},
  237. { 1608,  2375,  3384,  6878,  9970, 11227, 16928, 17650, 20185, 21120},
  238. { 2774,  3616,  5014,  6557,  7788,  8959, 17068, 18302, 19537, 20542},
  239. { 1934,  4813,  6204,  7212,  8979, 11665, 15989, 17811, 20426, 21703},
  240. { 2288,  3507,  5037,  6841,  8278,  9638, 15066, 16481, 21653, 22214},
  241. { 2951,  3771,  4878,  7578,  9016, 10298, 14490, 15242, 20223, 20990},
  242. { 3256,  4791,  6601,  7521,  8644,  9707, 13398, 16078, 19102, 20249},
  243. { 1827,  2614,  3486,  6039, 12149, 13823, 16191, 17282, 21423, 22041},
  244. { 1000,  1704,  3002,  6335,  8471, 10500, 14878, 16979, 20026, 22427},
  245. { 1646,  2286,  3109,  7245, 11493, 12791, 16824, 17667, 18981, 20222},
  246. { 1708,  2501,  3315,  6737,  8729,  9924, 16089, 17097, 18374, 19917},
  247. { 2623,  3510,  4478,  5645,  9862, 11115, 15219, 18067, 19583, 20382},
  248. { 2518,  3434,  4728,  6388,  8082,  9285, 13162, 18383, 19819, 20552},
  249. { 1726,  2383,  4090,  6303,  7805, 12845, 14612, 17608, 19269, 20181},
  250. { 2860,  3735,  4838,  6044,  7254,  8402, 14031, 16381, 18037, 19410},
  251. { 4247,  5993,  7952,  9792, 12342, 14653, 17527, 18774, 20831, 21699},
  252. { 3502,  4051,  5680,  6805,  8146, 11945, 16649, 17444, 20390, 21564},
  253. { 3151,  4893,  5899,  7198, 11418, 13073, 15124, 17673, 20520, 21861},
  254. { 3960,  4848,  5926,  7259,  8811, 10529, 15661, 16560, 18196, 20183},
  255. { 4499,  6604,  8036,  9251, 10804, 12627, 15880, 17512, 20020, 21046},
  256. { 4251,  5541,  6654,  8318,  9900, 11686, 15100, 17093, 20572, 21687},
  257. { 3769,  5327,  7865,  9360, 10684, 11818, 13660, 15366, 18733, 19882},
  258. { 3083,  3969,  6248,  8121,  9798, 10994, 12393, 13686, 17888, 19105},
  259. { 2731,  4670,  7063,  9201, 11346, 13735, 16875, 18797, 20787, 22360},
  260. { 1187,  2227,  4737,  7214,  9622, 12633, 15404, 17968, 20262, 23533},
  261. { 1911,  2477,  3915, 10098, 11616, 12955, 16223, 17138, 19270, 20729},
  262. { 1764,  2519,  3887,  6944,  9150, 12590, 16258, 16984, 17924, 18435},
  263. { 1400,  3674,  7131,  8718, 10688, 12508, 15708, 17711, 19720, 21068},
  264. { 2322,  3073,  4287,  8108,  9407, 10628, 15862, 16693, 19714, 21474},
  265. { 2630,  3339,  4758,  8360, 10274, 11333, 12880, 17374, 19221, 19936},
  266. { 1721,  2577,  5553,  7195,  8651, 10686, 15069, 16953, 18703, 19929}
  267. };
  268. Word16 lspcb2[NC1][M] = {        /* Q13 */
  269. { -435,  -815,  -742,  1033,  -518,   582, -1201,   829,    86,   385},
  270. { -833,  -891,   463,    -8, -1251,  1450,    72,  -231,   864,   661},
  271. {-1021,   231,  -306,   321,  -220,  -163,  -526,  -754, -1633,   267},
  272. {   57,  -198,  -339,   -33, -1468,   573,   796,  -169,  -631,   816},
  273. {  171,  -350,   294,  1660,   453,   519,   291,   159,  -640, -1296},
  274. { -701,  -842,   -58,   950,   892,  1549,   715,   527,  -714,  -193},
  275. {  584,    31,  -289,   356,  -333,  -457,   612,  -283, -1381,  -741},
  276. { -109,  -808,   231,    77,   -87,  -344,  1341,  1087,  -654,  -569},
  277. { -859,  1236,   550,   854,   714,  -543, -1752,  -195,   -98,  -276},
  278. { -877,  -954, -1248,  -299,   212,  -235,  -728,   949,  1517,   895},
  279. {  -77,   344,  -620,   763,   413,   502,  -362,  -960,  -483,  1386},
  280. { -314,  -307,  -256, -1260,  -429,   450,  -466,  -108,  1010,  2223},
  281. {  711,   693,   521,   650,  1305,   -28,  -378,   744, -1005,   240},
  282. { -112,  -271,  -500,   946,  1733,   271,   -15,   909,  -259,  1688},
  283. {  575,   -10,  -468,  -199,  1101, -1011,   581,   -53,  -747,   878},
  284. {  145,  -285, -1280,  -398,    36,  -498, -1377,    18,  -444,  1483},
  285. {-1133,  -835,  1350,  1284,   -95,  1015,  -222,   443,   372,  -354},
  286. {-1459, -1237,   416,  -213,   466,   669,   659,  1640,   932,   534},
  287. {  -15,    66,   468,  1019,  -748,  1385,  -182,  -907,  -721,  -262},
  288. { -338,   148,  1445,    75,  -760,   569,  1247,   337,   416,  -121},
  289. {  389,   239,  1568,   981,   113,   369, -1003,  -507,  -587,  -904},
  290. { -312,   -98,   949,    31,  1104,    72,  -141,  1465,    63,  -785},
  291. { 1127,   584,   835,   277, -1159,   208,   301,  -882,   117,  -404},
  292. {  539,  -114,   856,  -493,   223,  -912,   623,   -76,   276,  -440},
  293. { 2197,  2337,  1268,   670,   304,  -267,  -525,   140,   882,  -139},
  294. {-1596,   550,   801,  -456,   -56,  -697,   865,  1060,   413,   446},
  295. { 1154,   593,   -77,  1237,   -31,   581, -1037,  -895,   669,   297},
  296. {  397,   558,   203,  -797,  -919,     3,   692,  -292,  1050,   782},
  297. {  334,  1475,   632,   -80,    48, -1061,  -484,   362,  -597,  -852},
  298. { -545,  -330,  -429,  -680,  1133, -1182,  -744,  1340,   262,    63},
  299. { 1320,   827,  -398,  -576,   341,  -774,  -483, -1247,   -70,    98},
  300. { -163,   674,   -11,  -886,   531, -1125,  -265,  -242,   724,   934}
  301. };
  302. Word16 fg[2][MA_NP][M] = {       /* Q15 */
  303.   {
  304.     { 8421,  9109,  9175,  8965,  9034,  9057,  8765,  8775,  9106,  8673},
  305.     { 7018,  7189,  7638,  7307,  7444,  7379,  7038,  6956,  6930,  6868},
  306.     { 5472,  4990,  5134,  5177,  5246,  5141,  5206,  5095,  4830,  5147},
  307.     { 4056,  3031,  2614,  3024,  2916,  2713,  3309,  3237,  2857,  3473}
  308.   },
  309.   {
  310.     { 7733,  7880,  8188,  8175,  8247,  8490,  8637,  8601,  8359,  7569},
  311.     { 4210,  3031,  2552,  3473,  3876,  3853,  4184,  4154,  3909,  3968},
  312.     { 3214,  1930,  1313,  2143,  2493,  2385,  2755,  2706,  2542,  2919},
  313.     { 3024,  1592,   940,  1631,  1723,  1579,  2034,  2084,  1913,  2601}
  314.   }
  315. };
  316. Word16 fg_sum[2][M] = {      /* Q15 */
  317. { 7798,  8447,  8205,  8293,  8126,  8477,  8447,  8703,  9043,  8604},
  318. {14585, 18333, 19772, 17344, 16426, 16459, 15155, 15220, 16043, 15708}
  319. };
  320. Word16 fg_sum_inv[2][M] = {      /* Q12 */
  321. {17210, 15888, 16357, 16183, 16516, 15833, 15888, 15421, 14840, 15597},
  322. { 9202,  7320,  6788,  7738,  8170,  8154,  8856,  8818,  8366,  8544}
  323. };
  324. /*-------------------------------------------------------------*
  325.  *  Table for az_lsf()                                         *
  326.  *                                                             *
  327.  * Vector grid[] is in Q15                                     *
  328.  *                                                             *
  329.  * grid[0] = 1.0;                                              *
  330.  * grid[grid_points+1] = -1.0;                                 *
  331.  * for (i = 1; i < grid_points; i++)                           *
  332.  *   grid[i] = cos((6.283185307*i)/(2.0*grid_points));         *
  333.  *                                                             *
  334.  *-------------------------------------------------------------*/
  335. /* Version 51 points */
  336. Word16 grid[GRID_POINTS+1] ={
  337.      32760,     32703,     32509,     32187,     31738,     31164,
  338.      30466,     29649,     28714,     27666,     26509,     25248,
  339.      23886,     22431,     20887,     19260,     17557,     15786,
  340.      13951,     12062,     10125,      8149,      6140,      4106,
  341.       2057,         0,     -2057,     -4106,     -6140,     -8149,
  342.     -10125,    -12062,    -13951,    -15786,    -17557,    -19260,
  343.     -20887,    -22431,    -23886,    -25248,    -26509,    -27666,
  344.     -28714,    -29649,    -30466,    -31164,    -31738,    -32187,
  345.     -32509,    -32703,    -32760};
  346. /*-----------------------------------------------------*
  347.  | Tables for pitch related routines .                 |
  348.  -----------------------------------------------------*/
  349. /* 1/3 resolution interpolation filter  (-3 dB at 3600 Hz)  in Q15 */
  350. Word16 inter_3l[FIR_SIZE_SYN] = {
  351.    29443,
  352.    25207,   14701,    3143,
  353.    -4402,   -5850,   -2783,
  354.     1211,    3130,    2259,
  355.        0,   -1652,   -1666,
  356.     -464,     756,    1099,
  357.      550,    -245,    -634,
  358.     -451,       0,     308,
  359.      296,      78,    -120,
  360.     -165,     -79,      34,
  361.       91,      70,       0};
  362.    /*Coefficients in floating point
  363.    0.898517,
  364.    0.769271,   0.448635,   0.095915,
  365.   -0.134333,  -0.178528,  -0.084919,
  366.    0.036952,   0.095533,   0.068936,
  367.   -0.000000,  -0.050404,  -0.050835,
  368.   -0.014169,   0.023083,   0.033543,
  369.    0.016774,  -0.007466,  -0.019340,
  370.   -0.013755,   0.000000,   0.009400,
  371.    0.009029,   0.002381,  -0.003658,
  372.   -0.005027,  -0.002405,   0.001050,
  373.    0.002780,   0.002145,   0.000000};
  374.   */
  375. /*-----------------------------------------------------*
  376.  | Tables for gain related routines .                  |
  377.  -----------------------------------------------------*/
  378. /* MA gain prediction coeff ={0.68, 0.58, 0.34, 0.19} in Q13 */
  379. Word16 pred[4] = { 5571, 4751, 2785, 1556 };
  380. Word16 gbk1[NCODE1][2] = {
  381. /* Q14      Q13 */
  382.  {    1 ,  1516 },
  383.  { 1551 ,  2425 },
  384.  { 1831 ,  5022 },
  385.  {   57 ,  5404 },
  386.  { 1921 ,  9291 },
  387.  { 3242 ,  9949 },
  388.  {  356 , 14756 },
  389.  { 2678 , 27162 }
  390. };
  391. Word16 gbk2[NCODE2][2] = {
  392. /* Q14       Q13 */
  393.  {   826 ,  2005 },
  394.  {  1994 ,     0 },
  395.  {  5142 ,   592 },
  396.  {  6160 ,  2395 },
  397.  {  8091 ,  4861 },
  398.  {  9120 ,   525 },
  399.  { 10573 ,  2966 },
  400.  { 11569 ,  1196 },
  401.  { 13260 ,  3256 },
  402.  { 14194 ,  1630 },
  403.  { 15132 ,  4914 },
  404.  { 15161 , 14276 },
  405.  { 15434 ,   237 },
  406.  { 16112 ,  3392 },
  407.  { 17299 ,  1861 },
  408.  { 18973 ,  5935 }
  409. };
  410. Word16 map1[NCODE1] = {
  411.  5, 1, 4, 7, 3, 0, 6, 2
  412. };
  413. Word16 map2[NCODE2] = {
  414.  4, 6, 0, 2,12,14, 8,10,15,11, 9,13, 7, 3, 1, 5
  415. };
  416. /*  [0][0]      [0][1]       [1][0]     [1][1]    */
  417. /*  Q10         Q14          Q16        Q19       */
  418. Word16 coef[2][2] = {
  419.    { 31881 , 26416 },
  420.    { 31548 , 27816 }
  421. };
  422. /*  [0][0]      [0][1]       [1][0]     [1][1]    */
  423. /*  Q26         Q30          Q32        Q35       */
  424. Word32 L_coef[2][2] = {
  425.    { 2089405952L , 1731217536L },
  426.    { 2067549984L , 1822990272L }
  427. };
  428. Word16 thr1[NCODE1-NCAN1] = {  /* Q14 */
  429.    10808 ,
  430.    12374 ,
  431.    19778 ,
  432.    32567
  433. };
  434. Word16 thr2[NCODE2-NCAN2] = {  /* Q15 */
  435.    14087 ,
  436.    16188 ,
  437.    20274 ,
  438.    21321 ,
  439.    23525 ,
  440.    25232 ,
  441.    27873 ,
  442.    30542
  443. };
  444. Word16 imap1[NCODE1] = {
  445.  5, 1, 7, 4, 2, 0, 6, 3
  446. };
  447. Word16 imap2[NCODE2] = {
  448.  2,14, 3,13, 0,15, 1,12, 6,10, 7, 9, 4,11, 5, 8
  449. };
  450. /*-----------------------------------------------------*
  451.  | Tables for routines post_pro() & pre_proc().        |
  452.  -----------------------------------------------------*/
  453. /* filter coefficients (fc = 100 Hz) */
  454. Word16 b100[3] = {7699, -15398, 7699};      /* Q13 */
  455. Word16 a100[3] = {8192, 15836, -7667};      /* Q13 */
  456. /* filter coefficients (fc = 140 Hz, coeff. b[] is divided by 2) */
  457. Word16 b140[3] = {1899, -3798, 1899};      /* 1/2 in Q12 */
  458. Word16 a140[3] = {4096, 7807, -3733};      /* Q12 */
  459. /*-----------------------------------------------------*
  460.  | Tables for routine bits().                          |
  461.  -----------------------------------------------------*/
  462. Word16 bitsno[PRM_SIZE] = {1+NC0_B,               /* MA + 1st stage   */
  463.                                  NC1_B*2,         /* 2nd stage        */
  464.                                  8, 1, 13, 4, 7,  /* first subframe   */
  465.                                  5,    13, 4, 7}; /* second subframe  */
  466. /*-----------------------------------------------------*
  467.  | Table for routine Pow2().                           |
  468.  -----------------------------------------------------*/
  469. Word16 tabpow[33] = {
  470.  16384, 16743, 17109, 17484, 17867, 18258, 18658, 19066, 19484, 19911,
  471.  20347, 20792, 21247, 21713, 22188, 22674, 23170, 23678, 24196, 24726,
  472.  25268, 25821, 26386, 26964, 27554, 28158, 28774, 29405, 30048, 30706,
  473.  31379, 32066, 32767 };
  474. /*-----------------------------------------------------*
  475.  | Table for routine Log2().                           |
  476.  -----------------------------------------------------*/
  477. Word16 tablog[33] = {
  478.      0,  1455,  2866,  4236,  5568,  6863,  8124,  9352, 10549, 11716,
  479.  12855, 13967, 15054, 16117, 17156, 18172, 19167, 20142, 21097, 22033,
  480.  22951, 23852, 24735, 25603, 26455, 27291, 28113, 28922, 29716, 30497,
  481.  31266, 32023, 32767 };
  482. /*-----------------------------------------------------*
  483.  | Table for routine Inv_sqrt().                       |
  484.  -----------------------------------------------------*/
  485. Word16 tabsqr[49] = {
  486.  32767, 31790, 30894, 30070, 29309, 28602, 27945, 27330, 26755, 26214,
  487.  25705, 25225, 24770, 24339, 23930, 23541, 23170, 22817, 22479, 22155,
  488.  21845, 21548, 21263, 20988, 20724, 20470, 20225, 19988, 19760, 19539,
  489.  19326, 19119, 18919, 18725, 18536, 18354, 18176, 18004, 17837, 17674,
  490.  17515, 17361, 17211, 17064, 16921, 16782, 16646, 16514, 16384 };
  491. /*-----------------------------------------------------*
  492.  | Table for taming procedure test_err.                |
  493.  -----------------------------------------------------*/
  494. Word16 tab_zone[PIT_MAX+L_INTERPOL-1] = {
  495.  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  496.  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
  497.  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  498.  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2,
  499.  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  500.  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  501.  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 };