libcamera  v0.3.1+12-19bbca3c
Supporting cameras in Linux since 2019
exposure_mode_helper.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
2 /*
3  * Copyright (C) 2024, Paul Elder <paul.elder@ideasonboard.com>
4  *
5  * Helper class that performs computations relating to exposure
6  */
7 
8 #pragma once
9 
10 #include <tuple>
11 #include <utility>
12 #include <vector>
13 
14 #include <libcamera/base/span.h>
15 #include <libcamera/base/utils.h>
16 
17 namespace libcamera {
18 
19 namespace ipa {
20 
22 {
23 public:
24  ExposureModeHelper(const Span<std::pair<utils::Duration, double>> stages);
25  ~ExposureModeHelper() = default;
26 
28  double minGain, double maxGain);
29 
30  std::tuple<utils::Duration, double, double>
31  splitExposure(utils::Duration exposure) const;
32 
33  utils::Duration minShutter() const { return minShutter_; }
34  utils::Duration maxShutter() const { return maxShutter_; }
35  double minGain() const { return minGain_; }
36  double maxGain() const { return maxGain_; }
37 
38 private:
39  utils::Duration clampShutter(utils::Duration shutter) const;
40  double clampGain(double gain) const;
41 
42  std::vector<utils::Duration> shutters_;
43  std::vector<double> gains_;
44 
45  utils::Duration minShutter_;
46  utils::Duration maxShutter_;
47  double minGain_;
48  double maxGain_;
49 };
50 
51 } /* namespace ipa */
52 
53 } /* namespace libcamera */
double maxGain() const
Retrieve the configured maximum gain set through setShutterGainLimits()
Definition: exposure_mode_helper.h:36
utils::Duration minShutter() const
Retrieve the configured minimum shutter time limit set through setShutterGainLimits() ...
Definition: exposure_mode_helper.h:33
void setLimits(utils::Duration minShutter, utils::Duration maxShutter, double minGain, double maxGain)
Set the shutter time and gain limits.
Definition: exposure_mode_helper.cpp:101
Top-level libcamera namespace.
Definition: backtrace.h:17
Miscellaneous utility functions.
Class for splitting exposure into shutter time and total gain.
Definition: exposure_mode_helper.h:21
ExposureModeHelper(const Span< std::pair< utils::Duration, double >> stages)
Construct an ExposureModeHelper instance.
Definition: exposure_mode_helper.cpp:72
std::tuple< utils::Duration, double, double > splitExposure(utils::Duration exposure) const
Split exposure time into shutter time and gain.
Definition: exposure_mode_helper.cpp:153
Helper class from std::chrono::duration that represents a time duration in nanoseconds with double pr...
Definition: utils.h:353
utils::Duration maxShutter() const
Retrieve the configured maximum shutter time set through setShutterGainLimits()
Definition: exposure_mode_helper.h:34
double minGain() const
Retrieve the configured minimum gain set through setShutterGainLimits()
Definition: exposure_mode_helper.h:35