Hi Malik,
No worries at all. Hope this information is helpful to yourself and others!
In terms of the .json file being used with isp_media_server, in the version I'm referring to (4.2.2.11.0), the argument being parsed is not the .json file, it is the $RUN_OPTION;
./isp_media_server $RUN_OPTION
The run option, is either CAMERA0, CAMERA1 or DUAL_CAMERA. Use camera 0 for ISP0, camera 1 for ISP1 or dual camera for 2 cameras.
The .json file is the config for the dewarp engine, examples of these are located in dewarp/dewarp_config. These are fairly generic, and the config is quite basic - I would suggest to just copy the OV2775 dewarp config for either 720/1080/4k (depending on your resolution). You select the dewarp config by specifying in the mode file (this is dynamically written when you run imx/run.sh).
In terms of the daemon and the flow;
imx8-isp.service --> start_isp.sh --> run.sh --> isp_media_server
Essentially, start_isp.sh just does some sanity checks and calls run.sh with a config argument, this will be "your sensor", run.sh loads the kernel module for your sensor + all other necessary modules such as imx8-media-dev, vvcam-isp, vvcam-dwe. Additionally, sets up the mode files and sensor config, providing the paths to your sensor .xml file, .drv file, dewarp config etc.
Once all of this is setup, isp_media_server is run and has all of the necessary components to form the command and control for your sensor.
Some other tips I can give you are, when running isp_media_server you can do export ISP_LOG_LEVEL=3 (I can't remember the exact log level range, think it's 0 to 5) to get some verbose logging of the ISP in action.
You can also see various "TRACERS" in the source code, you can enable the tracer of the image sensor interface tracer i.e. in CREATE_TRACER(ISI_INFO ...) by changing 0 to 1. This gives a lot of good info for seeing exactly what ISI functions are called when the ISP is running.
Hope this helps!
Thanks,
Joe Sandom