We have an argus capture pipeline that we would like to add Dark frame sutraction to, which requires access to the raw bayer data. We are able to get this data through argus using EGLStreams, however we would like to utilize the ISP for demosaicing, as this is expensive even on the GPU.
Right, so we reached out to our camera partner (framos) for a sensor calibration as they did not provide a non-generic one. After paying for them to do the calibration, the results were still rather poor, so we decided to go our own route with a GPU-based color pipeline.
The demosaicing is one of the most expensive parts, and ideally we could run this on the ISP.
Looking at Argus release notes, it actually seems like this is possible, in some limited form:
-------------------------------------------------------------------------------
Release 0.99.2 (01/24/2023)
-------------------------------------------------------------------------------
NEW FEATURES:
* Argus supports reading Bayer raw image frames from disk or user provided
raw buffer instead of a physical camera sensor and using the read frames as
input to the Image Signal Processor for reprocessing.
* argus_syncStereoRawReprocess public sample is added to demonstrate
reading from file(s) and then reprocessing of bayer raw image frames originally
captured through live sensor modules.
I see the added IInputStream interface that was added for this purpose, excellent!
I’ll report back on if I’m able to get it to work or not
Okay, so the InputStream only supports EGLStream output, not EGL buffer output:
SCF: Error NotImplemented: Metadata-only not yet implemented in SCF (in src/components/CaptureSetupEngineImpl.cpp, function chooseGenInstFunc(), line 264)
SCF: Error NotImplemented: (propagating from src/components/CaptureSetupEngineImpl.cpp, function doGetInstructions(), line 2162)
SCF: Error NotImplemented: (propagating from src/components/CaptureSetupEngine.cpp, function getInstructionList(), line 359)
SCF: Error NotImplemented: (propagating from src/components/CaptureSetupEngine.cpp, function setupCC(), line 243)
SCF: Error NotImplemented: (propagating from src/api/Session.cpp, function capture(), line 804)
(Argus) Error NotImplemented: (propagating from src/api/ScfCaptureThread.cpp, function run(), line 110)
Which means the highest bitdepth I could get out of it is YUV444 or Legacy RGB (8-bit data), which is not ideal for proper color processing. Too bad!