TIOVX User Guide

Detailed Description

TIOVX APIs for node operations in the processing graph.

Defines

#define TIVX_CONTROL_CMD_SEND_TO_ALL_REPLICATED_NODES   ((uint32_t)-1)
 When sending a control command to a replicated node, this can be used to send control command to all replicated node. More...
 

Functions

vx_node tivxCreateNodeByKernelEnum (vx_graph graph, vx_enum kernelenum, vx_reference params[], vx_uint32 num)
 Utility function to create a node given parameter references and kernel enum. More...
 
vx_node tivxCreateNodeByKernelRef (vx_graph graph, vx_kernel kernel, vx_reference params[], vx_uint32 num)
 Utility function to create a node given parameter references and kernel reference. More...
 
vx_node tivxCreateNodeByKernelName (vx_graph graph, const char *kernel_name, vx_reference params[], vx_uint32 num)
 Utility function to create a node given parameter references and kernel name. More...
 
vx_status VX_API_CALL tivxSetNodeParameterNumBufByIndex (vx_node node, vx_uint32 idx, vx_uint32 num_buf)
 Set number of buffers to allocate at output of a node parameter. More...
 
vx_status VX_API_CALL tivxGetNodeParameterNumBufByIndex (vx_node node, vx_uint32 idx, vx_uint32 *num_buf)
 Get number of buffers to allocate at output of a node parameter. More...
 
vx_status VX_API_CALL tivxNodeSendCommand (vx_node node, uint32_t replicate_nodex_idx, uint32_t node_cmd_id, vx_reference ref[], uint32_t num_refs)
 Send node specific Control command. More...
 
vx_status VX_API_CALL tivxNodeSendCommandTimed (vx_node node, uint32_t replicate_nodex_idx, uint32_t node_cmd_id, vx_reference ref[], uint32_t num_refs, uint32_t timeout)
 Send node specific Control command. More...
 
VX_API_ENTRY vx_status VX_API_CALL tivxSetNodeTileSize (vx_node node, vx_uint32 block_width, vx_uint32 block_height)
 Sets the tile size for a given node in a graph. This is only valid for BAM-enabled kernels on C66 DSP. More...
 

Macro Definition Documentation

◆ TIVX_CONTROL_CMD_SEND_TO_ALL_REPLICATED_NODES

#define TIVX_CONTROL_CMD_SEND_TO_ALL_REPLICATED_NODES   ((uint32_t)-1)

When sending a control command to a replicated node, this can be used to send control command to all replicated node.

Currently used as parameter in tivxNodeSendCommand API

Definition at line 123 of file tivx.h.

Function Documentation

◆ tivxCreateNodeByKernelEnum()

vx_node tivxCreateNodeByKernelEnum ( vx_graph  graph,
vx_enum  kernelenum,
vx_reference  params[],
vx_uint32  num 
)

Utility function to create a node given parameter references and kernel enum.

Parameters
[in]graphGraph reference
[in]kernelenumEnumeration specifying a specific kernel
[in]paramsList of parameter references corresponding to the enumerated kernel
[in]numNumber of parameter references in params list
Returns
A node reference vx_node. Any possible errors preventing a successful creation should be checked using vxGetStatus.

◆ tivxCreateNodeByKernelRef()

vx_node tivxCreateNodeByKernelRef ( vx_graph  graph,
vx_kernel  kernel,
vx_reference  params[],
vx_uint32  num 
)

Utility function to create a node given parameter references and kernel reference.

Parameters
[in]graphGraph reference
[in]kernelKernel reference
[in]paramsList of parameter references corresponding to the kernel reference
[in]numNumber of parameter references in params list
Returns
A node reference vx_node. Any possible errors preventing a successful creation should be checked using vxGetStatus.

◆ tivxCreateNodeByKernelName()

vx_node tivxCreateNodeByKernelName ( vx_graph  graph,
const char *  kernel_name,
vx_reference  params[],
vx_uint32  num 
)

Utility function to create a node given parameter references and kernel name.

Parameters
[in]graphGraph reference
[in]kernel_nameString corresponding to the kernel name
[in]paramsList of parameter references corresponding to the kernel name
[in]numNumber of parameter references in params list
Returns
A node reference vx_node. Any possible errors preventing a successful creation should be checked using vxGetStatus.

◆ tivxSetNodeParameterNumBufByIndex()

vx_status VX_API_CALL tivxSetNodeParameterNumBufByIndex ( vx_node  node,
vx_uint32  idx,
vx_uint32  num_buf 
)

Set number of buffers to allocate at output of a node parameter.

  • Graph to which the node belongs MUST be scheduled in VX_GRAPH_SCHEDULE_MODE_QUEUE_AUTO or VX_GRAPH_SCHEDULE_MODE_QUEUE_MANUAL mode.
  • The node parameter specified MUST be a output parameter.
  • The node parameter specified MUST NOT be an enqueueable graph parameter.

This API acts as a hint and framework may override user specified settings in case any of above conditions are not met.

Parameters
[in]nodeNode reference
[in]idxNode parameter index
[in]num_bufNumber of buffers to allocate

◆ tivxGetNodeParameterNumBufByIndex()

vx_status VX_API_CALL tivxGetNodeParameterNumBufByIndex ( vx_node  node,
vx_uint32  idx,
vx_uint32 *  num_buf 
)

Get number of buffers to allocate at output of a node parameter.

  • If the buffers have not been set by tivxSetNodeParameterNumBufByIndex and the graph is not in pipelining mode, the num_buf will be 0.
  • If the buffers have not been set by tivxSetNodeParameterNumBufByIndex the graph is in pipelining mode and not verified, the num_buf will be 0.
  • If the buffers have not been set by tivxSetNodeParameterNumBufByIndex the graph is in pipelining mode and verified, the num_buf will be set via the framework based on the number of nodes connected to that buffer.
  • If the buffers have been set by tivxSetNodeParameterNumBufByIndex, the num_buf will reflect this value regardless of if this is an optimal configuration.
  • The node parameter specified MUST be a output parameter.
Parameters
[in]nodeNode reference
[in]idxNode parameter index
[out]num_bufNumber of buffers allocated at output parameter

◆ tivxNodeSendCommand()

vx_status VX_API_CALL tivxNodeSendCommand ( vx_node  node,
uint32_t  replicate_nodex_idx,
uint32_t  node_cmd_id,
vx_reference  ref[],
uint32_t  num_refs 
)

Send node specific Control command.

This API is used to send specific control command to the node. Refer to Node documentation for specific control command. Note that this API is blocking and does not return until command is executed by the node. This API is thread safe, ie multi commands can be sent to same or different nodes from different threads

Parameters
[in]nodeReference of the node to which this command is to be sent.
[in]replicate_nodex_idxIn case of a non-replicated node this should be 0, For a replicated node this is the index of the replicated node to which the command is targeted. To send same command to all replicated nodes use TIVX_CONTROL_CMD_SEND_TO_ALL_REPLICATED_NODES
[in]node_cmd_idNode specific control command id, refer to node specific interface file
[in,out]ref[]Node parameter,
  • This is an array of references, required as parameters for this control command.
  • They can be any OpenVX object, created using create API.
  • They are bidirectional parameters, can be used for INPUT, OUTPUT or both.
  • These parameters are a list of references, which are required for the control command on the given node.
  • Refer to node documentation to get details about the parameters required for given control command.
  • If the refs have not been allocated before calling this command, the refs will be allocated within this command itself
  • Caller of this API should explicitly release these refs after their usage is completed.
[in]num_refsNumber of valid entries/references in ref[] array

◆ tivxNodeSendCommandTimed()

vx_status VX_API_CALL tivxNodeSendCommandTimed ( vx_node  node,
uint32_t  replicate_nodex_idx,
uint32_t  node_cmd_id,
vx_reference  ref[],
uint32_t  num_refs,
uint32_t  timeout 
)

Send node specific Control command.

This API is used to send specific control command to the node. Refer to Node documentation for specific control command. Note that this API blocks for at most 'timeout' milli-seconds i.e. the API returns either when the command execution finishes or if the timeout occurs, whichever occurs first. This API is thread safe, ie multi commands can be sent to same or different nodes from different threads

Parameters
[in]nodeReference of the node to which this command is to be sent.
[in]replicate_nodex_idxIn case of a non-replicated node this should be 0, For a replicated node this is the index of the replicated node to which the command is targeted. To send same command to all replicated nodes use TIVX_CONTROL_CMD_SEND_TO_ALL_REPLICATED_NODES
[in]node_cmd_idNode specific control command id, refer to node specific interface file
[in,out]ref[]Node parameter,
  • This is an array of references, required as parameters for this control command.
  • They can be any OpenVX object, created using create API.
  • They are bidirectional parameters, can be used for INPUT, OUTPUT or both.
  • These parameters are a list of references, which are required for the control command on the given node.
  • Refer to node documentation to get details about the parameters required for given control command.
  • If the refs have not been allocated before calling this command, the refs will be allocated within this command itself
  • Caller of this API should explicitly release these refs after their usage is completed.
[in]num_refsNumber of valid entries/references in ref[] array
[in]timeoutTimeout in units of msecs, use VX_TIMEOUT_WAIT_FOREVER to wait forever

◆ tivxSetNodeTileSize()

VX_API_ENTRY vx_status VX_API_CALL tivxSetNodeTileSize ( vx_node  node,
vx_uint32  block_width,
vx_uint32  block_height 
)

Sets the tile size for a given node in a graph. This is only valid for BAM-enabled kernels on C66 DSP.

Parameters
[in]nodeThe reference to the vx_node object.
[in]block_widthThe tile width in pixels.
[in]block_heightThe tile height in lines.
Returns
A vx_status_e enumeration.
Return values
VX_SUCCESSif the tile size is set correctly.