diff options
Diffstat (limited to 'lib/gr_block.cpp')
-rw-r--r-- | lib/gr_block.cpp | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/lib/gr_block.cpp b/lib/gr_block.cpp index 834bbd5..b4e7c04 100644 --- a/lib/gr_block.cpp +++ b/lib/gr_block.cpp @@ -80,7 +80,14 @@ bool gr_block::is_unaligned(void) size_t gr_block::fixed_rate_noutput_to_ninput(const size_t noutput_items) { - return size_t((noutput_items/this->relative_rate())); + if (this->fixed_rate()) + { + return size_t(0.5 + (noutput_items/this->relative_rate())) + this->history() - 1; + } + else + { + return noutput_items + this->history() - 1; + } } size_t gr_block::interpolation(void) const @@ -91,6 +98,7 @@ size_t gr_block::interpolation(void) const void gr_block::set_interpolation(const size_t interp) { this->set_relative_rate(1.0*interp); + this->set_output_multiple(interp); } size_t gr_block::decimation(void) const @@ -118,19 +126,6 @@ void gr_block::set_history(unsigned history) this->set_input_config(config); } -unsigned gr_block::output_multiple(void) const -{ - return (*this)->block->output_multiple_items; -} - -void gr_block::set_output_multiple(unsigned multiple) -{ - (*this)->block->output_multiple_items = multiple; - gnuradio::OutputPortConfig config = this->output_config(); - config.reserve_items = multiple; - this->set_output_config(config); -} - int gr_block::max_noutput_items(void) const { return this->output_config().maximum_items; |