Patch Detail
Show a patch.
GET /api/1.1/patches/11079/?format=api
{ "id": 11079, "url": "https://patchwork.libcamera.org/api/1.1/patches/11079/?format=api", "web_url": "https://patchwork.libcamera.org/patch/11079/", "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": "<20210131224702.8838-1-laurent.pinchart@ideasonboard.com>", "date": "2021-01-31T22:46:42", "name": "[libcamera-devel,00/20] libcamera: Multi-stream support for the simple pipeline handler", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "4de3a0b1aae11e4baabe42094a9f0791aa49efe0", "submitter": { "id": 2, "url": "https://patchwork.libcamera.org/api/1.1/people/2/?format=api", "name": "Laurent Pinchart", "email": "laurent.pinchart@ideasonboard.com" }, "delegate": { "id": 14, "url": "https://patchwork.libcamera.org/api/1.1/users/14/?format=api", "username": "pinchartl", "first_name": "Laurent", "last_name": "Pinchart", "email": "laurent.pinchart@ideasonboard.com" }, "mbox": "https://patchwork.libcamera.org/patch/11079/mbox/", "series": [], "comments": "https://patchwork.libcamera.org/api/patches/11079/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/11079/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 37BE2BD808\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSun, 31 Jan 2021 22:47:29 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 93219683D5;\n\tSun, 31 Jan 2021 23:47:28 +0100 (CET)", "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 990F6683D0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 31 Jan 2021 23:47:27 +0100 (CET)", "from pendragon.lan (62-78-145-57.bb.dnainternet.fi [62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id E96C3813;\n\tSun, 31 Jan 2021 23:47:26 +0100 (CET)" ], "Authentication-Results": "lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"R2w50nGK\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1612133247;\n\tbh=tJ55nVQxwrrq4z25RkZt8jGhvwIWsOmERVAAOU8GjpI=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=R2w50nGKyLWkGixRayyGGlkCltFKUGJilRw+p+mHLD41Kquf5NHrQE7N8Sw6RSezM\n\thk0e38PPubQdopjsoPmW8TvEqHQksLaQRHyxs+4XpN0nQWYpWKA1B3lkR9VP03W2Zd\n\tAyHx+2YXsAU4l9vUMNsztSBGaZL7NITeeNm9VoYA=", "From": "Laurent Pinchart <laurent.pinchart@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Mon, 1 Feb 2021 00:46:42 +0200", "Message-Id": "<20210131224702.8838-1-laurent.pinchart@ideasonboard.com>", "X-Mailer": "git-send-email 2.28.0", "MIME-Version": "1.0", "Subject": "[libcamera-devel] [PATCH 00/20] libcamera: Multi-stream support for\n\tthe simple pipeline handler", "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>", "Cc": "Phi-Bang Nguyen <pnguyen@baylibre.com>", "Content-Type": "text/plain; charset=\"us-ascii\"", "Content-Transfer-Encoding": "7bit", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "Hello,\n\nThis patch series implements multi-stream support in the simple pipeline\nhandler.\n\nMulti-stream support in the capture device requires hardware processing\ncapabilities (at least format conversion and scaling), which would\nlikely not qualify the platform for support in the simple pipeline\nhandler. However, for platforms that include a converter, the V4L2 M2M\nAPI allows opening multiple instances of the converter to create\nmultiple output streams with different formats and resolution (as long\nas the hardware has enough bandwidth to run all the processing passes).\nThis approach is generic and doesn't require any extra hardware feature\ncompared to what the simple pipeline handler already uses.\n\nThe patches starts with refactoring of the converter class to prepare\nfor multiple streams support, and then refactors the simple pipeline\nhandler to achieve the same goal. The last two patches enable\nmulti-streams support\n\nThe code has been tested on the MediaTek Pumpkin i500 board. Its\nsupport isn't available in the simple pipeline handler yet due to the\ndrivers not being upstream, which is an issue that is being addressed.\nEnabling it, after importing the kernel headers that define the\nMediaTek-specific pixel formats and enabling them in libcamera, only\nrequires the following change in the simple pipeline handler.\n\n\nLaurent Pinchart (20):\n libcamera: pipeline: simple: Manage converter with std::unique_ptr<>\n libcamera: pipeline: simple: Don't override stride at configure time\n libcamera: pipeline: simple: converter: Group query functions together\n libcamera: pipeline: simple: converter: Use StreamConfiguration for\n input configuration\n libcamera: pipeline: simple: converter: Configure input stride\n libcamera: pipeline: simple: converter: Differentiate input and output\n buffers count\n libcamera: pipeline: simple: converter: Replace open() with isValid()\n libcamera: pipeline: simple: converter: Decouple input and output\n completion\n libcamera: pipeline: simple: converter: Add multi-stream support\n libcamera: pipeline: simple: Store streams in a vector\n libcamera: pipeline: simple: Drop unused members of configuration\n libcamera: pipeline: simple: Document the pipeline handler design\n libcamera: pipeline: simple: Rename Configuration::pixelFormat\n libcamera: pipeline: simple: Cache pipeline config in\n SimpleCameraConfiguration\n libcamera: pipeline: simple: Add output formats to Configuration\n libcamera: pipeline: simple: Move converter data to camera data\n libcamera: pipeline: simple: Hardcode the number of internal buffers\n libcamera: pipeline: simple: Support configuration of multiple streams\n libcamera: pipeline: simple: Support usage of multiple streams\n libcamera: pipeline: simple: Enable multiple streams for compatible\n devices\n\n src/libcamera/pipeline/simple/converter.cpp | 398 ++++++++------\n src/libcamera/pipeline/simple/converter.h | 60 ++-\n src/libcamera/pipeline/simple/simple.cpp | 542 +++++++++++++-------\n 3 files changed, 650 insertions(+), 350 deletions(-)", "diff": "diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp\nindex 55a5528611c8..6b0170d1aba8 100644\n--- a/src/libcamera/pipeline/simple/simple.cpp\n+++ b/src/libcamera/pipeline/simple/simple.cpp\n@@ -132,6 +132,7 @@ namespace {\n\n static const SimplePipelineInfo supportedDevices[] = {\n \t{ \"imx7-csi\", \"pxp\", 1 },\n+\t{ \"mtk-camsv-p1\", \"mtk-mdp3\", 3 },\n \t{ \"qcom-camss\", nullptr, 1 },\n \t{ \"sun6i-csi\", nullptr, 1 },\n };\n", "prefixes": [ "libcamera-devel", "00/20" ] }