NVIDIA DeepStream SDK API Reference

7.0 Release
gstnvdewarper.h
Go to the documentation of this file.
1 
32 #ifndef __GST_NVDEWARPER_H__
33 #define __GST_NVDEWARPER_H__
34 
35 #include <gst/gst.h>
36 #include <gst/video/gstvideometa.h>
37 #include <gst/video/video.h>
38 #include <gst/base/gstbasetransform.h>
39 
40 #include <cuda.h>
41 #include <npp.h>
42 
43 #include "nv_aisle_csvparser.hpp"
44 #include "nv_spot_csvparser.hpp"
45 #include "gstnvdsmeta.h"
46 #include "nvds_dewarper_meta.h"
47 #include "nvbufsurface.h"
48 #include "nvbufsurftransform.h"
49 
50 using namespace nvaisle_csv;
51 using namespace nvspot_csv;
52 
53 #define DISTORTION_SIZE 5
54 #define FOCAL_LENGTH_SIZE 2
55 #define ROTATION_MATRIX_SIZE 9
57 G_BEGIN_DECLS
58 
63 #define GST_TYPE_NVDEWARPER \
64  (gst_nvdewarper_get_type())
65 #define GST_NVDEWARPER(obj) \
66  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_NVDEWARPER,Gstnvdewarper))
67 #define GST_NVDEWARPER_CLASS(klass) \
68  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_NVDEWARPER,GstnvdewarperClass))
69 #define GST_IS_NVDEWARPER(obj) \
70  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_NVDEWARPER))
71 #define GST_IS_NVDEWARPER_CLASS(klass) \
72  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_NVDEWARPER))
73 
83 typedef struct _NvDewarperParams
84 {
87  gfloat top_angle;
88  gfloat bottom_angle;
89  gfloat pitch;
90  gfloat roll;
91  gfloat yaw;
92  gfloat dewarpFocalLength[FOCAL_LENGTH_SIZE];
93  char rot_axes[4];
97  gfloat control;
99  guint dewarpWidth;
100  guint dewarpHeight;
101  guint dewarpPitch;
103  guint addressMode;
104  guchar *surface;
105  guint isValid;
108  guint id;
111  gdouble distortion[DISTORTION_SIZE];
112  gfloat src_x0;
113  gfloat src_y0;
114  gfloat srcFov;
115  gfloat rot_matrix[ROTATION_MATRIX_SIZE];
118  gfloat dstFocalLength[FOCAL_LENGTH_SIZE];
119  gfloat dstPrincipalPoint[2];
121 
123 typedef struct _NvDewarperPriv
124 {
125  std::vector<NvDewarperParams> vecDewarpSurface;
127 
132 {
133  GstBaseTransform element;
135  GstCaps *sinkcaps;
136  GstCaps *srccaps;
138  guint input_width;
139  guint input_height;
140  guint output_width;
144  guint gpu_id;
146  gchar* config_file;
150  GstBufferPool *pool;
158 
161  GstVideoFormat input_fmt;
162  GstVideoFormat output_fmt;
166  guint frame_num;
168  guint dump_frames;
169  void *aisle_output;
170  void *spot_output;
171  void *output;
173  gboolean silent;
179  guint source_id;
181  guint aisleCSVInit;
182  guint spotCSVInit;
185  guint spot_surf_index[MAX_DEWARPED_VIEWS];
186  guint aisle_surf_index[MAX_DEWARPED_VIEWS];
187  guint surface_index[MAX_DEWARPED_VIEWS];
188  guint surface_type[MAX_DEWARPED_VIEWS];
193 };
194 
197 {
198  GstBaseTransformClass parent_class;
199 };
200 
201 GType gst_nvdewarper_get_type (void);
202 
203 G_END_DECLS
204 
205 #endif /* __GST_NVDEWARPER_H__ */
_Gstnvdewarper::spotCSVInit
guint spotCSVInit
Boolean indicating whether the spot surface is initialized from CSV data.
Definition: gstnvdewarper.h:182
_Gstnvdewarper::interpolation_method
NvBufSurfTransform_Inter interpolation_method
Interpolation method for scaling.
Definition: gstnvdewarper.h:160
_Gstnvdewarper::srccaps
GstCaps * srccaps
Source pad caps.
Definition: gstnvdewarper.h:136
NvDewarperPriv
struct _NvDewarperPriv NvDewarperPriv
Data structure contaning dewarping parameters for all the output surfaces.
ROTATION_MATRIX_SIZE
#define ROTATION_MATRIX_SIZE
Standard rotation matrix size.
Definition: gstnvdewarper.h:55
_NvDewarperPriv
Data structure contaning dewarping parameters for all the output surfaces.
Definition: gstnvdewarper.h:123
nvaisle_csv::AisleCSVParser
Class for parsing of Aisle CSV data.
Definition: nv_aisle_csvparser.hpp:89
_Gstnvdewarper::input_width
guint input_width
Input frame width.
Definition: gstnvdewarper.h:138
_NvDewarperParams::rot_matrix_valid
guint rot_matrix_valid
Boolean indicating if the values in "rot_matrix" are valid.
Definition: gstnvdewarper.h:116
_Gstnvdewarper::gpu_id
guint gpu_id
ID of the GPU this element uses for dewarping/scaling.
Definition: gstnvdewarper.h:144
_Gstnvdewarper::num_spot_views
guint num_spot_views
Number of spot views.
Definition: gstnvdewarper.h:183
_Gstnvdewarper::aisle_output
void * aisle_output
Placeholder for aisle output host memory pointer.
Definition: gstnvdewarper.h:169
_NvDewarperParams::surface
guchar * surface
Pointer to Cuda Surface used for Projection.
Definition: gstnvdewarper.h:104
_Gstnvdewarper::out_gst_buf
GstBuffer * out_gst_buf
Pointer to the output buffer.
Definition: gstnvdewarper.h:190
_NvDewarperParams::roll
gfloat roll
The roll angle, in degrees.
Definition: gstnvdewarper.h:90
_NvDewarperParams::src_y0
gfloat src_y0
source principal point in Y direction
Definition: gstnvdewarper.h:113
nvaisle_csv
Definition: nv_aisle_csvparser.hpp:30
_Gstnvdewarper::sinkcaps
GstCaps * sinkcaps
Sink pad caps.
Definition: gstnvdewarper.h:135
_Gstnvdewarper::aisleCSVInit
guint aisleCSVInit
Boolean indicating whether the aisle surface is initialized from CSV data.
Definition: gstnvdewarper.h:181
_Gstnvdewarper::silent
gboolean silent
Boolean indicating swtiching on/off of verbose output.
Definition: gstnvdewarper.h:173
_Gstnvdewarper::input_fmt
GstVideoFormat input_fmt
Input stream format derived from sink caps.
Definition: gstnvdewarper.h:161
_NvDewarperParams::dewarpWidth
guint dewarpWidth
Dewarped Surface width.
Definition: gstnvdewarper.h:99
gst_nvdewarper_get_type
GType gst_nvdewarper_get_type(void)
_Gstnvdewarper::output_height
guint output_height
Output frame height.
Definition: gstnvdewarper.h:141
_GstnvdewarperClass::parent_class
GstBaseTransformClass parent_class
Definition: gstnvdewarper.h:198
_Gstnvdewarper::output_fmt
GstVideoFormat output_fmt
Output stream format derived from src caps.
Definition: gstnvdewarper.h:162
_NvDewarperParams::top_angle
gfloat top_angle
The top view angle, in degrees.
Definition: gstnvdewarper.h:87
_Gstnvdewarper::aisleCSVParser
AisleCSVParser * aisleCSVParser
CSV parsed structure for aisle calibration.
Definition: gstnvdewarper.h:176
_NvDewarperParams::dewarpPitch
guint dewarpPitch
Dewarped Surface pitch.
Definition: gstnvdewarper.h:101
MAX_DEWARPED_VIEWS
#define MAX_DEWARPED_VIEWS
Maximum number of dewarped surfaces per frame supported.
Definition: nvds_dewarper_meta.h:44
_NvDewarperParams
Holds all the configuration parameters required for dewarping a surface.
Definition: gstnvdewarper.h:83
_Gstnvdewarper::source_id
guint source_id
Source ID of the input source.
Definition: gstnvdewarper.h:179
_Gstnvdewarper::num_output_buffers
guint num_output_buffers
Number of Output Buffers to be allocated by buffer pool.
Definition: gstnvdewarper.h:180
_Gstnvdewarper::priv
NvDewarperPriv * priv
Pointer to private data structure contaning dewarping parameters for all the output surfaces.
Definition: gstnvdewarper.h:192
cudaStream_t
struct CUstream_st * cudaStream_t
Forward declaration of cudaStream_t.
Definition: nvbufsurftransform.h:34
nv_spot_csvparser.hpp
SPDX-FileCopyrightText: Copyright (c) 2018 NVIDIA CORPORATION & AFFILIATES.
gstnvdsmeta.h
NvDewarperParams
struct _NvDewarperParams NvDewarperParams
Holds all the configuration parameters required for dewarping a surface.
_Gstnvdewarper::input_feature
gint input_feature
Input memory feature can take values MEM_FEATURE_NVMM/MEM_FEATURE_RAW based on input memory type caps...
Definition: gstnvdewarper.h:154
_NvDewarperParams::projection_type
guint projection_type
Projection type of type NvDsSurfaceType.
Definition: gstnvdewarper.h:85
_Gstnvdewarper::frame_num
guint frame_num
Number of the frame in the stream that was last processed.
Definition: gstnvdewarper.h:166
_NvDewarperParams::id
guint id
Surface id.
Definition: gstnvdewarper.h:108
_NvDewarperParams::surface_index
guint surface_index
Surface index.
Definition: gstnvdewarper.h:109
_Gstnvdewarper::element
GstBaseTransform element
Should be the first member when extending from GstBaseTransform.
Definition: gstnvdewarper.h:133
_Gstnvdewarper::spot_calibrationfile_set
gboolean spot_calibrationfile_set
Boolean indicating whether the spot calibration file is specified.
Definition: gstnvdewarper.h:174
NvBufSurfaceMemType
NvBufSurfaceMemType
Specifies memory types for NvBufSurface.
Definition: nvbufsurface.h:306
_NvDewarperParams::addressMode
guint addressMode
Cuda Texture Address Mode.
Definition: gstnvdewarper.h:103
nvspot_csv::SpotCSVParser
Class for parsing of Spot CSV data.
Definition: nv_spot_csvparser.hpp:80
_NvDewarperParams::srcFov
gfloat srcFov
Source field of view.
Definition: gstnvdewarper.h:114
_Gstnvdewarper::input_height
guint input_height
Input frame height.
Definition: gstnvdewarper.h:139
nvds_dewarper_meta.h
_Gstnvdewarper::num_aisle_views
guint num_aisle_views
Number of aisle views.
Definition: gstnvdewarper.h:184
_Gstnvdewarper::aisle_calibrationfile_set
gboolean aisle_calibrationfile_set
Boolean indicating whether the aisle calibration file is specified.
Definition: gstnvdewarper.h:175
_Gstnvdewarper::output_width
guint output_width
Output frame width.
Definition: gstnvdewarper.h:140
_NvDewarperParams::bottom_angle
gfloat bottom_angle
The bottom view angle, in degrees.
Definition: gstnvdewarper.h:88
_Gstnvdewarper::spot_output
void * spot_output
Placeholder for spot output host memory pointer.
Definition: gstnvdewarper.h:170
NvBufSurfTransform_Inter
NvBufSurfTransform_Inter
Specifies video interpolation methods.
Definition: nvbufsurftransform.h:84
nvspot_csv
Definition: nv_spot_csvparser.hpp:29
_NvDewarperParams::dewarpHeight
guint dewarpHeight
Dewarped Surface height.
Definition: gstnvdewarper.h:100
GstBuffer
struct _GstBuffer GstBuffer
Definition: idatatype.h:19
_Gstnvdewarper::stream
cudaStream_t stream
Cuda Stream to launch operations on.
Definition: gstnvdewarper.h:164
_Gstnvdewarper::num_batch_buffers
guint num_batch_buffers
Number of batch buffers.
Definition: gstnvdewarper.h:143
_NvDewarperParams::yaw
gfloat yaw
The yaw angle, in degrees.
Definition: gstnvdewarper.h:91
_Gstnvdewarper::cuda_mem_type
NvBufSurfaceMemType cuda_mem_type
Cuda surface memory type set by "nvbuf-memory-type".
Definition: gstnvdewarper.h:159
_NvDewarperPriv::vecDewarpSurface
std::vector< NvDewarperParams > vecDewarpSurface
Array of surface parameters of type "NvDewarperParams".
Definition: gstnvdewarper.h:125
_Gstnvdewarper::aisle_calibration_file
gchar * aisle_calibration_file
String contaning path and name of aisle calibration file.
Definition: gstnvdewarper.h:148
nvbufsurftransform.h
nv_aisle_csvparser.hpp
SPDX-FileCopyrightText: Copyright (c) 2018 NVIDIA CORPORATION & AFFILIATES.
_Gstnvdewarper::pool
GstBufferPool * pool
Internal buffer pool for output buffers
Definition: gstnvdewarper.h:150
_NvDewarperParams::pitch
gfloat pitch
The pitch angle, in degrees.
Definition: gstnvdewarper.h:89
nvbufsurface.h
_NvDewarperParams::src_x0
gfloat src_x0
source principal point in X direction
Definition: gstnvdewarper.h:112
DISTORTION_SIZE
#define DISTORTION_SIZE
Maximum number of distortion coefficients.
Definition: gstnvdewarper.h:53
_NvDewarperParams::control
gfloat control
Projection-specific controls for Panini, Stereographic and Pushbroom projections.
Definition: gstnvdewarper.h:97
FOCAL_LENGTH_SIZE
#define FOCAL_LENGTH_SIZE
Focal length array size : two values for X & Y direction.
Definition: gstnvdewarper.h:54
_Gstnvdewarper::dump_frames
guint dump_frames
Number of dewarped output frames to be dumped in a *.rgba file.
Definition: gstnvdewarper.h:168
_Gstnvdewarper
Gstnvdewarper element structure.
Definition: gstnvdewarper.h:131
_Gstnvdewarper::spot_calibration_file
gchar * spot_calibration_file
String contaning path and name of spot calibration file.
Definition: gstnvdewarper.h:147
_Gstnvdewarper::output
void * output
Host memory pointer for output buffer.
Definition: gstnvdewarper.h:171
_Gstnvdewarper::spotCSVParser
SpotCSVParser * spotCSVParser
CSV parsed structure for spot calibration.
Definition: gstnvdewarper.h:177
_Gstnvdewarper::config_file
gchar * config_file
String contaning path and name of configuration file.
Definition: gstnvdewarper.h:146
_Gstnvdewarper::output_feature
gint output_feature
Output memory feature can take values MEM_FEATURE_NVMM/MEM_FEATURE_RAW based on output memory type ca...
Definition: gstnvdewarper.h:157
_NvDewarperParams::isValid
guint isValid
Boolean indicating if the surface parameters structure is valid.
Definition: gstnvdewarper.h:105
_GstnvdewarperClass
GStreamer boilerplate.
Definition: gstnvdewarper.h:196