[libcamera-devel] [PATCH 0/9] libcamera: Add helper for controls that take effect with a delay
Niklas Söderlund
niklas.soderlund at ragnatech.se
Wed Oct 28 02:00:42 CET 2020
Hello,
This series adds a new helper class to libcamera-core based on the
StaggerdCtrl principle from the Raspberry Pi pipeline handler. The new
helper matches perfectly the RPi implementation and can therefore
replace the pipeline specific implementation. There are slight changes
in the API of the two but noting preventing it to be a drop in
replacement.
The major new addition to the DelayedControls implementation is the
ability to queue controls a hard of time. This allows the concept of
pipeline depth we already have for buffers to be extended to controls.
Patch 1/9 and 2/9 adds the new core helper and its unit test. Patch 3/9
and 4/9 replaces StaggerdCtrl with DelayedControls in the Raspberry Pi
pipeline handler. Patch 5/9 adds an interface based on DelayedControls
to CameraSensor. And last 6/9 - 9/9 make use of the new helper in the
RkISP1 pipeline to completely remove another local helper (Timeline).
The RkISP1 IPA feels much snappier after this change but this is
anecdotal and no real measurements have been done as the RkISP1 IPA at
this stage is neither advanced nor tuned.
Niklas Söderlund (9):
libcamera: v4l2_device: Move start of frame detection to V4L2Device
libcamera: delayed_controls: Add helper for controls that applies with
a delay
test: delayed_controls: Add test case for DelayedControls
libcamera: raspberrypi: Switch to DelayedControls
libcamera: raspberrypi: Remove StaggeredCtrl
libcamera: camera_sensor: Expose a DelayedControls interface
libcamera: pipeline: rkisp1: Use CameraSensor and delayed controls
libcamera: pipeline: rkisp1: Use SOF event to warn about late
parameters
libcamera: pipeline: rkisp1: Remove Timeline
include/libcamera/internal/camera_sensor.h | 5 +
include/libcamera/internal/delayed_controls.h | 87 +++++
include/libcamera/internal/v4l2_device.h | 13 +-
include/libcamera/internal/v4l2_videodevice.h | 8 -
src/libcamera/camera_sensor.cpp | 31 ++
src/libcamera/delayed_controls.cpp | 282 ++++++++++++++++
src/libcamera/meson.build | 1 +
.../pipeline/raspberrypi/meson.build | 1 -
.../pipeline/raspberrypi/raspberrypi.cpp | 44 ++-
.../pipeline/raspberrypi/staggered_ctrl.cpp | 174 ----------
.../pipeline/raspberrypi/staggered_ctrl.h | 96 ------
src/libcamera/pipeline/rkisp1/meson.build | 1 -
src/libcamera/pipeline/rkisp1/rkisp1.cpp | 158 +++------
src/libcamera/pipeline/rkisp1/timeline.cpp | 227 -------------
src/libcamera/pipeline/rkisp1/timeline.h | 72 ----
src/libcamera/v4l2_device.cpp | 76 ++++-
src/libcamera/v4l2_videodevice.cpp | 75 +----
test/delayed_contols.cpp | 307 ++++++++++++++++++
test/meson.build | 1 +
19 files changed, 858 insertions(+), 801 deletions(-)
create mode 100644 include/libcamera/internal/delayed_controls.h
create mode 100644 src/libcamera/delayed_controls.cpp
delete mode 100644 src/libcamera/pipeline/raspberrypi/staggered_ctrl.cpp
delete mode 100644 src/libcamera/pipeline/raspberrypi/staggered_ctrl.h
delete mode 100644 src/libcamera/pipeline/rkisp1/timeline.cpp
delete mode 100644 src/libcamera/pipeline/rkisp1/timeline.h
create mode 100644 test/delayed_contols.cpp
--
2.29.1
More information about the libcamera-devel
mailing list