I have a camera application that worked using the argus api in jetpack 4.2 that is now throwing BadParameter errors with jetpack 4.3.
The relevant error messages:
(Argus) Error BadParameter: (propagating from src/eglstream/ImageImpl.cpp, function initialize(), line 382)
(Argus) Error BadParameter: (propagating from src/eglstream/ImageImpl.cpp, function copyToNvBuffer(), line 440)
The buffer is created with:
native_buffer->createNvBuffer(stream->getResolution(), NvBufferColorFormat_ARGB32, NvBufferLayout_Pitch)
The error happens in:
native_buffer->copyToNvBuffer
And the returned error code is INVALID_PARAMS.
Is this possibly a regression in the argus API?
I have PIXEL_FMT_YCbCr_420_888 images streaming into a NvBufferColorFormat_ARGB32 buffer which was a valid conversion in jetpack 4.2.
I would like to add that I have an additional section where I do jpeg compression that works perfectly. In that case the same IEGLOutputStream pipes into a buffer created with:
m_jpegdmabuf = native_buffer->createNvBuffer(stream->getResolution(), NvBufferColorFormat_YUV420, NvBufferLayout_BlockLinear);
In the above the conversion to BlockLinear YUV420 works without an issue.
Hi,
Please create NvBuffer in NvBufferColorFormat_ARGB32 and call NVBufferTransform() to do conversion. It is done internally in JP4.2. In JP4.3, we eliminate the internal code and let upper application do it.
Thanks for the reply,
I’ve done as you requested and it appears to work for a while initially. However after about 600 frames the same error pops up.
Hello,
My workflow is as approximately as follows:
Capture frames on an IEGLOutputStream with pixel format: PIXEL_FMT_YCbCr_420_888
Load those frames into a jpeg conversion hardware buffer of type: NvBufferColorFormat_YUV420
Compress frames to jpeg using encodeFromFd: Jetson Linux API Reference: NvJPEGEncoder Class Reference | NVIDIA Docs
Convert NvBufferColorFormat_YUV420 buffer to NvBufferColorFormat_ARGB32 hardware buffer for raw consumption using NvBufferTransform.
If I remove jpeg compression then I no longer receive any errors.
This to me feels like some kind of synchronization issue, but I was under the impression that everything that I was doing was synchronous with the CPU.