VPI - Vision Programming Interface

0.2.0 Release

Pyramid.h
Go to the documentation of this file.
1 /*
2  * Copyright 2019 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_PYRAMID_H
57 #define NV_VPI_PYRAMID_H
58 
91 #include "Export.h"
92 #include "Image.h"
93 #include "Status.h"
94 #include "Types.h"
95 
96 #include <stdint.h>
97 
98 #ifdef __cplusplus
99 extern "C" {
100 #endif
101 
104 #define VPI_PYRAMID_DISABLE_PVA VPI_BACKEND_DISABLE_PVA
105 #define VPI_PYRAMID_DISABLE_CPU VPI_BACKEND_DISABLE_CPU
106 #define VPI_PYRAMID_DISABLE_CUDA VPI_BACKEND_DISABLE_CUDA
108 #define VPI_PYRAMID_ONLY_PVA VPI_BACKEND_ONLY_PVA
109 #define VPI_PYRAMID_ONLY_CPU VPI_BACKEND_ONLY_CPU
110 #define VPI_PYRAMID_ONLY_CUDA VPI_BACKEND_ONLY_CUDA
115 #define VPI_PYRAMID_NO_PVA VPI_PYRAMID_DISABLE_PVA
116 #define VPI_PYRAMID_NO_CPU VPI_PYRAMID_DISABLE_CPU
117 #define VPI_PYRAMID_NO_CUDA VPI_PYRAMID_DISABLE_CUDA
121 #define VPI_MAX_PYRAMID_LEVEL_COUNT (10)
122 
127 typedef struct VPIPyramidDataRec
128 {
129  int32_t numLevels;
135 
149 VPI_PUBLIC VPIStatus vpiPyramidCreate(uint32_t width, uint32_t height, VPIImageType fmt, uint32_t numLevels,
150  float scale, uint32_t flags, VPIPyramid *pyr);
151 
157 VPI_PUBLIC void vpiPyramidDestroy(VPIPyramid pyr);
158 
167 VPI_PUBLIC VPIStatus vpiPyramidGetFlags(VPIPyramid pyr, uint32_t *flags);
168 
178 
188 VPI_PUBLIC VPIStatus vpiPyramidGetNumLevels(VPIPyramid pyr, uint32_t *numLevels);
189 
199 VPI_PUBLIC VPIStatus vpiPyramidGetWidth(VPIPyramid pyr, uint32_t outSize, uint32_t *out);
200 
210 VPI_PUBLIC VPIStatus vpiPyramidGetHeight(VPIPyramid pyr, uint32_t outSize, uint32_t *out);
211 
225 
239 VPI_PUBLIC VPIStatus vpiImageWrapPyramidLevel(VPIPyramid pyr, uint32_t level, VPIImage *img);
240 
251 
252 #ifdef __cplusplus
253 }
254 #endif
255  // end of VPI_Pyramid
257 
258 #endif // NV_VPI_PYRAMID_H
vpiImageWrapPyramidLevel
VPIStatus vpiImageWrapPyramidLevel(VPIPyramid pyr, uint32_t level, VPIImage *img)
Creates an image that wraps one pyramid level.
Export.h
vpiPyramidCreate
VPIStatus vpiPyramidCreate(uint32_t width, uint32_t height, VPIImageType fmt, uint32_t numLevels, float scale, uint32_t flags, VPIPyramid *pyr)
Create an empty image pyramid instance with the specified flags.
VPIImageType
VPIImageType
Image formats.
Definition: Types.h:190
Types.h
VPI_MAX_PYRAMID_LEVEL_COUNT
#define VPI_MAX_PYRAMID_LEVEL_COUNT
Maximum number of pyramid levels.
Definition: Pyramid.h:121
vpiPyramidGetHeight
VPIStatus vpiPyramidGetHeight(VPIPyramid pyr, uint32_t outSize, uint32_t *out)
Get the height of all image levels.
VPIPyramidData::numLevels
int32_t numLevels
Number of levels (i.e.
Definition: Pyramid.h:129
vpiPyramidGetNumLevels
VPIStatus vpiPyramidGetNumLevels(VPIPyramid pyr, uint32_t *numLevels)
Get the image pyramid level count.
vpiPyramidUnlock
VPIStatus vpiPyramidUnlock(VPIPyramid pyr)
Releases the lock on a image pyramid object.
VPIImageData
Stores information about image characteristics and content.
Definition: Image.h:149
vpiPyramidGetType
VPIStatus vpiPyramidGetType(VPIPyramid pyr, VPIImageType *type)
Returns the image type of the pyramid levels.
Image.h
VPIImage
struct VPIImageImpl * VPIImage
Definition: Types.h:170
VPIStatus
VPIStatus
Error codes.
Definition: Types.h:488
VPILockMode
VPILockMode
Defines the lock modes used by memory lock functions.
Definition: Types.h:463
vpiPyramidGetFlags
VPIStatus vpiPyramidGetFlags(VPIPyramid pyr, uint32_t *flags)
Returns the flags associated with the pyramid.
Status.h
vpiPyramidGetWidth
VPIStatus vpiPyramidGetWidth(VPIPyramid pyr, uint32_t outSize, uint32_t *out)
Get the image width in pixels (for all levels at once).
vpiPyramidDestroy
void vpiPyramidDestroy(VPIPyramid pyr)
Destroy an image pyramid instance as well as all resources it owns.
VPIPyramidData
Stores the pyramid contents.
Definition: Pyramid.h:128
VPIPyramid
struct VPIPyramidImpl * VPIPyramid
Definition: Types.h:176
vpiPyramidLock
VPIStatus vpiPyramidLock(VPIPyramid pyr, VPILockMode lock, VPIPyramidData *out)
Acquires the lock on a pyramid object and returns pointers to each level of the pyramid.