Patch Detail
Show a patch.
GET /api/1.1/patches/18087/?format=api
{ "id": 18087, "url": "https://patchwork.libcamera.org/api/1.1/patches/18087/?format=api", "web_url": "https://patchwork.libcamera.org/patch/18087/", "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": "<20230105043726.679968-2-chenghaoyang@google.com>", "date": "2023-01-05T04:37:18", "name": "[libcamera-devel,v3,1/9] libcamera: pipeline: Introduce skeleton Virtual Pipeline", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "107d089e5f7742c891b0397acd36558c40d0e70a", "submitter": { "id": 117, "url": "https://patchwork.libcamera.org/api/1.1/people/117/?format=api", "name": "Cheng-Hao Yang", "email": "chenghaoyang@chromium.org" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/18087/mbox/", "series": [ { "id": 3700, "url": "https://patchwork.libcamera.org/api/1.1/series/3700/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=3700", "date": "2023-01-05T04:37:17", "name": "Virtual pipeline handler", "version": 3, "mbox": "https://patchwork.libcamera.org/series/3700/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/18087/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/18087/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 6ECA4C322E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 5 Jan 2023 04:37:59 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D29B0625E3;\n\tThu, 5 Jan 2023 05:37:57 +0100 (CET)", "from mail-pj1-x102b.google.com (mail-pj1-x102b.google.com\n\t[IPv6:2607:f8b0:4864:20::102b])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9E94361F06\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 5 Jan 2023 05:37:55 +0100 (CET)", "by mail-pj1-x102b.google.com with SMTP id\n\tw4-20020a17090ac98400b002186f5d7a4cso913717pjt.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 04 Jan 2023 20:37:55 -0800 (PST)", "from chenghaoyang-low.c.googlers.com.com\n\t(46.165.189.35.bc.googleusercontent.com. [35.189.165.46])\n\tby smtp.gmail.com with ESMTPSA id\n\tx23-20020a170902b41700b00188c5f0f9e9sm25015200plr.199.2023.01.04.20.37.53\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tWed, 04 Jan 2023 20:37:53 -0800 (PST)" ], "DKIM-Signature": [ "v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1672893477;\n\tbh=XM+yPx4JuCXodROlLD2ni7MBN30gwb8J94HTJnDzkdg=;\n\th=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=JLrRSrlzVbxJs0lnxmmqgJhbAfo16a9NTkCPjIW4F04WM4QTtVAluTn4n8c+sIxS9\n\thRNdZpYtagPNfiphCPriV5MLrs6GFHL6+LeZJVBnkn1R+vW9s3mkAfiaTRPROatM4v\n\tpSbB63mi5rz6l7F+/HqKgpqwBm3YKiP8i5T9qqM8ja2aJJ9fFv4xZovVTZ39dmcv13\n\tsVeg0Os9udhhC3YzdbaN3K4ofHjp60KQEdTdvPasNZT5H2BR5iuFiZVBnJcJEw6luy\n\t7D/rWgo6zA2ics/G6jy7HtEtGakX+rFwBfoqZf+mvOUYu039XZJGMHWF6ymFahJk9r\n\teKOJkrYoo2Mtg==", "v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org;\n\ts=google; \n\th=content-transfer-encoding:mime-version:references:in-reply-to\n\t:message-id:date:subject:cc:to:from:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=0vYtodSdAt/8P9nhv9LXQF/+ifyNNCO0IObLe5XkKHM=;\n\tb=HqD99PQE3ASWBAtBobTkaprY/kaNAz687SRLdNsjHdpjkifEujZ7lPlPFUfiNLycPA\n\t3dL2ZUHd7xcZRp/xcLIcSSGbV+adCJVxSHqWwrpcug9aeVdJZxNBv6jbUxFiEF76a+fk\n\ttheVZcPQ8aUN6QfrozYhoo+Dm4DmvbyMg3kqA=" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=chromium.org\n\theader.i=@chromium.org header.b=\"HqD99PQE\"; \n\tdkim-atps=neutral", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=content-transfer-encoding:mime-version:references:in-reply-to\n\t:message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc\n\t:subject:date:message-id:reply-to;\n\tbh=0vYtodSdAt/8P9nhv9LXQF/+ifyNNCO0IObLe5XkKHM=;\n\tb=JIGmNr+zsKyTE22apDrz4pSgdGGeFAZNJDRVMcC9h2BGkZSLuaC203XLibzPyRx0BK\n\tlo/e1bzyewsw+I3+LbykPeUgNM5euJoo7nP6tJtJsNi2MuHP2KXKYiJLf5Gsj7cFatE5\n\tcAc+zfrBhxE5qUJrILXy/vbUcHpnfApq//TtWMAfqF6f017ope4MdBbC8mA0kTZZOnIO\n\t2+4lzfav4/UkciO/HalleKOAaxLjf0eXqalN323EJZPq519CLyMX3m0FrO+uDgpqFEkn\n\t/jXDNGAsWOBw0lh6M97oyOSbFGeE56NTSr/Hen4lX2gPuAK7ZNrx36coaFbEtQveZJ2+\n\t5LxQ==", "X-Gm-Message-State": "AFqh2kq0homaf5t1j/n2w0LNrhjhd1+9IrvSRa5e6rDVPINcXu0Jrt22\n\tTwKq6YYXPaDSCp0QvLV+VeNi3pfvPcXM5DhN", "X-Google-Smtp-Source": "AMrXdXuw1Booce5jj/euhJl2lGV5p7OAulvFfXLMeGMJEOwgCWfa/S7IEDn8Eqom46uxZb/yB1ltVA==", "X-Received": "by 2002:a17:902:74cc:b0:189:dd9b:66c3 with SMTP id\n\tf12-20020a17090274cc00b00189dd9b66c3mr40287870plt.11.1672893473988; \n\tWed, 04 Jan 2023 20:37:53 -0800 (PST)", "X-Google-Original-From": "Harvey Yang <chenghaoyang@google.com>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Thu, 5 Jan 2023 04:37:18 +0000", "Message-Id": "<20230105043726.679968-2-chenghaoyang@google.com>", "X-Mailer": "git-send-email 2.39.0.314.g84b9a713c41-goog", "In-Reply-To": "<20230105043726.679968-1-chenghaoyang@google.com>", "References": "<20230105043726.679968-1-chenghaoyang@google.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH v3 1/9] libcamera: pipeline: Introduce\n\tskeleton Virtual Pipeline", "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>", "From": "Harvey Yang via libcamera-devel <libcamera-devel@lists.libcamera.org>", "Reply-To": "Harvey Yang <chenghaoyang@chromium.org>", "Cc": "Harvey Yang <chenghaoyang@google.com>,\n\tHarvey Yang <chenghaoyang@chromium.org>", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "Provide all of the skeleton stubs to succesfully compile\nand register the Virtual Pipeline Handler for testing with fake data.\n\nMeson must be reconfigured to ensure that this pipeline handler is\nincluded in the selected pipelines configuration.\n\nSigned-off-by: Harvey Yang <chenghaoyang@chromium.org>\n---\n meson_options.txt | 2 +-\n src/libcamera/pipeline/virtual/meson.build | 5 +\n src/libcamera/pipeline/virtual/virtual.cpp | 112 +++++++++++++++++++++\n 3 files changed, 118 insertions(+), 1 deletion(-)\n create mode 100644 src/libcamera/pipeline/virtual/meson.build\n create mode 100644 src/libcamera/pipeline/virtual/virtual.cpp", "diff": "diff --git a/meson_options.txt b/meson_options.txt\nindex 1ba6778c..08876f4c 100644\n--- a/meson_options.txt\n+++ b/meson_options.txt\n@@ -37,7 +37,7 @@ option('lc-compliance',\n \n option('pipelines',\n type : 'array',\n- choices : ['imx8-isi', 'ipu3', 'raspberrypi', 'rkisp1', 'simple', 'uvcvideo', 'vimc'],\n+ choices : ['imx8-isi', 'ipu3', 'raspberrypi', 'rkisp1', 'simple', 'uvcvideo', 'vimc', 'virtual'],\n description : 'Select which pipeline handlers to include')\n \n option('qcam',\ndiff --git a/src/libcamera/pipeline/virtual/meson.build b/src/libcamera/pipeline/virtual/meson.build\nnew file mode 100644\nindex 00000000..ba7ff754\n--- /dev/null\n+++ b/src/libcamera/pipeline/virtual/meson.build\n@@ -0,0 +1,5 @@\n+# SPDX-License-Identifier: CC0-1.0\n+\n+libcamera_sources += files([\n+ 'virtual.cpp',\n+])\ndiff --git a/src/libcamera/pipeline/virtual/virtual.cpp b/src/libcamera/pipeline/virtual/virtual.cpp\nnew file mode 100644\nindex 00000000..09583b4e\n--- /dev/null\n+++ b/src/libcamera/pipeline/virtual/virtual.cpp\n@@ -0,0 +1,112 @@\n+/* SPDX-License-Identifier: LGPL-2.1-or-later */\n+/*\n+ * Copyright (C) 2022, Google Inc.\n+ *\n+ * fake.cpp - Pipeline handler for fake cameras\n+ */\n+\n+#include <libcamera/base/log.h>\n+\n+#include <libcamera/camera.h>\n+\n+#include \"libcamera/internal/pipeline_handler.h\"\n+\n+namespace libcamera {\n+\n+LOG_DEFINE_CATEGORY(VIRTUAL)\n+\n+class VirtualCameraConfiguration : public CameraConfiguration\n+{\n+public:\n+\tVirtualCameraConfiguration();\n+\n+\tStatus validate() override;\n+};\n+\n+class PipelineHandlerVirtual : public PipelineHandler\n+{\n+public:\n+\tPipelineHandlerVirtual(CameraManager *manager);\n+\n+\tstd::unique_ptr<CameraConfiguration> generateConfiguration(Camera *camera,\n+\t\t\t\t\t\t\t\t const StreamRoles &roles) override;\n+\tint configure(Camera *camera, CameraConfiguration *config) override;\n+\n+\tint exportFrameBuffers(Camera *camera, Stream *stream,\n+\t\t\t std::vector<std::unique_ptr<FrameBuffer>> *buffers) override;\n+\n+\tint start(Camera *camera, const ControlList *controls) override;\n+\tvoid stopDevice(Camera *camera) override;\n+\n+\tint queueRequestDevice(Camera *camera, Request *request) override;\n+\n+\tbool match(DeviceEnumerator *enumerator) override;\n+};\n+\n+VirtualCameraConfiguration::VirtualCameraConfiguration()\n+\t: CameraConfiguration()\n+{\n+}\n+\n+CameraConfiguration::Status VirtualCameraConfiguration::validate()\n+{\n+\treturn Invalid;\n+}\n+\n+PipelineHandlerVirtual::PipelineHandlerVirtual(CameraManager *manager)\n+\t: PipelineHandler(manager)\n+{\n+}\n+\n+std::unique_ptr<CameraConfiguration> PipelineHandlerVirtual::generateConfiguration(Camera *camera,\n+\t\t\t\t\t\t\t\t\t\t const StreamRoles &roles)\n+{\n+\t(void)camera;\n+\t(void)roles;\n+\treturn std::unique_ptr<VirtualCameraConfiguration>(nullptr);\n+}\n+\n+int PipelineHandlerVirtual::configure(Camera *camera, CameraConfiguration *config)\n+{\n+\t(void)camera;\n+\t(void)config;\n+\treturn -1;\n+}\n+\n+int PipelineHandlerVirtual::exportFrameBuffers(Camera *camera, Stream *stream,\n+\t\t\t\t\t std::vector<std::unique_ptr<FrameBuffer>> *buffers)\n+{\n+\t(void)camera;\n+\t(void)stream;\n+\t(void)buffers;\n+\treturn -1;\n+}\n+\n+int PipelineHandlerVirtual::start(Camera *camera, const ControlList *controls)\n+{\n+\t(void)camera;\n+\t(void)controls;\n+\treturn -1;\n+}\n+\n+void PipelineHandlerVirtual::stopDevice(Camera *camera)\n+{\n+\t(void)camera;\n+}\n+\n+int PipelineHandlerVirtual::queueRequestDevice(Camera *camera, Request *request)\n+{\n+\t(void)camera;\n+\t(void)request;\n+\treturn -1;\n+}\n+\n+bool PipelineHandlerVirtual::match(DeviceEnumerator *enumerator)\n+{\n+\t(void)enumerator;\n+\treturn false;\n+}\n+\n+REGISTER_PIPELINE_HANDLER(PipelineHandlerVirtual)\n+\n+} /* namespace libcamera */\n", "prefixes": [ "libcamera-devel", "v3", "1/9" ] }