comparison spandsp-0.0.3/spandsp-0.0.3/tests/g168_tests.c @ 5:f762bf195c4b

import spandsp-0.0.3
author Peter Meerwald <pmeerw@cosy.sbg.ac.at>
date Fri, 25 Jun 2010 16:00:21 +0200
parents
children
comparison
equal deleted inserted replaced
4:26cd8f1ef0b1 5:f762bf195c4b
1 /*
2 * SpanDSP - a series of DSP components for telephony
3 *
4 * g168tests.c - Tests of the "test equipment" (filters, etc.) specified
5 * in G.168. This code is only for checking out the tools,
6 * not for testing an echo cancellor.
7 *
8 * Written by Steve Underwood <steveu@coppice.org>
9 *
10 * Copyright (C) 2001 Steve Underwood
11 *
12 * All rights reserved.
13 *
14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License version 2, as
16 * published by the Free Software Foundation.
17 *
18 * This program is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU General Public License for more details.
22 *
23 * You should have received a copy of the GNU General Public License
24 * along with this program; if not, write to the Free Software
25 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
26 *
27 * $Id: g168_tests.c,v 1.10 2006/11/23 15:48:09 steveu Exp $
28 */
29
30 #ifdef HAVE_CONFIG_H
31 #include "config.h"
32 #endif
33
34 #include <inttypes.h>
35 #include <stdlib.h>
36 #include <stdio.h>
37 #include <string.h>
38 #if defined(HAVE_TGMATH_H)
39 #include <tgmath.h>
40 #endif
41 #if defined(HAVE_MATH_H)
42 #include <math.h>
43 #endif
44 #include <tiffio.h>
45
46 #include "spandsp.h"
47 #include "spandsp/g168models.h"
48
49 #define FALSE 0
50 #define TRUE (!FALSE)
51
52 int main (int argc, char *argv[])
53 {
54 int f;
55 int i;
56 int16_t amp[8000];
57 int signal;
58 int power[10];
59 tone_gen_descriptor_t tone_desc;
60 tone_gen_state_t tone_state;
61 fir32_state_t line_model_d2;
62 fir32_state_t line_model_d3;
63 fir32_state_t line_model_d4;
64 fir32_state_t line_model_d5;
65 fir32_state_t line_model_d6;
66 fir32_state_t line_model_d7;
67 fir32_state_t line_model_d8;
68 fir_float_state_t level_measurement_bp;
69
70 fir32_create(&line_model_d2,
71 line_model_d2_coeffs,
72 sizeof(line_model_d2_coeffs)/sizeof(int32_t));
73 fir32_create(&line_model_d3,
74 line_model_d3_coeffs,
75 sizeof(line_model_d3_coeffs)/sizeof(int32_t));
76 fir32_create(&line_model_d4,
77 line_model_d4_coeffs,
78 sizeof(line_model_d4_coeffs)/sizeof(int32_t));
79 fir32_create(&line_model_d5,
80 line_model_d5_coeffs,
81 sizeof(line_model_d5_coeffs)/sizeof(int32_t));
82 fir32_create(&line_model_d6,
83 line_model_d6_coeffs,
84 sizeof(line_model_d6_coeffs)/sizeof(int32_t));
85 fir32_create(&line_model_d7,
86 line_model_d7_coeffs,
87 sizeof(line_model_d7_coeffs)/sizeof(int32_t));
88 fir32_create(&line_model_d8,
89 line_model_d8_coeffs,
90 sizeof(line_model_d8_coeffs)/sizeof(int32_t));
91 fir_float_create(&level_measurement_bp,
92 level_measurement_bp_coeffs,
93 sizeof(level_measurement_bp_coeffs)/sizeof(float));
94
95 for (f = 10; f < 4000; f++)
96 {
97 make_tone_gen_descriptor(&tone_desc,
98 f,
99 -10,
100 0,
101 0,
102 1,
103 0,
104 0,
105 0,
106 TRUE);
107 tone_gen_init(&tone_state, &tone_desc);
108 tone_gen(&tone_state, amp, 8000);
109 memset(power, '\0', sizeof (power));
110 for (i = 0; i < 800; i++)
111 {
112 signal = fir32(&line_model_d2, amp[i]);
113 power[0] += ((abs(signal) - power[0]) >> 5);
114 signal = fir32(&line_model_d3, amp[i]);
115 power[1] += ((abs(signal) - power[1]) >> 5);
116 signal = fir32(&line_model_d4, amp[i]);
117 power[2] += ((abs(signal) - power[2]) >> 5);
118 signal = fir32(&line_model_d5, amp[i]);
119 power[3] += ((abs(signal) - power[3]) >> 5);
120 signal = fir32(&line_model_d6, amp[i]);
121 power[4] += ((abs(signal) - power[4]) >> 5);
122 signal = fir32(&line_model_d7, amp[i]);
123 power[5] += ((abs(signal) - power[5]) >> 5);
124 signal = fir32(&line_model_d8, amp[i]);
125 power[6] += ((abs(signal) - power[6]) >> 5);
126 signal = fir_float(&level_measurement_bp, amp[i]);
127 power[7] += ((abs(signal) - power[7]) >> 5);
128 }
129 printf("%d %d %d %d %d %d %d %d %d\n",
130 f,
131 power[0],
132 power[1],
133 power[2],
134 power[3],
135 power[4],
136 power[5],
137 power[6],
138 power[7]);
139 }
140
141 for (i = 0; i < (int) (sizeof(css_c1)/sizeof(css_c1[0])); i++)
142 printf("%d\n", css_c1[i]);
143 printf("\n");
144 for (i = 0; i < (int) (sizeof(css_c1)/sizeof(css_c3[0])); i++)
145 printf("%d\n", css_c3[i]);
146 return 0;
147 }
148 /*- End of function --------------------------------------------------------*/
149 /*- End of file ------------------------------------------------------------*/

Repositories maintained by Peter Meerwald, pmeerw@pmeerw.net.