VPI - Vision Programming Interface

3.0 Release

Pyramid.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_PYRAMID_H
57 #define NV_VPI_PYRAMID_H
58 
59 #include "Export.h"
60 #include "Image.h"
61 #include "Status.h"
62 #include "Types.h"
63 #include "Version.h"
64 
65 #include <stdint.h>
66 
100 #ifdef __cplusplus
101 extern "C" {
102 #endif
103 
105 #define VPI_MAX_PYRAMID_LEVEL_COUNT (10)
106 
111 typedef struct VPIPyramidDataRec
112 {
114  int32_t numLevels;
115 
117  float scale;
118 
122 
124 
167 VPI_PUBLIC VPIStatus vpiPyramidCreate(int32_t width, int32_t height, VPIImageFormat fmt, int32_t numLevels, float scale,
168  uint64_t flags, VPIPyramid *pyr);
169 
177 VPI_PUBLIC void vpiPyramidDestroy(VPIPyramid pyr);
178 
192 VPI_PUBLIC VPIStatus vpiPyramidGetFlags(VPIPyramid pyr, uint64_t *flags);
193 
208 
222 VPI_PUBLIC VPIStatus vpiPyramidGetNumLevels(VPIPyramid pyr, int32_t *numLevels);
223 
242 VPI_PUBLIC VPIStatus vpiPyramidGetSize(VPIPyramid pyr, int32_t outSize, int32_t *outWidth, int32_t *outHeight);
243 
257 VPI_PUBLIC VPIStatus vpiPyramidGetScale(VPIPyramid pyr, float *scale);
258 
282 
321  VPIPyramidData *out);
322 
337 
367 VPI_PUBLIC VPIStatus vpiImageCreateWrapperPyramidLevel(VPIPyramid pyr, int32_t level, VPIImage *img);
368 
369 #ifdef __cplusplus
370 }
371 #endif
372 
375 #endif /* NV_VPI_PYRAMID_H */
Functions and structures for dealing with VPI images.
Declaration of VPI status codes handling functions.
Defines all types needed for programming with VPI.
Functions and structures for handling VPI library version.
uint64_t VPIImageFormat
Pre-defined image formats.
Definition: ImageFormat.h:94
struct VPIImageImpl * VPIImage
A handle to an image.
Definition: Types.h:256
VPIImageBufferType
Represents how the image data is stored.
Definition: Image.h:166
Stores information about image characteristics and content.
Definition: Image.h:234
int32_t numLevels
Number of levels (i.e.
Definition: Pyramid.h:114
float scale
Scale factor of resolution between two adjecent levels.
Definition: Pyramid.h:117
VPIStatus vpiPyramidCreate(int32_t width, int32_t height, VPIImageFormat fmt, int32_t numLevels, float scale, uint64_t flags, VPIPyramid *pyr)
Create an empty image pyramid instance with the specified flags.
VPIStatus vpiPyramidGetSize(VPIPyramid pyr, int32_t outSize, int32_t *outWidth, int32_t *outHeight)
Get the image width and height in pixels (for all levels at once).
struct VPIPyramidImpl * VPIPyramid
A handle to an image pyramid.
Definition: Types.h:262
VPIStatus vpiPyramidGetFormat(VPIPyramid pyr, VPIImageFormat *fmt)
Returns the image format of the pyramid levels.
VPIStatus vpiPyramidGetNumLevels(VPIPyramid pyr, int32_t *numLevels)
Get the image pyramid level count.
#define VPI_MAX_PYRAMID_LEVEL_COUNT
Maximum number of pyramid levels.
Definition: Pyramid.h:105
VPIStatus vpiPyramidUnlock(VPIPyramid pyr)
Releases the lock on a image pyramid object.
VPIStatus vpiPyramidGetFlags(VPIPyramid pyr, uint64_t *flags)
Returns the flags associated with the pyramid.
VPIStatus vpiImageCreateWrapperPyramidLevel(VPIPyramid pyr, int32_t level, VPIImage *img)
Creates an image that wraps one pyramid level.
VPIStatus vpiPyramidGetScale(VPIPyramid pyr, float *scale)
Returns the scale factor of the pyramid levels.
VPIStatus vpiPyramidLockData(VPIPyramid pyr, VPILockMode lock, VPIImageBufferType bufType, VPIPyramidData *out)
Acquires the lock on a pyramid object and returns host-accessible pointers to each level of the pyram...
VPIStatus vpiPyramidLock(VPIPyramid pyr, VPILockMode lock)
Acquires the lock on an pyramid object.
void vpiPyramidDestroy(VPIPyramid pyr)
Destroy an image pyramid instance as well as all resources it owns.
Stores the pyramid contents.
Definition: Pyramid.h:112
VPIStatus
Status codes.
Definition: Status.h:81
VPILockMode
Defines the lock modes used by memory lock functions.
Definition: Types.h:592