From patchwork Fri Jun 10 12:25:33 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Naushir Patuck X-Patchwork-Id: 16196 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 95082BD160 for ; Fri, 10 Jun 2022 12:25:33 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 4D0AD65638; Fri, 10 Jun 2022 14:25:33 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1654863933; bh=N/iX+qgcTLfLzyQQp6bpZhymY/EBic0Gs0P6wYW3az0=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=a/8lRfLnbHEac9vbXCYIzRzhh2R/hOhMrgLS6YZMUPlshDYiSLofTNA6jEXUMI/Te x65KqqvGgV6BnkZR0DrRpievMD83qvqgFkNKHBdfblFUfPHy0VdO68/3nBBj5sYfxx fLY/fp3+OTgK/JrwfPe5a7g/M1fV5P9BFTdWi2vyHdNhNNAK+uHNHnNXsM5l21ZvpO OznLdnYkfwjo2OLDTrApf0MgShi+Zd/sm9qofJWzrSJj8H91e8WwnrXrCqZkVLTTDN aEXxdnEvNhusBMcyzfuLeLpP/Z2yIkhYcNPCvr4e7KhB/FqrOkAnfoQJPA5sRqDQze 1gOLvSPkVFRQA== Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com [IPv6:2a00:1450:4864:20::32e]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 9475065638 for ; Fri, 10 Jun 2022 14:25:30 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=raspberrypi.com header.i=@raspberrypi.com header.b="VYVO65Gr"; dkim-atps=neutral Received: by mail-wm1-x32e.google.com with SMTP id i17-20020a7bc951000000b0039c4760ec3fso1977351wml.0 for ; Fri, 10 Jun 2022 05:25:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=raspberrypi.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=VgFx3Qp83lIvR05neP8MTvYhfy0+XkOHzCIAe5UkSbs=; b=VYVO65Gri4cTNgtISLQCEW5NFJyWkkn9alDg7TuNoxOEgJ9DmBjTYOEoUN4riFixvZ 5OMkS8/64OuWiclDxH2H08UVa8D9HIDH5iwdL7Fq5gWMTOfjjF3CcuoQNuzCaas3uRwe SNXNuia6aHlfUU5gCVHuRb8XA5/6Ohw2SC1TtPA+xJVAQeoafcTpcoiKuNe8wHXtJugB amH1q6H9s+bWbW5VWWHBSuE7AVmS3DbPFJ5Mj7S6mZex0fMWKh0pqJD1isReqTVWkKbt OJkxgZQWSv0ULcm4S5o1G35265/Spt4TUXfBADlcqG36z5Mf136D7AbchiHTREMNoZ1S KjxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=VgFx3Qp83lIvR05neP8MTvYhfy0+XkOHzCIAe5UkSbs=; b=kw1U7m1YgqZwzQzVAtwZvNngjLMKYJC/GW9LMLUR+98Zo2chdjSjB5qYZdabBMpNg2 PdeAf/AnTwo6hxS3iWVdhJxM7K0mrlrRItWYrZdFff8ovPF5wMPRkrU1a0neyBBDzdb2 qwix1pnpNJS5zKOzxH/yTb4yhpl4vr3hmDe/EMNMDBYUkWO4Zh+CuFD/2dsd9igWJZSR 2EdlSiHx7dpRcJJEPxQAYW0tNp45QeEnrThIIfAKfFBJ3sHxui+GZpyL7+JQz7BDNgOg ooMi0ZEBd0SIndAOhLjicD+olGxY+4MGVbxqVHdVYsaMhf4xTTkWuJ8650w46mzh1HMX bR5g== X-Gm-Message-State: AOAM533ZegD8ze3yPStwyqkktlU9KzYSwZujOtKm8XwZzPeJ7kkakL6X rX+hI1B373Xu8uoVb7Ytdr/fvdCrmIjw6Q== X-Google-Smtp-Source: ABdhPJzubZvwCIdqwZnDjhITbwIZEvnxEJVgTSlGKnT+/2AP3krPn6MRczFBbiVHaka2C+Te2rDs1A== X-Received: by 2002:a1c:4c12:0:b0:39c:6750:be17 with SMTP id z18-20020a1c4c12000000b0039c6750be17mr8842247wmf.21.1654863929615; Fri, 10 Jun 2022 05:25:29 -0700 (PDT) Received: from naush-laptop.localdomain ([88.97.76.4]) by smtp.gmail.com with ESMTPSA id e29-20020a5d595d000000b00213b93cff5fsm23097909wri.98.2022.06.10.05.25.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Jun 2022 05:25:28 -0700 (PDT) To: libcamera-devel@lists.libcamera.org Date: Fri, 10 Jun 2022 13:25:33 +0100 Message-Id: <20220610122533.11888-3-naush@raspberrypi.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220610122533.11888-1-naush@raspberrypi.com> References: <20220610122533.11888-1-naush@raspberrypi.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 3/3] pipeline: raspberrypi: Advertise ScalerCrop from the pipeline handler 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: , X-Patchwork-Original-From: Naushir Patuck via libcamera-devel From: Naushir Patuck Reply-To: Naushir Patuck Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" The ScalerCrop control is handled directly by the pipeline handler. Remove the control from the IPA's static ControlInfoMap, and let the pipeline handler add it to the ControlInfoMap advertised to the application, ensuring the limits are set appropriately based on the current sensor mode. Signed-off-by: Naushir Patuck --- src/ipa/raspberrypi/raspberrypi.cpp | 1 - src/libcamera/pipeline/raspberrypi/raspberrypi.cpp | 10 +++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp index 295f6b735dc0..f46fccdd4177 100644 --- a/src/ipa/raspberrypi/raspberrypi.cpp +++ b/src/ipa/raspberrypi/raspberrypi.cpp @@ -86,7 +86,6 @@ static const ControlInfoMap::Map ipaControls{ { &controls::Saturation, ControlInfo(0.0f, 32.0f, 1.0f) }, { &controls::Sharpness, ControlInfo(0.0f, 16.0f, 1.0f) }, { &controls::ColourCorrectionMatrix, ControlInfo(-16.0f, 16.0f) }, - { &controls::ScalerCrop, ControlInfo(Rectangle{}, Rectangle(65535, 65535, 65535, 65535), Rectangle{}) }, { &controls::draft::NoiseReductionMode, ControlInfo(controls::draft::NoiseReductionModeValues) } }; diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp index 4596f2babcea..66a84b1dfb97 100644 --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp @@ -941,7 +941,15 @@ int PipelineHandlerRPi::configure(Camera *camera, CameraConfiguration *config) data->properties_.set(properties::SensorSensitivity, result.modeSensitivity); /* Update the controls that the Raspberry Pi IPA can handle. */ - data->controlInfo_ = result.controlInfo; + ControlInfoMap::Map ctrlMap; + for (auto const &c : result.controlInfo) + ctrlMap.emplace(c.first, c.second); + + /* Add the ScalerCrop control limits based on the current mode. */ + ctrlMap.emplace(&controls::ScalerCrop, + ControlInfo(Rectangle(data->ispMinCropSize_), Rectangle(data->sensorInfo_.outputSize))); + + data->controlInfo_ = ControlInfoMap(std::move(ctrlMap), result.controlInfo.idmap()); /* Setup the Video Mux/Bridge entities. */ for (auto &[device, link] : data->bridgeDevices_) {