Add ISP support

Hello,
Actually, I use an AGX board with an Nvidia partner camera and I get images using a libargus application. Now I need to connect an other camera from a non-partner provider. How can I add the Jetson ISP support ?

Not clear your request. Do you need tuning or just want to make sensor driver working for argus?

For the driver implement can reference to programing guide to implement the driver for argus.
For the tuning you need contact with partner to help.

https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/camera_sensor_prog.html#

My question was indeed not very clear.
I would like to make the driver work with Argus so that I can reuse the applications I have and take advantage of the camera control (ISourceSettings object) and post processing functions (IAutoControlSettings and IDenoiseSettings objects). Unless I am mistaken, these functions use the ISP hardware component.

Thanks for the link. If I understand this guide correctly, it explains how to implement a V4L2 driver. Does this mean that the connection to the ISP is transparent?

This is not a solution for your case, but you may find additional information about this here:
https://forums.developer.nvidia.com/t/nv-wrapper-for-isp-config-file

Thank you very much Honey_Patouceul for your answer !

If I understand well the implementation of a V4L driver following the guide presented above allows me to benefit from acquisition with Argus as well as basic ISP functions (default values are available in the base system). Nvidia partners have tools such as Nv_wrapper to tune the parameters and generate the file camera_override.isp but it is not possible to use these tools.
Is this correct?

If I push the reasoning further, even though there are no default values, is it possible to use the Argus setter (example: setWbGains, setIspDigitalGainRange, setColorCorrectionMatrix, setDenoiseMode, …) to set manual values ?

Be aware that I have poor understanding in sensor porting with Jetson, but my understanding is that you may get default behavior, but final image may be different when using same argus settings for a different sensor (or for a different jetson model, such as IMX219 PIv2 camera being tuned for Nano, but not having much ISP support on Xavier NX until recent release). You would be free to use v4l for what controls are available, though, but may not get inter-operability from Argus only when switching your default OV5693 to your new sensor without a Jetson partner in the loop.

You can check the doc for the camera arch.
v4l2 sensor driver is the necessary for argus(with ISP pipeline)

Thank you both Honey_Patouceul and ShaneCCC.

I understand the need for the V4L driver in the acquisition pipeline as well as the tuning of the ISP default parameters. However, I would like to know if these default settings prevent the use of any features of Argus? Indeed, if it is possible to use the setters, I should be able to overload the default configuration with dynamic manual values, isn’t it? Otherwise it would mean that some treatments are done on the ISP only with default (or tuned) settings.

If you don’t care the image quality and don’t need tuning you can implement your own sensor HW and driver.

What do you mean by “image quality” ?

I mean if you don’t need IQ(image quality) tuning.

I’m sorry but I don’t understand what these IQ(image quality) object correspond to… Is there a place where I can see the name of these parameters to define if they are relevant for my use case? I haven’t seen them in the Nvidia multimedia API or in the .isp file given by the Nvidia partner for my first camera…

I understand that the preferred and highly recommended solution is still to use a Nvidia partner camera but the camera I choose for the moment comes from a supplier who does not have this partnership…

Check this

Argus already allows me to set some of these parameters through its objects:
https://docs.nvidia.com/jetson/l4t-multimedia/classArgus_1_1IAutoControlSettings.html
https://docs.nvidia.com/jetson/l4t-multimedia/classArgus_1_1ISourceSettings.html
https://docs.nvidia.com/jetson/l4t-multimedia/classArgus_1_1IDenoiseSettings.html

As mentioned earlier, I already have applications that calculate manual values such as white balance gains in order to dynamically change them throughout the acquisition process. There are also Argus samples on this subject.
So what are the risks in terms of image quality? Am I going to lose some of the processing done with the ISP tuning parameters?

As I said if you think the image is good enough for you then don’t need do the image tuning for you,

Thank you very much for your help ShaneCCC !