[PATCH 00/12] Preparation for per-frame-controls and initial tests
Kieran Bingham
kieran.bingham at ideasonboard.com
Wed Mar 13 12:51:45 CET 2024
Hi Stefan,
I tried to send this for testing @ gitlab, but the patches didn't apply
to master.
What is your current base?
./send-for-testing.sh 4220
>From https://git.libcamera.org/libcamera/libcamera
2e2ba223f3a2..d54abd32affd master -> libcamera.org/master
>From gitlab.freedesktop.org:camera/libcamera
2e2ba223f3a2..d54abd32affd master -> gl.fdo/master
HEAD is now at 2e2ba223f3a2 libcamera: framebuffer_allocator: Remove entry if allocation fails
Previous HEAD position was 2e2ba223f3a2 libcamera: framebuffer_allocator: Remove entry if allocation fails
Branch 'testing/4220' set up to track remote branch 'master' from 'libcamera.org'.
Switched to a new branch 'testing/4220'
Applying: libcamera: delayed_controls: add ctrls list to reset function
error: sha1 information is lacking or useless (include/libcamera/internal/delayed_controls.h).
error: could not build fake ancestor
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 libcamera: delayed_controls: add ctrls list to reset function
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
--
Kieran
Quoting Stefan Klug (2024-03-13 10:56:32)
> Hi everyone,
>
> unknowingly I stumbled into a topic that is way larger than I thought in the
> beginning. Delayed-controls and a closely related topic per-frame-controls.
>
> I (now) know that a lot of work already went into this, noteably by
> Jacopo Mondi, David Plowman and Naushir Patuck:
> https://patchwork.libcamera.org/cover/16458/
> https://github.com/raspberrypi/libcamera/tree/pfc
> Thanks for that!
>
> I started off without per-frame-controls in mind (only delayed-controls)
> and soon realized, that these two are closely related. (It's difficult to
> test delayed-controls in a real pipeline without working per-frame-controls)
>
> To be able to tackle the whole topic in the long run I'd like to split it into parts:
>
> 1. Get a initial set of tests on mainline
> I'd like to have them as a discussion basis and a reference to test against.
> These shouldn't be treated as mandatory for now (ideas on how to express that in
> code are very welcome)
> - Initial lc-compliance tests for delayed-controls (and because these are system tests
> also for per-frame-controls)
> - A reworked delayed controls class that hopefully makes things easier
> - Tested on rkisp1 (details see below)
>
> 2. Get an agreement on "RaspberryPi" mode
> In the previous work by David and Naushir, the (in my understanding) most prominent
> requiremnet was the ability to set a control ASAP even when multiple
> requests are queued already (which makes complete sense IMHO). This requirement
> shall not get lost and I think there is a way to make it work.
>
> 3. Get the tests to pass on rkisp1, rpi and ipu3
> I guess this will take a while and involve different parties, so let's not wait
> until everything works everywhere...
>
> 4. Make the tests mandatory (details tbd)
>
> This series contains part 1.
>
> One change of thought is, that we add the ability to push requests to delayed
> controls for a given sequence number and to re-push for the
> same sequence number. This has the benefit, that we don't have to decide
> early on if we operate in strict per-frame-controls mode (sometimes called
> "android mode") or in "raspberry pi" mode.
>
> Stefan Klug (12):
> libcamera: lc-compliance: Add controls param to start() function
> libcamera: lc-compliance: Add TimeSheet class
> libcamera: lc-compliance: Add initial set of per-frame-control tests
> libcamera: delayed_controls: Update unit tests to expected semantics
> libcamera: delayed_controls: Rename class members
> libcamera: delayed_controls: Rework delayed controls implementation
> libcamera: delayed_controls: Add some logging
> libcamera: delayed_controls: Add ctrls list parameter to reset()
> function
> pipeline: rkisp1: Move call to setSensorControls.emit()
> pipeline: rkisp1: Add more debug logging
> pipeline: rkisp1: Fix per-frame-controls in manual mode
> pipeline: rkisp1: Apply initial controls
>
> include/libcamera/internal/delayed_controls.h | 20 +-
> include/libcamera/ipa/rkisp1.mojom | 7 +-
> src/apps/lc-compliance/capture_test.cpp | 46 +++
> src/apps/lc-compliance/meson.build | 2 +
> src/apps/lc-compliance/per_frame_controls.cpp | 316 ++++++++++++++++++
> src/apps/lc-compliance/per_frame_controls.h | 43 +++
> src/apps/lc-compliance/simple_capture.cpp | 4 +-
> src/apps/lc-compliance/simple_capture.h | 2 +-
> src/apps/lc-compliance/time_sheet.cpp | 145 ++++++++
> src/apps/lc-compliance/time_sheet.h | 55 +++
> src/ipa/rkisp1/algorithms/agc.cpp | 4 +-
> src/ipa/rkisp1/rkisp1.cpp | 49 ++-
> src/libcamera/delayed_controls.cpp | 235 ++++++++++---
> src/libcamera/pipeline/rkisp1/rkisp1.cpp | 11 +-
> test/delayed_controls.cpp | 203 ++++++++---
> 15 files changed, 1021 insertions(+), 121 deletions(-)
> create mode 100644 src/apps/lc-compliance/per_frame_controls.cpp
> create mode 100644 src/apps/lc-compliance/per_frame_controls.h
> create mode 100644 src/apps/lc-compliance/time_sheet.cpp
> create mode 100644 src/apps/lc-compliance/time_sheet.h
>
> --
> 2.40.1
>
More information about the libcamera-devel
mailing list