[RFC,v3,11/19] ipa: libipa: agc: Report `FrameDurationLimits`
diff mbox series

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

Commit Message

Barnabás Pőcze Oct. 19, 2026, 6:45 p.m. UTC
`FrameDurationLimits` can be reported in metadata, to signal the exact
limits that were used when processing the frame. This was missing from
the agc algorithm, so add it.

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

Comments

Jacopo Mondi Oct. 20, 2026, 3:20 p.m. UTC | #1
Hi Barnabás

On Mon, Oct 19, 2026 at 08:45:18PM +0200, Barnabás Pőcze wrote:
> `FrameDurationLimits` can be reported in metadata, to signal the exact
> limits that were used when processing the frame. This was missing from
> the agc algorithm, so add it.
>
> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>

Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>

> ---
>  src/ipa/libipa/agc.cpp | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/src/ipa/libipa/agc.cpp b/src/ipa/libipa/agc.cpp
> index 2cfd4c554c..99fb623258 100644
> --- a/src/ipa/libipa/agc.cpp
> +++ b/src/ipa/libipa/agc.cpp
> @@ -869,6 +869,9 @@ void AgcAlgorithm::fillMetadata(const agc::Session &session,
>  	metadata.set(controls::ExposureTime,
>  		     utils::Duration(session.lineDuration * frameContext.exposure).get<std::micro>());
>  	metadata.set(controls::FrameDuration, frameContext.frameDuration.get<std::micro>());
> +	metadata.set(controls::FrameDurationLimits,
> +		     { static_cast<int64_t>(frameContext.minFrameDuration.get<std::micro>()),
> +		       static_cast<int64_t>(frameContext.maxFrameDuration.get<std::micro>()) });
>  	metadata.set(controls::ExposureTimeMode, frameContext.autoExposureEnabled
>  						 ? controls::ExposureTimeModeAuto
>  						 : controls::ExposureTimeModeManual);
> --
> 2.56.0
>

Patch
diff mbox series

diff --git a/src/ipa/libipa/agc.cpp b/src/ipa/libipa/agc.cpp
index 2cfd4c554c..99fb623258 100644
--- a/src/ipa/libipa/agc.cpp
+++ b/src/ipa/libipa/agc.cpp
@@ -869,6 +869,9 @@  void AgcAlgorithm::fillMetadata(const agc::Session &session,
 	metadata.set(controls::ExposureTime,
 		     utils::Duration(session.lineDuration * frameContext.exposure).get<std::micro>());
 	metadata.set(controls::FrameDuration, frameContext.frameDuration.get<std::micro>());
+	metadata.set(controls::FrameDurationLimits,
+		     { static_cast<int64_t>(frameContext.minFrameDuration.get<std::micro>()),
+		       static_cast<int64_t>(frameContext.maxFrameDuration.get<std::micro>()) });
 	metadata.set(controls::ExposureTimeMode, frameContext.autoExposureEnabled
 						 ? controls::ExposureTimeModeAuto
 						 : controls::ExposureTimeModeManual);