[v2,0/4] MediaPipeline: Complex input device support
mbox series

Message ID 20241002212632.2463458-1-kieran.bingham@ideasonboard.com
Headers show
Series
  • MediaPipeline: Complex input device support
Related show

Message

Kieran Bingham Oct. 2, 2024, 9:26 p.m. UTC
The input pipelines for cameras on small board platforms can be widely
varied and may incorporate video multiplexers feeding multiple cameras
into a single CSI2 receiver.

Such devices are already supported in the Simple Pipeline handler with
it's graph management code.

This series proposes a new class 'MediaPipeline' which takes the
implementation details of handling multiple cameras and the routing
involved in selecting and configuring the links and pads of those
routes.

The series then ads this helper to the RKISP1 pipeline handler to
facilitate multiple cameras connected to a single CSI2 receiver. One
example of this could be making use of the Arducam 4 camera multiplexor
[0] connected to the Debix Model A which we have used for testing this.

[0] https://www.arducam.com/product/multi-camera-v2-1-adapter-raspberry-pi/

This series convers only the RkISP1 for now, but I could anticipate an
additional series will also convert the Simple Pipeline handler to make
use of this new helper class. The Mali-C55 and other pipeline handlers
which antipate user configurable input paths would also be able to make
use of this implementation.

Kieran Bingham (4):
  libcamera: media_device: Add helper to return matching entities
  libcamera: pipeline: rkisp1: Fix typo in todo task
  libcamera: internal: Add MediaPipeline helper
  libcamera: pipeline: rkisp1: Convert to use MediaPipeline

 include/libcamera/internal/media_device.h   |   2 +
 include/libcamera/internal/media_pipeline.h |  59 ++++
 include/libcamera/internal/meson.build      |   1 +
 src/libcamera/media_device.cpp              |  25 +-
 src/libcamera/media_pipeline.cpp            | 307 ++++++++++++++++++++
 src/libcamera/meson.build                   |   1 +
 src/libcamera/pipeline/rkisp1/rkisp1.cpp    |  88 +++---
 7 files changed, 427 insertions(+), 56 deletions(-)
 create mode 100644 include/libcamera/internal/media_pipeline.h
 create mode 100644 src/libcamera/media_pipeline.cpp