This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TDA4AL-Q1: what is pipeup buf in tivxGraphParameterEnqueueReadyRef function?

Part Number: TDA4AL-Q1


in tivxGraphParameterEnqueueReadyRef(), 

 if(num_enqueue>0U)
{
       /* Note: keeping compatibility with deprecated API */
       if((flags & TIVX_GRAPH_PARAMETER_ENQUEUE_FLAG_PIPEUP) != 0U)
      {
           /* if enqueing buffers for pipeup then dont schedule graph,
           * just enqueue the buffers
           */
           graph->parameters[graph_parameter_index].node->obj_desc[0]->pipeup_buf_idx--;
      }
      /* Note: once pipeup_buf_idx == 1, the source node is in steady state */
      else if (graph->parameters[graph_parameter_index].node->obj_desc[0]->pipeup_buf_idx > 1U)
     {
          graph->parameters[graph_parameter_index].node->obj_desc[0]->pipeup_buf_idx--;
     }
     else
     {
          /* if graph mode is 'VX_GRAPH_SCHEDULE_MODE_QUEUE_AUTO' and
          * enqueue of a reference at this parameter should trigger
          * a graph schedule then schedule the graph */
         if(ownGraphDoScheduleGraphAfterEnqueue(graph, graph_parameter_index)==(vx_bool)vx_true_e)
         {
             ownGraphScheduleGraph(graph, num_enqueue);
         }

1) what's the use pipeup buf in the above code?

2)pipeup_buf is only assigned to head node? or we can assign it to any other node?

  • Pipeup is a way to accumulate few buffers to the source/head node before the execution of the graph. 

    This is typically done on to the head node (for eg. the capture node), since the capture node is continuously capturing the data from the csi-rx and the buffer is sent to the next node, if the next node is slow then it should not affect the capture node and this can avoid frame drops.

    Hence we give pipeup to the source node.

    Regards,

    Nikhil

  • Thanks for the replay,

    When I put a lot of logs in tiovx, I could see frames are  dropping. Which node is responsible for dropping or rendering the frames to the display? 

  • Hi,

    By lots of logs, where exactly are you putting these logs?

    You could check the node performance using the perf_stats utility in the vision_apps (it is integrated in all the vision_apps demos. Press "p" to print out these while running vision_apps demos)

    Here you could see what the time is taken by each node in the graph

    Regards,

    Nikhil