summaryrefslogtreecommitdiff
path: root/gr-vocoder
diff options
context:
space:
mode:
Diffstat (limited to 'gr-vocoder')
-rw-r--r--gr-vocoder/CMakeLists.txt3
-rwxr-xr-xgr-vocoder/examples/alaw_audio_loopback.py9
-rwxr-xr-xgr-vocoder/examples/codec2_audio_loopback.py9
-rwxr-xr-xgr-vocoder/examples/cvsd_audio_loopback.py16
-rwxr-xr-xgr-vocoder/examples/g721_audio_loopback.py9
-rwxr-xr-xgr-vocoder/examples/g723_24_audio_loopback.py9
-rwxr-xr-xgr-vocoder/examples/g723_40_audio_loopback.py9
-rwxr-xr-xgr-vocoder/examples/gsm_audio_loopback.py9
-rwxr-xr-xgr-vocoder/examples/ulaw_audio_loopback.py9
-rw-r--r--gr-vocoder/python/CMakeLists.txt6
-rw-r--r--gr-vocoder/python/cvsd.py26
-rwxr-xr-xgr-vocoder/python/qa_cvsd_vocoder.py18
12 files changed, 82 insertions, 50 deletions
diff --git a/gr-vocoder/CMakeLists.txt b/gr-vocoder/CMakeLists.txt
index 235054db62..95c7ae3c19 100644
--- a/gr-vocoder/CMakeLists.txt
+++ b/gr-vocoder/CMakeLists.txt
@@ -29,6 +29,9 @@ include(GrComponent)
GR_REGISTER_COMPONENT("gr-vocoder" ENABLE_GR_VOCODER
Boost_FOUND
ENABLE_GR_CORE
+ ENABLE_GR_FFT
+ ENABLE_GR_BLOCKS
+ ENABLE_GR_FILTER
)
GR_SET_GLOBAL(GR_VOCODER_INCLUDE_DIRS
diff --git a/gr-vocoder/examples/alaw_audio_loopback.py b/gr-vocoder/examples/alaw_audio_loopback.py
index ad686244b3..5b800b5bfb 100755
--- a/gr-vocoder/examples/alaw_audio_loopback.py
+++ b/gr-vocoder/examples/alaw_audio_loopback.py
@@ -22,17 +22,18 @@
from gnuradio import gr
from gnuradio import audio
+from gnuradio import blocks
from gnuradio import vocoder
def build_graph():
tb = gr.top_block()
src = audio.source(8000)
- src_scale = gr.multiply_const_ff(32767)
- f2s = gr.float_to_short ()
+ src_scale = blocks.multiply_const_ff(32767)
+ f2s = blocks.float_to_short()
enc = vocoder.alaw_encode_sb()
dec = vocoder.alaw_decode_bs()
- s2f = gr.short_to_float ()
- sink_scale = gr.multiply_const_ff(1.0/32767.)
+ s2f = blocks.short_to_float()
+ sink_scale = blocks.multiply_const_ff(1.0/32767.)
sink = audio.sink(8000)
tb.connect(src, src_scale, f2s, enc, dec, s2f, sink_scale, sink)
return tb
diff --git a/gr-vocoder/examples/codec2_audio_loopback.py b/gr-vocoder/examples/codec2_audio_loopback.py
index f5da9c217b..bf95f39ce9 100755
--- a/gr-vocoder/examples/codec2_audio_loopback.py
+++ b/gr-vocoder/examples/codec2_audio_loopback.py
@@ -22,17 +22,18 @@
from gnuradio import gr
from gnuradio import audio
+from gnuradio import blocks
from gnuradio import vocoder
def build_graph():
tb = gr.top_block()
src = audio.source(8000)
- src_scale = gr.multiply_const_ff(32767)
- f2s = gr.float_to_short ()
+ src_scale = blocks.multiply_const_ff(32767)
+ f2s = blocks.float_to_short()
enc = vocoder.codec2_encode_sp()
dec = vocoder.codec2_decode_ps()
- s2f = gr.short_to_float ()
- sink_scale = gr.multiply_const_ff(1.0/32767.)
+ s2f = blocks.short_to_float()
+ sink_scale = blocks.multiply_const_ff(1.0/32767.)
sink = audio.sink(8000)
tb.connect(src, src_scale, f2s, enc, dec, s2f, sink_scale, sink)
return tb
diff --git a/gr-vocoder/examples/cvsd_audio_loopback.py b/gr-vocoder/examples/cvsd_audio_loopback.py
index f101fecb4e..ef4c6ded21 100755
--- a/gr-vocoder/examples/cvsd_audio_loopback.py
+++ b/gr-vocoder/examples/cvsd_audio_loopback.py
@@ -20,8 +20,10 @@
# Boston, MA 02110-1301, USA.
#
-from gnuradio import gr, blks2
+from gnuradio import gr
from gnuradio import audio
+from gnuradio import blocks
+from gnuradio import filter
from gnuradio import vocoder
def build_graph():
@@ -30,18 +32,18 @@ def build_graph():
tb = gr.top_block()
src = audio.source(sample_rate, "plughw:0,0")
- 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 = vocoder.cvsd_encode_sb()
dec = vocoder.cvsd_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 = audio.sink(sample_rate, "plughw:0,0")
tb.connect(src, src_scale, interp, f2s, enc)
diff --git a/gr-vocoder/examples/g721_audio_loopback.py b/gr-vocoder/examples/g721_audio_loopback.py
index 339ea79ad1..42abbabf64 100755
--- a/gr-vocoder/examples/g721_audio_loopback.py
+++ b/gr-vocoder/examples/g721_audio_loopback.py
@@ -22,17 +22,18 @@
from gnuradio import gr
from gnuradio import audio
+from gnuradio import blocks
from gnuradio import vocoder
def build_graph():
tb = gr.top_block()
src = audio.source(8000)
- src_scale = gr.multiply_const_ff(32767)
- f2s = gr.float_to_short ()
+ src_scale = blocks.multiply_const_ff(32767)
+ f2s = blocks.float_to_short()
enc = vocoder.g721_encode_sb()
dec = vocoder.g721_decode_bs()
- s2f = gr.short_to_float ()
- sink_scale = gr.multiply_const_ff(1.0/32767.)
+ s2f = blocks.short_to_float()
+ sink_scale = blocks.multiply_const_ff(1.0/32767.)
sink = audio.sink(8000)
tb.connect(src, src_scale, f2s, enc, dec, s2f, sink_scale, sink)
return tb
diff --git a/gr-vocoder/examples/g723_24_audio_loopback.py b/gr-vocoder/examples/g723_24_audio_loopback.py
index 34d9ddd5dd..cade33f295 100755
--- a/gr-vocoder/examples/g723_24_audio_loopback.py
+++ b/gr-vocoder/examples/g723_24_audio_loopback.py
@@ -22,17 +22,18 @@
from gnuradio import gr
from gnuradio import audio
+from gnuradio import blocks
from gnuradio import vocoder
def build_graph():
tb = gr.top_block()
src = audio.source(8000)
- src_scale = gr.multiply_const_ff(32767)
- f2s = gr.float_to_short ()
+ src_scale = blocks.multiply_const_ff(32767)
+ f2s = blocks.float_to_short()
enc = vocoder.g723_24_encode_sb()
dec = vocoder.g723_24_decode_bs()
- s2f = gr.short_to_float ()
- sink_scale = gr.multiply_const_ff(1.0/32767.)
+ s2f = blocks.short_to_float()
+ sink_scale = blocks.multiply_const_ff(1.0/32767.)
sink = audio.sink(8000)
tb.connect(src, src_scale, f2s, enc, dec, s2f, sink_scale, sink)
return tb
diff --git a/gr-vocoder/examples/g723_40_audio_loopback.py b/gr-vocoder/examples/g723_40_audio_loopback.py
index c636d82d1e..77e40884cf 100755
--- a/gr-vocoder/examples/g723_40_audio_loopback.py
+++ b/gr-vocoder/examples/g723_40_audio_loopback.py
@@ -22,17 +22,18 @@
from gnuradio import gr
from gnuradio import audio
+from gnuradio import blocks
from gnuradio import vocoder
def build_graph():
tb = gr.top_block()
src = audio.source(8000)
- src_scale = gr.multiply_const_ff(32767)
- f2s = gr.float_to_short ()
+ src_scale = blocks.multiply_const_ff(32767)
+ f2s = blocks.float_to_short()
enc = vocoder.g723_40_encode_sb()
dec = vocoder.g723_40_decode_bs()
- s2f = gr.short_to_float ()
- sink_scale = gr.multiply_const_ff(1.0/32767.)
+ s2f = blocks.short_to_float()
+ sink_scale = blocks.multiply_const_ff(1.0/32767.)
sink = audio.sink(8000)
tb.connect(src, src_scale, f2s, enc, dec, s2f, sink_scale, sink)
return tb
diff --git a/gr-vocoder/examples/gsm_audio_loopback.py b/gr-vocoder/examples/gsm_audio_loopback.py
index ba0fcb847b..5d5bf9dd72 100755
--- a/gr-vocoder/examples/gsm_audio_loopback.py
+++ b/gr-vocoder/examples/gsm_audio_loopback.py
@@ -22,17 +22,18 @@
from gnuradio import gr
from gnuradio import audio
+from gnuradio import blocks
from gnuradio import vocoder
def build_graph():
tb = gr.top_block()
src = audio.source(8000)
- src_scale = gr.multiply_const_ff(32767)
- f2s = gr.float_to_short ()
+ src_scale = blocks.multiply_const_ff(32767)
+ f2s = blocks.float_to_short()
enc = vocoder.gsm_fr_encode_sp()
dec = vocoder.gsm_fr_decode_ps()
- s2f = gr.short_to_float ()
- sink_scale = gr.multiply_const_ff(1.0/32767.)
+ s2f = blocks.short_to_float()
+ sink_scale = blocks.multiply_const_ff(1.0/32767.)
sink = audio.sink(8000)
tb.connect(src, src_scale, f2s, enc, dec, s2f, sink_scale, sink)
return tb
diff --git a/gr-vocoder/examples/ulaw_audio_loopback.py b/gr-vocoder/examples/ulaw_audio_loopback.py
index e7a96d3673..9f0617622e 100755
--- a/gr-vocoder/examples/ulaw_audio_loopback.py
+++ b/gr-vocoder/examples/ulaw_audio_loopback.py
@@ -22,17 +22,18 @@
from gnuradio import gr
from gnuradio import audio
+from gnuradio import blocks
from gnuradio import vocoder
def build_graph():
tb = gr.top_block()
src = audio.source(8000)
- src_scale = gr.multiply_const_ff(32767)
- f2s = gr.float_to_short ()
+ src_scale = blocks.multiply_const_ff(32767)
+ f2s = blocks.float_to_short()
enc = vocoder.ulaw_encode_sb()
dec = vocoder.ulaw_decode_bs()
- s2f = gr.short_to_float ()
- sink_scale = gr.multiply_const_ff(1.0/32767.)
+ s2f = blocks.short_to_float()
+ sink_scale = blocks.multiply_const_ff(1.0/32767.)
sink = audio.sink(8000)
tb.connect(src, src_scale, f2s, enc, dec, s2f, sink_scale, sink)
return tb
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_cvsd_vocoder.py b/gr-vocoder/python/qa_cvsd_vocoder.py
index 573e6a1302..579b019cc9 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):
@@ -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)