diff options
Diffstat (limited to 'gr-fec/lib/repetition_encoder_impl.cc')
-rw-r--r-- | gr-fec/lib/repetition_encoder_impl.cc | 119 |
1 files changed, 51 insertions, 68 deletions
diff --git a/gr-fec/lib/repetition_encoder_impl.cc b/gr-fec/lib/repetition_encoder_impl.cc index dd6bc01615..5be5995110 100644 --- a/gr-fec/lib/repetition_encoder_impl.cc +++ b/gr-fec/lib/repetition_encoder_impl.cc @@ -30,79 +30,62 @@ #include <sstream> namespace gr { - namespace fec { - namespace code { - - generic_encoder::sptr - repetition_encoder::make(int frame_size, int rep) - { - return generic_encoder::sptr - (new repetition_encoder_impl(frame_size, rep)); - } - - repetition_encoder_impl::repetition_encoder_impl(int frame_size, int rep) - : generic_encoder("repetition_encoder") - { - d_max_frame_size = frame_size; - set_frame_size(frame_size); - - if(rep < 0) - throw std::runtime_error("repetition_encoder: repetition rate must be >= 0"); - - d_rep = rep; - } - - repetition_encoder_impl::~repetition_encoder_impl() - { - } - - int - repetition_encoder_impl::get_output_size() - { - return d_frame_size*d_rep; - } - - int - repetition_encoder_impl::get_input_size() - { - return d_frame_size; - } - - bool - repetition_encoder_impl::set_frame_size(unsigned int frame_size) - { - bool ret = true; - if(frame_size > d_max_frame_size) { - GR_LOG_INFO(d_logger, boost::format("tried to set frame to %1%; max possible is %2%") \ - % frame_size % d_max_frame_size); - frame_size = d_max_frame_size; - ret = false; - } +namespace fec { +namespace code { + +generic_encoder::sptr repetition_encoder::make(int frame_size, int rep) +{ + return generic_encoder::sptr(new repetition_encoder_impl(frame_size, rep)); +} + +repetition_encoder_impl::repetition_encoder_impl(int frame_size, int rep) + : generic_encoder("repetition_encoder") +{ + d_max_frame_size = frame_size; + set_frame_size(frame_size); + + if (rep < 0) + throw std::runtime_error("repetition_encoder: repetition rate must be >= 0"); + + d_rep = rep; +} + +repetition_encoder_impl::~repetition_encoder_impl() {} + +int repetition_encoder_impl::get_output_size() { return d_frame_size * d_rep; } + +int repetition_encoder_impl::get_input_size() { return d_frame_size; } + +bool repetition_encoder_impl::set_frame_size(unsigned int frame_size) +{ + bool ret = true; + if (frame_size > d_max_frame_size) { + GR_LOG_INFO(d_logger, + boost::format("tried to set frame to %1%; max possible is %2%") % + frame_size % d_max_frame_size); + frame_size = d_max_frame_size; + ret = false; + } - d_frame_size = frame_size; + d_frame_size = frame_size; - return ret; - } + return ret; +} - double - repetition_encoder_impl::rate() - { - return static_cast<double>(d_rep); - } +double repetition_encoder_impl::rate() { return static_cast<double>(d_rep); } - void - repetition_encoder_impl::generic_work(void *inbuffer, void *outbuffer) - { - const unsigned char *in = (const unsigned char*)inbuffer; - unsigned char *out = (unsigned char*)outbuffer; +void repetition_encoder_impl::generic_work(void* inbuffer, void* outbuffer) +{ + const unsigned char* in = (const unsigned char*)inbuffer; + unsigned char* out = (unsigned char*)outbuffer; - for(unsigned int i = 0; i < d_frame_size; i++) { - for(unsigned int r = 0; r < d_rep; r++) { - out[d_rep*i + r] = in[i]; - } + for (unsigned int i = 0; i < d_frame_size; i++) { + for (unsigned int r = 0; r < d_rep; r++) { + out[d_rep * i + r] = in[i]; } - } + } +} - } /* namespace code */ - } /* namespace fec */ +} /* namespace code */ +} /* namespace fec */ } /* namespace gr */ |