DriveWorks SDK Reference
5.4.5418 Release
For Test and Development only

Camera.h
Go to the documentation of this file.
1 //
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-2021 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
63 typedef void NvMediaIPPManager;
64 
65 #ifdef __cplusplus
66 extern "C" {
67 #endif
68 
70 typedef struct dwCameraFrame* dwCameraFrameHandle_t;
71 
75 typedef enum dwCameraOutputType {
96 
98 typedef enum dwCameraRawFormat {
100 
105 
110 
115 
117 
120 
122 typedef enum dwCameraType {
134 } dwCameraType;
135 
149 
151 typedef enum dwCameraFOV {
164 } dwCameraFOV;
165 
167 typedef enum dwCameraSIPLInterfaceProviderType {
172 
174 typedef struct dwCameraProperties
175 {
178  dwCameraExposureControl exposure;
182  int32_t outputTypes;
183  uint32_t siblings;
184  uint32_t revision;
185  uint32_t imageBitDepth;
186  bool isSimulated;
188 
228 
230 #define DW_CAMERA_MAX_DEVICE_GPIOS 8U
231 
234 {
238  uint32_t uIndex;
240  uint8_t uLinkMask;
242  uint64_t frameCaptureTSC;
244  uint32_t gpioIdxs[DW_CAMERA_MAX_DEVICE_GPIOS];
246  uint32_t numGpioIdxs;
248 
251 {
254  uint8_t const* errorBuffer;
256  size_t sizeWritten;
258 
260 #define DW_CAMERA_MAX_CAMERAMODULES_PER_BLOCK 4U
261 
264 {
267 
274  uint8_t linkErrorMask;
275 
283 
285 typedef void (*dwCameraCallback)(dwCameraSIPLNotification* notification, dwSensorHandle_t sensor);
286 
321 dwStatus dwSensorCamera_readFrame(dwCameraFrameHandle_t* const frameHandle,
322  dwTime_t const timeoutUs, dwSensorHandle_t const sensor);
323 
339 dwStatus dwSensorCamera_returnFrame(dwCameraFrameHandle_t* const frameHandle);
340 
365  dwCameraFrameHandle_t const frame);
366 
391  dwCameraFrameHandle_t const frame);
392 
408 
424 
456  dwCameraOutputType const outputType,
457  dwSensorHandle_t const sensor);
458 
472  dwSensorHandle_t const sensor);
473 
487  dwSensorHandle_t const sensor);
488 
503  uint32_t const modeIdx,
504  dwSensorHandle_t const sensor);
505 
524  dwCameraOutputType const outputType,
525  dwSensorHandle_t const sensor);
526 
539 dwStatus dwSensorCamera_setCUDAStream(cudaStream_t const stream, dwSensorHandle_t const sensor);
540 
552 dwStatus dwSensorCamera_getCUDAStream(cudaStream_t* const stream, dwSensorHandle_t const sensor);
553 
565 dwStatus dwSensorCamera_getTimestamp(dwTime_t* const timestamp, dwCameraFrameHandle_t const frameHandle);
566 
579 dwStatus dwSensorCamera_getSIPLInterfaceProvider(void** const interfaceProvider, dwSensorHandle_t const sensor, dwSIPLCameraInterfaceProviderType const type);
580 
603 dwStatus dwSensorCamera_readEEPROM(uint32_t const paramId, void* const buffer, uint32_t const size, dwSensorHandle_t const sensor);
604 
614 dwStatus dwSensorCamera_getEOFFence(NvSciSyncFence* syncFence, dwCameraOutputType outputType, dwCameraFrameHandle_t const frameHandle);
615 
624 dwStatus dwSensorCamera_fillSyncAttributes(NvSciSyncAttrList syncAttrList, dwCameraOutputType outputType, dwSensorHandle_t sensor);
625 
634 dwStatus dwSensorCamera_setSyncObject(NvSciSyncObj syncObj, dwCameraOutputType outputType, dwSensorHandle_t sensor);
635 
654 
666 DW_DEPRECATED("This API is deprecated and will be removed in the next major release, please use dwSensor_stop/dwSensor_reset per use case")
668 
686 DW_DEPRECATED("This API is deprecated and will be removed in the next major release, please use dwSensor_start/dwSensor_reset per use case")
687 dwStatus dwSensorCamera_enableLink(dwSensorHandle_t const sensor, bool const resetModule);
688 
689 #ifdef __cplusplus
690 }
691 #endif
692 
693 #endif // DW_SENSORS_CAMERA_CAMERA_H_
NVIDIA DriveWorks API: Core Types
uint8_t uLinkMask
Holds the device block link mask.
Definition: Camera.h:240
uint32_t numGpioIdxs
Holds the number of GPIO indices in the array.
Definition: Camera.h:246
dwCameraRawFormat rawFormat
Definition: Camera.h:177
bool isRemoteError
Set to true if remote (serializer) error detected, valid only for device block event.
Definition: Camera.h:271
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_getCUDAStream(cudaStream_t *const stream, dwSensorHandle_t const sensor)
Gets the CUDA stream used.
Pipeline event, indicates a discontinuity was detected in parsed embedded data frame sequence number...
Definition: Camera.h:202
float float32_t
Specifies POD types.
Definition: Types.h:70
struct dwImageObject * dwImageHandle_t
Definition: Image.h:105
Struct of the detailed error info from SIPL.
Definition: Camera.h:250
dwCameraExposureControl
Enum of exposure control types.
Definition: Camera.h:137
DW_API_PUBLIC dwStatus dwSensorCamera_appendAllocationAttributes(dwImageProperties *const imgProps, dwCameraOutputType const outputType, dwSensorHandle_t const sensor)
Append the allocation attribute such that images allocated by the application and given to the camera...
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.
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_...
Device block event, indicates a deserializer failure.
Definition: Camera.h:220
size_t sizeWritten
Holds size of error written to the buffer, filled by driver.
Definition: Camera.h:256
dwCameraSIPLNotificationData eNotifyType
Holds the notification event type.
Definition: Camera.h:236
Pipeline event, indicates auto control processing is finished.
Definition: Camera.h:196
DW_API_PUBLIC dwStatus dwSensorCamera_returnFrame(dwCameraFrameHandle_t *const frameHandle)
Returns a frame to the camera after it has been consumed.
Pipeline and device block event, indicates an unexpected internal failure.
Definition: Camera.h:226
Device block event, indicates a sensor failure.
Definition: Camera.h:224
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.
Pipeline event, indicates ICP bad input stream.
Definition: Camera.h:206
dwCameraSIPLEErrorDetails deserializerErrorInfo
Error info for deserializer, valid only for device block event.
Definition: Camera.h:269
Pipeline event, indicates CDI processing is finished.
Definition: Camera.h:198
Specifies a pool of images.
Definition: Image.h:110
uint8_t linkErrorMask
Store link mask for link error state, valid only for device block event (1 in index position indicate...
Definition: Camera.h:274
Pipeline event, indicates CDI set sensor control failure.
Definition: Camera.h:216
uint32_t numCameraModules
Number of the camera modules, valid only for device block event.
Definition: Camera.h:277
dwVector2ui resolution
Definition: Camera.h:181
Exposure control using user&#39;s custom callback.
Definition: Camera.h:147
Pipeline event, indicates ICP processing is finished.
Definition: Camera.h:192
Pipeline event, indicates occurrence of timeout while capturing.
Definition: Camera.h:204
Default exposure control.
Definition: Camera.h:143
NVIDIA DriveWorks API: Image Conversion and Streaming Functionality
DW_API_PUBLIC dwStatus dwSensorCamera_getNumSupportedCaptureModes(uint32_t *const numModes, dwSensorHandle_t const sensor)
Gets number of supported capture modes.
dwCameraType
Enum of available camera sensors.
Definition: Camera.h:122
void NvMediaIPPManager
Definition: Camera.h:63
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 &#39;dwCameraImageOutputType&#39;.
void(* dwCameraCallback)(dwCameraSIPLNotification *notification, dwSensorHandle_t sensor)
Function type of the camera error event handling.
Definition: Camera.h:285
DW_API_PUBLIC dwStatus dwSensorCamera_setEventCallback(dwCameraCallback blkCallback, dwCameraCallback lineCallback, dwSensorHandle_t sensor)
Set the Camera Error Handling callbacks.
struct dwSensorObject * dwSensorHandle_t
Handle representing a sensor.
Definition: Sensors.h:85
dwStatus
Status definition.
Definition: Status.h:180
NVIDIA DriveWorks API: Sensors
Pipeline event, indicates ISP processing failure.
Definition: Camera.h:212
other YUV processed outputs (see devguide)
Definition: Camera.h:92
Device block event, indicates a serializer failure.
Definition: Camera.h:222
uint32_t uIndex
Holds the ID of each camera sensor.
Definition: Camera.h:238
int64_t dwTime_t
Specifies a timestamp unit, in microseconds.
Definition: Types.h:82
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.
for processed images RGBA image supported in all processed use cases
Definition: Camera.h:82
dwCameraFOV
Enum of available FOV in degrees for camera lenses.
Definition: Camera.h:151
simple yuv420 semiplanar output, supported in most use cases (see doc)
Definition: Camera.h:94
DW_API_PUBLIC dwStatus dwSensorCamera_getTimestamp(dwTime_t *const timestamp, dwCameraFrameHandle_t const frameHandle)
Gets the timestamp of the current camera frame.
Notification Data from SIPL.
Definition: Camera.h:263
#define DW_DEPRECATED(msg)
Definition: Exports.h:66
uint8_t const * errorBuffer
Pointer to buffer which is filled by driver with error information.
Definition: Camera.h:254
dwCameraFOV fov
Definition: Camera.h:180
DW_API_PUBLIC dwStatus dwSensor_reset(dwSensorHandle_t const sensor)
Resets the 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.
Pipeline event, indicates auto control processing failure.
Definition: Camera.h:214
uint64_t frameCaptureTSC
Holds the TSC timestamp of the frame capture.
Definition: Camera.h:242
Pipeline event, indicates embedded data parsing failure.
Definition: Camera.h:210
Pipeline event, indicates pipeline was forced to drop a frame due to a slow consumer or system issues...
Definition: Camera.h:200
DW_API_PUBLIC dwStatus dwSensorCamera_getEOFFence(NvSciSyncFence *syncFence, dwCameraOutputType outputType, dwCameraFrameHandle_t const frameHandle)
Get EOF fence of the current camera frame.
Defines a two-element unsigned-integer vector.
Definition: Types.h:315
dwCameraType cameraType
Definition: Camera.h:176
simple yuv420 output, supported in most use cases (see doc)
Definition: Camera.h:84
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.
Unknown exposure control.
Definition: Camera.h:141
#define DW_CAMERA_MAX_DEVICE_GPIOS
Indicates the maximum number of gpio indices.
Definition: Camera.h:230
struct dwCameraFrame * dwCameraFrameHandle_t
Handle to captured frame.
Definition: Camera.h:70
int32_t outputTypes
Definition: Camera.h:182
#define DW_CAMERA_MAX_CAMERAMODULES_PER_BLOCK
Indicates the maximum number of camera modules per device block.
Definition: Camera.h:260
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...
dwCameraNotificationData data
NotificationData from SIPL, pipeline & device block event.
Definition: Camera.h:266
DW_API_PUBLIC dwStatus dwSensor_start(dwSensorHandle_t const sensor)
Starts the sensor previously successfully created with &#39;dwSAL_createSensor()&#39;.
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.
Camera Properties.
Definition: Camera.h:174
No exposure control.
Definition: Camera.h:139
DW_API_PUBLIC dwStatus dwSensorCamera_getSensorProperties(dwCameraProperties *const properties, dwSensorHandle_t const sensor)
Gets information about the camera sensor.
uint32_t siblings
Definition: Camera.h:183
float32_t framerate
Definition: Camera.h:179
Pipeline event, indicates ISP processing is finished.
Definition: Camera.h:194
dwCameraOutputType
Output types supported by the camera.
Definition: Camera.h:75
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, reconfigures the camera module to reestablish the link.
other YUV processed outputs (see devguide)
Definition: Camera.h:88
other YUV processed outputs (see devguide)
Definition: Camera.h:90
Device block event, indicates a deserializer link error. Deprecated in the future.
Definition: Camera.h:218
dwSIPLCameraInterfaceProviderType
Enum of available SIPL interface provider types.
Definition: Camera.h:167
uint32_t revision
Definition: Camera.h:184
uint32_t imageBitDepth
Definition: Camera.h:185
dwCameraExposureControl exposure
Definition: Camera.h:178
dwCameraRawFormat
Raw encoding formats pixel-order.
Definition: Camera.h:98
DW_API_PUBLIC dwStatus dwSensorCamera_getSupportedCaptureMode(dwCameraProperties *const captureMode, uint32_t const modeIdx, dwSensorHandle_t const sensor)
Gets capture modes by specified index.
dwCameraSIPLNotificationData
Enum of available SIPL event notification type (Copy from nvsipl::NvSIPLPipelineNotifier::Notificatio...
Definition: Camera.h:190
#define DW_API_PUBLIC
Definition: Exports.h:54
Pipeline event, indicates ICP capture failure.
Definition: Camera.h:208
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_setCUDAStream(cudaStream_t const stream, dwSensorHandle_t const sensor)
Sets the CUDA stream used by getImageAsync during internal cuda related operations.
processed images (usually be YUV420 planar or RGB planar)
Definition: Camera.h:77
Defines the properties of the image.
Definition: Image.h:367
NotificationData from SIPL.
Definition: Camera.h:233
Exposure control with bracketed auto exposure.
Definition: Camera.h:145