From patchwork Mon Sep 30 14:14:10 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Naushir Patuck X-Patchwork-Id: 21427 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 9E0BEC32D4 for ; Mon, 30 Sep 2024 14:14:07 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 5ABCD63516; Mon, 30 Sep 2024 16:14:02 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=raspberrypi.com header.i=@raspberrypi.com header.b="XcQ31T/W"; dkim-atps=neutral Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com [IPv6:2a00:1450:4864:20::334]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 7196763502 for ; Mon, 30 Sep 2024 16:13:59 +0200 (CEST) Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-42f5a663ed5so4354655e9.0 for ; Mon, 30 Sep 2024 07:13:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=raspberrypi.com; s=google; t=1727705639; x=1728310439; darn=lists.libcamera.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9+m41jvKqkJNcbigGAyNEkXfOS5vdXGwZcA9O2yM+Fc=; b=XcQ31T/WSNFk8LrpqbBA8ysSFLW+9yy10FlTZrRvzntxzUtbcmeS2a7x3gnLSYnnk3 uWLPAELE8ZSjF07BemdwOhLTzFwaWUGLhZ6lwo/Qk9NXupowleAwuAiqBDl/d3nrKlhF fsUkBE6/RLh75PU+yBeTVT1uqGXRTNLlrBflaKdLsciTwHNFL+B5/p7sapHN2jbOqX6o xtcJMhTjy+uDaJXcj0q5396zZgIv932M8vX3zj/0RCGTeW0tvRJeDr9MvYt4ISOsckAT qKGK6vp0KtJB8As2VKmingaAi3BjyWVkJs1ogZQyYyQVkBQTI8owMmxeoBuoZxDKQ3CN 5EPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1727705639; x=1728310439; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9+m41jvKqkJNcbigGAyNEkXfOS5vdXGwZcA9O2yM+Fc=; b=Sbcc1ZvRBhfbIZEmbEaRcTQ5jILU0oN0Pb91gEowW6l3Jh36PkwGKiou2C5kJtgzZB CmwQmZ+IoD0LosCJdPxOp6qiqbRzVAFcAPzEL/Yz2iFXwQH2OM3dFTIDYmqT3qIF7bDw wVMn4YNK9wsWYumL61mPqeBELQKEcbWUxBngKOBMetQo0sDxsblN+hMhF4MFfNIC1SZ0 8P3ZAyxRDYAoBTNL4h1saVVXEPOyG7uaeUa5WdZyxGnlyS9I5aLhtqhKf32/TEUwA8TZ G0w93vxDtM2ZlXbwGF3r7V6FFi8pRbUxkE09KhNmZXB7VkO9rtSX1VTd+Uougs2Yo7bD xFJA== X-Gm-Message-State: AOJu0YzrlFl9jeRo/hDmGOFFeBTIa7jgVkTwwSzaS6y31trdt7WIij5H khNpo9ear7WudrEO3eAabjsW0ZnEBW9vJYVIUDWtBjZVpECNRBpjA2SVETcDX20emROWLwRAp+U A X-Google-Smtp-Source: AGHT+IEBvRrrlXiwX9/Z/UvkfQHGc8Z+SH/gzvgJivJPObfS7dzZhfue9WelhHjvaBaTgW8uybKt+w== X-Received: by 2002:a05:600c:350f:b0:42c:ba61:d20b with SMTP id 5b1f17b1804b1-42f58416273mr40066985e9.3.1727705638620; Mon, 30 Sep 2024 07:13:58 -0700 (PDT) Received: from naush-laptop.pitowers.org ([93.93.133.154]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-37cd56e65c3sm9142524f8f.60.2024.09.30.07.13.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Sep 2024 07:13:58 -0700 (PDT) From: Naushir Patuck To: libcamera-devel@lists.libcamera.org Cc: Naushir Patuck , Laurent Pinchart Subject: [PATCH v2 2/7] pipeline: rpi: Remove CameraData::scalerCrop_ Date: Mon, 30 Sep 2024 15:14:10 +0100 Message-Id: <20240930141415.8857-3-naush@raspberrypi.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240930141415.8857-1-naush@raspberrypi.com> References: <20240930141415.8857-1-naush@raspberrypi.com> MIME-Version: 1.0 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" Do not cache the scalerCrop_ parameter. The cached value is used to update the request metadata, but since this is not an expensive operation (and can only occur once per frame), caching it is of limited value. This will simplify logic in a future commit where we can specify a crop per-output stream. Signed-off-by: Naushir Patuck Reviewed-by: Laurent Pinchart Reviewed-by: Jacopo Mondi --- .../pipeline/rpi/common/pipeline_base.cpp | 18 +++--------------- .../pipeline/rpi/common/pipeline_base.h | 1 - 2 files changed, 3 insertions(+), 16 deletions(-) diff --git a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp index 3041fd1ed9fd..11f1bfd4a5da 100644 --- a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp +++ b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp @@ -544,12 +544,6 @@ int PipelineHandlerBase::configure(Camera *camera, CameraConfiguration *config) return ret; } - /* - * Set the scaler crop to the value we are using (scaled to native sensor - * coordinates). - */ - data->scalerCrop_ = data->scaleIspCrop(data->ispCrop_); - /* * Update the ScalerCropMaximum to the correct value for this camera mode. * For us, it's the same as the "analogue crop". @@ -569,7 +563,8 @@ int PipelineHandlerBase::configure(Camera *camera, CameraConfiguration *config) /* Add the ScalerCrop control limits based on the current mode. */ Rectangle ispMinCrop = data->scaleIspCrop(Rectangle(data->ispMinCropSize_)); - ctrlMap[&controls::ScalerCrop] = ControlInfo(ispMinCrop, data->sensorInfo_.analogCrop, data->scalerCrop_); + ctrlMap[&controls::ScalerCrop] = ControlInfo(ispMinCrop, data->sensorInfo_.analogCrop, + data->scaleIspCrop(data->ispCrop_)); data->controlInfo_ = ControlInfoMap(std::move(ctrlMap), result.controlInfo.idmap()); @@ -1320,13 +1315,6 @@ void CameraData::applyScalerCrop(const ControlList &controls) if (ispCrop != ispCrop_) { ispCrop_ = ispCrop; platformSetIspCrop(); - - /* - * Also update the ScalerCrop in the metadata with what we actually - * used. But we must first rescale that from ISP (camera mode) pixels - * back into sensor native pixels. - */ - scalerCrop_ = scaleIspCrop(ispCrop_); } } } @@ -1483,7 +1471,7 @@ void CameraData::fillRequestMetadata(const ControlList &bufferControls, Request request->metadata().set(controls::SensorTimestamp, bufferControls.get(controls::SensorTimestamp).value_or(0)); - request->metadata().set(controls::ScalerCrop, scalerCrop_); + request->metadata().set(controls::ScalerCrop, scaleIspCrop(ispCrop_)); } } /* namespace libcamera */ diff --git a/src/libcamera/pipeline/rpi/common/pipeline_base.h b/src/libcamera/pipeline/rpi/common/pipeline_base.h index f9cecf70f179..5161c16e518f 100644 --- a/src/libcamera/pipeline/rpi/common/pipeline_base.h +++ b/src/libcamera/pipeline/rpi/common/pipeline_base.h @@ -134,7 +134,6 @@ public: /* For handling digital zoom. */ IPACameraSensorInfo sensorInfo_; Rectangle ispCrop_; /* crop in ISP (camera mode) pixels */ - Rectangle scalerCrop_; /* crop in sensor native pixels */ Size ispMinCropSize_; unsigned int dropFrameCount_;