summaryrefslogtreecommitdiff
path: root/gr-vocoder/python
diff options
context:
space:
mode:
Diffstat (limited to 'gr-vocoder/python')
-rw-r--r--gr-vocoder/python/CMakeLists.txt6
-rw-r--r--gr-vocoder/python/cvsd.py26
-rwxr-xr-xgr-vocoder/python/qa_alaw_vocoder.py15
-rwxr-xr-xgr-vocoder/python/qa_codec2_vocoder.py25
-rwxr-xr-xgr-vocoder/python/qa_cvsd_vocoder.py26
-rwxr-xr-xgr-vocoder/python/qa_g721_vocoder.py14
-rwxr-xr-xgr-vocoder/python/qa_g723_24_vocoder.py13
-rwxr-xr-xgr-vocoder/python/qa_g723_40_vocoder.py13
-rwxr-xr-xgr-vocoder/python/qa_gsm_full_rate.py27
-rwxr-xr-xgr-vocoder/python/qa_ulaw_vocoder.py14
10 files changed, 139 insertions, 40 deletions
diff --git a/gr-vocoder/python/CMakeLists.txt b/gr-vocoder/python/CMakeLists.txt
index 9152ee133d..9fdc625280 100644
--- a/gr-vocoder/python/CMakeLists.txt
+++ b/gr-vocoder/python/CMakeLists.txt
@@ -36,6 +36,12 @@ GR_PYTHON_INSTALL(
if(ENABLE_TESTING)
list(APPEND GR_TEST_PYTHON_DIRS
+ ${CMAKE_BINARY_DIR}/gr-blocks/python
+ ${CMAKE_BINARY_DIR}/gr-blocks/swig
+ ${CMAKE_BINARY_DIR}/gr-filter/python
+ ${CMAKE_BINARY_DIR}/gr-filter/swig
+ ${CMAKE_BINARY_DIR}/gr-analog/python
+ ${CMAKE_BINARY_DIR}/gr-analog/swig
${CMAKE_BINARY_DIR}/gr-vocoder/python
${CMAKE_BINARY_DIR}/gr-vocoder/swig
)
diff --git a/gr-vocoder/python/cvsd.py b/gr-vocoder/python/cvsd.py
index e9b3ee3054..1c58c33076 100644
--- a/gr-vocoder/python/cvsd.py
+++ b/gr-vocoder/python/cvsd.py
@@ -23,6 +23,16 @@
from gnuradio import gr
import vocoder_swig
+try:
+ from gnuradio import filter
+except ImportError:
+ import filter_swig as filter
+
+try:
+ from gnuradio import blocks
+except ImportError:
+ import blocks_swig as blocks
+
class cvsd_encode_fb(gr.hier_block2):
'''
This is a wrapper for the CVSD encoder that performs interpolation and filtering
@@ -46,10 +56,10 @@ class cvsd_encode_fb(gr.hier_block2):
scale_factor = 32000.0
self.interp = resample
- src_scale = gr.multiply_const_ff(scale_factor)
- taps = gr.firdes.low_pass(self.interp, self.interp, bw, 2*bw)
- interp = gr.interp_fir_filter_fff(self.interp, taps)
- f2s = gr.float_to_short()
+ src_scale = blocks.multiply_const_ff(scale_factor)
+ taps = filter.firdes.low_pass(self.interp, self.interp, bw, 2*bw)
+ interp = filter.interp_fir_filter_fff(self.interp, taps)
+ f2s = blocks.float_to_short()
enc = vocoder_swig.cvsd_encode_sb()
self.connect(self, src_scale, interp, f2s, enc, self)
@@ -78,9 +88,9 @@ class cvsd_decode_bf(gr.hier_block2):
self.decim = resample
dec = vocoder_swig.cvsd_decode_bs()
- s2f = gr.short_to_float()
- taps = gr.firdes.low_pass(1, 1, bw, 2*bw)
- decim = gr.fir_filter_fff(self.decim, taps)
- sink_scale = gr.multiply_const_ff(1.0/scale_factor)
+ s2f = blocks.short_to_float()
+ taps = filter.firdes.low_pass(1, 1, bw, 2*bw)
+ decim = filter.fir_filter_fff(self.decim, taps)
+ sink_scale = blocks.multiply_const_ff(1.0/scale_factor)
self.connect(self, dec, s2f, decim, sink_scale, self)
diff --git a/gr-vocoder/python/qa_alaw_vocoder.py b/gr-vocoder/python/qa_alaw_vocoder.py
index 07d0feb58e..a8d65409e5 100755
--- a/gr-vocoder/python/qa_alaw_vocoder.py
+++ b/gr-vocoder/python/qa_alaw_vocoder.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright 2011 Free Software Foundation, Inc.
+# Copyright 2011,2013 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -32,8 +32,17 @@ class test_alaw_vocoder (gr_unittest.TestCase):
self.tb = None
def test001_module_load (self):
- enc = alaw_encode_sb();
- dec = alaw_decode_bs();
+ data = (8,24,40,56,72,88,104,120,136,152,168,184,
+ 200,216,232,248,264,280,296,312,328,344)
+ src = gr.vector_source_s(data)
+ enc = alaw_encode_sb()
+ dec = alaw_decode_bs()
+ snk = gr.vector_sink_s()
+ self.tb.connect(src, enc, dec, snk)
+ self.tb.run()
+ actual_result = snk.data()
+ self.assertEqual(data, actual_result)
+
if __name__ == '__main__':
gr_unittest.run(test_alaw_vocoder, "test_alaw_vocoder.xml")
diff --git a/gr-vocoder/python/qa_codec2_vocoder.py b/gr-vocoder/python/qa_codec2_vocoder.py
index 2f707b3114..7f38904459 100755
--- a/gr-vocoder/python/qa_codec2_vocoder.py
+++ b/gr-vocoder/python/qa_codec2_vocoder.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright 2011 Free Software Foundation, Inc.
+# Copyright 2011,2013 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -32,8 +32,27 @@ class test_codec2_vocoder (gr_unittest.TestCase):
self.tb = None
def test001_module_load (self):
- raw_enc = codec2_encode_sp();
- raw_dec = codec2_decode_ps();
+ data = 20*(100,200,300,400,500,600,700,800)
+ expected_data = (0,0,0,3,2,0,1,5,6,7,1,-1,0,-5,-11,-10,-20,-22,
+ -20,-20,-27,-26,-36,-48,-59,-24,5,-7,-12,-27,-22,
+ -22,-16,13,20,39,23,25,8,-6,15,44,97,135,145,125,
+ 94,102,126,129,165,192,180,132,99,79,73,83,72,47,
+ 40,0,-32,-46,-67,-99,-123,-114,-87,-108,-131,-152,
+ -181,-245,-348,-294,-101,-71,-85,-26,99,123,15,2,77,
+ 13,-117,-145,-105,-39,-50,-89,-59,-77,-134,-95,-51,
+ -22,17,-19,-59,-74,-103,-78,4,77,113,60,18,13,-67,
+ -49,24,88,179,190,89,18,-90,-102,-50,-5,123,135,57,
+ 31,-82,-98,-51,6,93,104,44,-5,-84,-107,-44,45,102,104,
+ 15,-47,-107,-126,-87,-11,89,93,13,-95,-136,-187,-70,
+ -167,216,-70,-103,175,-284,-486)
+ src = gr.vector_source_s(data)
+ enc = codec2_encode_sp()
+ dec = codec2_decode_ps()
+ snk = gr.vector_sink_s()
+ self.tb.connect(src, enc, dec, snk)
+ self.tb.run()
+ actual_result = snk.data()
+ self.assertEqual(expected_data, actual_result)
if __name__ == '__main__':
gr_unittest.run(test_codec2_vocoder, "test_codec2_vocoder.xml")
diff --git a/gr-vocoder/python/qa_cvsd_vocoder.py b/gr-vocoder/python/qa_cvsd_vocoder.py
index 573e6a1302..42cb7f19b9 100755
--- a/gr-vocoder/python/qa_cvsd_vocoder.py
+++ b/gr-vocoder/python/qa_cvsd_vocoder.py
@@ -23,6 +23,8 @@
from gnuradio import gr, gr_unittest
from vocoder_swig import *
from cvsd import *
+import blocks_swig as blocks
+import filter_swig as filter
class test_cvsd_vocoder (gr_unittest.TestCase):
@@ -33,10 +35,10 @@ class test_cvsd_vocoder (gr_unittest.TestCase):
self.tb = None
def test001_module_load (self):
- raw_enc = cvsd_encode_sb();
- raw_dec = cvsd_decode_bs();
- hb_enc = cvsd_encode_fb();
- hb_dec = cvsd_decode_bf();
+ raw_enc = cvsd_encode_sb()
+ raw_dec = cvsd_decode_bs()
+ hb_enc = cvsd_encode_fb()
+ hb_dec = cvsd_decode_bf()
""" Disable for now
@@ -95,20 +97,22 @@ class test_cvsd_vocoder (gr_unittest.TestCase):
-0.16035343706607819, 0.014823081903159618,
0.16282452642917633, 0.33802291750907898)
- src = gr.sig_source_f(sample_rate, gr.GR_SIN_WAVE, 200, 1, 0)
+ # WARNING: not importing analog in this QA code.
+ # If we enable this, we can probably just create a sin with numpy.
+ src = analog.sig_source_f(sample_rate, analog.GR_SIN_WAVE, 200, 1, 0)
head = gr.head(gr.sizeof_float, 100)
- src_scale = gr.multiply_const_ff(scale_factor)
+ src_scale = blocks.multiply_const_ff(scale_factor)
- interp = blks2.rational_resampler_fff(8, 1)
- f2s = gr.float_to_short ()
+ interp = filter.rational_resampler_fff(8, 1)
+ f2s = blocks.float_to_short()
enc = cvsd_vocoder.encode_sb()
dec = cvsd_vocoder.decode_bs()
- s2f = gr.short_to_float ()
- decim = blks2.rational_resampler_fff(1, 8)
+ s2f = blocks.short_to_float()
+ decim = filter.rational_resampler_fff(1, 8)
- sink_scale = gr.multiply_const_ff(1.0/scale_factor)
+ sink_scale = blocks.multiply_const_ff(1.0/scale_factor)
sink = gr.vector_sink_f()
self.tb.connect(src, src_scale, interp, f2s, enc)
diff --git a/gr-vocoder/python/qa_g721_vocoder.py b/gr-vocoder/python/qa_g721_vocoder.py
index 26fcea7895..e6ac04e155 100755
--- a/gr-vocoder/python/qa_g721_vocoder.py
+++ b/gr-vocoder/python/qa_g721_vocoder.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright 2011 Free Software Foundation, Inc.
+# Copyright 2011,2013 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -32,8 +32,16 @@ class test_g721_vocoder (gr_unittest.TestCase):
self.tb = None
def test001_module_load (self):
- enc = g721_encode_sb();
- dec = g721_decode_bs();
+ data = (8,24,36,52,56,64,76,88,104,124,132,148,172,
+ 196,220,244,280,320,372,416,468,524,580,648)
+ src = gr.vector_source_s(data)
+ enc = g721_encode_sb()
+ dec = g721_decode_bs()
+ snk = gr.vector_sink_s()
+ self.tb.connect(src, enc, dec, snk)
+ self.tb.run()
+ actual_result = snk.data()
+ self.assertEqual(data, actual_result)
if __name__ == '__main__':
gr_unittest.run(test_g721_vocoder, "test_g721_vocoder.xml")
diff --git a/gr-vocoder/python/qa_g723_24_vocoder.py b/gr-vocoder/python/qa_g723_24_vocoder.py
index be95a8d94f..eda9ed86bd 100755
--- a/gr-vocoder/python/qa_g723_24_vocoder.py
+++ b/gr-vocoder/python/qa_g723_24_vocoder.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright 2011 Free Software Foundation, Inc.
+# Copyright 2011,2013 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -32,8 +32,15 @@ class test_g723_24_vocoder (gr_unittest.TestCase):
self.tb = None
def test001_module_load (self):
- enc = g723_24_encode_sb();
- dec = g723_24_decode_bs();
+ data = (0,16,36,40,68,104,148,220,320,512)
+ src = gr.vector_source_s(data)
+ enc = g723_24_encode_sb()
+ dec = g723_24_decode_bs()
+ snk = gr.vector_sink_s()
+ self.tb.connect(src, enc, dec, snk)
+ self.tb.run()
+ actual_result = snk.data()
+ self.assertEqual(data, actual_result)
if __name__ == '__main__':
gr_unittest.run(test_g723_24_vocoder, "test_g723_24_vocoder.xml")
diff --git a/gr-vocoder/python/qa_g723_40_vocoder.py b/gr-vocoder/python/qa_g723_40_vocoder.py
index abbb4079a4..db6b7538f3 100755
--- a/gr-vocoder/python/qa_g723_40_vocoder.py
+++ b/gr-vocoder/python/qa_g723_40_vocoder.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright 2011 Free Software Foundation, Inc.
+# Copyright 2011,2013 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -32,8 +32,15 @@ class test_g723_40_vocoder (gr_unittest.TestCase):
self.tb = None
def test001_module_load (self):
- enc = g723_40_encode_sb();
- dec = g723_40_decode_bs();
+ data = (0,8,36,72,100,152,228,316,404,528)
+ src = gr.vector_source_s(data)
+ enc = g723_40_encode_sb()
+ dec = g723_40_decode_bs()
+ snk = gr.vector_sink_s()
+ self.tb.connect(src, enc, dec, snk)
+ self.tb.run()
+ actual_result = snk.data()
+ self.assertEqual(data, actual_result)
if __name__ == '__main__':
gr_unittest.run(test_g723_40_vocoder, "test_g723_40_vocoder.xml")
diff --git a/gr-vocoder/python/qa_gsm_full_rate.py b/gr-vocoder/python/qa_gsm_full_rate.py
index 2e551e193d..4a7692ecd4 100755
--- a/gr-vocoder/python/qa_gsm_full_rate.py
+++ b/gr-vocoder/python/qa_gsm_full_rate.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright 2004,2007,2010 Free Software Foundation, Inc.
+# Copyright 2004,2007,2010,2013 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -32,8 +32,29 @@ class test_gsm_vocoder (gr_unittest.TestCase):
self.tb = None
def test001_module_load (self):
- enc = vocoder_swig.gsm_fr_encode_sp();
- dec = vocoder_swig.gsm_fr_decode_ps();
+ data = 20*(100,200,300,400,500,600,700,800)
+ expected_data = (0,0,360,304,256,720,600,504,200,144,128,464,
+ 376,384,680,576,440,264,176,176,640,520,480,
+ 464,384,288,432,296,328,760,624,504,176,96,96,
+ 416,312,360,808,672,216,104,136,504,376,448,
+ 720,608,296,304,176,336,576,456,560,512,320,
+ 216,344,264,456,672,576,488,192,80,152,424,
+ 368,552,688,560,280,200,104,256,520,464,608,
+ 488,184,104,16,472,456,360,696,568,208,136,88,
+ 376,480,456,616,472,232,224,264,320,512,624,
+ 632,520,176,80,192,304,400,592,664,552,248,152,
+ 144,336,440,520,616,664,304,176,80,536,448,376,
+ 680,600,240,168,112,408,488,472,608,480,240,232,
+ 208,288,480,600,616,520,176,88,184,296,392,584,
+ 656,552,248,160,144,336,432,512,608,664)
+ src = gr.vector_source_s(data)
+ enc = vocoder_swig.gsm_fr_encode_sp()
+ dec = vocoder_swig.gsm_fr_decode_ps()
+ snk = gr.vector_sink_s()
+ self.tb.connect(src, enc, dec, snk)
+ self.tb.run()
+ actual_result = snk.data()
+ self.assertEqual(expected_data, actual_result)
if __name__ == '__main__':
gr_unittest.run(test_gsm_vocoder, "test_gsm_vocoder.xml")
diff --git a/gr-vocoder/python/qa_ulaw_vocoder.py b/gr-vocoder/python/qa_ulaw_vocoder.py
index 2bc6385676..a87aae762c 100755
--- a/gr-vocoder/python/qa_ulaw_vocoder.py
+++ b/gr-vocoder/python/qa_ulaw_vocoder.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright 2011 Free Software Foundation, Inc.
+# Copyright 2011,2013 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -32,8 +32,16 @@ class test_ulaw_vocoder (gr_unittest.TestCase):
self.tb = None
def test001_module_load (self):
- enc = ulaw_encode_sb();
- dec = ulaw_decode_bs();
+ data = (8,24,40,56,72,88,104,120,132,148,164,180,
+ 196,212,228,244,260,276,292,308,324,340)
+ src = gr.vector_source_s(data)
+ enc = ulaw_encode_sb()
+ dec = ulaw_decode_bs()
+ snk = gr.vector_sink_s()
+ self.tb.connect(src, enc, dec, snk)
+ self.tb.run()
+ actual_result = snk.data()
+ self.assertEqual(data, actual_result)
if __name__ == '__main__':
gr_unittest.run(test_ulaw_vocoder, "test_ulaw_vocoder.xml")