summaryrefslogtreecommitdiff
path: root/lib/block_task.cpp
diff options
context:
space:
mode:
authorJosh Blum2012-09-02 18:51:25 -0700
committerJosh Blum2012-09-02 18:51:25 -0700
commit4bb71b3e25c55a28bdfd4447ec2bbb5c669a7c82 (patch)
tree43ba3a1ac43946c10e8acf33df707501a171ab2f /lib/block_task.cpp
parent57657446c7ba054b7d45c7befef2ebe8ee891730 (diff)
downloadsandhi-4bb71b3e25c55a28bdfd4447ec2bbb5c669a7c82.tar.gz
sandhi-4bb71b3e25c55a28bdfd4447ec2bbb5c669a7c82.tar.bz2
sandhi-4bb71b3e25c55a28bdfd4447ec2bbb5c669a7c82.zip
implement logic for work_noutput_items
Diffstat (limited to 'lib/block_task.cpp')
-rw-r--r--lib/block_task.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/block_task.cpp b/lib/block_task.cpp
index 88ca5cf..59be851 100644
--- a/lib/block_task.cpp
+++ b/lib/block_task.cpp
@@ -89,6 +89,7 @@ void ElementImpl::handle_task(const tsbe::TaskInterface &task_iface)
//------------------------------------------------------------------
//-- initialize input buffers before work
//------------------------------------------------------------------
+ size_t num_input_items = (num_inputs)? ~0 : 0; //so big that it must std::min
size_t input_tokens_count = 0;
for (size_t i = 0; i < num_inputs; i++)
{
@@ -103,12 +104,13 @@ void ElementImpl::handle_task(const tsbe::TaskInterface &task_iface)
this->input_items[i]._len = items;
this->work_input_items[i] = info.mem;
this->work_ninput_items[i] = items;
+ num_input_items = std::min(num_input_items, items);
}
//------------------------------------------------------------------
//-- initialize output buffers before work
//------------------------------------------------------------------
- size_t num_output_items = ~0; //so big that it must std::min
+ size_t num_output_items = (num_outputs)? ~0 : 0; //so big that it must std::min
size_t output_tokens_count = 0;
for (size_t i = 0; i < num_outputs; i++)
{
@@ -147,6 +149,7 @@ void ElementImpl::handle_task(const tsbe::TaskInterface &task_iface)
//------------------------------------------------------------------
//-- the work
//------------------------------------------------------------------
+ work_noutput_items = (num_inputs)? myulround((num_input_items)*this->relative_rate) : num_output_items;
const int ret = block_ptr->Work(this->input_items, this->output_items);
const size_t noutput_items = size_t(ret);