DriveWorks SDK Reference
5.6.215 Release
For Test and Development only

Camera.h
Go to the documentation of this file.
1
2//
3// Notice
4// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
5// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
6// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
7// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
8//
9// NVIDIA CORPORATION & AFFILIATES assumes no responsibility for the consequences of use of such
10// information or for any infringement of patents or other rights of third parties that may
11// result from its use. No license is granted by implication or otherwise under any patent
12// or patent rights of NVIDIA CORPORATION & AFFILIATES. No third party distribution is allowed unless
13// expressly authorized by NVIDIA. Details are subject to change without notice.
14// This code supersedes and replaces all information previously supplied.
15// NVIDIA CORPORATION & AFFILIATES products are not authorized for use as critical
16// components in life support devices or systems without express written approval of
17// NVIDIA CORPORATION & AFFILIATES.
18//
19// SPDX-FileCopyrightText: Copyright (c) 2016-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
20// SPDX-License-Identifier: LicenseRef-NvidiaProprietary
21//
22// NVIDIA CORPORATION, its affiliates and licensors retain all intellectual
23// property and proprietary rights in and to this material, related
24// documentation and any modifications thereto. Any use, reproduction,
25// disclosure or distribution of this material and related documentation
26// without an express license agreement from NVIDIA CORPORATION or
27// its affiliates is strictly prohibited.
28//
30
51#ifndef DW_SENSORS_CAMERA_CAMERA_H_
52#define DW_SENSORS_CAMERA_CAMERA_H_
53
54#include <dw/core/Config.h>
55#include <dw/core/base/Types.h>
56#include <dw/sensors/Sensors.h>
57#include <dw/image/Image.h>
58
59#include <nvscisync.h>
60#include <nvscibuf.h>
61
62// Forward declares from NvMedia
63typedef void NvMediaIPPManager;
64
65#ifdef __cplusplus
66extern "C" {
67#endif
68
70typedef struct dwCameraFrame* dwCameraFrameHandle_t;
71
75typedef enum dwCameraOutputType {
100
102typedef enum dwCameraRawFormat {
104
109
114
119
121
124
126typedef enum dwCameraType {
139
153
155typedef enum dwCameraFOV {
169
171typedef enum dwCameraSIPLInterfaceProviderType {
176
178typedef struct dwCameraProperties
179{
186 int32_t outputTypes;
187 uint32_t siblings;
188 uint32_t revision;
189 uint32_t imageBitDepth;
192
232
234#define DW_CAMERA_MAX_DEVICE_GPIOS 8U
235
238{
242 uint32_t uIndex;
244 uint8_t uLinkMask;
250 uint32_t numGpioIdxs;
252
255{
258 uint8_t const* errorBuffer;
262
264#define DW_CAMERA_MAX_CAMERAMODULES_PER_BLOCK 4U
265
268{
271
279
287
289typedef void (*dwCameraCallback)(dwCameraSIPLNotification* notification, dwSensorHandle_t sensor);
290
326 dwTime_t const timeoutUs, dwSensorHandle_t const sensor);
327
344
369 dwCameraFrameHandle_t const frame);
370
395 dwCameraFrameHandle_t const frame);
396
412
428
460 dwCameraOutputType const outputType,
461 dwSensorHandle_t const sensor);
462
476 dwSensorHandle_t const sensor);
477
491 dwSensorHandle_t const sensor);
492
507 uint32_t const modeIdx,
508 dwSensorHandle_t const sensor);
509
528 dwCameraOutputType const outputType,
529 dwSensorHandle_t const sensor);
530
543dwStatus dwSensorCamera_setCUDAStream(cudaStream_t const stream, dwSensorHandle_t const sensor);
544
556dwStatus dwSensorCamera_getCUDAStream(cudaStream_t* const stream, dwSensorHandle_t const sensor);
557
570
584
607dwStatus dwSensorCamera_readEEPROM(uint32_t const paramId, void* const buffer, uint32_t const size, dwSensorHandle_t const sensor);
608
618dwStatus dwSensorCamera_getEOFFence(NvSciSyncFence* syncFence, dwCameraOutputType outputType, dwCameraFrameHandle_t const frameHandle);
619
628dwStatus dwSensorCamera_fillSyncAttributes(NvSciSyncAttrList syncAttrList, dwCameraOutputType outputType, dwSensorHandle_t sensor);
629
639
658
671
689dwStatus dwSensorCamera_enableLink(dwSensorHandle_t const sensor, bool const resetModule);
690
691#ifdef __cplusplus
692}
693#endif
695#endif // DW_SENSORS_CAMERA_CAMERA_H_
NVIDIA DriveWorks API: Sensors
NVIDIA DriveWorks API: Core Types
uint8_t uLinkMask
Holds the device block link mask.
Definition: Camera.h:244
dwCameraSIPLEErrorDetails serializerErrorInfoList[DW_CAMERA_MAX_CAMERAMODULES_PER_BLOCK]
Error info for serializer, valid only for device block event.
Definition: Camera.h:283
dwCameraExposureControl exposure
Definition: Camera.h:182
dwCameraSIPLEErrorDetails sensorErrorInfoList[DW_CAMERA_MAX_CAMERAMODULES_PER_BLOCK]
Error info for sensor, valid only for device block event.
Definition: Camera.h:285
uint32_t siblings
Definition: Camera.h:187
uint8_t const * errorBuffer
Pointer to buffer which is filled by driver with error information.
Definition: Camera.h:258
uint32_t revision
Definition: Camera.h:188
dwCameraFOV fov
Definition: Camera.h:184
uint64_t frameCaptureTSC
Holds the TSC timestamp of the frame capture.
Definition: Camera.h:246
dwVector2ui resolution
Definition: Camera.h:185
size_t sizeWritten
Holds size of error written to the buffer, filled by driver.
Definition: Camera.h:260
dwCameraNotificationData data
NotificationData from SIPL, pipeline & device block event.
Definition: Camera.h:270
uint32_t gpioIdxs[DW_CAMERA_MAX_DEVICE_GPIOS]
Holds the GPIO indices.
Definition: Camera.h:248
dwCameraType cameraType
Definition: Camera.h:180
dwCameraSIPLEErrorDetails deserializerErrorInfo
Error info for deserializer, valid only for device block event.
Definition: Camera.h:273
bool isRemoteError
Set to true if remote (serializer) error detected, valid only for device block event.
Definition: Camera.h:275
dwCameraSIPLNotificationData eNotifyType
Holds the notification event type.
Definition: Camera.h:240
uint32_t uIndex
Holds the ID of each camera sensor.
Definition: Camera.h:242
uint32_t numCameraModules
Number of the camera modules, valid only for device block event.
Definition: Camera.h:281
int32_t outputTypes
Definition: Camera.h:186
uint8_t linkErrorMask
Store link mask for link error state, valid only for device block event (1 in index position indicate...
Definition: Camera.h:278
dwCameraRawFormat rawFormat
Definition: Camera.h:181
uint32_t imageBitDepth
Definition: Camera.h:189
uint32_t numGpioIdxs
Holds the number of GPIO indices in the array.
Definition: Camera.h:250
float32_t framerate
Definition: Camera.h:183
DW_API_PUBLIC dwStatus dwSensorCamera_getNumSupportedCaptureModes(uint32_t *const numModes, dwSensorHandle_t const sensor)
Gets number of supported capture modes.
DW_API_PUBLIC dwStatus dwSensorCamera_fillSyncAttributes(NvSciSyncAttrList syncAttrList, dwCameraOutputType outputType, dwSensorHandle_t sensor)
Fill the sync attributes for the camera pipeline to signal EOF fences.
DW_API_PUBLIC dwStatus dwSensorCamera_setEventCallback(dwCameraCallback blkCallback, dwCameraCallback lineCallback, dwSensorHandle_t sensor)
Set the Camera Error Handling callbacks.
DW_API_PUBLIC dwStatus dwSensorCamera_getSupportedCaptureMode(dwCameraProperties *const captureMode, uint32_t const modeIdx, dwSensorHandle_t const sensor)
Gets capture modes by specified index.
DW_API_PUBLIC dwStatus dwSensorCamera_getTimestamp(dwTime_t *const timestamp, dwCameraFrameHandle_t const frameHandle)
Gets the timestamp of the current camera frame.
DW_API_PUBLIC dwStatus dwSensorCamera_readFrame(dwCameraFrameHandle_t *const frameHandle, dwTime_t const timeoutUs, dwSensorHandle_t const sensor)
Reads a frame handle from the camera sensor.
DW_API_PUBLIC dwStatus dwSensorCamera_getSIPLInterfaceProvider(void **const interfaceProvider, dwSensorHandle_t const sensor, dwSIPLCameraInterfaceProviderType const type)
Gets SIPL Interface provider for a custom camera sensor.
DW_API_PUBLIC dwStatus dwSensorCamera_getCUDAStream(cudaStream_t *const stream, dwSensorHandle_t const sensor)
Gets the CUDA stream used.
DW_API_PUBLIC dwStatus dwSensorCamera_getImageProperties(dwImageProperties *const imageProperties, dwCameraOutputType const outputType, dwSensorHandle_t const sensor)
Gets information about the image properties for a given 'dwCameraImageOutputType'.
DW_API_PUBLIC dwStatus dwSensorCamera_appendAllocationAttributes(dwImageProperties *imgProps, dwCameraOutputType const outputType, dwSensorHandle_t const sensor)
Append the allocation attribute such that images allocated by the application and given to the camera...
dwStatus dwSensorCamera_setImagePool(dwImagePool imagePool, dwSensorHandle_t const sensor)
Sets a pool of image to be used as output by the camera layer.
DW_API_PUBLIC dwStatus dwSensorCamera_getEOFFence(NvSciSyncFence *syncFence, dwCameraOutputType outputType, dwCameraFrameHandle_t const frameHandle)
Get EOF fence of the current camera frame.
#define DW_CAMERA_MAX_CAMERAMODULES_PER_BLOCK
Indicates the maximum number of camera modules per device block.
Definition: Camera.h:264
dwCameraType
Enum of available camera sensors.
Definition: Camera.h:126
DW_API_PUBLIC dwStatus dwSensorCamera_getSensorProperties(dwCameraProperties *const properties, dwSensorHandle_t const sensor)
Gets information about the camera sensor.
DW_API_PUBLIC dwStatus dwSensorCamera_getNvMediaIPPManager(NvMediaIPPManager **const manager, dwSensorHandle_t const sensor)
Gets the NvMediaIPPManager used for GMSL camera IPP setup and event callback.
#define DW_CAMERA_MAX_DEVICE_GPIOS
Indicates the maximum number of gpio indices.
Definition: Camera.h:234
dwSIPLCameraInterfaceProviderType
Enum of available SIPL interface provider types.
Definition: Camera.h:171
dwCameraRawFormat
Raw encoding formats pixel-order.
Definition: Camera.h:102
DW_API_PUBLIC dwStatus dwSensorCamera_enableLink(dwSensorHandle_t const sensor, bool const resetModule)
Enable the camera link This method enables a given link and, if reset is asserted,...
struct dwCameraFrame * dwCameraFrameHandle_t
Handle to captured frame.
Definition: Camera.h:70
dwCameraFOV
Enum of available FOV in degrees for camera lenses.
Definition: Camera.h:155
DW_API_PUBLIC dwStatus dwSensorCamera_setSyncObject(NvSciSyncObj syncObj, dwCameraOutputType outputType, dwSensorHandle_t sensor)
Set the sync obj to which the camera pipeline will signal EOF fences.
void(* dwCameraCallback)(dwCameraSIPLNotification *notification, dwSensorHandle_t sensor)
Function type of the camera error event handling.
Definition: Camera.h:289
DW_API_PUBLIC dwStatus dwSensorCamera_getImage(dwImageHandle_t *const image, dwCameraOutputType const type, dwCameraFrameHandle_t const frame)
Gets the output image/s image in a format specified by the output type.
dwCameraExposureControl
Enum of exposure control types.
Definition: Camera.h:141
dwCameraOutputType
Output types supported by the camera.
Definition: Camera.h:75
DW_API_PUBLIC dwStatus dwSensorCamera_readEEPROM(uint32_t const paramId, void *const buffer, uint32_t const size, dwSensorHandle_t const sensor)
Read data associated with a parameter stored on the EEPROM device and write to the provided buffer.
DW_API_PUBLIC dwStatus dwSensorCamera_disableLink(dwSensorHandle_t const sensor)
Disable the camera link This method should only be called after dwSensor_start() and before dwSensor_...
DW_API_PUBLIC dwStatus dwSensorCamera_setCUDAStream(cudaStream_t const stream, dwSensorHandle_t const sensor)
Sets the CUDA stream used by getImageAsync during internal cuda related operations.
DW_API_PUBLIC dwStatus dwSensorCamera_getImageAsync(dwImageHandle_t *const image, dwCameraOutputType const type, dwCameraFrameHandle_t const frame)
Gets the output image/s image in a format specified by the output type.
dwCameraSIPLNotificationData
Enum of available SIPL event notification type (Copy from nvsipl::NvSIPLPipelineNotifier::Notificatio...
Definition: Camera.h:194
DW_API_PUBLIC dwStatus dwSensorCamera_returnFrame(dwCameraFrameHandle_t *const frameHandle)
Returns a frame to the camera after it has been consumed.
void NvMediaIPPManager
Definition: Camera.h:63
@ DW_CAMERA_GMSL_IMX390
Definition: Camera.h:136
@ DW_CAMERA_GMSL_MN34906
Definition: Camera.h:134
@ DW_CAMERA_GMSL_AR0144
Definition: Camera.h:130
@ DW_CAMERA_GMSL_OV2311
Definition: Camera.h:135
@ DW_CAMERA_GMSL_AR0138
Definition: Camera.h:131
@ DW_CAMERA_GENERIC
Definition: Camera.h:127
@ DW_CAMERA_GMSL_AR0231
Definition: Camera.h:128
@ DW_CAMERA_GMSL_AR0220
Definition: Camera.h:132
@ DW_CAMERA_GMSL_AR0820
Definition: Camera.h:133
@ DW_CAMERA_GMSL_CUSTOM
Definition: Camera.h:137
@ DW_CAMERA_USB_GENERIC
Definition: Camera.h:129
@ DW_SIPL_CAMERA_INTERFACE_PROVIDER_TYPE_MODULE
Definition: Camera.h:173
@ DW_SIPL_CAMERA_INTERFACE_PROVIDER_TYPE_COUNT
Definition: Camera.h:174
@ DW_SIPL_CAMERA_INTERFACE_PROVIDER_TYPE_DESERIALIZER
Definition: Camera.h:172
@ DW_CAMERA_RAW_FORMAT_CCRC
Definition: Camera.h:117
@ DW_CAMERA_RAW_FORMAT_TOF
Definition: Camera.h:122
@ DW_CAMERA_RAW_FORMAT_CCCC
Definition: Camera.h:120
@ DW_CAMERA_RAW_FORMAT_RCCC
Definition: Camera.h:115
@ DW_CAMERA_RAW_FORMAT_BGGR
Definition: Camera.h:106
@ DW_CAMERA_RAW_FORMAT_GRBG
Definition: Camera.h:107
@ DW_CAMERA_RAW_FORMAT_UNKNOWN
Definition: Camera.h:103
@ DW_CAMERA_RAW_FORMAT_GBRG
Definition: Camera.h:108
@ DW_CAMERA_RAW_FORMAT_CBRC
Definition: Camera.h:113
@ DW_CAMERA_RAW_FORMAT_CCCR
Definition: Camera.h:118
@ DW_CAMERA_RAW_FORMAT_RCCB
Definition: Camera.h:110
@ DW_CAMERA_RAW_FORMAT_RGGB
Definition: Camera.h:105
@ DW_CAMERA_RAW_FORMAT_BCCR
Definition: Camera.h:111
@ DW_CAMERA_RAW_FORMAT_CRCC
Definition: Camera.h:116
@ DW_CAMERA_RAW_FORMAT_CRBC
Definition: Camera.h:112
@ DW_CAMERA_FOV_30
Definition: Camera.h:157
@ DW_CAMERA_FOV_60
Definition: Camera.h:161
@ DW_CAMERA_FOV_65
Definition: Camera.h:162
@ DW_CAMERA_FOV_185
Definition: Camera.h:167
@ DW_CAMERA_FOV_120
Definition: Camera.h:166
@ DW_CAMERA_FOV_50
Definition: Camera.h:159
@ DW_CAMERA_FOV_UNKNOWN
Definition: Camera.h:156
@ DW_CAMERA_FOV_90
Definition: Camera.h:163
@ DW_CAMERA_FOV_100
Definition: Camera.h:164
@ DW_CAMERA_FOV_55
Definition: Camera.h:160
@ DW_CAMERA_FOV_48
Definition: Camera.h:158
@ DW_CAMERA_FOV_110
Definition: Camera.h:165
@ DW_CAMERA_EXPOSURE_UNKNOWN
Unknown exposure control.
Definition: Camera.h:145
@ DW_CAMERA_EXPOSURE_BAE
Exposure control with bracketed auto exposure.
Definition: Camera.h:149
@ DW_CAMERA_EXPOSURE_AE
Default exposure control.
Definition: Camera.h:147
@ DW_CAMERA_EXPOSURE_CUSTOM
Exposure control using user's custom callback.
Definition: Camera.h:151
@ DW_CAMERA_EXPOSURE_NONE
No exposure control.
Definition: Camera.h:143
@ DW_CAMERA_OUTPUT_NATIVE_PROCESSED
processed images (usually be YUV420 planar or RGB planar)
Definition: Camera.h:77
@ DW_CAMERA_OUTPUT_CUDA_RAW_UINT16
for raw images
Definition: Camera.h:86
@ DW_CAMERA_OUTPUT_NATIVE_RAW
raw image
Definition: Camera.h:79
@ DW_CAMERA_OUTPUT_CUDA_YUV420_UINT8_PLANAR
simple yuv420 output, supported in most use cases (see doc)
Definition: Camera.h:84
@ DW_CAMERA_OUTPUT_NATIVE_PROCESSED2
processed images from ISP2 output (RGB-FP16)
Definition: Camera.h:98
@ DW_CAMERA_OUTPUT_CUDA_YUV444_UINT16_PLANAR
other YUV processed outputs (see devguide)
Definition: Camera.h:92
@ DW_CAMERA_OUTPUT_NATIVE_PROCESSED1
processed images from ISP1 output (usually be YUV420 planar or RGB planar)
Definition: Camera.h:96
@ DW_CAMERA_OUTPUT_CUDA_RGBA_UINT8
for processed images RGBA image supported in all processed use cases
Definition: Camera.h:82
@ DW_CAMERA_OUTPUT_CUDA_YUV420_UINT16_SEMIPLANAR
other YUV processed outputs (see devguide)
Definition: Camera.h:88
@ DW_CAMERA_OUTPUT_CUDA_YUV444_UINT8_PLANAR
other YUV processed outputs (see devguide)
Definition: Camera.h:90
@ DW_CAMERA_OUTPUT_CUDA_YUV420_UINT8_SEMIPLANAR
simple yuv420 semiplanar output, supported in most use cases (see doc)
Definition: Camera.h:94
@ DW_NOTIF_WARN_ICP_FRAME_DROP
Pipeline event, indicates pipeline was forced to drop a frame due to a slow consumer or system issues...
Definition: Camera.h:204
@ DW_NOTIF_ERROR_ISP_PROCESSING_FAILURE
Pipeline event, indicates ISP processing failure.
Definition: Camera.h:216
@ DW_NOTIF_ERROR_CDI_SET_SENSOR_CTRL_FAILURE
Pipeline event, indicates CDI set sensor control failure.
Definition: Camera.h:220
@ DW_NOTIF_ERROR_ICP_BAD_INPUT_STREAM
Pipeline event, indicates ICP bad input stream.
Definition: Camera.h:210
@ DW_NOTIF_INFO_ISP_PROCESSING_DONE
Pipeline event, indicates ISP processing is finished.
Definition: Camera.h:198
@ DW_NOTIF_ERROR_ICP_EMB_DATA_PARSE_FAILURE
Pipeline event, indicates embedded data parsing failure.
Definition: Camera.h:214
@ DW_NOTIF_INFO_ICP_PROCESSING_DONE
Pipeline event, indicates ICP processing is finished.
Definition: Camera.h:196
@ DW_NOTIF_ERROR_SERIALIZER_FAILURE
Device block event, indicates a serializer failure.
Definition: Camera.h:226
@ DW_NOTIF_WARN_ICP_FRAME_DISCONTINUITY
Pipeline event, indicates a discontinuity was detected in parsed embedded data frame sequence number.
Definition: Camera.h:206
@ DW_NOTIF_ERROR_SENSOR_FAILURE
Device block event, indicates a sensor failure.
Definition: Camera.h:228
@ DW_NOTIF_ERROR_DESERIALIZER_FAILURE
Device block event, indicates a deserializer failure.
Definition: Camera.h:224
@ DW_NOTIF_ERROR_DESER_LINK_FAILURE
Device block event, indicates a deserializer link error. Deprecated in the future.
Definition: Camera.h:222
@ DW_NOTIF_INFO_ACP_PROCESSING_DONE
Pipeline event, indicates auto control processing is finished.
Definition: Camera.h:200
@ DW_NOTIF_ERROR_ICP_CAPTURE_FAILURE
Pipeline event, indicates ICP capture failure.
Definition: Camera.h:212
@ DW_NOTIF_INFO_CDI_PROCESSING_DONE
Pipeline event, indicates CDI processing is finished.
Definition: Camera.h:202
@ DW_NOTIF_ERROR_ACP_PROCESSING_FAILURE
Pipeline event, indicates auto control processing failure.
Definition: Camera.h:218
@ DW_NOTIF_ERROR_INTERNAL_FAILURE
Pipeline and device block event, indicates an unexpected internal failure.
Definition: Camera.h:230
@ DW_NOTIF_WARN_ICP_CAPTURE_TIMEOUT
Pipeline event, indicates occurrence of timeout while capturing.
Definition: Camera.h:208
NotificationData from SIPL.
Definition: Camera.h:238
Camera Properties.
Definition: Camera.h:179
Struct of the detailed error info from SIPL.
Definition: Camera.h:255
Notification Data from SIPL.
Definition: Camera.h:268
#define DW_API_PUBLIC
Definition: Exports.h:54
dwStatus
Status definition.
Definition: Status.h:170
float float32_t
Specifies POD types.
Definition: Types.h:70
int64_t dwTime_t
Specifies a timestamp unit, in microseconds.
Definition: Types.h:82
Defines a two-element unsigned-integer vector.
Definition: Types.h:347
struct dwImageObject * dwImageHandle_t
Definition: Image.h:109
Specifies a pool of images.
Definition: Image.h:115
Defines the properties of the image.
Definition: Image.h:394
struct dwSensorObject * dwSensorHandle_t
Handle representing a sensor.
Definition: Sensors.h:86
NVIDIA DriveWorks API: Image Conversion and Streaming Functionality