diff options
-rw-r--r-- | gr-vocoder/doc/vocoder.dox | 10 | ||||
-rw-r--r-- | gr-vocoder/examples/loopback-gsmfr.grc | 1078 | ||||
-rw-r--r-- | gr-vocoder/grc/vocoder_gsm_fr_decode_ps.xml | 1 | ||||
-rw-r--r-- | gr-vocoder/grc/vocoder_gsm_fr_encode_sp.xml | 1 | ||||
-rw-r--r-- | gr-vocoder/include/gnuradio/vocoder/gsm_fr_decode_ps.h | 5 | ||||
-rw-r--r-- | gr-vocoder/include/gnuradio/vocoder/gsm_fr_encode_sp.h | 9 | ||||
-rw-r--r-- | gr-vocoder/lib/gsm_fr_encode_sp_impl.cc | 2 |
7 files changed, 1100 insertions, 6 deletions
diff --git a/gr-vocoder/doc/vocoder.dox b/gr-vocoder/doc/vocoder.dox index 3973ca56fc..0e12566a80 100644 --- a/gr-vocoder/doc/vocoder.dox +++ b/gr-vocoder/doc/vocoder.dox @@ -20,4 +20,14 @@ by using: help(vocoder) \endcode +\section using Using the vocoders + +Note that most vocoders use short inputs instead of floats. This means you +must convert audio signals from float to short by using a type conversion +and a scaling factor. See the examples. + +The format of the encoded audio is different for every encoder. See the +individual block's documention for the data format. Encoded data is usually +a vector of fixed length, and can either be packed or unpacked. + */ diff --git a/gr-vocoder/examples/loopback-gsmfr.grc b/gr-vocoder/examples/loopback-gsmfr.grc new file mode 100644 index 0000000000..f1c0e06bd6 --- /dev/null +++ b/gr-vocoder/examples/loopback-gsmfr.grc @@ -0,0 +1,1078 @@ +<?xml version='1.0' encoding='ASCII'?> +<flow_graph> + <timestamp>Fri Mar 7 16:29:26 2014</timestamp> + <block> + <key>options</key> + <param> + <key>id</key> + <value>loopback_gsmfr</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value>GSM Full-Rate 06.10 Codec Looback Test</value> + </param> + <param> + <key>author</key> + <value>Martin Braun</value> + </param> + <param> + <key>description</key> + <value>An example how to use the GSM-FR Vocoder</value> + </param> + <param> + <key>window_size</key> + <value>1280, 1024</value> + </param> + <param> + <key>generate_options</key> + <value>qt_gui</value> + </param> + <param> + <key>category</key> + <value>Custom</value> + </param> + <param> + <key>run_options</key> + <value>prompt</value> + </param> + <param> + <key>run</key> + <value>True</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(0, -1)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>48000</value> + </param> + <param> + <key>_coordinate</key> + <value>(186, 0)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>scale</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>2**12</value> + </param> + <param> + <key>_coordinate</key> + <value>(301, -1)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>id</key> + <value>qtgui_time_sink_x_0_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>name</key> + <value>Audio Pre-Encoding</value> + </param> + <param> + <key>size</key> + <value>1024</value> + </param> + <param> + <key>srate</key> + <value>8000</value> + </param> + <param> + <key>ymin</key> + <value>-1</value> + </param> + <param> + <key>ymax</key> + <value>1</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_delay</key> + <value>0</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_tag</key> + <value>""</value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(434, 202)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>rational_resampler_xxx</key> + <param> + <key>id</key> + <value>rational_resampler_xxx_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>fff</value> + </param> + <param> + <key>interp</key> + <value>1</value> + </param> + <param> + <key>decim</key> + <value>6</value> + </param> + <param> + <key>taps</key> + <value></value> + </param> + <param> + <key>fbw</key> + <value>0</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(204, 94)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>virtual_sink</key> + <param> + <key>id</key> + <value>virtual_sink_1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>stream_id</key> + <value>Unencoded Speech</value> + </param> + <param> + <key>_coordinate</key> + <value>(508, 25)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>virtual_source</key> + <param> + <key>id</key> + <value>virtual_source_1_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>stream_id</key> + <value>Decoded Speech</value> + </param> + <param> + <key>_coordinate</key> + <value>(3, 449)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>virtual_source</key> + <param> + <key>id</key> + <value>virtual_source_1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>stream_id</key> + <value>Unencoded Speech</value> + </param> + <param> + <key>_coordinate</key> + <value>(-1, 389)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_qtgui_check_box</key> + <param> + <key>id</key> + <value>play_encoded</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Encode Audio</value> + </param> + <param> + <key>type</key> + <value>int</value> + </param> + <param> + <key>value</key> + <value>True</value> + </param> + <param> + <key>true</key> + <value>1</value> + </param> + <param> + <key>false</key> + <value>0</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(834, 0)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blks2_selector</key> + <param> + <key>id</key> + <value>blks2_selector_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>num_inputs</key> + <value>2</value> + </param> + <param> + <key>num_outputs</key> + <value>1</value> + </param> + <param> + <key>input_index</key> + <value>play_encoded</value> + </param> + <param> + <key>output_index</key> + <value>0</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(280, 411)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>rational_resampler_xxx</key> + <param> + <key>id</key> + <value>rational_resampler_xxx_1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>fff</value> + </param> + <param> + <key>interp</key> + <value>6</value> + </param> + <param> + <key>decim</key> + <value>1</value> + </param> + <param> + <key>taps</key> + <value></value> + </param> + <param> + <key>fbw</key> + <value>0</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(478, 400)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>audio_sink</key> + <param> + <key>id</key> + <value>audio_sink_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>samp_rate</key> + <value>48000</value> + </param> + <param> + <key>device_name</key> + <value></value> + </param> + <param> + <key>ok_to_block</key> + <value>True</value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(706, 424)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_float_to_short</key> + <param> + <key>id</key> + <value>blocks_float_to_short_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>scale</key> + <value>scale</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(417, 119)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>audio_source</key> + <param> + <key>id</key> + <value>audio_source_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>samp_rate</key> + <value>48000</value> + </param> + <param> + <key>device_name</key> + <value></value> + </param> + <param> + <key>ok_to_block</key> + <value>True</value> + </param> + <param> + <key>num_outputs</key> + <value>1</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(0, 117)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_wavfile_source</key> + <param> + <key>id</key> + <value>blocks_wavfile_source_0</value> + </param> + <param> + <key>_enabled</key> + <value>False</value> + </param> + <param> + <key>file</key> + <value>speech_audio_at_48_kHz.wav</value> + </param> + <param> + <key>repeat</key> + <value>True</value> + </param> + <param> + <key>nchan</key> + <value>1</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(-1, 225)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>vocoder_gsm_fr_encode_sp</key> + <param> + <key>id</key> + <value>vocoder_gsm_fr_encode_sp_1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(592, 123)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_vector_to_stream</key> + <param> + <key>id</key> + <value>blocks_vector_to_stream_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>num_items</key> + <value>33</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(857, 119)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>virtual_sink</key> + <param> + <key>id</key> + <value>virtual_sink_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>stream_id</key> + <value>Encoded Speech</value> + </param> + <param> + <key>_coordinate</key> + <value>(1052, 119)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_stream_to_vector</key> + <param> + <key>id</key> + <value>blocks_stream_to_vector_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>num_items</key> + <value>33</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(272, 312)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>virtual_source</key> + <param> + <key>id</key> + <value>virtual_source_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>stream_id</key> + <value>Encoded Speech</value> + </param> + <param> + <key>_coordinate</key> + <value>(-1, 312)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>vocoder_gsm_fr_decode_ps</key> + <param> + <key>id</key> + <value>vocoder_gsm_fr_decode_ps_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(485, 316)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>virtual_sink</key> + <param> + <key>id</key> + <value>virtual_sink_2</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>stream_id</key> + <value>Decoded Speech</value> + </param> + <param> + <key>_coordinate</key> + <value>(1012, 364)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>id</key> + <value>qtgui_time_sink_x_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>name</key> + <value>Audio Post-Encoding</value> + </param> + <param> + <key>size</key> + <value>1024</value> + </param> + <param> + <key>srate</key> + <value>8000</value> + </param> + <param> + <key>ymin</key> + <value>-1</value> + </param> + <param> + <key>ymax</key> + <value>1</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_delay</key> + <value>0</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_tag</key> + <value>""</value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(1012, 240)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_short_to_float</key> + <param> + <key>id</key> + <value>blocks_short_to_float_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>scale</key> + <value>scale</value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(762, 312)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <connection> + <source_block_id>audio_source_0</source_block_id> + <sink_block_id>rational_resampler_xxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>rational_resampler_xxx_0</source_block_id> + <sink_block_id>blocks_float_to_short_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_wavfile_source_0</source_block_id> + <sink_block_id>rational_resampler_xxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>rational_resampler_xxx_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>rational_resampler_xxx_0</source_block_id> + <sink_block_id>virtual_sink_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>virtual_source_1</source_block_id> + <sink_block_id>blks2_selector_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>virtual_source_1_0</source_block_id> + <sink_block_id>blks2_selector_0</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> + <connection> + <source_block_id>blocks_short_to_float_0</source_block_id> + <sink_block_id>virtual_sink_2</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>rational_resampler_xxx_1</source_block_id> + <sink_block_id>audio_sink_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blks2_selector_0</source_block_id> + <sink_block_id>rational_resampler_xxx_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_float_to_short_0</source_block_id> + <sink_block_id>vocoder_gsm_fr_encode_sp_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>vocoder_gsm_fr_decode_ps_0</source_block_id> + <sink_block_id>blocks_short_to_float_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>vocoder_gsm_fr_encode_sp_1</source_block_id> + <sink_block_id>blocks_vector_to_stream_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_vector_to_stream_0</source_block_id> + <sink_block_id>virtual_sink_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>virtual_source_0</source_block_id> + <sink_block_id>blocks_stream_to_vector_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_stream_to_vector_0</source_block_id> + <sink_block_id>vocoder_gsm_fr_decode_ps_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_short_to_float_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gr-vocoder/grc/vocoder_gsm_fr_decode_ps.xml b/gr-vocoder/grc/vocoder_gsm_fr_decode_ps.xml index 44290f891e..bef07fb822 100644 --- a/gr-vocoder/grc/vocoder_gsm_fr_decode_ps.xml +++ b/gr-vocoder/grc/vocoder_gsm_fr_decode_ps.xml @@ -12,6 +12,7 @@ <sink> <name>in</name> <type>byte</type> + <vlen>33</vlen> </sink> <source> <name>out</name> diff --git a/gr-vocoder/grc/vocoder_gsm_fr_encode_sp.xml b/gr-vocoder/grc/vocoder_gsm_fr_encode_sp.xml index 13f6f3f2d0..4c3eab71a8 100644 --- a/gr-vocoder/grc/vocoder_gsm_fr_encode_sp.xml +++ b/gr-vocoder/grc/vocoder_gsm_fr_encode_sp.xml @@ -16,6 +16,7 @@ <source> <name>out</name> <type>byte</type> + <vlen>33</vlen> </source> </block> diff --git a/gr-vocoder/include/gnuradio/vocoder/gsm_fr_decode_ps.h b/gr-vocoder/include/gnuradio/vocoder/gsm_fr_decode_ps.h index 9979763e60..b9aa664a77 100644 --- a/gr-vocoder/include/gnuradio/vocoder/gsm_fr_decode_ps.h +++ b/gr-vocoder/include/gnuradio/vocoder/gsm_fr_decode_ps.h @@ -32,13 +32,16 @@ namespace gr { /*! * \brief GSM 06.10 Full Rate Vocoder Decoder * \ingroup audio_blk + * + * Input: Vector of 33 bytes per 160 input samples + * Output: 16-bit shorts representing speech samples */ class VOCODER_API gsm_fr_decode_ps : virtual public sync_interpolator { public: // gr::vocoder::gsm_fr_decode_ps::sptr typedef boost::shared_ptr<gsm_fr_decode_ps> sptr; - + /*! * \brief Make GSM decoder block. */ diff --git a/gr-vocoder/include/gnuradio/vocoder/gsm_fr_encode_sp.h b/gr-vocoder/include/gnuradio/vocoder/gsm_fr_encode_sp.h index 98d88bba1f..5cfbc653cd 100644 --- a/gr-vocoder/include/gnuradio/vocoder/gsm_fr_encode_sp.h +++ b/gr-vocoder/include/gnuradio/vocoder/gsm_fr_encode_sp.h @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2005,2011,2013 Free Software Foundation, Inc. + * Copyright 2005,2011,2013,2014 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -33,14 +33,15 @@ namespace gr { * \brief GSM 06.10 Full Rate Vocoder Encoder * \ingroup audio_blk * - * shorts in; 33 byte packets out + * Input: 16-bit shorts representing speech samples + * Output: Vector of 33 bytes per 160 input samples */ class VOCODER_API gsm_fr_encode_sp : virtual public sync_decimator { public: // gr::vocoder::gsm_fr_encode_sp::sptr typedef boost::shared_ptr<gsm_fr_encode_sp> sptr; - + /*! * \brief Make GSM encoder block. */ @@ -48,6 +49,6 @@ namespace gr { }; } /* namespace vocoder */ -} /* namespace gr */ +} /* namespace gr */ #endif /* INCLUDED_VOCODER_GSM_FR_ENCODE_SP_H */ diff --git a/gr-vocoder/lib/gsm_fr_encode_sp_impl.cc b/gr-vocoder/lib/gsm_fr_encode_sp_impl.cc index 143a73bce7..0c3afe8f59 100644 --- a/gr-vocoder/lib/gsm_fr_encode_sp_impl.cc +++ b/gr-vocoder/lib/gsm_fr_encode_sp_impl.cc @@ -71,4 +71,4 @@ namespace gr { } } /* namespace vocoder */ -} /* namespace gr */ +} /* namespace gr */ |