Patch Detail
Show a patch.
GET /api/1.1/patches/8480/?format=api
{ "id": 8480, "url": "https://patchwork.libcamera.org/api/1.1/patches/8480/?format=api", "web_url": "https://patchwork.libcamera.org/patch/8480/", "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": "<20200628161723.30625-4-jacopo@jmondi.org>", "date": "2020-06-28T16:17:23", "name": "[libcamera-devel,3/3] libcamera: pipelines: Fail if more than one role is requested", "commit_ref": null, "pull_url": null, "state": "rfc", "archived": false, "hash": "d715f261f654240ac5253e5bcc3d0f1d4113946e", "submitter": { "id": 3, "url": "https://patchwork.libcamera.org/api/1.1/people/3/?format=api", "name": "Jacopo Mondi", "email": "jacopo@jmondi.org" }, "delegate": { "id": 15, "url": "https://patchwork.libcamera.org/api/1.1/users/15/?format=api", "username": "jmondi", "first_name": "Jacopo", "last_name": "Mondi", "email": "jacopo@jmondi.org" }, "mbox": "https://patchwork.libcamera.org/patch/8480/mbox/", "series": [ { "id": 1052, "url": "https://patchwork.libcamera.org/api/1.1/series/1052/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=1052", "date": "2020-06-28T16:17:20", "name": "libcamera: pipeline handlers: Fail if roles are not supported", "version": 1, "mbox": "https://patchwork.libcamera.org/series/1052/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/8480/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/8480/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 8E9E5C2E66\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSun, 28 Jun 2020 16:14:01 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5B71A60AF9;\n\tSun, 28 Jun 2020 18:14:00 +0200 (CEST)", "from relay11.mail.gandi.net (relay11.mail.gandi.net\n\t[217.70.178.231])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 865AC603B5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 28 Jun 2020 18:13:59 +0200 (CEST)", "from uno.lan (2-224-242-101.ip172.fastwebnet.it [2.224.242.101])\n\t(Authenticated sender: jacopo@jmondi.org)\n\tby relay11.mail.gandi.net (Postfix) with ESMTPSA id EDCD110000B;\n\tSun, 28 Jun 2020 16:13:58 +0000 (UTC)" ], "From": "Jacopo Mondi <jacopo@jmondi.org>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Sun, 28 Jun 2020 18:17:23 +0200", "Message-Id": "<20200628161723.30625-4-jacopo@jmondi.org>", "X-Mailer": "git-send-email 2.27.0", "In-Reply-To": "<20200628161723.30625-1-jacopo@jmondi.org>", "References": "<20200628161723.30625-1-jacopo@jmondi.org>", "MIME-Version": "1.0", "Subject": "[libcamera-devel] [PATCH 3/3] libcamera: pipelines: Fail if more\n\tthan one role is requested", "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>", "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": "The rkisp1, vimc, uvc and simple pipeline handlers only support a single\nstream.\n\nTheir generateConfiguration() implementations does not check how many\nroles have been requested, silently ignoring requests for more than one\nrole that cannot be satisfied.\n\nFix this and comply to the documented Camera API by failing if more than one\nrole is requested by applications.\n\nSigned-off-by: Jacopo Mondi <jacopo@jmondi.org>\n---\n src/libcamera/pipeline/rkisp1/rkisp1.cpp | 5 +++++\n src/libcamera/pipeline/simple/simple.cpp | 5 +++++\n src/libcamera/pipeline/uvcvideo/uvcvideo.cpp | 5 +++++\n src/libcamera/pipeline/vimc/vimc.cpp | 5 +++++\n 4 files changed, 20 insertions(+)", "diff": "diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\nindex 3c01821135f8..6d5c7c39edf1 100644\n--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n@@ -566,6 +566,11 @@ CameraConfiguration *PipelineHandlerRkISP1::generateConfiguration(Camera *camera\n \tif (roles.empty())\n \t\treturn config;\n \n+\tif (roles.size() > 1) {\n+\t\tdelete config;\n+\t\treturn nullptr;\n+\t}\n+\n \tStreamConfiguration cfg{};\n \tcfg.pixelFormat = formats::NV12;\n \tcfg.size = data->sensor_->resolution();\ndiff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp\nindex 1ec8d0f7de03..20675de568a8 100644\n--- a/src/libcamera/pipeline/simple/simple.cpp\n+++ b/src/libcamera/pipeline/simple/simple.cpp\n@@ -484,6 +484,11 @@ CameraConfiguration *SimplePipelineHandler::generateConfiguration(Camera *camera\n \tif (roles.empty())\n \t\treturn config;\n \n+\tif (roles.size() > 1) {\n+\t\tdelete config;\n+\t\treturn nullptr;\n+\t}\n+\n \t/* Create the formats map. */\n \tstd::map<PixelFormat, std::vector<SizeRange>> formats;\n \tstd::transform(data->formats_.begin(), data->formats_.end(),\ndiff --git a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\nindex 80a0e77ba3fc..773480e0a821 100644\n--- a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n+++ b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n@@ -158,6 +158,11 @@ CameraConfiguration *PipelineHandlerUVC::generateConfiguration(Camera *camera,\n \tif (roles.empty())\n \t\treturn config;\n \n+\tif (roles.size() > 1) {\n+\t\tdelete config;\n+\t\treturn nullptr;\n+\t}\n+\n \tstd::map<V4L2PixelFormat, std::vector<SizeRange>> v4l2Formats =\n \t\tdata->video_->formats();\n \tstd::map<PixelFormat, std::vector<SizeRange>> deviceFormats;\ndiff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp\nindex b6530662a9ba..e0980fc4a64c 100644\n--- a/src/libcamera/pipeline/vimc/vimc.cpp\n+++ b/src/libcamera/pipeline/vimc/vimc.cpp\n@@ -177,6 +177,11 @@ CameraConfiguration *PipelineHandlerVimc::generateConfiguration(Camera *camera,\n \tif (roles.empty())\n \t\treturn config;\n \n+\tif (roles.size() > 1) {\n+\t\tdelete config;\n+\t\treturn nullptr;\n+\t}\n+\n \tstd::map<PixelFormat, std::vector<SizeRange>> formats;\n \n \tfor (const auto &pixelformat : pixelformats) {\n", "prefixes": [ "libcamera-devel", "3/3" ] }