NVIDIA DeepStream SDK API Reference

9.1 Release
9.1/sources/includes/ds3d/common/idatatype.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2021-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3  * SPDX-License-Identifier: Apache-2.0
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 #ifndef _DS3D_COMMON_IDATATYPE__H
19 #define _DS3D_COMMON_IDATATYPE__H
20 
21 #include <ds3d/common/common.h>
22 #include <ds3d/common/typeid.h>
23 
24 typedef struct _GstBuffer GstBuffer;
25 typedef struct NvBufSurface NvBufSurface;
27 
28 namespace ds3d {
29 
30 template <typename T>
31 union __xyzw {
32  T data[4];
33  struct {
34  T x, y, z, w;
35  };
36 };
37 
38 template <typename T>
39 union __xyz {
40  T data[3];
41  struct {
42  T x, y, z;
43  };
44 };
45 
46 template <typename T>
47 union __xy {
48  T data[2];
49  struct {
50  T x, y;
51  };
52 };
53 
54 template <typename T>
55 union __x {
56  T data[1];
57  struct {
58  T x;
59  };
60 };
61 
62 template <typename T>
63 using vec4 = __xyzw<T>;
64 template <typename T>
65 using vec3 = __xyz<T>;
66 template <typename T>
67 using vec2 = __xy<T>;
68 template <typename T>
69 using vec1 = __x<T>;
70 
71 using vec4f = vec4<float>;
72 using vec3f = vec3<float>;
73 using vec2f = vec2<float>;
74 using vec1f = vec1<float>;
75 
76 using vec4b = vec4<uint8_t>;
77 using vec3b = vec3<uint8_t>;
78 using vec2b = vec2<uint8_t>;
79 using vec1b = vec1<uint8_t>;
80 
81 // keep same order with InferDataType
82 enum class DataType : int {
83  kFp32 = 0, // 0
84  kFp16 = 1, // 1
85  kInt8 = 2, // 2
86  kInt32 = 3, // 3
87  kInt16 = 7,
88  kUint8,
89  kUint16,
90  kUint32,
91  kDouble,
92  kInt64,
93 };
94 
95 enum class FrameType : int {
96  kUnknown = 0,
97  kDepth = 1,
98  kColorRGBA = 2,
99  kColorRGB = 3,
100  kPointXYZ = 32,
101  kPointCoordUV = 33,
102  kLidarXYZI = 34,
103  kCustom = 255,
104 };
105 
106 enum class MemType : int {
107  kNone = 0,
108  kGpuCuda = 1,
109  kCpu = 2,
110  kCpuPinned = 3,
111 };
112 
113 struct TimeStamp { // unit in nanosecond
114  uint64_t t0 = 0;
115  uint64_t t1 = 0;
116  uint64_t t2 = 0;
118 };
119 
120 constexpr const size_t kMaxShapeDims = 8;
121 
122 struct Shape {
123  uint32_t numDims = 0;
124  int32_t d[kMaxShapeDims] = {0};
126 };
127 
128 struct DepthScale {
129  double scaleUnit = 0.0f;
130  void* reserved[3] = {nullptr};
132 };
133 
134 struct IntrinsicsParam {
135  uint32_t width = 0;
136  uint32_t height = 0;
137  float centerX = 0; // coordinate axis in horizontal
138  float centerY = 0; // coordinate axis position in vertical
139  float fx = 0; // focal lenth in x
140  float fy = 0; // focal lenth in y
142 };
143 
144 struct ExtrinsicsParam {
145  vec3f rotation[3]; // column-major order
148 };
149 
150 struct TransformMatrix {
151  vec4f matrix[4]; // column-major order
153 };
154 
155 
156 //Video Bridge 2d input
157 struct VideoBridge2dInput {
158  uint8_t desc[128] = {0};
159  GstBuffer* buffer = nullptr;
160  NvBufSurface* surfaceBatchBuffer = nullptr;
161  NvDsBatchMeta* batchMeta = nullptr;
163 };
164 
165 } // namespace ds3d
166 
167 #endif // _DS3D_COMMON_IDATATYPE__H
ds3d::FrameType::kPointCoordUV
@ kPointCoordUV
ds3d::VideoBridge2dInput::buffer
GstBuffer * buffer
Definition: sources/includes/ds3d/common/idatatype.h:159
ds3d::__xyzw::data
T data[4]
Definition: sources/includes/ds3d/common/idatatype.h:32
ds3d::DataType::kUint32
@ kUint32
ds3d::__xyz::data
T data[3]
Definition: sources/includes/ds3d/common/idatatype.h:40
DS3D_TYPEID_VIDEOBRIDGE2D_PARM
#define DS3D_TYPEID_VIDEOBRIDGE2D_PARM
Definition: sources/includes/ds3d/common/typeid.h:42
ds3d::IntrinsicsParam::centerX
float centerX
Definition: sources/includes/ds3d/common/idatatype.h:137
ds3d::__xy::y
T y
Definition: sources/includes/ds3d/common/idatatype.h:50
ds3d::MemType::kCpu
@ kCpu
ds3d::ExtrinsicsParam::translation
vec3f translation
Definition: sources/includes/ds3d/common/idatatype.h:146
ds3d::vec3b
vec3< uint8_t > vec3b
Definition: sources/includes/ds3d/common/idatatype.h:77
ds3d::DataType::kFp32
@ kFp32
ds3d::vec3f
vec3< float > vec3f
Definition: sources/includes/ds3d/common/idatatype.h:72
ds3d::vec3
__xyz< T > vec3
Definition: sources/includes/ds3d/common/idatatype.h:65
ds3d::DataType
DataType
Definition: sources/includes/ds3d/common/idatatype.h:82
ds3d::vec4f
vec4< float > vec4f
Definition: sources/includes/ds3d/common/idatatype.h:71
NvBufSurface
Holds information about batched buffers.
Definition: sources/includes/nvbufsurface.h:597
ds3d::vec2
__xy< T > vec2
Definition: sources/includes/ds3d/common/idatatype.h:67
REGISTER_TYPE_ID
#define REGISTER_TYPE_ID(uint64Id)
Definition: sources/includes/ds3d/common/defines.h:136
ds3d::__x::x
T x
Definition: sources/includes/ds3d/common/idatatype.h:58
ds3d::VideoBridge2dInput::surfaceBatchBuffer
NvBufSurface * surfaceBatchBuffer
Definition: sources/includes/ds3d/common/idatatype.h:160
ds3d::__xyz::z
T z
Definition: sources/includes/ds3d/common/idatatype.h:42
ds3d::DataType::kInt32
@ kInt32
ds3d::FrameType::kUnknown
@ kUnknown
ds3d::__xy::data
T data[2]
Definition: sources/includes/ds3d/common/idatatype.h:48
ds3d::__xyzw::x
T x
Definition: sources/includes/ds3d/common/idatatype.h:34
ds3d::TimeStamp::t2
uint64_t t2
Definition: sources/includes/ds3d/common/idatatype.h:116
ds3d::FrameType::kCustom
@ kCustom
ds3d::FrameType::kLidarXYZI
@ kLidarXYZI
ds3d::DepthScale::scaleUnit
double scaleUnit
Definition: sources/includes/ds3d/common/idatatype.h:129
ds3d::IntrinsicsParam::height
uint32_t height
Definition: sources/includes/ds3d/common/idatatype.h:136
ds3d::__x::data
T data[1]
Definition: sources/includes/ds3d/common/idatatype.h:56
ds3d::vec2b
vec2< uint8_t > vec2b
Definition: sources/includes/ds3d/common/idatatype.h:78
ds3d::FrameType::kPointXYZ
@ kPointXYZ
ds3d::vec1f
vec1< float > vec1f
Definition: sources/includes/ds3d/common/idatatype.h:74
ds3d::IntrinsicsParam::width
uint32_t width
Definition: sources/includes/ds3d/common/idatatype.h:135
ds3d::TimeStamp::t1
uint64_t t1
Definition: sources/includes/ds3d/common/idatatype.h:115
ds3d::TimeStamp::t0
uint64_t t0
Definition: sources/includes/ds3d/common/idatatype.h:114
ds3d::IntrinsicsParam::fy
float fy
Definition: sources/includes/ds3d/common/idatatype.h:140
ds3d::Shape::numDims
uint32_t numDims
Definition: sources/includes/ds3d/common/idatatype.h:123
ds3d::ExtrinsicsParam::rotation
vec3f rotation[3]
Definition: sources/includes/ds3d/common/idatatype.h:145
ds3d::VideoBridge2dInput::desc
uint8_t desc[128]
Definition: sources/includes/ds3d/common/idatatype.h:158
DS3D_TYPEID_TRANSFORM_MATRIX
#define DS3D_TYPEID_TRANSFORM_MATRIX
Definition: sources/includes/ds3d/common/typeid.h:43
_NvDsBatchMeta
Holds information about a formed batch containing frames from different sources.
Definition: sources/includes/nvdsmeta.h:262
DS3D_TYPEID_EXTRINSIC_PARM
#define DS3D_TYPEID_EXTRINSIC_PARM
Definition: sources/includes/ds3d/common/typeid.h:41
ds3d::vec4
__xyzw< T > vec4
Definition: sources/includes/ds3d/common/idatatype.h:63
ds3d::__xyz::y
T y
Definition: sources/includes/ds3d/common/idatatype.h:42
ds3d::MemType::kGpuCuda
@ kGpuCuda
ds3d::FrameType::kColorRGBA
@ kColorRGBA
ds3d::DataType::kInt64
@ kInt64
ds3d::FrameType::kColorRGB
@ kColorRGB
ds3d::DataType::kUint16
@ kUint16
ds3d::IntrinsicsParam::centerY
float centerY
Definition: sources/includes/ds3d/common/idatatype.h:138
ds3d::DataType::kDouble
@ kDouble
ds3d::DataType::kUint8
@ kUint8
ds3d::DataType::kFp16
@ kFp16
ds3d::__xyzw::y
T y
Definition: sources/includes/ds3d/common/idatatype.h:34
DS3D_TYPEID_TIMESTAMP
#define DS3D_TYPEID_TIMESTAMP
Definition: sources/includes/ds3d/common/typeid.h:37
ds3d::__xyz::x
T x
Definition: sources/includes/ds3d/common/idatatype.h:42
ds3d::FrameType::kDepth
@ kDepth
TimeStamp
NvMOTTimeStamp TimeStamp
Definition: sources/includes/nvdstracker.h:56
ds3d::Shape::d
int32_t d[kMaxShapeDims]
Definition: sources/includes/ds3d/common/idatatype.h:124
ds3d::vec1b
vec1< uint8_t > vec1b
Definition: sources/includes/ds3d/common/idatatype.h:79
ds3d::DepthScale::reserved
void * reserved[3]
Definition: sources/includes/ds3d/common/idatatype.h:130
ds3d::__xyzw::z
T z
Definition: sources/includes/ds3d/common/idatatype.h:34
ds3d::FrameType
FrameType
Definition: sources/includes/ds3d/common/idatatype.h:95
ds3d::DataType::kInt16
@ kInt16
ds3d::VideoBridge2dInput::batchMeta
NvDsBatchMeta * batchMeta
Definition: sources/includes/ds3d/common/idatatype.h:161
ds3d::__xyzw::w
T w
Definition: sources/includes/ds3d/common/idatatype.h:34
ds3d::TransformMatrix::matrix
vec4f matrix[4]
Definition: sources/includes/ds3d/common/idatatype.h:151
ds3d::vec2f
vec2< float > vec2f
Definition: sources/includes/ds3d/common/idatatype.h:73
ds3d
Definition: sources/includes/ds3d/common/abi_dataprocess.h:25
ds3d::IntrinsicsParam::fx
float fx
Definition: sources/includes/ds3d/common/idatatype.h:139
ds3d::__xy::x
T x
Definition: sources/includes/ds3d/common/idatatype.h:50
DS3D_TYPEID_DEPTH_SCALE
#define DS3D_TYPEID_DEPTH_SCALE
Definition: sources/includes/ds3d/common/typeid.h:39
DS3D_TYPEID_INTRINSIC_PARM
#define DS3D_TYPEID_INTRINSIC_PARM
Definition: sources/includes/ds3d/common/typeid.h:40
ds3d::MemType::kCpuPinned
@ kCpuPinned
ds3d::MemType
MemType
Definition: sources/includes/ds3d/common/idatatype.h:106
ds3d::DataType::kInt8
@ kInt8
ds3d::kMaxShapeDims
constexpr const size_t kMaxShapeDims
Definition: sources/includes/ds3d/common/idatatype.h:120
DS3D_TYPEID_SHAPE
#define DS3D_TYPEID_SHAPE
Definition: sources/includes/ds3d/common/typeid.h:38
ds3d::vec1
__x< T > vec1
Definition: sources/includes/ds3d/common/idatatype.h:69
ds3d::MemType::kNone
@ kNone
GstBuffer
struct _GstBuffer GstBuffer
Definition: sources/includes/ds3d/common/idatatype.h:24
ds3d::vec4b
vec4< uint8_t > vec4b
Definition: sources/includes/ds3d/common/idatatype.h:76