summaryrefslogtreecommitdiff
path: root/lib/gr_block.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gr_block.cpp')
-rw-r--r--lib/gr_block.cpp23
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;