[PATCH] pipeline: rpi: vc4: Use an unpacked format if no packed one is available
David Plowman
david.plowman at raspberrypi.com
Wed Feb 21 13:49:19 CET 2024
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
+ * 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;
--
2.30.2
More information about the libcamera-devel
mailing list