Patch Detail
Show a patch.
GET /api/patches/24778/?format=api
{ "id": 24778, "url": "https://patchwork.libcamera.org/api/patches/24778/?format=api", "web_url": "https://patchwork.libcamera.org/patch/24778/", "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": "<20251024085130.995967-13-stefan.klug@ideasonboard.com>", "date": "2025-10-24T08:50:36", "name": "[v1,12/35] pipeline: rkisp1: Fix controls in raw mode", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "c00405d32b718a8e54423d6ad39973550edd710f", "submitter": { "id": 184, "url": "https://patchwork.libcamera.org/api/people/184/?format=api", "name": "Stefan Klug", "email": "stefan.klug@ideasonboard.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/24778/mbox/", "series": [ { "id": 5524, "url": "https://patchwork.libcamera.org/api/series/5524/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5524", "date": "2025-10-24T08:50:24", "name": "rkisp1: pipeline rework for PFC", "version": 1, "mbox": "https://patchwork.libcamera.org/series/5524/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/24778/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/24778/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 29268C3259\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 24 Oct 2025 08:52:14 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D4A82608B9;\n\tFri, 24 Oct 2025 10:52:13 +0200 (CEST)", "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C330660871\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 24 Oct 2025 10:52:12 +0200 (CEST)", "from ideasonboard.com (unknown\n\t[IPv6:2a00:6020:448c:6c00:7edc:62f4:c118:1549])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 5502A1E47; \n\tFri, 24 Oct 2025 10:50:27 +0200 (CEST)" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"WIW8Q8Nu\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1761295827;\n\tbh=vIV9kMVAxEfuUxuZvM48QSwKHrqP3a2E818NTF13OAU=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=WIW8Q8NuOW3c0FFqMdCVG2lnNNHyCpzMqK2t0U+PWUmBb9aE+o6o7f6SDvR8hP8xN\n\tsVwhtrM2NBLotTtX8XnkWMxkMUmn6KnAp8yefkV/KDShj3+EHDSRbfgacy44Xrkry6\n\txox6bV6b419VoDzpeRZEoieqS3cpaQgU5CCqSZMM=", "From": "Stefan Klug <stefan.klug@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "Stefan Klug <stefan.klug@ideasonboard.com>", "Subject": "[PATCH v1 12/35] pipeline: rkisp1: Fix controls in raw mode", "Date": "Fri, 24 Oct 2025 10:50:36 +0200", "Message-ID": "<20251024085130.995967-13-stefan.klug@ideasonboard.com>", "X-Mailer": "git-send-email 2.48.1", "In-Reply-To": "<20251024085130.995967-1-stefan.klug@ideasonboard.com>", "References": "<20251024085130.995967-1-stefan.klug@ideasonboard.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "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": "After the pipeline restructuring setSensorControls is no longer emitted\nwithin process() but within computeParams(). In raw mode computeParams\nis not called and therefore setSensorControls is never emitted. Fix that\nby allowing computeParams to be called with an empty bufferId. This\nstrategy is also used for processStats() to ensure that metadata gets\nfilled in raw mode. Then call computeParams within frameStart() when in\nraw mode.\n\nSigned-off-by: Stefan Klug <stefan.klug@ideasonboard.com>\n---\n src/ipa/rkisp1/rkisp1.cpp | 12 ++++++++++++\n src/libcamera/pipeline/rkisp1/rkisp1.cpp | 4 ++++\n 2 files changed, 16 insertions(+)", "diff": "diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp\nindex ab8583e389d3..ee87c899fcb1 100644\n--- a/src/ipa/rkisp1/rkisp1.cpp\n+++ b/src/ipa/rkisp1/rkisp1.cpp\n@@ -343,6 +343,18 @@ void IPARkISP1::computeParams(const uint32_t frame, const uint32_t bufferId)\n {\n \tIPAFrameContext &frameContext = context_.frameContexts.get(frame);\n \n+\t/*\n+\t * \\todo: This needs discussion. In raw mode, computeParams is\n+\t * called without a params buffer, to trigger the setSensorControls\n+\t * signal. Currently our algorithms don't support prepare calls with\n+\t * a nullptr. Do we need that or can we safely skip it?\n+\t */\n+\tif (bufferId == 0) {\n+\t\tControlList ctrls = getSensorControls(frameContext);\n+\t\tsetSensorControls.emit(frame, ctrls);\n+\t\treturn;\n+\t}\n+\n \tRkISP1Params params(context_.configuration.paramFormat,\n \t\t\t mappedBuffers_.at(bufferId).planes()[0]);\n \ndiff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\nindex 9be9f44db479..0e6e45bba75b 100644\n--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n@@ -1618,6 +1618,10 @@ void PipelineHandlerRkISP1::frameStart(uint32_t sequence)\n \n \tRkISP1CameraData *data = cameraData(activeCamera_);\n \tdata->delayedCtrls_->applyControls(sequence);\n+\n+\tif (isRaw_) {\n+\t\tdata->ipa_->computeParams(sequence + 1, 0);\n+\t}\n }\n \n bool PipelineHandlerRkISP1::match(DeviceEnumerator *enumerator)\n", "prefixes": [ "v1", "12/35" ] }