gr::vocoder::cvsd_encode_sb
gr::sync_decimator
gnuradio/vocoder/cvsd_encode_sb.h
std::shared_ptr< cvsd_encode_sb > std::shared_ptr<cvsd_encode_sb> gr::vocoder::cvsd_encode_sb::sptr sptr gr::vocoder::cvsd_encode_sb::sptr
sptr static sptr gr::vocoder::cvsd_encode_sb::make (short min_step=10, short max_step=1280, double step_decay=0.9990234375, double accum_decay=0.96875, int K=32, int J=4, short pos_accum_max=32767, short neg_accum_max=-32767) make gr::vocoder::cvsd_encode_sb::make short min_step 10 short max_step 1280 double step_decay 0.9990234375 double accum_decay 0.96875 int K 32 int J 4 short pos_accum_max 32767 short neg_accum_max -32767

Constructor parameters to initialize the CVSD encoder. The default values are modeled after the Bluetooth standard and should not be changed except by an advanced user.

min_step

Minimum step size used to update the internal reference. Default: "10"

max_step

Maximum step size used to update the internal reference. Default: "1280"

step_decay

Decay factor applied to step size when there is not a run of J output 1s or 0s. Default: "0.9990234375" (i.e. 1-1/1024)

accum_decay

Decay factor applied to the internal reference during every iteration of the codec. Default: "0.96875" (i.e. 1-1/32)

K

Size of shift register; the number of output bits remembered by codec (must be <= to 32). Default: "32"

J

Number of bits in the shift register that are equal; i.e. the size of a run of 1s, 0s. Default: "4"

pos_accum_max

Maximum integer value allowed for the internal reference. Default: "32767" (2^15 - 1 or MAXSHORT)

neg_accum_max

Minimum integer value allowed for the internal reference. Default: "-32767" (-2^15 + 1 or MINSHORT+1)

short virtual short gr::vocoder::cvsd_encode_sb::min_step ()=0 min_step gr::vocoder::cvsd_encode_sb::min_step
short virtual short gr::vocoder::cvsd_encode_sb::max_step ()=0 max_step gr::vocoder::cvsd_encode_sb::max_step
double virtual double gr::vocoder::cvsd_encode_sb::step_decay ()=0 step_decay gr::vocoder::cvsd_encode_sb::step_decay
double virtual double gr::vocoder::cvsd_encode_sb::accum_decay ()=0 accum_decay gr::vocoder::cvsd_encode_sb::accum_decay
int virtual int gr::vocoder::cvsd_encode_sb::K ()=0 K gr::vocoder::cvsd_encode_sb::K
int virtual int gr::vocoder::cvsd_encode_sb::J ()=0 J gr::vocoder::cvsd_encode_sb::J
short virtual short gr::vocoder::cvsd_encode_sb::pos_accum_max ()=0 pos_accum_max gr::vocoder::cvsd_encode_sb::pos_accum_max
short virtual short gr::vocoder::cvsd_encode_sb::neg_accum_max ()=0 neg_accum_max gr::vocoder::cvsd_encode_sb::neg_accum_max

This block performs CVSD audio encoding. Its design and implementation is modeled after the CVSD encoder/decoder specifications defined in the Bluetooth standard.

CVSD is a method for encoding speech that seeks to reduce the bandwidth required for digital voice transmission. CVSD takes advantage of strong correlation between samples, quantizing the difference in amplitude between two consecutive samples. This difference requires fewer quantization levels as compared to other methods that quantize the actual amplitude level, reducing the bandwidth. CVSD employs a two level quantizer (one bit) and an adaptive algorithm that allows for continuous step size adjustment.

The coder can represent low amplitude signals with accuracy without sacrificing performance on large amplitude signals, a trade off that occurs in some non-adaptive modulations.

The CVSD encoder effectively provides 8-to-1 compression. More specifically, each incoming audio sample is compared to an internal reference value. If the input is greater or equal to the reference, the encoder outputs a "1" bit. If the input is less than the reference, the encoder outputs a "0" bit. The reference value is then updated accordingly based on the frequency of outputted "1" or "0" bits. By grouping 8 outputs bits together, the encoder essentially produce one output byte for every 8 input audio samples.

This encoder requires that input audio samples are 2-byte short signed integers. The result bandwidth conversion, therefore, is 16 input bytes of raw audio data to 1 output byte of encoded audio data.

The CVSD encoder module must be prefixed by an up-converter to over-sample the audio data prior to encoding. The Bluetooth standard specifically calls for a 1-to-8 interpolating up-converter. While this reduces the overall compression of the codec, this is required so that the encoder can accurately compute the slope between adjacent audio samples and correctly update its internal reference value.

References:

1. Continuously Variable Slope Delta Modulation (CVSD) A Tutorial, Available: http://www.eetkorea.com/ARTICLES/2003AUG/A/2003AUG29_NTEK_RFD_AN02.PDF.

2. Specification of The Bluetooth System Available: http://grouper.ieee.org/groups/802/15/Bluetooth/core_10_b.pdf.

3. McGarrity, S., Bluetooth Full Duplex Voice and Data Transmission. 2002. Bluetooth Voice Simulink Model, Available: http://www.mathworks.com/company/newsletters/digest/nov01/bluetooth.html

gr::basic_block
gr::block
gr::messages::msg_accepter
gr::msg_accepter
gr::sync_block
gr::sync_decimator
gr::vocoder::cvsd_encode_sb
std::enable_shared_from_this< basic_block >
T
gr::basic_block
d_name
d_symbol_alias
d_symbol_name
d_input_signature
d_output_signature
d_debug_logger
d_logger
msg_queue
d_rpc_vars
d_message_subscribers
gr::block
d_max_output_buffer
d_min_output_buffer
d_pmt_done
d_system_port
gr::io_signature
gr::messages::msg_accepter
gr::msg_accepter
gr::sync_block
gr::sync_decimator
gr::vocoder::cvsd_encode_sb
std::basic_string< Char >
std::deque< T >
elements
std::enable_shared_from_this< basic_block >
std::map< pmt::pmt_t, msg_queue_t, msg_queue_comparator >
keys
elements
std::shared_ptr< T >
ptr
std::shared_ptr< io_signature >
ptr
std::shared_ptr< logger >
std::shared_ptr< pmt_base >
std::string
std::vector< long >
std::vector< rpcbasic_sptr >
elements
p
- gr::vocoder::cvsd_encode_sb
  _post
- gr::vocoder::cvsd_encode_sb
  accum_decay
- gr::vocoder::cvsd_encode_sb
  active_thread_priority
- gr::vocoder::cvsd_encode_sb
  add_item_tag
- gr::vocoder::cvsd_encode_sb
  add_item_tag
- gr::vocoder::cvsd_encode_sb
  alias
- gr::vocoder::cvsd_encode_sb
  alias_pmt
- gr::vocoder::cvsd_encode_sb
  alias_set
- gr::vocoder::cvsd_encode_sb
  alignment
- gr::vocoder::cvsd_encode_sb
  allocate_buffer
- gr::vocoder::cvsd_encode_sb
  allocate_detail
- gr::vocoder::cvsd_encode_sb
  basic_block
- gr::vocoder::cvsd_encode_sb
  basic_block
- gr::vocoder::cvsd_encode_sb
  BLACK
- gr::vocoder::cvsd_encode_sb
  blkd_input_timer_value
- gr::vocoder::cvsd_encode_sb
  block
- gr::vocoder::cvsd_encode_sb
  block
- gr::vocoder::cvsd_encode_sb
  check_topology
- gr::vocoder::cvsd_encode_sb
  clear_finished
- gr::vocoder::cvsd_encode_sb
  color
- gr::vocoder::cvsd_encode_sb
  consume
- gr::vocoder::cvsd_encode_sb
  consume_each
- gr::vocoder::cvsd_encode_sb
  d_blkd_input_timer_value
- gr::vocoder::cvsd_encode_sb
  d_color
- gr::vocoder::cvsd_encode_sb
  d_debug_logger
- gr::vocoder::cvsd_encode_sb
  d_input_signature
- gr::vocoder::cvsd_encode_sb
  d_logger
- gr::vocoder::cvsd_encode_sb
  d_max_output_buffer
- gr::vocoder::cvsd_encode_sb
  d_message_subscribers
- gr::vocoder::cvsd_encode_sb
  d_min_output_buffer
- gr::vocoder::cvsd_encode_sb
  d_name
- gr::vocoder::cvsd_encode_sb
  d_output_signature
- gr::vocoder::cvsd_encode_sb
  d_pmt_done
- gr::vocoder::cvsd_encode_sb
  d_rpc_set
- gr::vocoder::cvsd_encode_sb
  d_rpc_vars
- gr::vocoder::cvsd_encode_sb
  d_setlock
- gr::vocoder::cvsd_encode_sb
  d_symbol_alias
- gr::vocoder::cvsd_encode_sb
  d_symbol_name
- gr::vocoder::cvsd_encode_sb
  d_symbolic_id
- gr::vocoder::cvsd_encode_sb
  d_system_port
- gr::vocoder::cvsd_encode_sb
  d_unique_id
- gr::vocoder::cvsd_encode_sb
  decimation
- gr::vocoder::cvsd_encode_sb
  declare_sample_delay
- gr::vocoder::cvsd_encode_sb
  declare_sample_delay
- gr::vocoder::cvsd_encode_sb
  delete_head_nowait
- gr::vocoder::cvsd_encode_sb
  detail
- gr::vocoder::cvsd_encode_sb
  dispatch_msg
- gr::vocoder::cvsd_encode_sb
  empty_handled_p
- gr::vocoder::cvsd_encode_sb
  empty_handled_p
- gr::vocoder::cvsd_encode_sb
  empty_p
- gr::vocoder::cvsd_encode_sb
  empty_p
- gr::vocoder::cvsd_encode_sb
  enable_update_rate
- gr::vocoder::cvsd_encode_sb
  erase_msg
- gr::vocoder::cvsd_encode_sb
  expand_minmax_buffer
- gr::vocoder::cvsd_encode_sb
  finished
- gr::vocoder::cvsd_encode_sb
  fixed_rate
- gr::vocoder::cvsd_encode_sb
  fixed_rate_ninput_to_noutput
- gr::vocoder::cvsd_encode_sb
  fixed_rate_noutput_to_ninput
- gr::vocoder::cvsd_encode_sb
  forecast
- gr::vocoder::cvsd_encode_sb
  general_work
- gr::vocoder::cvsd_encode_sb
  get_iterator
- gr::vocoder::cvsd_encode_sb
  get_msg_map
- gr::vocoder::cvsd_encode_sb
  get_tags_in_range
- gr::vocoder::cvsd_encode_sb
  get_tags_in_range
- gr::vocoder::cvsd_encode_sb
  get_tags_in_window
- gr::vocoder::cvsd_encode_sb
  get_tags_in_window
- gr::vocoder::cvsd_encode_sb
  GREY
- gr::vocoder::cvsd_encode_sb
  has_msg_handler
- gr::vocoder::cvsd_encode_sb
  has_msg_port
- gr::vocoder::cvsd_encode_sb
  history
- gr::vocoder::cvsd_encode_sb
  identifier
- gr::vocoder::cvsd_encode_sb
  input_signature
- gr::vocoder::cvsd_encode_sb
  insert_tail
- gr::vocoder::cvsd_encode_sb
  is_pc_rpc_set
- gr::vocoder::cvsd_encode_sb
  is_rpc_set
- gr::vocoder::cvsd_encode_sb
  is_set_max_noutput_items
- gr::vocoder::cvsd_encode_sb
  is_unaligned
- gr::vocoder::cvsd_encode_sb
  J
- gr::vocoder::cvsd_encode_sb
  K
- gr::vocoder::cvsd_encode_sb
  log_level
- gr::vocoder::cvsd_encode_sb
  make
- gr::vocoder::cvsd_encode_sb
  max_noutput_items
- gr::vocoder::cvsd_encode_sb
  max_output_buffer
- gr::vocoder::cvsd_encode_sb
  max_step
- gr::vocoder::cvsd_encode_sb
  message_port_is_hier
- gr::vocoder::cvsd_encode_sb
  message_port_is_hier_in
- gr::vocoder::cvsd_encode_sb
  message_port_is_hier_out
- gr::vocoder::cvsd_encode_sb
  message_port_pub
- gr::vocoder::cvsd_encode_sb
  message_port_register_in
- gr::vocoder::cvsd_encode_sb
  message_port_register_out
- gr::vocoder::cvsd_encode_sb
  message_port_sub
- gr::vocoder::cvsd_encode_sb
  message_port_unsub
- gr::vocoder::cvsd_encode_sb
  message_ports_in
- gr::vocoder::cvsd_encode_sb
  message_ports_out
- gr::vocoder::cvsd_encode_sb
  message_subscribers
- gr::vocoder::cvsd_encode_sb
  min_noutput_items
- gr::vocoder::cvsd_encode_sb
  min_output_buffer
- gr::vocoder::cvsd_encode_sb
  min_step
- gr::vocoder::cvsd_encode_sb
  mp_relative_rate
- gr::vocoder::cvsd_encode_sb
  msg_accepter
- gr::vocoder::cvsd_encode_sb
  msg_queue
- gr::vocoder::cvsd_encode_sb
  name
- gr::vocoder::cvsd_encode_sb
  neg_accum_max
- gr::vocoder::cvsd_encode_sb
  nitems_read
- gr::vocoder::cvsd_encode_sb
  nitems_written
- gr::vocoder::cvsd_encode_sb
  nmsgs
- gr::vocoder::cvsd_encode_sb
  no_pc_rpc
- gr::vocoder::cvsd_encode_sb
  notify_msg_neighbors
- gr::vocoder::cvsd_encode_sb
  output_multiple
- gr::vocoder::cvsd_encode_sb
  output_multiple_set
- gr::vocoder::cvsd_encode_sb
  output_signature
- gr::vocoder::cvsd_encode_sb
  pc_input_buffers_full
- gr::vocoder::cvsd_encode_sb
  pc_input_buffers_full
- gr::vocoder::cvsd_encode_sb
  pc_input_buffers_full_avg
- gr::vocoder::cvsd_encode_sb
  pc_input_buffers_full_avg
- gr::vocoder::cvsd_encode_sb
  pc_input_buffers_full_var
- gr::vocoder::cvsd_encode_sb
  pc_input_buffers_full_var
- gr::vocoder::cvsd_encode_sb
  pc_noutput_items
- gr::vocoder::cvsd_encode_sb
  pc_noutput_items_avg
- gr::vocoder::cvsd_encode_sb
  pc_noutput_items_var
- gr::vocoder::cvsd_encode_sb
  pc_nproduced
- gr::vocoder::cvsd_encode_sb
  pc_nproduced_avg
- gr::vocoder::cvsd_encode_sb
  pc_nproduced_var
- gr::vocoder::cvsd_encode_sb
  pc_output_buffers_full
- gr::vocoder::cvsd_encode_sb
  pc_output_buffers_full
- gr::vocoder::cvsd_encode_sb
  pc_output_buffers_full_avg
- gr::vocoder::cvsd_encode_sb
  pc_output_buffers_full_avg
- gr::vocoder::cvsd_encode_sb
  pc_output_buffers_full_var
- gr::vocoder::cvsd_encode_sb
  pc_output_buffers_full_var
- gr::vocoder::cvsd_encode_sb
  pc_throughput_avg
- gr::vocoder::cvsd_encode_sb
  pc_work_time
- gr::vocoder::cvsd_encode_sb
  pc_work_time_avg
- gr::vocoder::cvsd_encode_sb
  pc_work_time_total
- gr::vocoder::cvsd_encode_sb
  pc_work_time_var
- gr::vocoder::cvsd_encode_sb
  pos_accum_max
- gr::vocoder::cvsd_encode_sb
  post
- gr::vocoder::cvsd_encode_sb
  processor_affinity
- gr::vocoder::cvsd_encode_sb
  produce
- gr::vocoder::cvsd_encode_sb
  relative_rate
- gr::vocoder::cvsd_encode_sb
  relative_rate_d
- gr::vocoder::cvsd_encode_sb
  relative_rate_i
- gr::vocoder::cvsd_encode_sb
  remove_item_tag
- gr::vocoder::cvsd_encode_sb
  remove_item_tag
- gr::vocoder::cvsd_encode_sb
  replace_buffer
- gr::vocoder::cvsd_encode_sb
  reset_perf_counters
- gr::vocoder::cvsd_encode_sb
  rpc_set
- gr::vocoder::cvsd_encode_sb
  sample_delay
- gr::vocoder::cvsd_encode_sb
  set_alignment
- gr::vocoder::cvsd_encode_sb
  set_blkd_input_timer_value
- gr::vocoder::cvsd_encode_sb
  set_block_alias
- gr::vocoder::cvsd_encode_sb
  set_color
- gr::vocoder::cvsd_encode_sb
  set_decimation
- gr::vocoder::cvsd_encode_sb
  set_detail
- gr::vocoder::cvsd_encode_sb
  set_fixed_rate
- gr::vocoder::cvsd_encode_sb
  set_history
- gr::vocoder::cvsd_encode_sb
  set_input_signature
- gr::vocoder::cvsd_encode_sb
  set_inverse_relative_rate
- gr::vocoder::cvsd_encode_sb
  set_is_unaligned
- gr::vocoder::cvsd_encode_sb
  set_log_level
- gr::vocoder::cvsd_encode_sb
  set_max_noutput_items
- gr::vocoder::cvsd_encode_sb
  set_max_output_buffer
- gr::vocoder::cvsd_encode_sb
  set_max_output_buffer
- gr::vocoder::cvsd_encode_sb
  set_min_noutput_items
- gr::vocoder::cvsd_encode_sb
  set_min_output_buffer
- gr::vocoder::cvsd_encode_sb
  set_min_output_buffer
- gr::vocoder::cvsd_encode_sb
  set_msg_handler
- gr::vocoder::cvsd_encode_sb
  set_output_multiple
- gr::vocoder::cvsd_encode_sb
  set_output_signature
- gr::vocoder::cvsd_encode_sb
  set_processor_affinity
- gr::vocoder::cvsd_encode_sb
  set_relative_rate
- gr::vocoder::cvsd_encode_sb
  set_relative_rate
- gr::vocoder::cvsd_encode_sb
  set_tag_propagation_policy
- gr::vocoder::cvsd_encode_sb
  set_thread_priority
- gr::vocoder::cvsd_encode_sb
  set_unaligned
- gr::vocoder::cvsd_encode_sb
  setup_pc_rpc
- gr::vocoder::cvsd_encode_sb
  setup_rpc
- gr::vocoder::cvsd_encode_sb
  shared_from_base
- gr::vocoder::cvsd_encode_sb
  sptr
- gr::vocoder::cvsd_encode_sb
  start
- gr::vocoder::cvsd_encode_sb
  step_decay
- gr::vocoder::cvsd_encode_sb
  stop
- gr::vocoder::cvsd_encode_sb
  symbol_name
- gr::vocoder::cvsd_encode_sb
  symbolic_id
- gr::vocoder::cvsd_encode_sb
  sync_block
- gr::vocoder::cvsd_encode_sb
  sync_block
- gr::vocoder::cvsd_encode_sb
  sync_decimator
- gr::vocoder::cvsd_encode_sb
  sync_decimator
- gr::vocoder::cvsd_encode_sb
  system_handler
- gr::vocoder::cvsd_encode_sb
  tag_propagation_policy
- gr::vocoder::cvsd_encode_sb
  tag_propagation_policy_t
- gr::vocoder::cvsd_encode_sb
  thread_priority
- gr::vocoder::cvsd_encode_sb
  to_basic_block
- gr::vocoder::cvsd_encode_sb
  TPP_ALL_TO_ALL
- gr::vocoder::cvsd_encode_sb
  TPP_CUSTOM
- gr::vocoder::cvsd_encode_sb
  TPP_DONT
- gr::vocoder::cvsd_encode_sb
  TPP_ONE_TO_ONE
- gr::vocoder::cvsd_encode_sb
  unaligned
- gr::vocoder::cvsd_encode_sb
  unique_id
- gr::vocoder::cvsd_encode_sb
  unset_max_noutput_items
- gr::vocoder::cvsd_encode_sb
  unset_processor_affinity
- gr::vocoder::cvsd_encode_sb
  update_rate
- gr::vocoder::cvsd_encode_sb
  vcolor
- gr::vocoder::cvsd_encode_sb
  WHITE
- gr::vocoder::cvsd_encode_sb
  work
- gr::vocoder::cvsd_encode_sb
  WORK_CALLED_PRODUCE
- gr::vocoder::cvsd_encode_sb
  WORK_DONE
- gr::vocoder::cvsd_encode_sb
  work_return_t
- gr::vocoder::cvsd_encode_sb
  ~basic_block
- gr::vocoder::cvsd_encode_sb
  ~block
- gr::vocoder::cvsd_encode_sb
  ~msg_accepter