coeff.c
上传用户:csczyc
上传日期:2021-02-19
资源大小:1051k
文件大小:7k
源码类别:

语音压缩

开发平台:

C/C++

  1. /*  Coeff.c: filter coefficient file */
  2. /*                                   */
  3. /*                                                                  */
  4. /* (C) 1997  Texas Instruments                                      */
  5. /*                                                                  */
  6. #include <stdio.h>
  7. #include "mathhalf.h"
  8. #include "melp.h"
  9. /* Lowpass filter coefficient in second-order sections */
  10. /* Butterworth, 6th order, Cutoff at 1 kHz */
  11. /* matlab commands: [z,p,k]=butter(6,1000/4000);  */
  12. /*                      sos=zp2sos(z,p,k);        */
  13. /* Q13 */
  14. Shortword lpf_num[(LPF_ORD/2)*3] = {
  15.         713, 1426, 713,
  16. 798, 1600, 801,
  17. 1016, 2028, 1012};
  18. /* sign of coefficients for lpf_den is reversed */
  19. Shortword lpf_den[(LPF_ORD/2)*3] = {
  20.         -8192, 6884, -1543, 
  21. -8192, 7723, -2731, 
  22. -8192, 9793, -5657};
  23. /* Butterworth bandpass filters in second-order sections */
  24. /* matlab scrpt: ~wmlai/dod/fixedpt/bp_sos_fxp.m */
  25. /* Q13 */
  26. Shortword bpf_num[NUM_BANDS*((BPF_ORD/2)*3)] = {
  27. 285, 567, 283,        /* lowpass, cutoff at 500 Hz */
  28. 245, 491, 245,
  29.         227, 455, 228,
  30. 5001, -10001, 5001,   /* bandpass, pass band at 500-1000 Hz */
  31. 429, 857, 429,
  32. 1359, 0, -1359,
  33. 4470, -8941, 4470,    /* bandpass, pass band at 1000-2000 Hz */
  34. 1624, 3248, 1624,
  35. 2399, 0, -2399,
  36. 4470, 8941, 4470,     /* bandpass, pass band at 2000-3000 Hz */
  37. 1624, -3248, 1624,
  38. 2399, 0, -2399,
  39. 1020, -2028, 1008,    /* highpass, cutoff at 3000 Hz */
  40. 795, -1599, 805,
  41. 713, -1426, 713};
  42. /* sign of coefficients for bpf_den is reversed */
  43. Shortword bpf_den[NUM_BANDS*((BPF_ORD/2)*3)] = {
  44. -8192, 13772, -6715,      /* lowpass, cutoff at 500 Hz */
  45. -8192, 11913, -4703,
  46.         -8192, 11051, -3770,
  47. -8192, 14036, -7108,      /* bandpass, pass band at 500-1000 Hz */
  48. -8192, 10624, -6408,
  49. -8192, 11585, -5474,
  50. -8192, 9687, -6002,       /* bandpass, pass band at 1000-2000 Hz */
  51. -8192, 645, -5339,
  52. -8192, 4799, -3393,
  53. -8192, -9687, -6002,      /* bandpass, pass band at 2000-3000 Hz */
  54. -8192, -645, -5339,
  55. -8192, -4799, -3393,
  56. -8192, -9793, -5657,      /* highpass, cutoff at 3000 Hz */
  57. -8192, -7723, -2731,
  58. -8192, -6883, -1543};
  59. /* Hamming window coefficents in Q15 */
  60. Shortword win_cof[LPC_FRAME] = {
  61.         2621,
  62. 2628,
  63. 2651,
  64. 2689,
  65. 2741,
  66. 2808,
  67. 2891,
  68. 2988,
  69. 3099,
  70. 3225,
  71. 3366,
  72. 3521,
  73. 3690,
  74. 3873,
  75. 4070,
  76. 4280,
  77. 4504,
  78. 4741,
  79. 4990,
  80. 5253,
  81. 5528,
  82. 5815,
  83. 6113,
  84. 6424,
  85. 6745,
  86. 7078,
  87. 7421,
  88. 7774,
  89. 8138,
  90. 8510,
  91. 8892,
  92. 9283,
  93. 9682,
  94. 10089,
  95. 10504,
  96. 10925,
  97. 11354,
  98. 11789,
  99. 12230,
  100. 12676,
  101. 13127,
  102. 13583,
  103. 14043,
  104. 14506,
  105. 14973,
  106. 15442,
  107. 15914,
  108. 16387,
  109. 16862,
  110. 17337,
  111. 17813,
  112. 18289,
  113. 18764,
  114. 19238,
  115. 19711,
  116. 20181,
  117. 20649,
  118. 21115,
  119. 21576,
  120. 22034,
  121. 22488,
  122. 22936,
  123. 23380,
  124. 23818,
  125. 24250,
  126. 24675,
  127. 25093,
  128. 25504,
  129. 25907,
  130. 26302,
  131. 26688,
  132. 27066,
  133. 27434,
  134. 27792,
  135. 28140,
  136. 28478,
  137. 28805,
  138. 29121,
  139. 29426,
  140. 29719,
  141. 30000,
  142. 30268,
  143. 30524,
  144. 30768,
  145. 30998,
  146. 31215,
  147. 31419,
  148. 31609,
  149. 31785,
  150. 31947,
  151. 32094,
  152. 32228,
  153. 32347,
  154. 32451,
  155. 32541,
  156. 32616,
  157. 32676,
  158. 32721,
  159. 32751,
  160. 32766,
  161. 32766,
  162. 32751,
  163. 32721,
  164. 32676,
  165. 32616,
  166. 32541,
  167. 32451,
  168. 32347,
  169. 32228,
  170. 32094,
  171. 31947,
  172. 31785,
  173. 31609,
  174. 31419,
  175. 31215,
  176. 30998,
  177. 30768,
  178. 30524,
  179. 30268,
  180. 30000,
  181. 29719,
  182. 29426,
  183. 29121,
  184. 28805,
  185. 28478,
  186. 28140,
  187. 27792,
  188. 27434,
  189. 27066,
  190. 26688,
  191. 26302,
  192. 25907,
  193. 25504,
  194. 25093,
  195. 24675,
  196. 24250,
  197. 23818,
  198. 23380,
  199. 22936,
  200. 22488,
  201. 22034,
  202. 21576,
  203. 21115,
  204. 20649,
  205. 20181,
  206. 19711,
  207. 19238,
  208. 18764,
  209. 18289,
  210. 17813,
  211. 17337,
  212. 16862,
  213. 16387,
  214. 15914,
  215. 15442,
  216. 14973,
  217. 14506,
  218. 14043,
  219. 13583,
  220. 13127,
  221. 12676,
  222. 12230,
  223. 11789,
  224. 11354,
  225. 10925,
  226. 10504,
  227. 10089,
  228. 9682,
  229. 9283,
  230. 8892,
  231. 8510,
  232. 8138,
  233. 7774,
  234. 7421,
  235. 7078,
  236. 6745,
  237. 6424,
  238. 6113,
  239. 5815,
  240. 5528,
  241. 5253,
  242. 4990,
  243. 4741,
  244. 4504,
  245. 4280,
  246. 4070,
  247. 3873,
  248. 3690,
  249. 3521,
  250. 3366,
  251. 3225,
  252. 3099,
  253. 2988,
  254. 2891,
  255. 2808,
  256. 2741,
  257. 2689,
  258. 2651,
  259. 2628,
  260. 2621};
  261. /* Bandpass filter coeffients */
  262. Shortword bp_cof[NUM_BANDS][MIX_ORD+1] = {
  263. {
  264.         0,        /* lowpass, cutoff at 500 Hz */
  265.       -50,
  266.      -115,
  267.      -185,
  268.      -245,
  269.      -274,
  270.      -253,
  271.      -165,
  272.         0,
  273.       242,
  274.       548,
  275.       897,
  276.      1257,
  277.      1590,
  278.      1860,
  279.      2036,
  280.      2097,
  281.      2036,
  282.      1860,
  283.      1590,
  284.      1257,
  285.       897,
  286.       548,
  287.       242,
  288.         0,
  289.      -165,
  290.      -253,
  291.      -274,
  292.      -245,
  293.      -185,
  294.      -115,
  295.       -50,
  296. 0
  297. },
  298. {
  299.         0,      /* bandpass, pass band at 500-1000 Hz */
  300.       -41,
  301.       -46,
  302.        42,
  303.       238,
  304.       470,
  305.       593,
  306.       456,
  307.         0,
  308.      -668,
  309.     -1286,
  310.     -1539,
  311.     -1221,
  312.      -362,
  313.       748,
  314.      1677,
  315.      2037,
  316.      1677,
  317.       748,
  318.      -362,
  319.     -1221,
  320.     -1539,
  321.     -1286,
  322.      -668,
  323.         0,
  324.       456,
  325.       593,
  326.       470,
  327.       238,
  328.        42,
  329.       -46,
  330.       -41,
  331.         0
  332. },
  333. {
  334.         0,      /* bandpass, pass band at 1000-2000 Hz */
  335.       -38,
  336.       162,
  337.       342,
  338.         0,
  339.      -506,
  340.      -357,
  341.       126,
  342.         0,
  343.      -185,
  344.       774,
  345.      1656,
  346.         0,
  347.     -2933,
  348.     -2627,
  349.      1556,
  350.      4188,
  351.      1556,
  352.     -2627,
  353.     -2933,
  354.         0,
  355.      1656,
  356.       774,
  357.      -185,
  358.         0,
  359.       126,
  360.      -357,
  361.      -506,
  362.         0,
  363.       342,
  364.       162,
  365.       -38,
  366.         0
  367. },
  368. {
  369.         0,      /* bandpass, pass band at 2000-3000 Hz */
  370.        38,
  371.       162,
  372.      -342,
  373.         0,
  374.       506,
  375.      -357,
  376.      -126,
  377.         0,
  378.       185,
  379.       774,
  380.     -1656,
  381.         0,
  382.      2933,
  383.     -2627,
  384.     -1556,
  385.      4188,
  386.     -1556,
  387.     -2627,
  388.      2933,
  389.         0,
  390.     -1656,
  391.       774,
  392.       185,
  393.         0,
  394.      -126,
  395.      -357,
  396.       506,
  397.         0,
  398.      -342,
  399.       162,
  400.        38,
  401. 0
  402. },
  403. {
  404.         0,      /* highpass, cutoff at 3000 Hz */
  405.        91,
  406.      -161,
  407.       140,
  408.         0,
  409.      -208,
  410.       354,
  411.      -302,
  412.         0,
  413.       442,
  414.      -768,
  415.       680,
  416.         0,
  417.     -1205,
  418.      2604,
  419.     -3725,
  420.      4153,
  421.     -3725,
  422.      2604,
  423.     -1205,
  424.         0,
  425.       680,
  426.      -768,
  427.       442,
  428.         0,
  429.      -302,
  430.       354,
  431.      -208,
  432.         0,
  433.       140,
  434.      -161,
  435.        91,
  436.         0}};
  437. /* Triangle pulse dispersion filter */
  438. Shortword disp_cof[DISP_ORD+1] = {
  439.     -5670,
  440.      -461,
  441.       401,
  442.      3724,
  443.        65,
  444.         0,
  445.      1484,
  446.       -30,
  447.       -34,
  448.       836,
  449.     -2077,
  450.       -40,
  451.       463,
  452.      7971,
  453.      -579,
  454.        -6,
  455.      1923,
  456.      -107,
  457.       199,
  458.       902,
  459.     -1098,
  460.       197,
  461.       471,
  462.     27150,
  463.        11,
  464.      -118,
  465.      2406,
  466.      -170,
  467.       425,
  468.       960,
  469.      -652,
  470.       399,
  471.       387,
  472.    -12755,
  473.       236,
  474.      -378,
  475.      2761,
  476.      -117,
  477.       705,
  478.       973,
  479.      -409,
  480.       608,
  481.        25,
  482.     -2539,
  483.       408,
  484.      -892,
  485.      2381,
  486.       155,
  487.      1156,
  488.       876,
  489.      -244,
  490.       846,
  491.         6,
  492.      -926,
  493.       564,
  494.     -1967,
  495.     -2319,
  496.       300,
  497.      1993,
  498.       592,
  499.      -104,
  500.      1129,
  501.         9,
  502.      -345,
  503.       710};