From patchwork Tue Aug 25 17:08:01 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 9380 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id A7A77BE173 for ; Tue, 25 Aug 2020 17:08:30 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 1F81361EA0; Tue, 25 Aug 2020 19:08:30 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="q0IavTVF"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id D1A316037C for ; Tue, 25 Aug 2020 19:08:27 +0200 (CEST) Received: from pendragon.lan (62-78-145-57.bb.dnainternet.fi [62.78.145.57]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 53A4F9A5 for ; Tue, 25 Aug 2020 19:08:26 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1598375306; bh=X4CtMqxuMoEM0bb7cRICz5K1lYrEaFYQVC41Odu+Qhk=; h=From:To:Subject:Date:From; b=q0IavTVFerZ0edi5AAJkLJiUlb8qWgq28SIO1AhfqmfW1V/qOZZVqeZSST+p04q1m ojgdVrpsHJnsXOYQC6O69/G5e6IKLKVCRVdV/nr/vFeRy76go1eBKhnafa6tn7inAH n6Lll2XxFVS03D3xkhQKb6JjElc13Xx9XzNw3XYo= From: Laurent Pinchart To: libcamera-devel@lists.libcamera.org Date: Tue, 25 Aug 2020 20:08:01 +0300 Message-Id: <20200825170801.17513-1-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH] libcamera: pipeline: vimc: Fix configuration validation X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" 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(-) diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp index 7e237650b448..d192670bbc8f 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)