Cover Letter Detail
Show a cover letter.
GET /api/1.1/covers/25465/?format=api
{ "id": 25465, "url": "https://patchwork.libcamera.org/api/1.1/covers/25465/?format=api", "web_url": "https://patchwork.libcamera.org/cover/25465/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/1.1/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": "<20251210164055.17856-1-david.plowman@raspberrypi.com>", "date": "2025-12-10T16:15:15", "name": "[00/11] Bayer re-processing", "submitter": { "id": 42, "url": "https://patchwork.libcamera.org/api/1.1/people/42/?format=api", "name": "David Plowman", "email": "david.plowman@raspberrypi.com" }, "mbox": "https://patchwork.libcamera.org/cover/25465/mbox/", "series": [ { "id": 5650, "url": "https://patchwork.libcamera.org/api/1.1/series/5650/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5650", "date": "2025-12-10T16:15:15", "name": "Bayer re-processing", "version": 1, "mbox": "https://patchwork.libcamera.org/series/5650/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/covers/25465/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 2EF4BC3257\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 10 Dec 2025 16:41:01 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D2EDE614AE;\n\tWed, 10 Dec 2025 17:41:00 +0100 (CET)", "from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com\n\t[IPv6:2a00:1450:4864:20::32a])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 853E861499\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 10 Dec 2025 17:40:58 +0100 (CET)", "by mail-wm1-x32a.google.com with SMTP id\n\t5b1f17b1804b1-47774d3536dso305985e9.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 10 Dec 2025 08:40:58 -0800 (PST)", "from davidp-pi5.pitowers.org\n\t([2a00:1098:3142:1f:88ea:c658:5b20:5e46])\n\tby smtp.gmail.com with ESMTPSA id\n\t5b1f17b1804b1-47a88371e13sm1270415e9.11.2025.12.10.08.40.57\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tWed, 10 Dec 2025 08:40:57 -0800 (PST)" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"VRXWqLaj\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google; t=1765384858; x=1765989658;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:mime-version:message-id:date:subject:cc\n\t:to:from:from:to:cc:subject:date:message-id:reply-to;\n\tbh=f3HOiwIt2OHTsUbF9Zbu4yyPAVqXezMP7iZdr11Hqd8=;\n\tb=VRXWqLajf93zgFeCKZWVE9PF+/GSr07O3ulsGmf7hY7TLGwdj+w8MhUQaNLJ7u/Ucf\n\tVoOjW7ZlPodj6RbHuJCIPwi9r25pqmyPD0gpfsAGvVe0ufpJLvCg1PK5kjtoYPDfxJJs\n\tNcnY+fvd+GrgcGsJnAOBVcgWVVDMLUskKphhGPuULZhUOu5pKC6S4Hc8Q6YIZUHvJxsL\n\t2QuQVUoSXhrMrAFNk1FCUlLeFQXnozevytVrdcykYAzs2VnhkNhedoilQbFVSk9qW2Mj\n\t8RwR3Loe4nboj5vtFhYWSqpmc4OR/WfBgU+YLpDO4LGUO7eFjqp1rjQ/5xJTOYrmv5oE\n\tNTJw==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1765384858; x=1765989658;\n\th=content-transfer-encoding:mime-version:message-id:date:subject:cc\n\t:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=f3HOiwIt2OHTsUbF9Zbu4yyPAVqXezMP7iZdr11Hqd8=;\n\tb=BAAQ4mHYohiPmSq0sP29z6PoUjNHJh5Zb10Pb+41/6RNlYg14xFoPwuoDBxSN2XaWf\n\t1BBiVj71FZbzwIwh8PdLVlQOElQWJtLv2WPVcuZTY5lLgaz7O8bcbHTz7xQGA7+t/2fD\n\tFk71SetcpWj7yfXYYPs3JVDokt95gucKBnx5m2IcLDtVzyk7bHVnwYNoJTZVVXAENXXA\n\toYEpbxPT4YiAY/0/XRYNbIFU4v7ulPBkWSBiM1xeLtH12WSLs5/C3iPzeEGhlLTmczTH\n\tgUHZz+rdxKVXTvVhQTTLM10EXNpsuxsQvdBdJu1Xjsf7jRWyBn6qs1GMdKCq86WJYvmD\n\tRXEw==", "X-Gm-Message-State": "AOJu0YyWsLIk5SH8YursqTn/YXnqn5XmGwjFKBRqu43z14+hJQhaxPW6\n\t51LuaIhDrbRwKY82A6WSfrvVBolmRgtsLRObab8iW3fxSLL8V1rRiihHLIMQzUQ4itMMBae5kE3\n\tMZxc0", "X-Gm-Gg": "ASbGnctplYdrhIHT0fn1eaGTaPCFkL79H9uT4RBGcllsiLTFgXbTT7CE5CXnoX67omh\n\tY8x0bjVLG9w7tRhPxrwcemwTV0rOIqmhIQ5y/NZtahG4evFCDlG35JZKccrI+YphYsivGdh5u92\n\tRomSzV1gt1pKUjarUZyFB9PHX2dxeOCp8Y7K7aN4eI2f+tlwKZ+lClqAnR+FazghgMs4s1cwvNv\n\tnpIDfHNN4Rde/3Nw9KV/IUeS4Rr0cjukaQcDrsXhtR5TYpurSQuFO5qPO214CsJb6L/ZaVWdZMS\n\tj9iZxmdWXNW8cRoSQvThtAH+BfnzoG6YWN5bFILsIvzUn31UxjFDjsE7BKCdwnTo1O8U0ZLlcUt\n\tFvLi8xqYYUWmdM1uc2iuoR2ju3KleJSvcnLLAXXbFW6wCni/FDvefyz92MqcASp2Dfacph1i08R\n\t7Cf6tYSwoyyRaXJ5eS9e3JlcX6CplBPN0lNKEGrE7QjNfBlBkpACCxoXaHVwf6s4O6marZbnEye\n\tdOGv5nO81Lhv2+YzVMSpRNQ+nsDtzc/n6GTpry0", "X-Google-Smtp-Source": "AGHT+IFIYIINvjgXZ37FvpOTz7H940OcOPXVLhiQOg5nrWUqH87p3Vu/ClzW/vRM2gcLKeFPBPPHAw==", "X-Received": "by 2002:a05:600c:4f53:b0:471:5c0:94fc with SMTP id\n\t5b1f17b1804b1-47a886c6169mr443475e9.6.1765384857755; \n\tWed, 10 Dec 2025 08:40:57 -0800 (PST)", "From": "David Plowman <david.plowman@raspberrypi.com>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "David Plowman <david.plowman@raspberrypi.com>", "Subject": "[PATCH 00/11] Bayer re-processing", "Date": "Wed, 10 Dec 2025 16:15:15 +0000", "Message-ID": "<20251210164055.17856-1-david.plowman@raspberrypi.com>", "X-Mailer": "git-send-email 2.47.3", "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": "Hi everyone\n\nAs I mentioned to some of you last week, I'm keen actually to make\nsome more progress with Bayer re-processing, with a view to it\nbecoming a bona fide feature. So here it is again, this time as a\nregular \"PATCH\" rather than an \"RFC\".\n\nThe changes over the RFC version are only minor. Apart from a rebase,\na couple of things have been fixed, and a couple of things slightly\nadjusted in relatively minor ways. But the gist of it is the\nsame. Therefore we have:\n\n* A \"memory camera\" that is the gateway to Bayer re-processing. These\n are made on demand rather than at startup. It's possible that a\n pipeline handler could supprt any number of \"memory cameras\" (or\n none). A memory camera has to be passed something that tells it\n how to reprocess the image.\n\n* There are now \"input streams\", and a camera configuration can have a\n \"raw input stream\" which supplies the buffer to be re-processed.\n\n* The Raspberry Pi pipeline handler handles these configurations\n correctly.\n\nAs before, if anyone wants to try it out, there's a working branch\nhere:\n\nhttps://github.com/davidplowman/libcamera/tree/reprocessing\n\nand a demo program that converts a DNG to a JPEG, in the most\nlightningest speed you have ever witnessed, here:\n\nhttps:://github.com/davidplowman/libcamera-apps/blob/reprocessing/apps/rpicam_convert.cpp\n\nLooking foward to everyone's feedback.\n\nThanks!\nDavid\n\nDavid Plowman (11):\n libcamera: Infrastructure to ask for \"memory\" cameras\n libcamera: Add a direction (input or output) to the stream\n configuration\n libcamera: sensor: Add CameraSensorMemory class\n pipeline: rpi: Add PipelineHandlerBase::bayerToMbusCode\n ipa: rpi: cam_helper: Add CamHelperDefault class\n libcamera: pipeline: rpi: Allow creation of the first \"memory\" camera\n pipeline: rpi: Allow generation of raw input configurations\n libcamera: Don't wait for input streams to complete\n ipa: rpi: Support memory cameras\n pipeline: rpi: Support memory cameras\n pipline: rpi: Support memory cameras processing requests\n\n include/libcamera/camera_manager.h | 4 +\n include/libcamera/internal/camera_manager.h | 5 +\n include/libcamera/internal/camera_sensor.h | 2 +\n .../libcamera/internal/camera_sensor_memory.h | 110 ++++\n include/libcamera/internal/meson.build | 1 +\n include/libcamera/internal/pipeline_handler.h | 8 +\n include/libcamera/stream.h | 10 +\n src/ipa/rpi/cam_helper/cam_helper_default.cpp | 45 ++\n src/ipa/rpi/cam_helper/meson.build | 1 +\n src/ipa/rpi/common/ipa_base.cpp | 135 +++--\n src/ipa/rpi/common/ipa_base.h | 5 +\n src/libcamera/camera_manager.cpp | 64 +++\n .../pipeline/rpi/common/pipeline_base.cpp | 144 +++++-\n .../pipeline/rpi/common/pipeline_base.h | 6 +-\n src/libcamera/pipeline/rpi/pisp/pisp.cpp | 471 ++++++++++++------\n src/libcamera/pipeline_handler.cpp | 23 +\n src/libcamera/request.cpp | 4 +-\n src/libcamera/sensor/camera_sensor_memory.cpp | 241 +++++++++\n src/libcamera/sensor/meson.build | 1 +\n src/libcamera/stream.cpp | 6 +-\n 20 files changed, 1084 insertions(+), 202 deletions(-)\n create mode 100644 include/libcamera/internal/camera_sensor_memory.h\n create mode 100644 src/ipa/rpi/cam_helper/cam_helper_default.cpp\n create mode 100644 src/libcamera/sensor/camera_sensor_memory.cpp" }