Patch Detail
Show a patch.
GET /api/patches/15343/?format=api
{ "id": 15343, "url": "https://patchwork.libcamera.org/api/patches/15343/?format=api", "web_url": "https://patchwork.libcamera.org/patch/15343/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20220208100436.2348-1-david.plowman@raspberrypi.com>", "date": "2022-02-08T10:04:36", "name": "[libcamera-devel,v2] ipa: raspberrypi: awb: Better handling of how we disable AWB", "commit_ref": "110c26b317c783a48c97badd93c006f6c2ae834b", "pull_url": null, "state": "accepted", "archived": false, "hash": "6bed0e2be57d7f8121d6e23cc437c970ebbc1fd6", "submitter": { "id": 42, "url": "https://patchwork.libcamera.org/api/people/42/?format=api", "name": "David Plowman", "email": "david.plowman@raspberrypi.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/15343/mbox/", "series": [ { "id": 2922, "url": "https://patchwork.libcamera.org/api/series/2922/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=2922", "date": "2022-02-08T10:04:36", "name": "[libcamera-devel,v2] ipa: raspberrypi: awb: Better handling of how we disable AWB", "version": 2, "mbox": "https://patchwork.libcamera.org/series/2922/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/15343/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/15343/checks/", "tags": {}, "headers": { "Return-Path": "<libcamera-devel-bounces@lists.libcamera.org>", "X-Original-To": "parsemail@patchwork.libcamera.org", "Delivered-To": "parsemail@patchwork.libcamera.org", "Received": [ "from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 693ADBF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 8 Feb 2022 10:04:44 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id BD415610BF;\n\tTue, 8 Feb 2022 11:04:43 +0100 (CET)", "from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com\n\t[IPv6:2a00:1450:4864:20::42b])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id B6680610AD\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 8 Feb 2022 11:04:42 +0100 (CET)", "by mail-wr1-x42b.google.com with SMTP id h6so10987678wrb.9\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 08 Feb 2022 02:04:42 -0800 (PST)", "from pi4-davidp.pitowers.org\n\t([2a00:1098:3142:14:e4a2:3070:eea4:e434])\n\tby smtp.gmail.com with ESMTPSA id\n\to10sm13540033wri.19.2022.02.08.02.04.41\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tTue, 08 Feb 2022 02:04:41 -0800 (PST)" ], "Authentication-Results": "lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"rLBhzwnc\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=from:to:cc:subject:date:message-id:mime-version\n\t:content-transfer-encoding;\n\tbh=3l5ahQqrMGYFZaVyouoJR+LZS1VSkX3VWjwpdI73BIQ=;\n\tb=rLBhzwnc7in3StFnZh6XLKOxE0UI7qQM1zYcOY5Q/0Rrndj+Cjw2BpYkdTeAkHnXth\n\tETYckGMRVhbUoJBS7nDKKhHb6P4+Ffo7er3wDrq2Zc7Txlx8rL/KWr7yUlWdZvxocbCL\n\tGizRRXaIPUzbdHsvrUmzxV0Ed90KjWCBWWdREjKmUxtDLd5UM5mctZ87URYM8Q8zyVsw\n\t8Uqv6+qXVq7/bXjI7POv2MC1gWHXYshbObMF4BugbGiSsCJdZRQdHc3JjblTmCl1gOg+\n\ta/nAOgZu/XLyXDqXpQH5MScXUr7hEhF0TqLT1sSy0apZuiAGJHhKmV2hzMFpF3fcUaJ5\n\t+BwA==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version\n\t:content-transfer-encoding;\n\tbh=3l5ahQqrMGYFZaVyouoJR+LZS1VSkX3VWjwpdI73BIQ=;\n\tb=bc7YmP2+pUL7Xm7r7qJvCaOfVXdCHmxIEPyjBxcZ4q5bM5c6rqvh0mJ/0lmYz3xh80\n\tnF1/PmLOwUgNVcaEhMQRguOJT3jiMBx1xKflbVoW9QB02Epr/sCoxpEy20nONlGHlKAH\n\t/Zopcs77wYu1h1j574JVNfzBONdRA9uCBMc6vepLW35u4PODGSeM7sWWWG1eZEx57Nu9\n\t5GiM3dlOpWoqKA4fyc6G9PTR0CV/N7OJbtpfDTOUanRjBd3rPOZUVJXL0QBKfUseecvQ\n\t+xNqKFkmQbK1jb5sWPe1iaCpoe8ihVozHkiElDmp6OGe08yPlmVMCjQ0pG2km2Dbtk3P\n\tCisA==", "X-Gm-Message-State": "AOAM531b9DkPzdIgoE8sgACP5dNmjQTKiRuHQFXB9eS7arVEBmGahztg\n\t/6TrKPPfS5jgN98u7mUJOwmPZ9Ec4TJd0MHl", "X-Google-Smtp-Source": "ABdhPJyYK1f/opU1PR5t3LPZw5u1oAX0c8xSf3M+3qL+syKLFO6JdZP76NJDa7XPDui1+d8LMZf78Q==", "X-Received": "by 2002:a05:6000:1a8c:: with SMTP id\n\tf12mr2773073wry.124.1644314682142; \n\tTue, 08 Feb 2022 02:04:42 -0800 (PST)", "From": "David Plowman <david.plowman@raspberrypi.com>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Tue, 8 Feb 2022 10:04:36 +0000", "Message-Id": "<20220208100436.2348-1-david.plowman@raspberrypi.com>", "X-Mailer": "git-send-email 2.30.2", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH v2] ipa: raspberrypi: awb: Better handling\n\tof how we disable AWB", "X-BeenThere": "libcamera-devel@lists.libcamera.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "<libcamera-devel.lists.libcamera.org>", "List-Unsubscribe": "<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>", "List-Archive": "<https://lists.libcamera.org/pipermail/libcamera-devel/>", "List-Post": "<mailto:libcamera-devel@lists.libcamera.org>", "List-Help": "<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>", "List-Subscribe": "<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "We now handle disabling (\"pausing\") AWB in the same way as\nAEC/AGC. Instead of letting the pause flag be set so that the code\nnever runs at all, we instead fix the manual settings to the current\nvalues (but continue to be called).\n\nThe algorithm does not restart any calculations in this state, but\ncontinues to add AWB metadata to every frame. Therefore certain other\nalgorithms that want to know it (CCM and ALSC, for example) can still\nfind it.\n\nSigned-off-by: David Plowman <david.plowman@raspberrypi.com>\nReviewed-by: Naushir Patuck <naush@raspberrypi.com>\n---\n src/ipa/raspberrypi/controller/rpi/awb.cpp | 20 ++++++++++++++++++++\n src/ipa/raspberrypi/controller/rpi/awb.hpp | 4 ++++\n 2 files changed, 24 insertions(+)", "diff": "diff --git a/src/ipa/raspberrypi/controller/rpi/awb.cpp b/src/ipa/raspberrypi/controller/rpi/awb.cpp\nindex 5cfd33a3..d4c93447 100644\n--- a/src/ipa/raspberrypi/controller/rpi/awb.cpp\n+++ b/src/ipa/raspberrypi/controller/rpi/awb.cpp\n@@ -172,6 +172,26 @@ void Awb::Initialise()\n \tasync_results_ = sync_results_;\n }\n \n+bool Awb::IsPaused() const\n+{\n+\treturn false;\n+}\n+\n+void Awb::Pause()\n+{\n+\t// \"Pause\" by fixing everything to the most recent values.\n+\tmanual_r_ = sync_results_.gain_r = prev_sync_results_.gain_r;\n+\tmanual_b_ = sync_results_.gain_b = prev_sync_results_.gain_b;\n+\tsync_results_.gain_g = prev_sync_results_.gain_g;\n+\tsync_results_.temperature_K = prev_sync_results_.temperature_K;\n+}\n+\n+void Awb::Resume()\n+{\n+\tmanual_r_ = 0.0;\n+\tmanual_b_ = 0.0;\n+}\n+\n unsigned int Awb::GetConvergenceFrames() const\n {\n \t// If not in auto mode, there is no convergence\ndiff --git a/src/ipa/raspberrypi/controller/rpi/awb.hpp b/src/ipa/raspberrypi/controller/rpi/awb.hpp\nindex 8af1f27c..ac3dca6f 100644\n--- a/src/ipa/raspberrypi/controller/rpi/awb.hpp\n+++ b/src/ipa/raspberrypi/controller/rpi/awb.hpp\n@@ -83,6 +83,10 @@ public:\n \tchar const *Name() const override;\n \tvoid Initialise() override;\n \tvoid Read(boost::property_tree::ptree const ¶ms) override;\n+\t// AWB handles \"pausing\" for itself.\n+\tbool IsPaused() const override;\n+\tvoid Pause() override;\n+\tvoid Resume() override;\n \tunsigned int GetConvergenceFrames() const override;\n \tvoid SetMode(std::string const &name) override;\n \tvoid SetManualGains(double manual_r, double manual_b) override;\n", "prefixes": [ "libcamera-devel", "v2" ] }