pipeline: rpi: vc4: Use an unpacked format if no packed one is available

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@raspberrypi.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
David Plowman
2024-02-21 12:49:19 +00:00
committed by Laurent Pinchart
parent 5e4dc46a0c
commit 366077c4db
+11
View File
@@ -434,6 +434,17 @@ 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 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;