[PATCH v4 00/11] Enable raw streams with software ISP

Kieran Bingham kieran.bingham at ideasonboard.com
Wed Apr 16 01:15:14 CEST 2025


Quoting Milan Zamazal (2025-04-07 09:56:26)
> This makes raw streams working again in ‘simple’ pipeline when software
> ISP is enabled for the given device.  At most one raw stream and one
> processed stream (possibly both at once) are supported.
> 
> An example ‘cam’ invocation requesting a raw stream rather than a debayered stream:
> 
>   cam -c1 -C8 -s role=raw,width=1920,height=1080 -Ffile#.raw
> 
> Or for both raw and processed streams:
> 
>   cam -c1 -C8 -Ffile# \
>     -s role=viewfinder,width=1920,height=1080,pixelformat=RGB888 \
>     -s role=raw,width=3280,height=2464,pixelformat=SRGGB8 \
> 
> When only a raw stream is requested, there are no exposure/gain
> adjustments applied.  This could be improved in future, once software
> ISP gets a mechanism to gather image statistics without processing and
> using them to make the adjustments, or once manual exposure controls are
> added to software ISP.  In the meantime, exposure must be changed
> externally.

Ack. Moving to libipa AGC would help here too to maintain common paths
for manual control handling which is on my radar if I get sufficient
free time ...

But meanwhile, I've successfully used tonights free time to test this,
and it's working as far as I can tell so far! Regressions from before
are resovled, and I've fixed up camshark [0] to be able to support
displaying CSI2 packed data so the raw streams render there now.

[0] https://gitlab.freedesktop.org/camera/camshark/-/merge_requests/5

Tested-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

> 
> Changes in v4:
> - Broken range pruning due to passing a value rather than a reference
>   fixed.
> - New common function isFormatRaw introduced.
> - The patch assigning colour spaces in the simple pipeline, previously
>   posted separately, included in this series, as the first patch.  It
>   can still be handled separately; in any case the rest sort of depends
>   on it.
> - Setting metadataRequired to false where needed to prevent freezes and
>   assertion errors; related to metadata reporting support merged to
>   master since v3.
> 
> Changes in v3:
> - Significantly reworked, with both functional and clarity improvements.
>   The level of guesswork and confusion is hopefully reduced enough now
>   to drop the RFC prefix.
> - The number of streams is set to 2 only with software ISP.
> - SimpleCameraData::pipeConfig_ nullptr check patch dropped.
> - PPM/raw file output patch dropped from this series.  Let’s handle this
>   separately as the patch series is already complex enough.
> 
> Changes in v2:
> - Completely reworked.
> - Extended to be able to produce a raw stream together with a processed
>   stream.
> 
> Milan Zamazal (11):
>   libcamera: software_isp: Assign colour spaces in configurations
>   libcamera: simple: Set the number of software ISP streams to 2
>   libcamera: formats: Add a helper to check for a raw pixel format
>   libcamera: simple: Don't use raw output formats with conversions
>   libcamera: simple: Add plain output configurations
>   libcamera: simple: Identify requested stream roles
>   libcamera: simple: Consider raw output configurations
>   libcamera: simple: Validate raw stream configurations
>   libcamera: simple: Don't enforce conversion with an added raw stream
>   libcamera: simple: Require metadata only when software ISP is used
>   libcamera: simple: Make raw streams working
> 
>  include/libcamera/internal/formats.h         |   2 +
>  src/libcamera/formats.cpp                    |  11 +
>  src/libcamera/pipeline/imx8-isi/imx8-isi.cpp |   4 +-
>  src/libcamera/pipeline/mali-c55/mali-c55.cpp |  10 -
>  src/libcamera/pipeline/rkisp1/rkisp1.cpp     |   7 +-
>  src/libcamera/pipeline/simple/simple.cpp     | 255 ++++++++++++++-----
>  6 files changed, 212 insertions(+), 77 deletions(-)
> 
> -- 
> 2.49.0
>


More information about the libcamera-devel mailing list