TIOVX User Guide
tivx_data_ref_queue.h
Go to the documentation of this file.
1 /*
2 *
3 * Copyright (c) 2018 Texas Instruments Incorporated
4 *
5 * All rights reserved not granted herein.
6 *
7 * Limited License.
8 *
9 * Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive
10 * license under copyrights and patents it now or hereafter owns or controls to make,
11 * have made, use, import, offer to sell and sell ("Utilize") this software subject to the
12 * terms herein. With respect to the foregoing patent license, such license is granted
13 * solely to the extent that any such patent is necessary to Utilize the software alone.
14 * The patent license shall not apply to any combinations which include this software,
15 * other than combinations with devices manufactured by or for TI ("TI Devices").
16 * No hardware patent is licensed hereunder.
17 *
18 * Redistributions must preserve existing copyright notices and reproduce this license
19 * (including the above copyright notice and the disclaimer and (if applicable) source
20 * code license limitations below) in the documentation and/or other materials provided
21 * with the distribution
22 *
23 * Redistribution and use in binary form, without modification, are permitted provided
24 * that the following conditions are met:
25 *
26 * * No reverse engineering, decompilation, or disassembly of this software is
27 * permitted with respect to any software provided in binary form.
28 *
29 * * any redistribution and use are licensed by TI for use only with TI Devices.
30 *
31 * * Nothing shall obligate TI to provide you with source code for the software
32 * licensed and provided to you in object code.
33 *
34 * If software source code is provided to you, modification and redistribution of the
35 * source code are permitted provided that the following conditions are met:
36 *
37 * * any redistribution and use of the source code, including any resulting derivative
38 * works, are licensed by TI for use only with TI Devices.
39 *
40 * * any redistribution and use of any object code compiled from the source code
41 * and any resulting derivative works, are licensed by TI for use only with TI Devices.
42 *
43 * Neither the name of Texas Instruments Incorporated nor the names of its suppliers
44 *
45 * may be used to endorse or promote products derived from this software without
46 * specific prior written permission.
47 *
48 * DISCLAIMER.
49 *
50 * THIS SOFTWARE IS PROVIDED BY TI AND TI'S LICENSORS "AS IS" AND ANY EXPRESS
51 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
52 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
53 * IN NO EVENT SHALL TI AND TI'S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT,
54 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
55 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
56 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
57 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
58 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
59 * OF THE POSSIBILITY OF SUCH DAMAGE.
60 *
61 */
62 
63 
64 
65 
66 #ifndef TIVX_DATA_REF_Q_H_
67 #define TIVX_DATA_REF_Q_H_
68 
69 
70 #ifdef __cplusplus
71 extern "C" {
72 #endif
73 
89 typedef struct _tivx_data_ref_queue *tivx_data_ref_queue;
90 
100 typedef struct _tivx_data_ref_queue {
101 
111  tivx_obj_desc_data_ref_q_t *obj_desc[TIVX_GRAPH_MAX_PIPELINE_DEPTH];
113  tivx_obj_desc_cmd_t *obj_desc_cmd[TIVX_GRAPH_MAX_PIPELINE_DEPTH];
119  uint32_t pipeline_depth;
128 
130 
136 typedef struct _tivx_data_ref_queue_create_params {
137 
139  uint32_t pipeline_depth;
141  uint32_t num_in_nodes;
148 
150 
157 
164 
165 
171 uint16_t ownDataRefQueueGetObjDescId(tivx_data_ref_queue ref, uint32_t pipeline_id);
172 
183 
194 
195 
206 
207 
214 
221 
228 
229 
236  tivx_data_ref_queue delay_data_ref_q_list[],
237  vx_bool auto_age_delay_slot[],
238  uint32_t delay_slots);
239 
240 #ifdef __cplusplus
241 }
242 #endif
243 
244 #endif
vx_bool
vx_bool is_enable_send_ref_consumed_event
send event to user when data ref is consumed
struct tivx_vx_event_t * tivx_event
Typedef for a event.
Definition: tivx_event.h:100
Data reference queue.
uint32_t num_in_nodes
number of nodes that use this data reference as input
uint16_t acquire_q_obj_desc_id
acquire queue ID
uint32_t pipeline_depth
graph pipeline depth
The most basic type in the OpenVX system. Any type that inherits from tivx_reference_t must have a vx...
Definition: vx_reference.h:63
uint16_t release_q_obj_desc_id
release queue ID
vx_graph graph
graph associated with this data reference
uint16_t done_q_obj_desc_id
object descriptor used for 'DONE' queue
vx_bool enable_user_queueing
will user do enqueueing/dequeueing or will graph rotate buffers internally
uint32_t graph_parameter_index
graph parameter index which is associated with this data ref
vx_enum vx_status
vx_status ownDataRefQueueWaitDoneRef(tivx_data_ref_queue data_ref_q, vx_uint32 timeout)
Wait for 'DONE' queue to be non-empty.
uint32_t pipeline_depth
pipeline depth
struct _vx_reference * vx_reference
vx_status ownDataRefQueueGetDoneQueueCount(tivx_data_ref_queue data_ref_q, vx_uint32 *count)
Return number of elements in 'DONE' queue.
vx_status ownDataRefQueueDequeueDoneRef(tivx_data_ref_queue data_ref_q, vx_reference *ref)
Dequeue 'ref' from 'DONE' queue.
vx_status ownDataRefQueueSendRefConsumedEvent(tivx_data_ref_queue ref, uint64_t timestamp)
Send 'ref consumed event' if event send is enabled.
uint32_t graph_parameter_index
graph parameter index which is associated with this data ref
tivx_reference_t base
The base reference object.
vx_bool enable_user_queueing
will user do enqueueing/dequeueing or will graph rotate buffers internally
Command object descriptor.
uint16_t ownDataRefQueueGetObjDescId(tivx_data_ref_queue ref, uint32_t pipeline_id)
return object descriptor ID of specific pipeline ID
vx_status ownDataRefQueueLinkDelayDataRefQueues(tivx_data_ref_queue delay_data_ref_q_list[], vx_bool auto_age_delay_slot[], uint32_t delay_slots)
Link data ref queues that participate in a delay in a circular manner.
vx_status ownDataRefQueueEnqueueReadyRef(tivx_data_ref_queue data_ref_q, vx_reference ref)
Enqueue 'ref' into 'READY' queue.
struct _tivx_data_ref_queue * tivx_data_ref_queue
Data Ref Queue Object.
Data Ref Queue internal state.
vx_bool is_enable_send_ref_consumed_event
send event to user when data ref is consumed
vx_status ownDataRefQueueRelease(tivx_data_ref_queue *ref)
Release data reference queue.
tivx_data_ref_queue tivxDataRefQueueCreate(vx_graph graph, const tivx_data_ref_queue_create_params_t *prms)
Create data reference queue.
uint16_t ready_q_obj_desc_id
object descriptor used for 'READY' queue
vx_status ownDataRefQueueGetReadyQueueCount(tivx_data_ref_queue data_ref_q, vx_uint32 *count)
Return number of elements in 'READY' queue.
uint32_t vx_uint32
struct _vx_graph * vx_graph
tivx_event wait_done_ref_available_event
event triggered when a data ref is inserted into 'DONE' queue
Parameters used to create a data ref queue.