From patchwork Thu Sep 11 13:51:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Milan Zamazal X-Patchwork-Id: 24323 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 23BFCC324E for ; Thu, 11 Sep 2025 13:52:10 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 2466C69367; Thu, 11 Sep 2025 15:52:09 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.b="Fj+z1/Ut"; dkim-atps=neutral Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id BE72B6936A for ; Thu, 11 Sep 2025 15:52:05 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757598724; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=H++2ucEMlUxAIecyZ7u0AgzikMgmoH4zb7l6n9GAbGM=; b=Fj+z1/UtarCnCQxyKkpbjToN50uEH/wnNr3z1UnzQJK+5J/f4+50ZJLovDmdQRlJQW1fOk smuq8YOltX50mWplEc23nQUb2SiBC+AHYIhe/5NBxttgdY673tbIITIxjkiumePvhxSdhf Cv5o7YESKy/AtBROyd1ZjERos5PFBNg= Received: from mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-676-SiBOJYx3OEeg5gYB2PVPlA-1; Thu, 11 Sep 2025 09:52:00 -0400 X-MC-Unique: SiBOJYx3OEeg5gYB2PVPlA-1 X-Mimecast-MFC-AGG-ID: SiBOJYx3OEeg5gYB2PVPlA_1757598719 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 73D9C19107DB; Thu, 11 Sep 2025 13:51:59 +0000 (UTC) Received: from mzamazal-thinkpadp1gen7.tpbc.com (unknown [10.44.34.98]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 3860D18004A3; Thu, 11 Sep 2025 13:51:56 +0000 (UTC) From: Milan Zamazal To: libcamera-devel@lists.libcamera.org Cc: Milan Zamazal , pobrn@protonmail.com, mail@maciej.szmigiero.name, =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= Subject: [PATCH v2 3/6] libcamera: software_isp: Check processed window size alignment Date: Thu, 11 Sep 2025 15:51:41 +0200 Message-ID: <20250911135144.56586-4-mzamazal@redhat.com> In-Reply-To: <20250911135144.56586-1-mzamazal@redhat.com> References: <20250911135144.56586-1-mzamazal@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 8pTFABUCsG540ZPI5BQswqoyhnGm7oH9JCHQcHKVr88_1757598719 X-Mimecast-Originator: redhat.com 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 window of the image that should be debayered must be aligned to the bayer pattern size (this is a requirement of the current debayering implementation). This is already ensured for the window corner coordinates but not for the window sizes. We can either make the window sizes aligned similarly to how the window corner coordinates are aligned or reject an unaligned configuration. This patches chooses the latter as using a different window size than the requested output size could lead to artefacts. Since such a situation is not expected to occur in correctly set up environments, the change should have no negative impact. Reviewed-by: Barnabás Pőcze Signed-off-by: Milan Zamazal --- src/libcamera/software_isp/debayer_cpu.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/libcamera/software_isp/debayer_cpu.cpp b/src/libcamera/software_isp/debayer_cpu.cpp index 185edd814..3200b0c53 100644 --- a/src/libcamera/software_isp/debayer_cpu.cpp +++ b/src/libcamera/software_isp/debayer_cpu.cpp @@ -539,7 +539,17 @@ int DebayerCpu::configure(const StreamConfiguration &inputCfg, window_.y = ((inputCfg.size.height - outputCfg.size.height) / 2) & ~(inputConfig_.patternSize.height - 1); window_.width = outputCfg.size.width; + if (window_.width % inputConfig_.patternSize.width != 0) { + LOG(Debayer, Error) + << "Output width is not a multiple of the bayer pattern width"; + return -EINVAL; + } window_.height = outputCfg.size.height; + if (window_.height % inputConfig_.patternSize.height != 0) { + LOG(Debayer, Error) + << "Output height is not a multiple of the bayer pattern height"; + return -EINVAL; + } /* * Set the stats window to the whole processed window. Its coordinates are