How to access DRIVE OS APIs in a DriveWorks application?

Please provide the following info (check/uncheck the boxes after creating this topic):
Software Version
DRIVE OS Linux 5.2.6
DRIVE OS Linux 5.2.6 and DriveWorks 4.0
DRIVE OS Linux 5.2.0
DRIVE OS Linux 5.2.0 and DriveWorks 3.5
NVIDIA DRIVE™ Software 10.0 (Linux)
NVIDIA DRIVE™ Software 9.0 (Linux)
other DRIVE OS version
other

Target Operating System
Linux
QNX
other

Hardware Platform
NVIDIA DRIVE™ AGX Xavier DevKit (E3550)
NVIDIA DRIVE™ AGX Pegasus DevKit (E3550)
other

SDK Manager Version
1.9.10816
other

Host Machine Version
native Ubuntu 18.04
other

Hi,

I needed some help to understand how to use APIs available in the DRIVE OS set of libraries to update parameters of necessary sensors and the output of what comes through a related DriveWorks call.

For example, I am working with a camera constellation which has a mix of Sekonix and Entron cameras. We use dwSensorSerialzer_ methods to compress camera frames before they are pusblished to the rest of the system. However, we currently require updating the default compression parameters so we can experiment with parameters available in NvMedial APIs (been looking at nvmimg_enc etc.).

Since our current application code completely uses DriveWorks calls we only have access to essentially update the bitrate through the serializer params objects, but we need to play with more parameters (for H264 compression). Ideally we would still want to continue using those calls, but just update the configurations so the same dwSensorSerializer_* calls just uses parameters that we want, instead of the default ones.

Is that possible? From my understanding since DriveWorks is a layer on top of NvMedia (and other DRIVE OS components), in my mind theoretically this should be possible. Or would we need to refactor our application code to directly use DRIVE OS libraries and avoid using DriveWorks?

Please correct me if my understanding is incorrect, or if I missed documentation about this.

Thanks!

@hraghuvanshi
Yes, DriveWorks is a layer on top of NvMedia. dwSensorSerializer leverages Image Encoder. As you know, DriveWorks Sensor Serializer doesn’t expose all parameters available in IEP. May I know which H264 compression parameters of IEP you’re looking for?

We are currently just looking to experiment with any available parameters, that can give us better compressed images than what we currently have through DriveWorks. We ran experiments with updating the bitrate, but didn’t really find the right balance with just that.

To be frank, we are trying to figure out how much we can really play with, so any suggestions would be helpful.

Currently, I was particularly interested in thinking like NvMediaEncodeLevel, NvMediaEncodeQuality and NvMediaEncodeH264Features etc. to see if there are any possibilities for getting better images in our application scenarios/environments.

I’ll check with our team. But at the same time, I would suggest you try Image Encoder (nvmimg_enc) (sample of DRIVE OS; not DriveWorks) and see if any configuration satisfy you.

Thanks! Yeah, I have been taking a look at those samples, and I think we understand them, but want to avoid re-writing our application code to directly use NvMedia, instead of our current implementation through DriveWorks, if it can be avoided.

Hey @VickNV , do you know if there have been any updates on this? Thanks!

Please refer to Configuration Reference and see if the parameters exposed there help with your issues.

1 Like