Cover Letter Detail
Show a cover letter.
GET /api/covers/23730/?format=api
{ "id": 23730, "url": "https://patchwork.libcamera.org/api/covers/23730/?format=api", "web_url": "https://patchwork.libcamera.org/cover/23730/", "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": "<20250703114225.2074071-1-paul.elder@ideasonboard.com>", "date": "2025-07-03T11:42:15", "name": "[v2,0/8] Add Layers support", "submitter": { "id": 17, "url": "https://patchwork.libcamera.org/api/people/17/?format=api", "name": "Paul Elder", "email": "paul.elder@ideasonboard.com" }, "mbox": "https://patchwork.libcamera.org/cover/23730/mbox/", "series": [ { "id": 5267, "url": "https://patchwork.libcamera.org/api/series/5267/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5267", "date": "2025-07-03T11:42:15", "name": "Add Layers support", "version": 2, "mbox": "https://patchwork.libcamera.org/series/5267/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/covers/23730/comments/", "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 EF4C8BDCBF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 3 Jul 2025 11:42:46 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B797C68E3B;\n\tThu, 3 Jul 2025 13:42:45 +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 168F961528\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 3 Jul 2025 13:42:44 +0200 (CEST)", "from neptunite.hamster-moth.ts.net (unknown\n\t[IPv6:2404:7a81:160:2100:c61b:f3bf:2578:6674])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id DDA08593;\n\tThu, 3 Jul 2025 13:42:18 +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=\"WLM7746z\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1751542940;\n\tbh=F9sOwchRQYOKkUW/X//t82kx3IvZznWC+DUhbozMU78=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=WLM7746zfXaar+Rt/aKD23XZHB22dIIonVCDnNGHidtYSW8349fP6Frm4f7pDa11o\n\toq1V8VDIlim3nU+0/9AjqZr7Sc5u8cSRtTbQxuq0rTnhtG3TJxlhKwFZCfuc+J7EQM\n\tvxkuDPKEUAZohsj5ZE7i8/+9/27amea2HOgkCMJM=", "From": "Paul Elder <paul.elder@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "Paul Elder <paul.elder@ideasonboard.com>, kieran.bingham@ideasonboard.com,\n\tbarnabas.pocze@ideasonboard.com", "Subject": "[PATCH v2 0/8] Add Layers support", "Date": "Thu, 3 Jul 2025 20:42:15 +0900", "Message-ID": "<20250703114225.2074071-1-paul.elder@ideasonboard.com>", "X-Mailer": "git-send-email 2.47.2", "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": "This series introduces a new concept to libcamera, called Layers. They\nsit between the application and the Camera, and hook into a subset of\nthe Camera calls. This allows things that don't belong inside a\nCamera/IPA nor inside an application to be implemented, such as the Sync\nalgorithm. As a light demonstration of the capabilities of Layers, this\nseries implements a Layer that intercepts all control-related calls to\nimplement the AeEnable control transparently.\n\nPatches 1~3 are refactoring and reorganizing existing code. Patch 4\nimplements the LayerManager, which is the main component. Patch 5~6\nconnects the Camera to the layer infrastructure. Finally patches 7~8\nimplement a simple layer that implements the AeEnable control, to\ndemonstrate how a Layer might work.\n\nv2 most notably reorganizes the LayerManager to be under the\nCameraManager instead of the Camera, and adds support for closures so\nthat each layer can store its data per camera.\n\nPaul Elder (8):\n libcamera: ipa_manager: Factor out .so file searching\n libcamera: ipa_module: Factor out ELF file handling\n libcamera: camera: Add indirection to Camera signal emissions\n libcamera: layer_manager: Add LayerManager implementation\n libcamera: camera_manager: Add LayerManager\n libcamera: camera: Hook into the LayerManager\n layer: Add layer to inject AeEnable control\n camera, ipa: all: Remove AeEnable handling\n\n include/libcamera/internal/camera.h | 4 +\n include/libcamera/internal/camera_manager.h | 3 +\n include/libcamera/internal/ipa_manager.h | 4 -\n include/libcamera/internal/layer_manager.h | 117 ++++++\n include/libcamera/internal/meson.build | 2 +\n include/libcamera/internal/utils.h | 32 ++\n include/libcamera/layer.h | 54 +++\n include/libcamera/meson.build | 1 +\n src/ipa/mali-c55/algorithms/agc.cpp | 1 +\n src/ipa/rkisp1/algorithms/agc.cpp | 2 -\n src/ipa/rpi/common/ipa_base.cpp | 2 -\n src/layer/inject_controls/inject_controls.cpp | 176 ++++++++\n src/layer/inject_controls/inject_controls.h | 24 ++\n src/layer/inject_controls/meson.build | 16 +\n src/layer/meson.build | 12 +\n src/libcamera/camera.cpp | 80 +++-\n src/libcamera/camera_manager.cpp | 2 +\n src/libcamera/ipa_manager.cpp | 108 +----\n src/libcamera/ipa_module.cpp | 152 +------\n src/libcamera/layer_manager.cpp | 383 ++++++++++++++++++\n src/libcamera/meson.build | 2 +\n src/libcamera/pipeline/uvcvideo/uvcvideo.cpp | 5 -\n src/libcamera/pipeline_handler.cpp | 2 +-\n src/libcamera/request.cpp | 2 +-\n src/libcamera/utils.cpp | 264 ++++++++++++\n src/meson.build | 1 +\n 26 files changed, 1176 insertions(+), 275 deletions(-)\n create mode 100644 include/libcamera/internal/layer_manager.h\n create mode 100644 include/libcamera/internal/utils.h\n create mode 100644 include/libcamera/layer.h\n create mode 100644 src/layer/inject_controls/inject_controls.cpp\n create mode 100644 src/layer/inject_controls/inject_controls.h\n create mode 100644 src/layer/inject_controls/meson.build\n create mode 100644 src/layer/meson.build\n create mode 100644 src/libcamera/layer_manager.cpp\n create mode 100644 src/libcamera/utils.cpp" }