summaryrefslogtreecommitdiff
path: root/lib/topology_handler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/topology_handler.cpp')
-rw-r--r--lib/topology_handler.cpp20
1 files changed, 11 insertions, 9 deletions
diff --git a/lib/topology_handler.cpp b/lib/topology_handler.cpp
index 555e8c9..7e0c710 100644
--- a/lib/topology_handler.cpp
+++ b/lib/topology_handler.cpp
@@ -38,7 +38,7 @@ void resize_fill_grow(V &v, const size_t new_len, const T &fill)
template <typename V>
void resize_fill_back(V &v, const size_t new_len)
{
- if (v.empty()) v.push_back(0);
+ if (v.empty()) v.resize(1);
resize_fill_grow(v, new_len, v.back());
}
@@ -59,9 +59,8 @@ void BlockActor::handle_topology(
fill_item_sizes_from_sig(this->output_items_sizes, block_ptr->output_signature(), num_outputs);
//resize and fill port properties
- resize_fill_back(this->input_history_items, num_inputs);
- resize_fill_back(this->output_multiple_items, num_outputs);
- resize_fill_grow(this->input_inline_enables, num_inputs, false);
+ resize_fill_back(this->input_configs, num_inputs);
+ resize_fill_back(this->output_configs, num_outputs);
//resize the bytes consumed/produced
resize_fill_grow(this->items_consumed, num_inputs, 0);
@@ -111,18 +110,21 @@ void BlockActor::handle_update_inputs(
const size_t num_outputs = this->get_num_outputs();
//impose input reserve requirements based on relative rate and output multiple
- resize_fill_grow(this->input_multiple_items, num_inputs, 1);
+ resize_fill_grow(this->input_reserve_items, num_inputs, 1);
+ std::vector<size_t> input_lookahead_items(num_inputs);
for (size_t i = 0; i < num_inputs; i++)
{
+ input_lookahead_items[i] = this->input_configs[i].lookahead_items;
+
//TODO, this is a little cheap, we only look at output multiple [0]
- const size_t multiple = (num_outputs)?this->output_multiple_items.front():1;
+ const size_t multiple = (num_outputs)?this->output_configs.front().reserve_items:1;
if (this->enable_fixed_rate)
{
- this->input_multiple_items[i] = size_t(std::ceil(multiple/this->relative_rate));
+ this->input_reserve_items[i] = size_t(std::ceil(multiple/this->relative_rate));
}
- if (this->input_multiple_items[i] == 0) this->input_multiple_items[i] = 1;
+ if (this->input_reserve_items[i] == 0) this->input_reserve_items[i] = 1;
}
//init the history comprehension on input queues
- this->input_queues.init(this->input_history_items, this->input_multiple_items, this->input_items_sizes);
+ this->input_queues.init(input_lookahead_items, this->input_reserve_items, this->input_items_sizes);
}