From 3bce337fbe5caeab6064e1969fb2fd0c537d57db Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Tue, 25 Aug 2020 19:52:12 +0300 Subject: libcamera: pipeline: vimc: Fix configuration validation The sensor aligns the width and height to multiples of two pixels, and the scaler has a x3 hardcoded factor. The output size must thus be aligned to 6 pixels, not 3. Fix it. Signed-off-by: Laurent Pinchart Reviewed-by: Paul Elder Reviewed-by: Kieran Bingham --- src/libcamera/pipeline/vimc/vimc.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/libcamera/pipeline/vimc') diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp index 7e237650..d192670b 100644 --- a/src/libcamera/pipeline/vimc/vimc.cpp +++ b/src/libcamera/pipeline/vimc/vimc.cpp @@ -149,11 +149,15 @@ CameraConfiguration::Status VimcCameraConfiguration::validate() /* Clamp the size based on the device limits. */ const Size size = cfg.size; - /* The scaler hardcodes a x3 scale-up ratio. */ + /* + * The scaler hardcodes a x3 scale-up ratio, and the sensor output size + * is aligned to two pixels in both directions. The output width and + * height thus have to be multiples of 6. + */ cfg.size.width = std::max(48U, std::min(4096U, cfg.size.width)); cfg.size.height = std::max(48U, std::min(2160U, cfg.size.height)); - cfg.size.width -= cfg.size.width % 3; - cfg.size.height -= cfg.size.height % 3; + cfg.size.width -= cfg.size.width % 6; + cfg.size.height -= cfg.size.height % 6; if (cfg.size != size) { LOG(VIMC, Debug) -- cgit v1.2.1