Mercurial > hg > audiostuff
comparison spandsp-0.0.6pre17/src/spandsp/g168models.h @ 4:26cd8f1ef0b1
import spandsp-0.0.6pre17
| author | Peter Meerwald <pmeerw@cosy.sbg.ac.at> | 
|---|---|
| date | Fri, 25 Jun 2010 15:50:58 +0200 | 
| parents | |
| children | 
   comparison
  equal
  deleted
  inserted
  replaced
| 3:c6c5a16ce2f2 | 4:26cd8f1ef0b1 | 
|---|---|
| 1 /* | |
| 2 * SpanDSP - a series of DSP components for telephony | |
| 3 * | |
| 4 * g168models.h - line models for echo cancellation tests against the G.168 | |
| 5 * spec. | |
| 6 * | |
| 7 * Written by Steve Underwood <steveu@coppice.org> | |
| 8 * | |
| 9 * Copyright (C) 2001 Steve Underwood | |
| 10 * | |
| 11 * All rights reserved. | |
| 12 * | |
| 13 * This program is free software; you can redistribute it and/or modify | |
| 14 * it under the terms of the GNU Lesser General Public License version 2.1, | |
| 15 * as published by the Free Software Foundation. | |
| 16 * | |
| 17 * This program is distributed in the hope that it will be useful, | |
| 18 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 20 * GNU Lesser General Public License for more details. | |
| 21 * | |
| 22 * You should have received a copy of the GNU Lesser General Public | |
| 23 * License along with this program; if not, write to the Free Software | |
| 24 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |
| 25 * | |
| 26 * $Id: g168models.h,v 1.9 2008/08/29 09:28:13 steveu Exp $ | |
| 27 */ | |
| 28 | |
| 29 /*! \file */ | |
| 30 | |
| 31 #if !defined(_SPANDSP_G168MODELS_H_) | |
| 32 #define _SPANDSP_G168MODELS_H_ | |
| 33 | |
| 34 /*! \page g168_test_data_page The test data from the G.168 specification | |
| 35 */ | |
| 36 | |
| 37 /*! | |
| 38 The line model from section D.2 of G.168. | |
| 39 | |
| 40 These are the coefficients for the line simulation model defined in | |
| 41 section D.2 of G.168. It may be used with the fir32_xxx | |
| 42 routines to build a line simulator. | |
| 43 */ | |
| 44 const int32_t line_model_d2_coeffs[] = | |
| 45 { | |
| 46 -436, -829, -2797, -4208, -17968, -11215, 46150, 34480, | |
| 47 -10427, 9049, -1309, -6320, 390, -8191, -1751, -6051, | |
| 48 -3796, -4055, -3948, -2557, -3372, -1808, -2259, -1300, | |
| 49 -1098, -618, -340, -61, 323, 419, 745, 716, | |
| 50 946, 880, 1014, 976, 1033, 1091, 1053, 1042, | |
| 51 794, 831, 899, 716, 390, 313, 304, 304, | |
| 52 73, -119, -109, -176, -359, -407, -512, -580, | |
| 53 -704, -618, -685, -791, -772, -820, -839, -724 | |
| 54 }; | |
| 55 #define LINE_MODEL_D2_GAIN 1.39E-5f | |
| 56 | |
| 57 /*! | |
| 58 The line model from section D.3 of G.168. | |
| 59 | |
| 60 These are the coefficients for the line simulation model defined in | |
| 61 section D.3 of G.168. It may be used with the fir32_xxx | |
| 62 routines to build a line simulator. | |
| 63 */ | |
| 64 const int32_t line_model_d3_coeffs[] = | |
| 65 { | |
| 66 -381, 658, 1730, -51, -3511, -1418, 7660, 8861, | |
| 67 -8106, -21370, -5307, 23064, 24020, 1020, -12374, -16296, | |
| 68 -19524, -7480, 13509, 17115, 13952, 13952, 97, -9326, | |
| 69 -9046, -15208, -9853, -3858, -1979, 6029, 5616, 7214, | |
| 70 6820, 3935, 3919, 921, 1316, -693, -759, -1517, | |
| 71 -2176, -2028, -2654, -1814, -2077, -1468, -1221, -842, | |
| 72 -463, -298, -68, 64, 493, 723, 789, 954, | |
| 73 756, 839, 872, 1020, 789, 822, 558, 658, | |
| 74 476, 377, 377, 262, 97, -68, -183, -232, | |
| 75 -331, -347, -430, -314, -430, -463, -463, -414, | |
| 76 -381, -479, -479, -512, -479, -397, -430, -397, | |
| 77 -298, -265, -249, -216, -249, -265, -166, -232 | |
| 78 }; | |
| 79 #define LINE_MODEL_D3_GAIN 1.44E-5f | |
| 80 | |
| 81 /*! | |
| 82 The line model from section D.4 of G.168. | |
| 83 | |
| 84 These are the coefficients for the line simulation model defined in | |
| 85 section D.4 of G.168. It may be used with the fir32_xxx | |
| 86 routines to build a line simulator. | |
| 87 */ | |
| 88 const int32_t line_model_d4_coeffs[] = | |
| 89 { | |
| 90 -448, -436, 2230, 2448, -4178, -7050, 5846, 18581, | |
| 91 2322, -26261, -16249, 21637, 25649, -2267, -10311, -4693, | |
| 92 -12690, -7428, 14164, 13467, 4438, 8627, 456, -11879, | |
| 93 -6352, -5104, -7496, 3271, 6566, 4277, 11131, 7562, | |
| 94 1475, 3728, -3525, -7301, -3101, -9269, -6146, -2553, | |
| 95 -6272, 811, 124, 788, 5147, 2172, 5387, 4598, | |
| 96 3535, 4004, 2311, 2150, 1017, 330, -139, -573, | |
| 97 -1100, -1157, -1180, -1455, -1123, -1386, -1123, -1066, | |
| 98 -1020, -1100, -1008, -1077, -1088, -917, -917, -963, | |
| 99 -814, -871, -734, -642, -562, -356, -379, -345, | |
| 100 -230, -233, -333, -356, -390, -310, -265, -368, | |
| 101 -310, -310, -390, -482, -459, -482, -551, -573 | |
| 102 }; | |
| 103 #define LINE_MODEL_D4_GAIN 1.52E-5f | |
| 104 | |
| 105 /*! | |
| 106 The line model from section D.5 of G.168. | |
| 107 | |
| 108 These are the coefficients for the line simulation model defined in | |
| 109 section D.5 of G.168. It may be used with the fir32_xxx | |
| 110 routines to build a line simulator. | |
| 111 */ | |
| 112 const int32_t line_model_d5_coeffs[] = | |
| 113 { | |
| 114 160, 312, -241, -415, 897, 908, -1326, -1499, | |
| 115 2405, 3347, -3624, -7733, 4041, 14484, -1477, -21739, | |
| 116 -4470, 25356, 11458, -19696, -11800, 5766, 789, 6633, | |
| 117 14624, -6975, -17156, -187, 149, 1515, 14907, 4345, | |
| 118 -7128, -2757, -10185, -7083, 6850, 3944, 6969, 8694, | |
| 119 -4068, -3852, -5793, -9371, 453, 1060, 3965, 9463, | |
| 120 2393, 2784, -892, -7366, -3376, -5847, -2399, 3011, | |
| 121 1537, 6623, 4205, 1602, 1592, -4752, -3646, -5207, | |
| 122 -5577, -501, -1174, 4041, 5647, 4628, 7252, 2123, | |
| 123 2654, -881, -4113, -3244, -7289, -3830, -4600, -2508, | |
| 124 431, -144, 4184, 2372, 4617, 3576, 2382, 2839, | |
| 125 -404, 539, -1803, -1401, -1705, -2269, -783, -1608, | |
| 126 -220, -306, 257, 615, 225, 561, 8, 344, | |
| 127 127, -57, 182, 41, 203, -111, 95, -79, | |
| 128 30, 84, -13, -68, -241, -68, -24, 19, | |
| 129 -57, -24, 30, -68, 84, -155, -68, 19 | |
| 130 }; | |
| 131 #define LINE_MODEL_D5_GAIN 1.77E-5f | |
| 132 | |
| 133 /*! | |
| 134 The line model from section D.6 of G.168. | |
| 135 | |
| 136 These are the coefficients for the line simulation model defined in | |
| 137 section D.6 of G.168. It may be used with the fir32_xxx | |
| 138 routines to build a line simulator. | |
| 139 */ | |
| 140 const int32_t line_model_d6_coeffs[] = | |
| 141 { | |
| 142 293, 268, 475, 460, 517, 704, 581, 879, | |
| 143 573, 896, 604, 787, 561, 538, 440, 97, | |
| 144 265, -385, 20, -938, -523, -1438, -1134, -1887, | |
| 145 -1727, -1698, -4266, -22548, -43424, 2743, 25897, 7380, | |
| 146 21499, 11983, 10400, 11667, 3889, 7241, 925, 2018, | |
| 147 -821, -2068, -2236, -4283, -3406, -5022, -4039, -4842, | |
| 148 -4104, -4089, -3582, -2978, -2734, -1805, -1608, -645, | |
| 149 -495, 279, 471, 947, 1186, 1438, 1669, 1640, | |
| 150 1901, 1687, 1803, 1543, 1566, 1342, 1163, 963, | |
| 151 733, 665, 323, 221, -14, -107, -279, -379, | |
| 152 -468, -513, -473, -588, -612, -652, -616, -566, | |
| 153 -515, -485, -404, -344, -290, -202, -180, -123 | |
| 154 }; | |
| 155 #define LINE_MODEL_D6_GAIN 9.33E-6f | |
| 156 | |
| 157 /*! | |
| 158 The line model from section D.7 of G.168. | |
| 159 | |
| 160 These are the coefficients for the line simulation model defined in | |
| 161 section D.8 of G.168. It may be used with the fir32_xxx | |
| 162 routines to build a line simulator. | |
| 163 */ | |
| 164 const int32_t line_model_d7_coeffs[] = | |
| 165 { | |
| 166 29, 109, -83, 198, -294, -135, -415, -202, | |
| 167 -444, -337, -313, -450, -105, -503, 145, -490, | |
| 168 267, -231, 340, 77, 343, 783, 158, 1341, | |
| 169 195, 1798, 344, 1845, 629, 1604, 1182, 940, | |
| 170 5163, 19522, 8421, -50953, -9043, 18046, -13553, 13336, | |
| 171 -3471, -107, 1788, -7409, 2469, -7994, 490, -3860, | |
| 172 -837, 490, -636, 3682, 1141, 5019, 2635, 5025, | |
| 173 3946, 4414, 4026, 3005, 3380, 1616, 2007, 158, | |
| 174 388, -1198, -1117, -2134, -2547, -2589, -3310, -2778, | |
| 175 -3427, -2779, -3116, -2502, -2399, -1956, -1539, -1239, | |
| 176 -570, -377, 251, 331, 964, 1177, 1449, 1564, | |
| 177 1724, 1871, 1767, 1802, 1630, 1632, 1379, 1271, | |
| 178 1063, 856, 711, 482, 289, 54, -137, -321, | |
| 179 -490, -638, -764, -836, -800, -859, -838, -837, | |
| 180 -834, -740, -673, -581, -493, -436, -327, -201 | |
| 181 }; | |
| 182 #define LINE_MODEL_D7_GAIN 1.51E-5f | |
| 183 | |
| 184 /*! | |
| 185 The line model from section D.8 of G.168. | |
| 186 | |
| 187 These are the coefficients for the line simulation model defined in | |
| 188 section D.8 of G.168. It may be used with the fir32_xxx | |
| 189 routines to build a line simulator. | |
| 190 */ | |
| 191 const int32_t line_model_d8_coeffs[] = | |
| 192 { | |
| 193 258, -111, 337, -319, 347, -434, 192, -450, | |
| 194 -108, -343, -596, -177, -1187, -52, -1781, -147, | |
| 195 -1959, -326, -1601, -1389, -13620, -720, 33818, -10683, | |
| 196 -6742, 12489, -9862, 8950, -1574, 758, 3526, -3118, | |
| 197 2421, -8966, -4901, 11385, 18072, -14410, -7473, 19836, | |
| 198 -16854, -3115, 9483, -17799, 7399, -4342, -7415, 7929, | |
| 199 -10726, 6239, -2526, -1317, 5345, -4565, 6868, -2195, | |
| 200 3425, 1969, -109, 3963, -1275, 3087, -892, 1239, | |
| 201 2, -427, 596, -1184, 551, -1244, 141, -743, | |
| 202 -415, -372, -769, -183, -785, -270, -659, -377, | |
| 203 -523, -325, -245, -255, -60, 35, 218, 149, | |
| 204 340, 233, 365, 303, 251, 230, 209, 179 | |
| 205 }; | |
| 206 #define LINE_MODEL_D8_GAIN 2.33E-5f | |
| 207 | |
| 208 /*! | |
| 209 The line model from section D.9 of G.168. | |
| 210 | |
| 211 These are the coefficients for the line simulation model defined in | |
| 212 section D.9 of G.168. It may be used with the fir32_xxx | |
| 213 routines to build a line simulator. | |
| 214 */ | |
| 215 const int32_t line_model_d9_coeffs[] = | |
| 216 { | |
| 217 80, 31, 4, 42, 42, -61, -81, -64, | |
| 218 121, -102, -26, 1002, -9250, -22562, 39321, 35681, | |
| 219 -35289, 25312, -1457, -229, 15659, -6786, 16791, 3860, | |
| 220 2239, -28730, -11885, 33871, -176, -16421, 18173, -9669, | |
| 221 -10163, 9941, -19365, 3592, -5907, -10257, 5336, -12933, | |
| 222 4348, -4802, -1791, 3035, -4433, 5553, -2596, 3992, | |
| 223 1255, 1450, 4079, 324, 4340, 1059, 3083, 1917, | |
| 224 1756, 2478, 1027, 1871, 845, 1284, 813, 806, | |
| 225 869, 471, 646, 438, 449, 432, 473, 394, | |
| 226 452, 538, 717, 723, 850, 756, 753, 899, | |
| 227 555, 669, 619, 500, 650, 615, 516, 492, | |
| 228 427, 291, 356, 147, 107, -50, -88, -59, | |
| 229 -238, -165, -183 | |
| 230 }; | |
| 231 #define LINE_MODEL_D9_GAIN 1.33E-5f | |
| 232 | |
| 233 /*! | |
| 234 The filter coefficients for the bandpass filter specified for level measurements | |
| 235 in section 6.4.1.2.1 of G.168. | |
| 236 */ | |
| 237 const float level_measurement_bp_coeffs[] = | |
| 238 { | |
| 239 0.0000, 0.0006, 0.0005, 0.0004, 0.0011, | |
| 240 0.0000, 0.0015, -0.0003, 0.0012, -0.0002, | |
| 241 0.0000, 0.0002, -0.0020, 0.0005, -0.0040, | |
| 242 0.0000, -0.0047, -0.0019, -0.0033, -0.0047, | |
| 243 0.0000, -0.0068, 0.0036, -0.0057, 0.0054, | |
| 244 0.0000, 0.0044, 0.0095, 0.0017, 0.0188, | |
| 245 0.0000, 0.0225, 0.0024, 0.0163, 0.0092, | |
| 246 0.0000, 0.0164, -0.0210, 0.0161, -0.0375, | |
| 247 0.0000, -0.0406, -0.0357, -0.0267, -0.0871, | |
| 248 0.0000, -0.1420, 0.0289, -0.1843, 0.0475, | |
| 249 0.8006, 0.0475, -0.1843, 0.0289, -0.1420, | |
| 250 0.0000, -0.0871, -0.0267, -0.0357, -0.0406, | |
| 251 0.0000, -0.0375, 0.0161, -0.0210, 0.0164, | |
| 252 0.0000, 0.0092, 0.0163, 0.0024, 0.0225, | |
| 253 0.0000, 0.0188, 0.0017, 0.0095, 0.0044, | |
| 254 0.0000, 0.0054, -0.0057, 0.0036, -0.0068, | |
| 255 0.0000, -0.0047, -0.0033, -0.0019, -0.0047, | |
| 256 0.0000, -0.0040, 0.0005, -0.0020, 0.0002, | |
| 257 0.0000, -0.0002, 0.0012, -0.0003, 0.0015, | |
| 258 0.0000, 0.0011, 0.0004, 0.0005, 0.0006, | |
| 259 0.0000 | |
| 260 }; | |
| 261 | |
| 262 /*! | |
| 263 The composite source signal "voiced" section from section C.1 of G.168. | |
| 264 */ | |
| 265 const int css_c1[] = | |
| 266 { | |
| 267 -155, 276, 517, 578, 491, 302, 86, -103, | |
| 268 -207, -198, 60, 190, 543, 948, 1362, 1741, | |
| 269 2043, 2276, 2422, 2500, 2552, 2595, 2655, 2758, | |
| 270 2896, 3060, 3224, 3370, 3500, 3569, 3603, 3603, | |
| 271 3595, 3586, 3595, 3638, 3724, 3819, 3922, 4000, | |
| 272 4043, 4034, 3974, 3862, 3724, 3577, 3439, 3336, | |
| 273 3267, 3224, 3198, 3172, 3129, 3043, 2914, 2750, | |
| 274 2560, 2353, 2155, 1991, 1853, 1750, 1672, 1603, | |
| 275 1534, 1440, 1310, 1146, 965, 776, 603, 448, | |
| 276 345, 276, 250, 250, 267, 267, 241, 190, | |
| 277 103, -9, -138, -267, -388, -491, -569, -638, | |
| 278 -698, -759, -813, -888, -957, -1034, -1103, -1146, | |
| 279 -1181, -1190, -1198, -1215, -1259, -1327, -1457, -1629, | |
| 280 -1853, -2121, -2414, -2707, -3017, -3319, -3612, -3913, | |
| 281 -4224, -4560, -4922, -5301, -5715, -6137, -6560, -6948, | |
| 282 -7301, -7568, -7732, -7758, -7620, -7310, -6810, -6155, | |
| 283 -5344, -4439, -3474, -2508, -1595, -802 | |
| 284 }; | |
| 285 | |
| 286 /*! | |
| 287 The composite source signal "voiced" section from section C.3 of G.168. | |
| 288 */ | |
| 289 const int css_c3[] = | |
| 290 { | |
| 291 -198, -112, -9, 103, 233, 388, 543, 724, | |
| 292 896, 1060, 1233, 1388, 1517, 1638, 1747, 1810, | |
| 293 1845, 1845, 1802, 1707, 1569, 1379, 1146, 871, | |
| 294 560, 233, -121, -491, -871, -1250, -1638, -2043, | |
| 295 -2465, -2896, -3345, -3819, -4310, -4810, -5319, -5836, | |
| 296 -6353, -6853, -7353, -7836, -8292, -8715, -9077, -9370, | |
| 297 -9542, -9542, -9361, -8956, -8327, -7465, -6396, -5163, | |
| 298 -3827, -2448, -1103, 155, 1293, 2241, 3034, 3655, | |
| 299 4138, 4517, 4827, 5094, 5344, 5594, 5827, 6043, | |
| 300 6215, 6344, 6413, 6422, 6379, 6310, 6215, 6120, | |
| 301 6051, 6000, 5991, 5991, 6000, 6008, 5991, 5939, | |
| 302 5853, 5715, 5560, 5387, 5215, 5043, 4879, 4732, | |
| 303 4586, 4439, 4276, 4086, 3870, 3629, 3370, 3086, | |
| 304 2801, 2534, 2267, 2034, 1819, 1612, 1422, 1224, | |
| 305 1026, 819, 603, 388, 181, 9, -181, -328, | |
| 306 -448, -543, -629, -707, -784, -871, -948, -1026, | |
| 307 -1112, -1181, -1241, -1276, -1293, -1302, -1293, -1267, | |
| 308 -1250, -1233, -1224, -1224, -1224, -1224, -1215, -1198, | |
| 309 -1172, -1129, -1077, -1026, -974, -922, -888, -871, | |
| 310 -845, -828, -810, -793, -767, -741, -698, -672, | |
| 311 -638, -603, -595, -586, -595, -603, -621, -629, | |
| 312 -938, -638, -638, -638, -638, -638, -647, -664, | |
| 313 -690, -724, -767, -793, -819, -845, -853, -871, | |
| 314 -879, -888, -896, -922, -948, -974, -1009, -1026, | |
| 315 -1052, -1069, -1077, -1069, -1060, -1060, -1052, -1043, | |
| 316 -1043, -1052, -1060, -1060, -1060, -1052, -1034, -1017, | |
| 317 -991, -957, -931, -905, -888, -862, -845, -819, | |
| 318 -793, -767, -724, -672, -621, -560, -509, -457, | |
| 319 -397, -345, -276, -207, -112 | |
| 320 }; | |
| 321 | |
| 322 /*! | |
| 323 From section 6.4.2.7 of G.168 - Test No. 6 Non-divergence on narrow-band signals. | |
| 324 These tones and tone pairs are each applied for 5 seconds. | |
| 325 */ | |
| 326 const int tones_6_4_2_7[][2] = | |
| 327 { | |
| 328 { 697, 0}, | |
| 329 { 941, 0}, | |
| 330 {1336, 0}, | |
| 331 {1633, 0}, | |
| 332 { 697, 1209}, | |
| 333 { 770, 1336}, | |
| 334 { 852, 1477}, | |
| 335 { 941, 1633}, | |
| 336 { 0, 0} | |
| 337 }; | |
| 338 | |
| 339 #endif | |
| 340 /*- End of file ------------------------------------------------------------*/ | 
