Please provide the following info (tick the boxes after creating this topic):
Software Version
DRIVE OS 6.0.10.0
DRIVE OS 6.0.8.1
DRIVE OS 6.0.6
DRIVE OS 6.0.5
DRIVE OS 6.0.4 (rev. 1)
DRIVE OS 6.0.4 SDK
other
Target Operating System
Linux
QNX
other
Hardware Platform
DRIVE AGX Orin Developer Kit (940-63710-0010-300)
DRIVE AGX Orin Developer Kit (940-63710-0010-200)
DRIVE AGX Orin Developer Kit (940-63710-0010-100)
DRIVE AGX Orin Developer Kit (940-63710-0010-D00)
DRIVE AGX Orin Developer Kit (940-63710-0010-C00)
DRIVE AGX Orin Developer Kit (not sure its number)
other
SDK Manager Version
2.1.0
other
Host Machine Version
native Ubuntu Linux 20.04 Host installed with SDK Manager
native Ubuntu Linux 20.04 Host installed with DRIVE OS Docker Containers
native Ubuntu Linux 18.04 Host installed with DRIVE OS Docker Containers
other
Dear Nvidia Team,
My goal is to grab a video stream from GMSL cameras and encode them with the NvMedia IEP h265 encoder into a bitstream with the lowest possible latency. Using the DriveWorks encoder does not work for me, because I want to have more freedom in changing the encoder parameterization and also want to change the target bitrate on the fly.
I obtain the GMSL cameras frame by frame with the dwSensorCamera_getImage()
function. Now, I am only able to transfer the frame-wise data into the NvSciBufObj buffers provided by the IEP application, by converting the data into CPU format and feeding the raw pointer by NvSciBufObjPutPixels()
into the appBuffer->bufObj
buffer that NvMediaIEPFeedFrame()
is accepting. However, this introduces ~30 ms of latency due to the copy step, which seems to be avoidable.
I already tried to create a dwImage in DriveWorks by taking an appBuffer
from the queue.
CHECK_DW_ERROR(dwImage_createAndBindNvSciBuf(
&imageBlockMemory,
&imageProperties,
appBuffer->bufObj,
*mContext));
But this results in the error Driveworks exception thrown: Error: ImageCuUDABlock() Failed to import external memory. Error cudaErrorInvalidValue: invalid argument
. The image properties are set to
imageProperties.memoryLayout = DW_IMAGE_MEMORY_TYPE_BLOCK;
imageProperties.type = DW_IMAGE_NVMEDIA;
imageProperties.format = DW_IMAGE_FORMAT_YUV420_UINT8_SEMIPLANAR;
analogously to the properties of the IEP buffers.
Is it generally possible to share a NvSciBuf between the IEP and DriveWorks? Or are there other options to quickly parse the captured frames to the IEP encoder?