g168models.h

Go to the documentation of this file.
00001 /*
00002  * SpanDSP - a series of DSP components for telephony
00003  *
00004  * g168models.h - line models for echo cancellation tests against the G.168
00005  *                spec.
00006  *
00007  * Written by Steve Underwood <steveu@coppice.org>
00008  *
00009  * Copyright (C) 2001 Steve Underwood
00010  *
00011  * All rights reserved.
00012  *
00013  * This program is free software; you can redistribute it and/or modify
00014  * it under the terms of the GNU Lesser General Public License version 2.1,
00015  * as published by the Free Software Foundation.
00016  *
00017  * This program is distributed in the hope that it will be useful,
00018  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00019  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00020  * GNU Lesser General Public License for more details.
00021  *
00022  * You should have received a copy of the GNU Lesser General Public
00023  * License along with this program; if not, write to the Free Software
00024  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00025  */
00026 
00027 /*! \file */
00028 
00029 #if !defined(_SPANDSP_G168MODELS_H_)
00030 #define _SPANDSP_G168MODELS_H_
00031 
00032 /*! \page g168_test_data_page The test data from the G.168 specification
00033 */
00034 
00035 /*!
00036     The line model from section D.2 of G.168.
00037 
00038     These are the coefficients for the line simulation model defined in
00039     section D.2 of G.168. It may be used with the fir32_xxx
00040     routines to build a line simulator.
00041 */
00042 const int32_t line_model_d2_coeffs[] =
00043 {
00044       -436,   -829,  -2797,  -4208, -17968, -11215,  46150,  34480,
00045     -10427,   9049,  -1309,  -6320,    390,  -8191,  -1751,  -6051,
00046      -3796,  -4055,  -3948,  -2557,  -3372,  -1808,  -2259,  -1300, 
00047      -1098,   -618,   -340,    -61,    323,    419,    745,    716,
00048        946,    880,   1014,    976,   1033,   1091,   1053,   1042,
00049        794,    831,    899,    716,    390,    313,    304,    304, 
00050         73,   -119,   -109,   -176,   -359,   -407,   -512,   -580,
00051       -704,   -618,   -685,   -791,   -772,   -820,   -839,   -724  
00052 };
00053 #define LINE_MODEL_D2_GAIN      1.39E-5f
00054 
00055 /*!
00056     The line model from section D.3 of G.168.
00057 
00058     These are the coefficients for the line simulation model defined in
00059     section D.3 of G.168. It may be used with the fir32_xxx
00060     routines to build a line simulator.
00061 */
00062 const int32_t line_model_d3_coeffs[] =
00063 {
00064       -381,    658,   1730,    -51,  -3511,  -1418,   7660,   8861,
00065      -8106, -21370,  -5307,  23064,  24020,   1020, -12374, -16296,
00066     -19524,  -7480,  13509,  17115,  13952,  13952,     97,  -9326,
00067      -9046, -15208,  -9853,  -3858,  -1979,   6029,   5616,   7214,
00068       6820,   3935,   3919,    921,   1316,   -693,   -759,  -1517,
00069      -2176,  -2028,  -2654,  -1814,  -2077,  -1468,  -1221,   -842,
00070       -463,   -298,    -68,     64,    493,    723,    789,    954,
00071        756,    839,    872,   1020,    789,    822,    558,    658,
00072        476,    377,    377,    262,     97,    -68,   -183,   -232,
00073       -331,   -347,   -430,   -314,   -430,   -463,   -463,   -414,
00074       -381,   -479,   -479,   -512,   -479,   -397,   -430,   -397,
00075       -298,   -265,   -249,   -216,   -249,   -265,   -166,   -232
00076 };
00077 #define LINE_MODEL_D3_GAIN      1.44E-5f
00078 
00079 /*!
00080     The line model from section D.4 of G.168.
00081 
00082     These are the coefficients for the line simulation model defined in
00083     section D.4 of G.168. It may be used with the fir32_xxx
00084     routines to build a line simulator.
00085 */
00086 const int32_t line_model_d4_coeffs[] =
00087 {
00088       -448,   -436,   2230,   2448,  -4178,  -7050,   5846,  18581,
00089       2322, -26261, -16249,  21637,  25649,  -2267, -10311,  -4693,
00090     -12690,  -7428,  14164,  13467,   4438,   8627,    456, -11879,
00091      -6352,  -5104,  -7496,   3271,   6566,   4277,  11131,   7562,
00092       1475,   3728,  -3525,  -7301,  -3101,  -9269,  -6146,  -2553,
00093      -6272,    811,    124,    788,   5147,   2172,   5387,   4598,
00094       3535,   4004,   2311,   2150,   1017,    330,   -139,   -573,
00095      -1100,  -1157,  -1180,  -1455,  -1123,  -1386,  -1123,  -1066,
00096      -1020,  -1100,  -1008,  -1077,  -1088,   -917,   -917,   -963,
00097       -814,   -871,   -734,   -642,   -562,   -356,   -379,   -345,
00098       -230,   -233,   -333,   -356,   -390,   -310,   -265,   -368,
00099       -310,   -310,   -390,   -482,   -459,   -482,   -551,   -573
00100 };
00101 #define LINE_MODEL_D4_GAIN      1.52E-5f
00102 
00103 /*!
00104     The line model from section D.5 of G.168.
00105 
00106     These are the coefficients for the line simulation model defined in
00107     section D.5 of G.168. It may be used with the fir32_xxx
00108     routines to build a line simulator.
00109 */
00110 const int32_t line_model_d5_coeffs[] =
00111 {
00112        160,    312,   -241,   -415,    897,    908,  -1326,  -1499,
00113       2405,   3347,  -3624,  -7733,   4041,  14484,  -1477, -21739,
00114      -4470,  25356,  11458, -19696, -11800,   5766,    789,   6633,
00115      14624,  -6975, -17156,   -187,    149,   1515,  14907,   4345,
00116      -7128,  -2757, -10185,  -7083,   6850,   3944,   6969,   8694,
00117      -4068,  -3852,  -5793,  -9371,    453,   1060,   3965,   9463, 
00118       2393,   2784,   -892,  -7366,  -3376,  -5847,  -2399,   3011,
00119       1537,   6623,   4205,   1602,   1592,  -4752,  -3646,  -5207,
00120      -5577,   -501,  -1174,   4041,   5647,   4628,   7252,   2123, 
00121       2654,   -881,  -4113,  -3244,  -7289,  -3830,  -4600,  -2508,
00122        431,   -144,   4184,   2372,   4617,   3576,   2382,   2839,
00123       -404,    539,  -1803,  -1401,  -1705,  -2269,   -783,  -1608, 
00124       -220,   -306,    257,    615,    225,    561,      8,    344,
00125        127,    -57,    182,     41,    203,   -111,     95,    -79,
00126         30,     84,    -13,    -68,   -241,    -68,    -24,     19, 
00127        -57,    -24,     30,    -68,     84,   -155,    -68,     19
00128 };
00129 #define LINE_MODEL_D5_GAIN      1.77E-5f
00130 
00131 /*!
00132     The line model from section D.6 of G.168.
00133 
00134     These are the coefficients for the line simulation model defined in
00135     section D.6 of G.168. It may be used with the fir32_xxx
00136     routines to build a line simulator.
00137 */
00138 const int32_t line_model_d6_coeffs[] =
00139 {
00140        293,    268,    475,    460,    517,    704,    581,    879,
00141        573,    896,    604,    787,    561,    538,    440,     97,
00142        265,   -385,     20,   -938,   -523,  -1438,  -1134,  -1887,
00143      -1727,  -1698,  -4266, -22548, -43424,   2743,  25897,   7380,
00144      21499,  11983,  10400,  11667,   3889,   7241,    925,   2018,
00145       -821,  -2068,  -2236,  -4283,  -3406,  -5022,  -4039,  -4842,
00146      -4104,  -4089,  -3582,  -2978,  -2734,  -1805,  -1608,   -645,
00147       -495,    279,    471,    947,   1186,   1438,   1669,   1640,
00148       1901,   1687,   1803,   1543,   1566,   1342,   1163,    963, 
00149        733,    665,    323,    221,    -14,   -107,   -279,   -379,
00150       -468,   -513,   -473,   -588,   -612,   -652,   -616,   -566,
00151       -515,   -485,   -404,   -344,   -290,   -202,   -180,   -123
00152 };
00153 #define LINE_MODEL_D6_GAIN      9.33E-6f
00154 
00155 /*!
00156     The line model from section D.7 of G.168.
00157 
00158     These are the coefficients for the line simulation model defined in
00159     section D.8 of G.168. It may be used with the fir32_xxx
00160     routines to build a line simulator.
00161 */
00162 const int32_t line_model_d7_coeffs[] =
00163 {
00164         29,    109,    -83,    198,   -294,   -135,   -415,   -202,
00165       -444,   -337,   -313,   -450,   -105,   -503,    145,   -490,
00166        267,   -231,    340,     77,    343,    783,    158,   1341,
00167        195,   1798,    344,   1845,    629,   1604,   1182,    940,
00168       5163,  19522,   8421, -50953,  -9043,  18046, -13553,  13336,
00169      -3471,   -107,   1788,  -7409,   2469,  -7994,    490,  -3860,
00170       -837,    490,   -636,   3682,   1141,   5019,   2635,   5025,
00171       3946,   4414,   4026,   3005,   3380,   1616,   2007,    158,
00172        388,  -1198,  -1117,  -2134,  -2547,  -2589,  -3310,  -2778,
00173      -3427,  -2779,  -3116,  -2502,  -2399,  -1956,  -1539,  -1239,
00174       -570,   -377,    251,    331,    964,   1177,   1449,   1564, 
00175       1724,   1871,   1767,   1802,   1630,   1632,   1379,   1271,
00176       1063,    856,    711,    482,    289,     54,   -137,   -321,
00177       -490,   -638,   -764,   -836,   -800,   -859,   -838,   -837,
00178       -834,   -740,   -673,   -581,   -493,   -436,   -327,   -201
00179 };
00180 #define LINE_MODEL_D7_GAIN      1.51E-5f
00181 
00182 /*!
00183     The line model from section D.8 of G.168.
00184 
00185     These are the coefficients for the line simulation model defined in
00186     section D.8 of G.168. It may be used with the fir32_xxx
00187     routines to build a line simulator.
00188 */
00189 const int32_t line_model_d8_coeffs[] =
00190 {
00191        258,   -111,    337,   -319,    347,   -434,    192,   -450,
00192       -108,   -343,   -596,   -177,  -1187,    -52,  -1781,   -147,
00193      -1959,   -326,  -1601,  -1389, -13620,   -720,  33818, -10683,
00194      -6742,  12489,  -9862,   8950,  -1574,    758,   3526,  -3118,
00195       2421,  -8966,  -4901,  11385,  18072, -14410,  -7473,  19836,
00196     -16854,  -3115,   9483, -17799,   7399,  -4342,  -7415,   7929,
00197     -10726,   6239,  -2526,  -1317,   5345,  -4565,   6868,  -2195,
00198       3425,   1969,   -109,   3963,  -1275,   3087,   -892,   1239,
00199          2,   -427,    596,  -1184,    551,  -1244,    141,   -743, 
00200       -415,   -372,   -769,   -183,   -785,   -270,   -659,   -377,
00201       -523,   -325,   -245,   -255,    -60,     35,    218,    149,
00202        340,    233,    365,    303,    251,    230,    209,    179
00203 };
00204 #define LINE_MODEL_D8_GAIN      2.33E-5f
00205 
00206 /*!
00207     The line model from section D.9 of G.168.
00208 
00209     These are the coefficients for the line simulation model defined in
00210     section D.9 of G.168. It may be used with the fir32_xxx
00211     routines to build a line simulator.
00212 */
00213 const int32_t line_model_d9_coeffs[] =
00214 {
00215         80,     31,      4,     42,     42,    -61,    -81,    -64,
00216        121,   -102,    -26,   1002,  -9250, -22562,  39321,  35681,
00217     -35289,  25312,  -1457,   -229,  15659,  -6786,  16791,   3860,
00218       2239, -28730, -11885,  33871,   -176, -16421,  18173,  -9669,
00219     -10163,   9941, -19365,   3592,  -5907, -10257,   5336, -12933,
00220       4348,  -4802,  -1791,   3035,  -4433,   5553,  -2596,   3992,
00221       1255,   1450,   4079,    324,   4340,   1059,   3083,   1917,
00222       1756,   2478,   1027,   1871,    845,   1284,    813,    806,
00223        869,    471,    646,    438,    449,    432,    473,    394,
00224        452,    538,    717,    723,    850,    756,    753,    899,
00225        555,    669,    619,    500,    650,    615,    516,    492,
00226        427,    291,    356,    147,    107,    -50,    -88,    -59,
00227       -238,   -165,   -183
00228 };
00229 #define LINE_MODEL_D9_GAIN      1.33E-5f
00230 
00231 /*!
00232     The filter coefficients for the bandpass filter specified for level measurements
00233     in section 6.4.1.2.1 of G.168.
00234 */
00235 const float level_measurement_bp_coeffs[] =
00236 {
00237     0.0000,    0.0006,    0.0005,    0.0004,    0.0011,
00238     0.0000,    0.0015,   -0.0003,    0.0012,   -0.0002,
00239     0.0000,    0.0002,   -0.0020,    0.0005,   -0.0040,
00240     0.0000,   -0.0047,   -0.0019,   -0.0033,   -0.0047,
00241     0.0000,   -0.0068,    0.0036,   -0.0057,    0.0054,
00242     0.0000,    0.0044,    0.0095,    0.0017,    0.0188,
00243     0.0000,    0.0225,    0.0024,    0.0163,    0.0092,
00244     0.0000,    0.0164,   -0.0210,    0.0161,   -0.0375,
00245     0.0000,   -0.0406,   -0.0357,   -0.0267,   -0.0871,
00246     0.0000,   -0.1420,    0.0289,   -0.1843,    0.0475,
00247     0.8006,    0.0475,   -0.1843,    0.0289,   -0.1420,
00248     0.0000,   -0.0871,   -0.0267,   -0.0357,   -0.0406,
00249     0.0000,   -0.0375,    0.0161,   -0.0210,    0.0164,
00250     0.0000,    0.0092,    0.0163,    0.0024,    0.0225,
00251     0.0000,    0.0188,    0.0017,    0.0095,    0.0044,
00252     0.0000,    0.0054,   -0.0057,    0.0036,   -0.0068,
00253     0.0000,   -0.0047,   -0.0033,   -0.0019,   -0.0047,
00254     0.0000,   -0.0040,    0.0005,   -0.0020,    0.0002,
00255     0.0000,   -0.0002,    0.0012,   -0.0003,    0.0015,
00256     0.0000,    0.0011,    0.0004,    0.0005,    0.0006,
00257     0.0000
00258 };
00259 
00260 /*!
00261     The composite source signal "voiced" section from section C.1 of G.168.
00262 */
00263 const int css_c1[] =
00264 {
00265      -155,   276,   517,   578,   491,   302,    86,  -103,
00266      -207,  -198,    60,   190,   543,   948,  1362,  1741,
00267      2043,  2276,  2422,  2500,  2552,  2595,  2655,  2758,
00268      2896,  3060,  3224,  3370,  3500,  3569,  3603,  3603,
00269      3595,  3586,  3595,  3638,  3724,  3819,  3922,  4000,
00270      4043,  4034,  3974,  3862,  3724,  3577,  3439,  3336,
00271      3267,  3224,  3198,  3172,  3129,  3043,  2914,  2750,
00272      2560,  2353,  2155,  1991,  1853,  1750,  1672,  1603,
00273      1534,  1440,  1310,  1146,   965,   776,   603,   448,
00274       345,   276,   250,   250,   267,   267,   241,   190,
00275       103,    -9,  -138,  -267,  -388,  -491,  -569,  -638,
00276      -698,  -759,  -813,  -888,  -957, -1034, -1103, -1146,
00277     -1181, -1190, -1198, -1215, -1259, -1327, -1457, -1629,
00278     -1853, -2121, -2414, -2707, -3017, -3319, -3612, -3913,
00279     -4224, -4560, -4922, -5301, -5715, -6137, -6560, -6948,
00280     -7301, -7568, -7732, -7758, -7620, -7310, -6810, -6155,
00281     -5344, -4439, -3474, -2508, -1595,  -802
00282 };
00283 
00284 /*!
00285     The composite source signal "voiced" section from section C.3 of G.168.
00286 */
00287 const int css_c3[] =
00288 {
00289      -198,  -112,    -9,   103,   233,   388,   543,   724,
00290       896,  1060,  1233,  1388,  1517,  1638,  1747,  1810,
00291      1845,  1845,  1802,  1707,  1569,  1379,  1146,   871,
00292       560,   233,  -121,  -491,  -871, -1250, -1638, -2043,
00293     -2465, -2896, -3345, -3819, -4310, -4810, -5319, -5836,
00294     -6353, -6853, -7353, -7836, -8292, -8715, -9077, -9370,
00295     -9542, -9542, -9361, -8956, -8327, -7465, -6396, -5163,
00296     -3827, -2448, -1103,   155,  1293,  2241,  3034,  3655,
00297      4138,  4517,  4827,  5094,  5344,  5594,  5827,  6043,
00298      6215,  6344,  6413,  6422,  6379,  6310,  6215,  6120,
00299      6051,  6000,  5991,  5991,  6000,  6008,  5991,  5939,
00300      5853,  5715,  5560,  5387,  5215,  5043,  4879,  4732,
00301      4586,  4439,  4276,  4086,  3870,  3629,  3370,  3086,
00302      2801,  2534,  2267,  2034,  1819,  1612,  1422,  1224,
00303      1026,   819,   603,   388,   181,     9,  -181,  -328,
00304      -448,  -543,  -629,  -707,  -784,  -871,  -948, -1026,
00305     -1112, -1181, -1241, -1276, -1293, -1302, -1293, -1267,
00306     -1250, -1233, -1224, -1224, -1224, -1224, -1215, -1198,
00307     -1172, -1129, -1077, -1026,  -974,  -922,  -888,  -871,
00308      -845,  -828,  -810,  -793,  -767,  -741,  -698,  -672,
00309      -638,  -603,  -595,  -586,  -595,  -603,  -621,  -629,
00310      -938,  -638,  -638,  -638,  -638,  -638,  -647,  -664,
00311      -690,  -724,  -767,  -793,  -819,  -845,  -853,  -871,
00312      -879,  -888,  -896,  -922,  -948,  -974, -1009, -1026,
00313     -1052, -1069, -1077, -1069, -1060, -1060, -1052, -1043,
00314     -1043, -1052, -1060, -1060, -1060, -1052, -1034, -1017,
00315      -991,  -957,  -931,  -905,  -888,  -862,  -845,  -819,
00316      -793,  -767,  -724,  -672,  -621,  -560,  -509,  -457,
00317      -397,  -345,  -276,  -207,  -112
00318 };
00319 
00320 /*!
00321     From section 6.4.2.7 of G.168 - Test No. 6 Non-divergence on narrow-band signals.
00322     These tones and tone pairs are each applied for 5 seconds.
00323 */
00324 const int tones_6_4_2_7[][2] =
00325 {
00326     { 697,    0},
00327     { 941,    0},
00328     {1336,    0},
00329     {1633,    0},
00330     { 697, 1209},
00331     { 770, 1336},
00332     { 852, 1477},
00333     { 941, 1633},
00334     {   0,    0}
00335 };
00336 
00337 #endif
00338 /*- End of file ------------------------------------------------------------*/

Generated on Fri Apr 15 16:14:38 2011 for spandsp by  doxygen 1.4.7