| Message ID | 20251024085130.995967-21-stefan.klug@ideasonboard.com |
|---|---|
| State | New |
| Headers | show |
| Series |
|
| Related | show |
Quoting Stefan Klug (2025-10-24 17:50:44) > For successful PFC a single sequence must only be pushed once to delayed > controls. Such a situation can occur if no-ops were pushed in delayed > controls due to a buffer underrun. > > Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com> > --- > src/libcamera/delayed_controls.cpp | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/src/libcamera/delayed_controls.cpp b/src/libcamera/delayed_controls.cpp > index 8239f3dcf347..3dead0dc4429 100644 > --- a/src/libcamera/delayed_controls.cpp > +++ b/src/libcamera/delayed_controls.cpp > @@ -176,6 +176,8 @@ bool DelayedControls::push(uint32_t sequence, const ControlList &controls) > LOG(DelayedControls, Warning) > << "Double push for sequence " << sequence > << " current queue index: " << queueCount_; > + LOG(DelayedControls, Warning) << "ignore silently"; I think this can be merged with the first log line. > + return true; > } > > while (sequence > queueCount_) { > @@ -278,7 +280,11 @@ ControlList DelayedControls::get(uint32_t sequence) > */ > void DelayedControls::applyControls(uint32_t sequence) > { > - LOG(DelayedControls, Debug) << "frame " << sequence << " started"; > + LOG(DelayedControls, Debug) > + << "Apply controls for: " << sequence > + << " expected: " << writeCount_ > + << " (instant controls for frame " > + << (sequence - maxDelay_) << ")"; Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> > > while (queueCount_ - 1 < sequence) { > LOG(DelayedControls, Warning) > -- > 2.48.1 >
diff --git a/src/libcamera/delayed_controls.cpp b/src/libcamera/delayed_controls.cpp index 8239f3dcf347..3dead0dc4429 100644 --- a/src/libcamera/delayed_controls.cpp +++ b/src/libcamera/delayed_controls.cpp @@ -176,6 +176,8 @@ bool DelayedControls::push(uint32_t sequence, const ControlList &controls) LOG(DelayedControls, Warning) << "Double push for sequence " << sequence << " current queue index: " << queueCount_; + LOG(DelayedControls, Warning) << "ignore silently"; + return true; } while (sequence > queueCount_) { @@ -278,7 +280,11 @@ ControlList DelayedControls::get(uint32_t sequence) */ void DelayedControls::applyControls(uint32_t sequence) { - LOG(DelayedControls, Debug) << "frame " << sequence << " started"; + LOG(DelayedControls, Debug) + << "Apply controls for: " << sequence + << " expected: " << writeCount_ + << " (instant controls for frame " + << (sequence - maxDelay_) << ")"; while (queueCount_ - 1 < sequence) { LOG(DelayedControls, Warning)
For successful PFC a single sequence must only be pushed once to delayed controls. Such a situation can occur if no-ops were pushed in delayed controls due to a buffer underrun. Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com> --- src/libcamera/delayed_controls.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)