diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spandsp-0.0.3/spandsp-0.0.3/tests/g168_tests.c	Fri Jun 25 16:00:21 2010 +0200
@@ -0,0 +1,149 @@
+/*
+ * SpanDSP - a series of DSP components for telephony
+ *
+ * g168tests.c - Tests of the "test equipment" (filters, etc.) specified
+ *               in G.168. This code is only for checking out the tools,
+ *               not for testing an echo cancellor.
+ *
+ * Written by Steve Underwood <steveu@coppice.org>
+ *
+ * Copyright (C) 2001 Steve Underwood
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2, as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: g168_tests.c,v 1.10 2006/11/23 15:48:09 steveu Exp $
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <inttypes.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#if defined(HAVE_TGMATH_H)
+#include <tgmath.h>
+#endif
+#if defined(HAVE_MATH_H)
+#include <math.h>
+#endif
+#include <tiffio.h>
+
+#include "spandsp.h"
+#include "spandsp/g168models.h"
+
+#define FALSE 0
+#define TRUE (!FALSE)
+
+int main (int argc, char *argv[])
+{
+    int f;
+    int i;
+    int16_t amp[8000];
+    int signal;
+    int power[10];
+    tone_gen_descriptor_t tone_desc;
+    tone_gen_state_t tone_state;
+    fir32_state_t line_model_d2;
+    fir32_state_t line_model_d3;
+    fir32_state_t line_model_d4;
+    fir32_state_t line_model_d5;
+    fir32_state_t line_model_d6;
+    fir32_state_t line_model_d7;
+    fir32_state_t line_model_d8;
+    fir_float_state_t level_measurement_bp;
+
+    fir32_create(&line_model_d2,
+                 line_model_d2_coeffs,
+                 sizeof(line_model_d2_coeffs)/sizeof(int32_t));
+    fir32_create(&line_model_d3,
+                 line_model_d3_coeffs,
+                 sizeof(line_model_d3_coeffs)/sizeof(int32_t));
+    fir32_create(&line_model_d4,
+                 line_model_d4_coeffs,
+                 sizeof(line_model_d4_coeffs)/sizeof(int32_t));
+    fir32_create(&line_model_d5,
+                 line_model_d5_coeffs,
+                 sizeof(line_model_d5_coeffs)/sizeof(int32_t));
+    fir32_create(&line_model_d6,
+                 line_model_d6_coeffs,
+                 sizeof(line_model_d6_coeffs)/sizeof(int32_t));
+    fir32_create(&line_model_d7,
+                 line_model_d7_coeffs,
+                 sizeof(line_model_d7_coeffs)/sizeof(int32_t));
+    fir32_create(&line_model_d8,
+                 line_model_d8_coeffs,
+                 sizeof(line_model_d8_coeffs)/sizeof(int32_t));
+    fir_float_create(&level_measurement_bp,
+                     level_measurement_bp_coeffs,
+                     sizeof(level_measurement_bp_coeffs)/sizeof(float));
+
+    for (f = 10;  f < 4000;  f++)
+    {
+         make_tone_gen_descriptor(&tone_desc,
+                                  f,
+                                  -10,
+                                  0,
+                                  0,
+                                  1,
+                                  0,
+                                  0,
+                                  0,
+                                  TRUE);
+        tone_gen_init(&tone_state, &tone_desc);
+        tone_gen(&tone_state, amp, 8000);
+        memset(power, '\0', sizeof (power));
+        for (i = 0;  i < 800;  i++)
+        {
+            signal = fir32(&line_model_d2, amp[i]);
+            power[0] += ((abs(signal) - power[0]) >> 5);
+            signal = fir32(&line_model_d3, amp[i]);
+            power[1] += ((abs(signal) - power[1]) >> 5);
+            signal = fir32(&line_model_d4, amp[i]);
+            power[2] += ((abs(signal) - power[2]) >> 5);
+            signal = fir32(&line_model_d5, amp[i]);
+            power[3] += ((abs(signal) - power[3]) >> 5);
+            signal = fir32(&line_model_d6, amp[i]);
+            power[4] += ((abs(signal) - power[4]) >> 5);
+            signal = fir32(&line_model_d7, amp[i]);
+            power[5] += ((abs(signal) - power[5]) >> 5);
+            signal = fir32(&line_model_d8, amp[i]);
+            power[6] += ((abs(signal) - power[6]) >> 5);
+            signal = fir_float(&level_measurement_bp, amp[i]);
+            power[7] += ((abs(signal) - power[7]) >> 5);
+        }
+        printf("%d %d %d %d %d %d %d %d %d\n",
+               f,
+               power[0],
+               power[1],
+               power[2],
+               power[3],
+               power[4],
+               power[5],
+               power[6],
+               power[7]);
+    }
+    
+    for (i = 0;  i < (int) (sizeof(css_c1)/sizeof(css_c1[0]));  i++)
+        printf("%d\n", css_c1[i]);
+    printf("\n");
+    for (i = 0;  i < (int) (sizeof(css_c1)/sizeof(css_c3[0]));  i++)
+        printf("%d\n", css_c3[i]);
+    return  0;
+}
+/*- End of function --------------------------------------------------------*/
+/*- End of file ------------------------------------------------------------*/

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