VPI - Vision Programming Interface

1.2 Release

Stream.h
Go to the documentation of this file.
1 /*
2  * Copyright 2019-2021 NVIDIA Corporation. All rights reserved.
3  *
4  * NOTICE TO LICENSEE:
5  *
6  * This source code and/or documentation ("Licensed Deliverables") are
7  * subject to NVIDIA intellectual property rights under U.S. and
8  * international Copyright laws.
9  *
10  * These Licensed Deliverables contained herein is PROPRIETARY and
11  * CONFIDENTIAL to NVIDIA and is being provided under the terms and
12  * conditions of a form of NVIDIA software license agreement by and
13  * between NVIDIA and Licensee ("License Agreement") or electronically
14  * accepted by Licensee. Notwithstanding any terms or conditions to
15  * the contrary in the License Agreement, reproduction or disclosure
16  * of the Licensed Deliverables to any third party without the express
17  * written consent of NVIDIA is prohibited.
18  *
19  * NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE
20  * LICENSE AGREEMENT, NVIDIA MAKES NO REPRESENTATION ABOUT THE
21  * SUITABILITY OF THESE LICENSED DELIVERABLES FOR ANY PURPOSE. IT IS
22  * PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY OF ANY KIND.
23  * NVIDIA DISCLAIMS ALL WARRANTIES WITH REGARD TO THESE LICENSED
24  * DELIVERABLES, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY,
25  * NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE.
26  * NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE
27  * LICENSE AGREEMENT, IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY
28  * SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, OR ANY
29  * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
30  * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
31  * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
32  * OF THESE LICENSED DELIVERABLES.
33  *
34  * U.S. Government End Users. These Licensed Deliverables are a
35  * "commercial item" as that term is defined at 48 C.F.R. 2.101 (OCT
36  * 1995), consisting of "commercial computer software" and "commercial
37  * computer software documentation" as such terms are used in 48
38  * C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Government
39  * only as a commercial end item. Consistent with 48 C.F.R.12.212 and
40  * 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995), all
41  * U.S. Government End Users acquire the Licensed Deliverables with
42  * only those rights set forth herein.
43  *
44  * Any use of the Licensed Deliverables in individual and commercial
45  * software must include, in the user documentation and internal
46  * comments to the code, the above Disclaimer and U.S. Government End
47  * Users Notice.
48  */
49 
56 #ifndef NV_VPI_STREAM_H
57 #define NV_VPI_STREAM_H
58 
59 #include "Export.h"
60 #include "Status.h"
61 #include "Types.h"
62 #include "Version.h"
63 
81 #ifdef __cplusplus
82 extern "C" {
83 #endif
84 
87 #if NV_VPI_VERSION_API_AT_LEAST(1, 1)
88 # define VPI_STREAM_GREEDY (1 << 18)
89 #endif
103 #if NV_VPI_VERSION_API_IS(1, 0)
104 __asm__(".symver vpiStreamCreate,vpiStreamCreate@VPI_1.0");
105 #endif
106 VPI_PUBLIC VPIStatus vpiStreamCreate(uint32_t flags, VPIStream *stream);
107 
116 VPI_PUBLIC void vpiStreamDestroy(VPIStream stream);
117 
125 #if NV_VPI_VERSION_API_AT_LEAST(1, 1)
126 VPI_PUBLIC VPIStatus vpiStreamFlush(VPIStream stream);
127 #endif
128 
140 VPI_PUBLIC VPIStatus vpiStreamSync(VPIStream stream);
141 
151 VPI_PUBLIC VPIStatus vpiStreamWaitEvent(VPIStream stream, VPIEvent event);
152 
161 
169 #if NV_VPI_VERSION_API_IS(1, 0)
170 __asm__(".symver vpiStreamGetFlags,vpiStreamGetFlags@VPI_1.0");
171 #endif
172 VPI_PUBLIC VPIStatus vpiStreamGetFlags(VPIStream stream, uint32_t *flags);
173 
185 #if NV_VPI_VERSION_API_AT_LEAST(1, 1)
186 VPI_PUBLIC VPIStatus vpiPayloadGetFlags(VPIPayload payload, uint32_t *flags);
187 #endif
188 
197 VPI_PUBLIC void vpiPayloadDestroy(VPIPayload payload);
198 
199 #if NV_VPI_VERSION_API_IS(1, 0)
200 VPI_PUBLIC VPIStatus vpiPayloadGetBackend(VPIPayload payload, VPIBackend *backend);
201 #endif
202 
203 #ifdef __cplusplus
204 }
205 #endif
206 
209 #endif /* NV_VPI_STREAM_H */
Declaration of VPI status codes handling functions.
Defines all types needed for programming with VPI.
Functions and structures for handling VPI library version.
void * VPINativeThreadHandle
A handle to OS-specific thread handle.
Definition: Types.h:185
struct VPIEventImpl * VPIEvent
A handle to an event.
Definition: Types.h:203
struct VPIPayloadImpl * VPIPayload
A handle to an algorithm payload.
Definition: Types.h:227
void vpiPayloadDestroy(VPIPayload payload)
Deallocates the payload object and all associated resources.
VPIStatus vpiPayloadGetFlags(VPIPayload payload, uint32_t *flags)
Returns the flags associated with a payload.
VPIStatus
Status codes.
Definition: Status.h:81
struct VPIStreamImpl * VPIStream
A handle to a stream.
Definition: Types.h:209
VPIStatus vpiStreamWaitEvent(VPIStream stream, VPIEvent event)
Pushes a command that blocks the processing of all future commands submitted to the stream until the ...
VPIStatus vpiStreamSync(VPIStream stream)
Blocks the calling thread until all submitted commands in this stream queue are done (queue is empty)...
VPIBackend
VPI Backend types.
Definition: Types.h:91
void vpiStreamDestroy(VPIStream stream)
Destroy a stream instance and deallocate all HW resources.
VPIStatus vpiStreamGetFlags(VPIStream stream, uint32_t *flags)
Gets the VPIStream flags passed during its creation.
VPIStatus vpiStreamGetThreadHandle(VPIStream stream, VPINativeThreadHandle *handle)
Returns OS-specific handle of the background stream processing thread.
VPIStatus vpiStreamFlush(VPIStream stream)
Submits all pending operations for execution.
VPIStatus vpiStreamCreate(uint32_t flags, VPIStream *stream)
Create a stream instance.