[v7,17/19] ipa: libipa: agc: Do not run faster than 30 fps by default
diff mbox series

Message ID 20261109094954.341480-18-barnabas.pocze@ideasonboard.com
State New
Headers show
Series
  • ipa: libipa: agc: Take exposure margin into account
Related show

Commit Message

Barnabás Pőcze Nov. 9, 2026, 9:49 a.m. UTC
In auto mode, by default the camera should not run faster than 30fps
unless the user explicitly adjusts `FrameDurationLimits`. This matches
the behaviour of the raspberry pi agc algorithm.

Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
---
 src/ipa/libipa/agc.cpp | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

Stefan Klug Nov. 9, 2026, 12:03 p.m. UTC | #1
Hi Barnabás,

Quoting Barnabás Pőcze (2026-11-09 10:49:52)
> In auto mode, by default the camera should not run faster than 30fps
> unless the user explicitly adjusts `FrameDurationLimits`. This matches
> the behaviour of the raspberry pi agc algorithm.
> 
> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>

As discussed, I'd love to be able to configure that behavior in the
tuning file or something similar, but for now it makes more people happy
than unhappy.

So:
Reviewed-by: Stefan Klug <stefan.klug@ideasonboard.com>

Best regards,
Stefan

> ---
>  src/ipa/libipa/agc.cpp | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/src/ipa/libipa/agc.cpp b/src/ipa/libipa/agc.cpp
> index 64e2ca787f..94d3ffa42d 100644
> --- a/src/ipa/libipa/agc.cpp
> +++ b/src/ipa/libipa/agc.cpp
> @@ -779,6 +779,13 @@ int AgcAlgorithm::configure(agc::Session &session, agc::ActiveState &state,
>                 },
>         }, impl_);
>  
> +       if (session.autoAllowed) {
> +               /* By default do not run faster than 30fps. */
> +               state.minFrameDuration = std::clamp(
> +                       utils::Duration(1.0s / 30),
> +                       session.minFrameDuration, session.maxFrameDuration);
> +       }
> +
>         /* \todo Move this to the `Camera` class. */
>         config.ctrlMap[&controls::AeEnable] = ControlInfo{
>                 false, session.autoAllowed, session.autoAllowed
> -- 
> 2.56.0
>

Patch
diff mbox series

diff --git a/src/ipa/libipa/agc.cpp b/src/ipa/libipa/agc.cpp
index 64e2ca787f..94d3ffa42d 100644
--- a/src/ipa/libipa/agc.cpp
+++ b/src/ipa/libipa/agc.cpp
@@ -779,6 +779,13 @@  int AgcAlgorithm::configure(agc::Session &session, agc::ActiveState &state,
 		},
 	}, impl_);
 
+	if (session.autoAllowed) {
+		/* By default do not run faster than 30fps. */
+		state.minFrameDuration = std::clamp(
+			utils::Duration(1.0s / 30),
+			session.minFrameDuration, session.maxFrameDuration);
+	}
+
 	/* \todo Move this to the `Camera` class. */
 	config.ctrlMap[&controls::AeEnable] = ControlInfo{
 		false, session.autoAllowed, session.autoAllowed