{"id":299,"url":"https://patchwork.libcamera.org/api/patches/299/?format=json","web_url":"https://patchwork.libcamera.org/patch/299/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20190121153005.19110-3-niklas.soderlund@ragnatech.se>","date":"2019-01-21T15:30:05","name":"[libcamera-devel,2/2] libcamera: pipeline: uvcvideo: add pipeline handler for uvcvideo","commit_ref":null,"pull_url":null,"state":"accepted","archived":false,"hash":"1051713cde719398e64724cbfaf905760c411c14","submitter":{"id":5,"url":"https://patchwork.libcamera.org/api/people/5/?format=json","name":"Niklas Söderlund","email":"niklas.soderlund@ragnatech.se"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/299/mbox/","series":[{"id":103,"url":"https://patchwork.libcamera.org/api/series/103/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=103","date":"2019-01-21T15:30:04","name":"libcamera: add basic uvcvideo pipeline handler","version":1,"mbox":"https://patchwork.libcamera.org/series/103/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/299/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/299/checks/","tags":{},"headers":{"Return-Path":"<niklas.soderlund@ragnatech.se>","Received":["from bin-mail-out-06.binero.net (bin-mail-out-06.binero.net\n\t[195.74.38.229])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 2BE4E60C80\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 21 Jan 2019 16:30:46 +0100 (CET)","from bismarck.berto.se (unknown [89.233.230.99])\n\tby bin-vsp-out-01.atm.binero.net (Halon) with ESMTPA\n\tid 830155e8-1d91-11e9-9adf-005056917a89;\n\tMon, 21 Jan 2019 16:30:42 +0100 (CET)"],"X-Halon-ID":"830155e8-1d91-11e9-9adf-005056917a89","Authorized-sender":"niklas@soderlund.pp.se","From":"=?utf-8?q?Niklas_S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>","To":"libcamera-devel@lists.libcamera.org","Date":"Mon, 21 Jan 2019 16:30:05 +0100","Message-Id":"<20190121153005.19110-3-niklas.soderlund@ragnatech.se>","X-Mailer":"git-send-email 2.20.1","In-Reply-To":"<20190121153005.19110-1-niklas.soderlund@ragnatech.se>","References":"<20190121153005.19110-1-niklas.soderlund@ragnatech.se>","MIME-Version":"1.0","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"8bit","Subject":"[libcamera-devel] [PATCH 2/2] libcamera: pipeline: uvcvideo: add\n\tpipeline handler for uvcvideo","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","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>","X-List-Received-Date":"Mon, 21 Jan 2019 15:30:46 -0000"},"content":"Provide a pipeline handler for uvcvideo devices. The entity names for\nuvc devices are different for different cameras so matching on entity\nnames is not possible in the generic case. This leaves options to create\nspecialized uvc pipeline handlers if needed to fit a specific models\nneeds.\n\nSigned-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n---\n src/libcamera/pipeline/meson.build  |  1 +\n src/libcamera/pipeline/uvcvideo.cpp | 59 +++++++++++++++++++++++++++++\n 2 files changed, 60 insertions(+)\n create mode 100644 src/libcamera/pipeline/uvcvideo.cpp","diff":"diff --git a/src/libcamera/pipeline/meson.build b/src/libcamera/pipeline/meson.build\nindex 615ecd20f1a21141..4da5d8cf9c4384bb 100644\n--- a/src/libcamera/pipeline/meson.build\n+++ b/src/libcamera/pipeline/meson.build\n@@ -1,3 +1,4 @@\n libcamera_sources += files([\n+    'uvcvideo.cpp',\n     'vimc.cpp',\n ])\ndiff --git a/src/libcamera/pipeline/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo.cpp\nnew file mode 100644\nindex 0000000000000000..2579782e90caec5a\n--- /dev/null\n+++ b/src/libcamera/pipeline/uvcvideo.cpp\n@@ -0,0 +1,59 @@\n+/* SPDX-License-Identifier: LGPL-2.1-or-later */\n+/*\n+ * Copyright (C) 2019, Google Inc.\n+ *\n+ * uvcvideo.cpp - Pipeline handler for uvcvideo devices\n+ */\n+\n+#include <libcamera/camera.h>\n+#include <libcamera/camera_manager.h>\n+\n+#include \"device_enumerator.h\"\n+#include \"media_device.h\"\n+#include \"pipeline_handler.h\"\n+\n+namespace libcamera {\n+\n+class PipeHandlerUvcvideo : public PipelineHandler\n+{\n+public:\n+\tPipeHandlerUvcvideo();\n+\t~PipeHandlerUvcvideo();\n+\n+\tbool match(CameraManager *manager, DeviceEnumerator *enumerator);\n+\n+private:\n+\tMediaDevice *dev_;\n+};\n+\n+PipeHandlerUvcvideo::PipeHandlerUvcvideo()\n+\t: dev_(nullptr)\n+{\n+}\n+\n+PipeHandlerUvcvideo::~PipeHandlerUvcvideo()\n+{\n+\tif (dev_)\n+\t\tdev_->release();\n+}\n+\n+bool PipeHandlerUvcvideo::match(CameraManager *manager, DeviceEnumerator *enumerator)\n+{\n+\tDeviceMatch dm(\"uvcvideo\");\n+\n+\tdev_ = enumerator->search(dm);\n+\n+\tif (!dev_)\n+\t\treturn false;\n+\n+\tdev_->acquire();\n+\n+\tstd::shared_ptr<Camera> camera = Camera::create(dev_->model());\n+\tmanager->addCamera(std::move(camera));\n+\n+\treturn true;\n+}\n+\n+REGISTER_PIPELINE_HANDLER(PipeHandlerUvcvideo);\n+\n+} /* namespace libcamera */\n","prefixes":["libcamera-devel","2/2"]}