[libcamera-devel] [PATCH v3 00/22] libcamera: pipeline: rkisp1: Extend to support two streams

Niklas Söderlund niklas.soderlund at ragnatech.se
Fri Sep 25 03:41:45 CEST 2020


Hi,

This series extends the RkISP1 pipeline handler to work with 2 streams.
It allows cameras backed by this pipeline to expose a main path stream,
same as the one before this series. And a new self path stream that can
operate in addition or independently from the main path.

In previous versions of this series RGB formats where added to the self 
path (new formats not supported by the main path) but further 
examination of those formats resulted in that the captured frames looks 
weird. Pending future investigation drop that work from this series.

Furthermore this series does not extend support for RAW formats as this
is such a special case for this pipeline. Only the main path may be
active and no ISP parameters can be processed. This may be added on top
but functionality have been proven as a prototype.

New in this version are patches 15/22 to 21/22 that adds a new 
RkISP1Path class which abstracts the two paths into a single helper 
class with shared logic. The shared logic can then be leveraged to 
simplify the pipeline handler.

Patch 22/22 is an attempt to use a lambda function to further simplify 
error logic in start(). It is primary provided as a proof-of-concept 
and should be regarded as RFC.

To be able to use both main and self path simultaneously must run a
kernel that includes [1]. The development of the series is tested on the
media-tree [2] with out-of-tree DTS patches for the test Scarlet
platform to enable the camera sensors.

1. 60e915354c270357 ("media: staging: rkisp1: cap: fix return values from pm functions")
2. f45882cfb152f5d3 ("media: camss: fix memory leaks on error handling paths in probe")

Niklas Söderlund (22):
  libcamera: pipeline: rkisp1: Set number of planes based on format
  libcamera: pipeline: rkisp1: Remove redundant check of buffer in
    Request
  libcamera: pipeline: rkisp1: Breakout mainpath size and format
    constraints
  libcamera: pipeline: rkisp1: Setup links as part of configuration
  libcamera: pipeline: rkisp1: Prepare buffer ready handlers for
    multiple streams
  libcamera: pipeline: rkisp1: Create RkISP1Frames from camera data
  libcamera: pipeline: rkisp1: Export stream formats to applications
  libcamera: pipeline: rkisp1: Set the crop rectangle
  libcamera: pipeline: rkisp1: Prefix main path video and resizer
  libcamera: pipeline: rkisp1: Add self path devices
  libcamera: pipeline: rkisp1: Configure self path
  libcamera: pipeline: rkisp1: Track buffers for self path
  libcamera: pipeline: rkisp1: Add format validation for self path
  libcamera: pipeline: rkisp1: Expose self path stream
  libcamera: pipeline: rkisp1: Breakout basic path handling to own class
  libcamera: pipeline: rkisp1: Move path configuration to RkISP1Path
  libcamera: pipeline: rkisp1: Move path configuration generation and
    validation to RkISP1Path
  libcamera: pipeline: rkisp1: Add wrappers for accessing the path video
    device
  libcamera: pipeline: rkisp1: Move start and stop of path to RkISP1Path
  libcamera: pipeline: rkisp1: Move path link handling to RkISP1Path
  libcamera: pipeline: rkisp1: Use the media link to track if a path is
    enabled
  libcamera: pipeline: rkisp1: Use cleanup error paths for start()

 src/libcamera/pipeline/rkisp1/meson.build    |   1 +
 src/libcamera/pipeline/rkisp1/rkisp1.cpp     | 555 +++++++++++--------
 src/libcamera/pipeline/rkisp1/rkisp1path.cpp | 237 ++++++++
 src/libcamera/pipeline/rkisp1/rkisp1path.h   |  83 +++
 4 files changed, 633 insertions(+), 243 deletions(-)
 create mode 100644 src/libcamera/pipeline/rkisp1/rkisp1path.cpp
 create mode 100644 src/libcamera/pipeline/rkisp1/rkisp1path.h

-- 
2.28.0



More information about the libcamera-devel mailing list