| Related |
show
-
[libcamera-devel,v3,00/22] libcamera: pipeline: rkisp1: Extend to support two streams
-
[libcamera-devel,v3,01/22] libcamera: pipeline: rkisp1: Set number of planes based on format
-
[libcamera-devel,v3,02/22] libcamera: pipeline: rkisp1: Remove redundant check of buffer in Request
-
[libcamera-devel,v3,03/22] libcamera: pipeline: rkisp1: Breakout mainpath size and format constra...
-
[libcamera-devel,v3,04/22] libcamera: pipeline: rkisp1: Setup links as part of configuration
-
[libcamera-devel,v3,05/22] libcamera: pipeline: rkisp1: Prepare buffer ready handlers for multipl...
-
[libcamera-devel,v3,06/22] libcamera: pipeline: rkisp1: Create RkISP1Frames from camera data
-
[libcamera-devel,v3,07/22] libcamera: pipeline: rkisp1: Export stream formats to applications
-
[libcamera-devel,v3,08/22] libcamera: pipeline: rkisp1: Set the crop rectangle
-
[libcamera-devel,v3,09/22] libcamera: pipeline: rkisp1: Prefix main path video and resizer
-
[libcamera-devel,v3,10/22] libcamera: pipeline: rkisp1: Add self path devices
-
[libcamera-devel,v3,11/22] libcamera: pipeline: rkisp1: Configure self path
-
[libcamera-devel,v3,12/22] libcamera: pipeline: rkisp1: Track buffers for self path
-
[libcamera-devel,v3,13/22] libcamera: pipeline: rkisp1: Add format validation for self path
-
[libcamera-devel,v3,14/22] libcamera: pipeline: rkisp1: Expose self path stream
-
[libcamera-devel,v3,15/22] libcamera: pipeline: rkisp1: Breakout basic path handling to own class
-
[libcamera-devel,v3,16/22] libcamera: pipeline: rkisp1: Move path configuration to RkISP1Path
-
[libcamera-devel,v3,17/22] libcamera: pipeline: rkisp1: Move path configuration generation and va...
-
[libcamera-devel,v3,18/22] libcamera: pipeline: rkisp1: Add wrappers for accessing the path video...
-
[libcamera-devel,v3,19/22] libcamera: pipeline: rkisp1: Move start and stop of path to RkISP1Path
-
[libcamera-devel,v3,20/22] libcamera: pipeline: rkisp1: Move path link handling to RkISP1Path
-
[libcamera-devel,v3,21/22] libcamera: pipeline: rkisp1: Use the media link to track if a path is ...
-
[libcamera-devel,v3,22/22] libcamera: pipeline: rkisp1: Use cleanup error paths for start()
|
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