From patchwork Wed Feb 6 06:07:51 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 515 Return-Path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 66A6D6101F for ; Wed, 6 Feb 2019 07:08:23 +0100 (CET) Received: from pendragon.ideasonboard.com (d51A4137F.access.telenet.be [81.164.19.127]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id EA3C341 for ; Wed, 6 Feb 2019 07:08:22 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1549433303; bh=gEA+GAs1IXdqnCxAFEsoXMiL7KNyXu1k0EdpVWbB33A=; h=From:To:Subject:Date:From; b=bO166y3NljRfIzOe3MIDie9hAHZNqt/Z51ybLgTuGQPbbfdmc5HC2WH5E8sk855Tf eYhqImaD9VRzx031OzE7G3I7qySEjZdSymfqKWjvLauva0nFqHlkyBmZG51JeXtJ/m BhePQ2i++7QExGEpJ+EuZevBYwdh63wHE4xBdHPs= From: Laurent Pinchart To: libcamera-devel@lists.libcamera.org Date: Wed, 6 Feb 2019 08:07:51 +0200 Message-Id: <20190206060818.13907-1-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.19.2 MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 00/27] Capture frames throught requests X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 Feb 2019 06:08:23 -0000 Hello, This patch series implements support for capturing frames through requests. This serves primarly as a sketch of the camera API exposed to applications, and is still missing many features, but shows how the libcamera API could be exercized. All three pipeline handlers (UVC, IPU3 and VIMC) are implemented. Jacopo Mondi (6): libcamera: v4l2_device: Add comments to method parameters libcamera: Add geometry.h libcamera: Add V4L2Subdevice libcamera: Provide a Request object libcamera: pipeline: ipu3: Create video devices and subdevices libcamera: pipeline: ipu3: Implement capture support Kieran Bingham (10): libcamera: Add Buffer Management test: v4l2_device: Use DeviceEnumerator to find a UVCVideo libcamera: v4l2_device: Request buffers from the device test: v4l2_device: Add request_buffers test libcamera: v4l2_device: Implement queue/dequeue operations libcamera: v4l2_device: Implement stream{On,Off} test: v4l2_device: Add StreamOn/StreamOff test test: v4l2_device: Provide asynchronous capture test libcamera: stream: Construct a stream libcamera: pipeline: uvcvideo: Implement capture support Niklas Söderlund (11): libcamera: v4l2_device: Update dequeued buffer information libcamera: stream: Add stream configuration to the stream object libcamera: pipeline_handler: Extend the interface to support capture libcamera: camera: Add helper to check for exclusive access libcamera: camera: Cache the stream configuration in the stream object libcamera: camera: Extend the interface to support capture libcamera: pipeline: vimc: Set a default format libcamera: pipeline: vimc: Implement capture support cam: Add capture operation cam: Add BufferWriter helper cam: Add option to write raw frames to disk include/libcamera/buffer.h | 82 ++++++ include/libcamera/camera.h | 15 + include/libcamera/libcamera.h | 2 + include/libcamera/meson.build | 2 + include/libcamera/request.h | 44 +++ include/libcamera/stream.h | 22 +- src/cam/buffer_writer.cpp | 63 +++++ src/cam/buffer_writer.h | 25 ++ src/cam/main.cpp | 162 +++++++++-- src/cam/meson.build | 1 + src/libcamera/buffer.cpp | 279 +++++++++++++++++++ src/libcamera/camera.cpp | 181 +++++++++++- src/libcamera/geometry.cpp | 49 ++++ src/libcamera/include/geometry.h | 22 ++ src/libcamera/include/pipeline_handler.h | 10 + src/libcamera/include/v4l2_device.h | 33 ++- src/libcamera/include/v4l2_subdevice.h | 51 ++++ src/libcamera/meson.build | 4 + src/libcamera/pipeline/ipu3/ipu3.cpp | 227 ++++++++++++--- src/libcamera/pipeline/uvcvideo.cpp | 57 +++- src/libcamera/pipeline/vimc.cpp | 63 ++++- src/libcamera/pipeline_handler.cpp | 67 +++++ src/libcamera/request.cpp | 125 +++++++++ src/libcamera/stream.cpp | 60 ++-- src/libcamera/v4l2_device.cpp | 341 ++++++++++++++++++++++- src/libcamera/v4l2_subdevice.cpp | 265 ++++++++++++++++++ test/v4l2_device/capture_async.cpp | 86 ++++++ test/v4l2_device/meson.build | 3 + test/v4l2_device/request_buffers.cpp | 32 +++ test/v4l2_device/stream_on_off.cpp | 35 +++ test/v4l2_device/v4l2_device_test.cpp | 34 ++- test/v4l2_device/v4l2_device_test.h | 14 +- 32 files changed, 2350 insertions(+), 106 deletions(-) create mode 100644 include/libcamera/buffer.h create mode 100644 include/libcamera/request.h create mode 100644 src/cam/buffer_writer.cpp create mode 100644 src/cam/buffer_writer.h create mode 100644 src/libcamera/buffer.cpp create mode 100644 src/libcamera/geometry.cpp create mode 100644 src/libcamera/include/geometry.h create mode 100644 src/libcamera/include/v4l2_subdevice.h create mode 100644 src/libcamera/request.cpp create mode 100644 src/libcamera/v4l2_subdevice.cpp create mode 100644 test/v4l2_device/capture_async.cpp create mode 100644 test/v4l2_device/request_buffers.cpp create mode 100644 test/v4l2_device/stream_on_off.cpp