I am able to read the registers from a Sekonix SF3325-100 (AR0231) on a Drive AGX board by parsing the metadata in the NvMediaIPPComponentOutput object. However, I can only read registers 0x2000 through 0x3368. All other registers from 0x3370 onwards don’t exist in the metadata object.
Is there a setting blocking these registers? Or how else can I read them? There is very important sensor information stored there that we require to read.
Hi, yes, this happens with the latest 9.0 release.
I checked some of the nvmedia samples, for example nvmimg_cc (this one uses ICP directly to capture, but not an IPP pipeline). This sample outputs the full raw frame including the embedded lines, and here I can see all the registers just fine, including the missing ones I mentioned.
So this confirms that the camera does indeed output this register information, but once it gets processed by the IPP stack, it seems to get truncated somehow. If I had to guess, there might be a problem when IPP reads/parses these embedded lines to create the metadata buffers it exposes (as they get transformed somehow, they’re not an exact copy of the embedded line data).
Did you build libnv_extimgdev.so(drive-t186ref-linux/samples/nvmedia/ext_dev_prgm) on PDK?
If you can build libnv_extimgdev.so then the rest of registers can be stored in metadata.
The below code is an example to increase the number of embedded data to be parsed.
diff --git a/nvmedia/ext_dev_prgm/drv/isc_ar0231_rccb.c b/nvmedia/ext_dev_prgm/drv/isc_ar0231_rccb.c
index 0049f7e..ee05a60 100644
--- a/nvmedia/ext_dev_prgm/drv/isc_ar0231_rccb.c
+++ b/nvmedia/ext_dev_prgm/drv/isc_ar0231_rccb.c
@@ -1930,7 +1930,7 @@ ParseEmbeddedData(
dst = (uint8_t*)parsedInformation->top.data;
sensorVer = driverHandle->config_info.sensorVersion;
// total buffer size: lineLength[0] = ACTIVE_H * 32; only extract used data bytes
- for(i = 0; i < (float_t)(EMB_OFFSET_AGAIN(sensorVer, active_hts) * 4 + 20); i += stride) {
+ <b>for(i = 0; i < (float_t)(EMB_OFFSET_AGAIN(sensorVer, active_hts) * 4 + 20 + 400); i += stride) {</b>
*dst++ = (*((uint16_t*)(lineData[0] + i))) >> shift; // skip tag byte
}
} else {
I can’t build libnv_extimgdev.so for the AGX as “isc_ar0231_rccb.c” is not included in the Drive OS 9.0 SDK. The directory ext_dev_prgm exists in the nvmedia samples, but no source code is inside.
However, I was able to find the file on the older SDK for the PX2, and your patch worked perfectly well with that board. I just had to extend that “400” offset in the patch all the way up to “2536” to cover all the missing registers, but that did it, now we can read everything we need from the camera’s sensor. Thank you!
Any chance the libnv_extimgdev.so source code for the AGX becomes available so I can apply this patch there also?
@SteveNV : Hi again, I’m just checking if there might be any update to this issue for the Drive AGX.
As mentioned in my last message, I was able to use your patch to fix the problem on the older PX2 platform, but I do not have the necessary source code file to do the same for the AGX platform, and this is causing some difficulties for us. Any further help on this matter would be appreciated. Thank you.