{"id":2477,"url":"https://patchwork.libcamera.org/api/1.1/covers/2477/?format=json","web_url":"https://patchwork.libcamera.org/cover/2477/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/1.1/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":"<20191231053314.20063-1-paul.elder@ideasonboard.com>","date":"2019-12-31T05:33:10","name":"[libcamera-devel,v4,0/4] V4L2 compatibility layer","submitter":{"id":17,"url":"https://patchwork.libcamera.org/api/1.1/people/17/?format=json","name":"Paul Elder","email":"paul.elder@ideasonboard.com"},"mbox":"https://patchwork.libcamera.org/cover/2477/mbox/","series":[{"id":595,"url":"https://patchwork.libcamera.org/api/1.1/series/595/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=595","date":"2019-12-31T05:33:10","name":"V4L2 compatibility layer","version":4,"mbox":"https://patchwork.libcamera.org/series/595/mbox/"}],"comments":"https://patchwork.libcamera.org/api/covers/2477/comments/","headers":{"Return-Path":"<paul.elder@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 872EC60465\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 31 Dec 2019 06:33:23 +0100 (CET)","from neptunite.amanokami.net (173-16-160-11.client.mchsi.com\n\t[173.16.160.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 66670DF;\n\tTue, 31 Dec 2019 06:33:22 +0100 (CET)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1577770403;\n\tbh=mtWsdsyWmNS0DL47DnyWpCBuS+aW8FUgdRjX99Uyb0c=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=E6SO5btSKLnMvpKvKSUPQYcduS+lMVTsE/VnVIUlCWeoy7n2oeKr2qkTOBHeIDz1u\n\tXkJ8yi/mog+J0oyPWiYwnDb6JucdUvztiOO1i7Btb4HLAK/LHAr32yiql4O2LmFm++\n\tqthM4boRvirt5qOfwabWIttAtse3GTqsB9Q8f/+w=","From":"Paul Elder <paul.elder@ideasonboard.com>","To":"libcamera-devel@lists.libcamera.org","Date":"Mon, 30 Dec 2019 23:33:10 -0600","Message-Id":"<20191231053314.20063-1-paul.elder@ideasonboard.com>","X-Mailer":"git-send-email 2.23.0","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Subject":"[libcamera-devel] [PATCH v4 0/4] V4L2 compatibility layer","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>","X-List-Received-Date":"Tue, 31 Dec 2019 05:33:23 -0000"},"content":"Implement the initial version of the V4L2 compatibility layer.\n\nIn v3 we retrieved libcamera Cameras based on the device number of\nthe V4L2 device that the applications open()s. This device number to\nCamera mapping is optionally determined by the pipeline handler. If the\nmapping is not assigned, then there is simply no V4L2 device node that\ncan be opened that will map to a libcamera Camera.\n\nIn v4 the infrastructure between the camera manager and the pipeline\nhandler to assign and retrieve, respectively, this mapping is\nsimplified. This is 2/4. 3/4 implements the mapping assignment for the\nuvcvideo pipeline handler.\n\nIn v3 we also saw the addition of the FrameMetadata class\nthat extracted the necessary information from a Buffer to expose a\nv4l2_buffer, as well as a new mechanism using this FrameMetadata to\ncache the state of all completed buffers in the V4L2CameraProxy to\nreduce the number of cross-thread calls.\n\nIn v4 this buffer tracking mechanism is squashed into the main V4L2\ncompatibility layer patch, 4/4. There are really no other major changes\non this scale, aside from minor fixes and cosmetic changes.\n\nPaul Elder (4):\n  libcamera: v4l2_device, v4l2_videodevice: call open system call\n    directly\n  libcamera: camera_manager, pipeline_handler: allow retrieving cameras\n    by device numbers\n  libcamera: pipeline_handler: uvcvideo: register all Cameras along with\n    a devnum\n  v4l2: v4l2_compat: Add V4L2 compatibility layer\n\n include/libcamera/camera_manager.h       |   5 +-\n meson_options.txt                        |   5 +\n src/libcamera/camera_manager.cpp         |  37 +-\n src/libcamera/include/pipeline_handler.h |   3 +-\n src/libcamera/pipeline/uvcvideo.cpp      |   7 +-\n src/libcamera/pipeline_handler.cpp       |  13 +-\n src/libcamera/v4l2_device.cpp            |   3 +-\n src/libcamera/v4l2_videodevice.cpp       |   4 +-\n src/meson.build                          |   4 +\n src/v4l2/meson.build                     |  31 ++\n src/v4l2/v4l2_camera.cpp                 | 233 ++++++++\n src/v4l2/v4l2_camera.h                   |  83 +++\n src/v4l2/v4l2_camera_proxy.cpp           | 649 +++++++++++++++++++++++\n src/v4l2/v4l2_camera_proxy.h             |  82 +++\n src/v4l2/v4l2_compat.cpp                 |  80 +++\n src/v4l2/v4l2_compat_manager.cpp         | 255 +++++++++\n src/v4l2/v4l2_compat_manager.h           |  77 +++\n 17 files changed, 1562 insertions(+), 9 deletions(-)\n create mode 100644 src/v4l2/meson.build\n create mode 100644 src/v4l2/v4l2_camera.cpp\n create mode 100644 src/v4l2/v4l2_camera.h\n create mode 100644 src/v4l2/v4l2_camera_proxy.cpp\n create mode 100644 src/v4l2/v4l2_camera_proxy.h\n create mode 100644 src/v4l2/v4l2_compat.cpp\n create mode 100644 src/v4l2/v4l2_compat_manager.cpp\n create mode 100644 src/v4l2/v4l2_compat_manager.h"}