My tidl node has three output tensors, I want to use pipeline mode.
The main program I modified is as follows:
app_tidl_module.h
vx_object_array output_tensor_arr[APP_MAX_BUFQ_DEPTH][APP_TIDL_MAX_TENSORS];
app_tidl_module.c
for(i = 0; i < APP_TIDL_MAX_TENSORS; i++)
{
for (size_t q = 0; q < bufq_depth; q++)
{
tidlObj->output_tensor_arr[q][i] = NULL;
}
}
createOutputTensors(context, tidlObj->config, output_tensors);
for(i = 0; i < num_output_tensors; i++)
{
for (size_t q = 0; q < bufq_depth; q++)
{
tidlObj->output_tensor_arr[q][i] = vxCreateObjectArray(context, (vx_reference)output_tensors[i], NUM_CH);
tidlObj->results[q][i] = (vx_user_data_object) vxGetObjectArrayItem((vx_object_array)tidlObj->output_tensor_arr[q], 0);
}
vxReleaseTensor(&output_tensors[i]);
}
main.c
add_graph_parameter_by_node_index(obj->graph, obj->tidlObj.node, 3);
obj->tidlObj.graph_parameter_index = graph_parameter_index;
graph_parameters_queue_params_list[graph_parameter_index].graph_parameter_index = graph_parameter_index;
graph_parameters_queue_params_list[graph_parameter_index].refs_list_size = APP_BUFFER_Q_DEPTH;
graph_parameters_queue_params_list[graph_parameter_index].refs_list = (vx_reference*)&obj->tidlObj.results[0];
graph_parameter_index++;
if(obj->pipeline < 0)
{
/* Enqueue outpus */
vxGraphParameterEnqueueReadyRef(obj->graph, tidlObj->graph_parameter_index, (vx_reference*)&tidlObj->results[obj->enqueueCnt], 1);
}
if(obj->pipeline >= 0)
{
vx_object_array output_image[APP_TIDL_MAX_TENSORS];
/* Dequeue output */
vxGraphParameterDequeueDoneRef(obj->graph, tidlObj->graph_parameter_index, (vx_reference*)&output_image, 1, &num_refs);
/* Enqueue output */
vxGraphParameterEnqueueReadyRef(obj->graph, tidlObj->graph_parameter_index, (vx_reference*)&output_image, 1);
}
There are still some questions here, but I haven’t found it yet