[PATCH] pipeline: rpi: vc4: Use an unpacked format if no packed one is available
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Wed Feb 21 14:09:14 CET 2024
Hi David,
Thank you for the patch.
On Wed, Feb 21, 2024 at 12:49:19PM +0000, David Plowman wrote:
> When validating a stream, and no valid packed pixel format can be
> found, see if an unpacked format can be used instead.
>
> This is particularly helpful for 8 (and 16) bit raw formats, where
> asking for a packed format would previously have failed. Now the
> configuration will be adjusted to give you a format (in fact, the only
> format) that will work.
>
> Signed-off-by: David Plowman <david.plowman at raspberrypi.com>
> ---
> src/libcamera/pipeline/rpi/vc4/vc4.cpp | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/src/libcamera/pipeline/rpi/vc4/vc4.cpp b/src/libcamera/pipeline/rpi/vc4/vc4.cpp
> index a52f0e7a..ad76099b 100644
> --- a/src/libcamera/pipeline/rpi/vc4/vc4.cpp
> +++ b/src/libcamera/pipeline/rpi/vc4/vc4.cpp
> @@ -434,6 +434,16 @@ CameraConfiguration::Status Vc4CameraData::platformValidate(RPi::RPiCameraConfig
> rawBayer.packing = BayerFormat::Packing::CSI2;
>
> PixelFormat rawFormat = rawBayer.toPixelFormat();
> +
> + /*
> + * Try for an unpacked format if a packed one wasn't available.This catches
s/This/ This/
I'll fix this locally.
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> + * 8 (and 16) bit formats which would otherwise fail.
> + */
> + if (!rawFormat.isValid() && rawBayer.packing != BayerFormat::Packing::None) {
> + rawBayer.packing = BayerFormat::Packing::None;
> + rawFormat = rawBayer.toPixelFormat();
> + }
> +
> if (rawStream->pixelFormat != rawFormat ||
> rawStream->size != rpiConfig->sensorFormat_.size) {
> rawStream->pixelFormat = rawFormat;
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list