From patchwork Sat Jan 4 00:14:08 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Elder X-Patchwork-Id: 2490 Return-Path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 27159605CD for ; Sat, 4 Jan 2020 01:14:21 +0100 (CET) Received: from neptunite.amanokami.net (unknown [96.44.9.94]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 5E92830F; Sat, 4 Jan 2020 01:14:20 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1578096860; bh=oSHGlUGIdbXZlB2kl9csuNkTlAo3EPpQrQ/xE0VgT4s=; h=From:To:Cc:Subject:Date:From; b=h+/mhxBYsrKexJG4sq926RJAnQN6c9bBQB36E6l0GWK7Wr4jZL7Mk/0FZQANRFAM2 lLS0D6kEnCQdLQeR1tQrVqq5o0To1KJQuJdENel3RLFCuuYYWJdHmHuPFtkuPI8PJy CtM/P6YFqEJCeUNs3jrP4oggj1pCt1RefOI9cexU= From: Paul Elder To: libcamera-devel@lists.libcamera.org Date: Fri, 3 Jan 2020 19:14:08 -0500 Message-Id: <20200104001414.12755-1-paul.elder@ideasonboard.com> X-Mailer: git-send-email 2.24.1 MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v6 0/5] V4L2 compatibility layer X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 04 Jan 2020 00:14:21 -0000 Implement the initial version of the V4L2 compatibility layer. Patch 1/5 (new addition) implements strlcpy that we use in the V4L2 compability later implementation instead of memcpying char arrays. Patch 3/5 implements the infrastructure for the pipeline handler to optionally assign a device number to each camera that it adds to the camera manager, to allow the V4L2 comptibility layer to map device nodes to libcamera cameras. Patch 4/5 implements the mapping assignment for the uvcvideo pipeline handler. Patch 5/5 is the complete implementation of the V4L2 compatibility layer. v6 is mostly cosmetic changes and minor fixes. 6th time's a charm :) Paul Elder (5): libcamera: utils: Add strlcpy libcamera: v4l2_device, v4l2_videodevice: call open system call directly libcamera: camera_manager, pipeline_handler: allow retrieving cameras by device numbers libcamera: pipeline_handler: uvcvideo: register all Cameras along with a devnum v4l2: v4l2_compat: Add V4L2 compatibility layer include/libcamera/camera_manager.h | 6 +- meson_options.txt | 5 + src/libcamera/camera_manager.cpp | 61 ++- src/libcamera/include/pipeline_handler.h | 3 +- src/libcamera/include/utils.h | 3 + src/libcamera/pipeline/uvcvideo.cpp | 5 +- src/libcamera/pipeline_handler.cpp | 13 +- src/libcamera/utils.cpp | 19 + src/libcamera/v4l2_device.cpp | 3 +- src/libcamera/v4l2_videodevice.cpp | 4 +- src/meson.build | 4 + src/v4l2/meson.build | 31 ++ src/v4l2/v4l2_camera.cpp | 224 ++++++++ src/v4l2/v4l2_camera.h | 85 +++ src/v4l2/v4l2_camera_proxy.cpp | 644 +++++++++++++++++++++++ src/v4l2/v4l2_camera_proxy.h | 81 +++ src/v4l2/v4l2_compat.cpp | 85 +++ src/v4l2/v4l2_compat_manager.cpp | 250 +++++++++ src/v4l2/v4l2_compat_manager.h | 77 +++ 19 files changed, 1586 insertions(+), 17 deletions(-) create mode 100644 src/v4l2/meson.build create mode 100644 src/v4l2/v4l2_camera.cpp create mode 100644 src/v4l2/v4l2_camera.h create mode 100644 src/v4l2/v4l2_camera_proxy.cpp create mode 100644 src/v4l2/v4l2_camera_proxy.h create mode 100644 src/v4l2/v4l2_compat.cpp create mode 100644 src/v4l2/v4l2_compat_manager.cpp create mode 100644 src/v4l2/v4l2_compat_manager.h