libcamera  v0.5.0+11-5d1380f7
Supporting cameras in Linux since 2019
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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 minExposureTime() const { return minExposureTime_; }
34  utils::Duration maxExposureTime() const { return maxExposureTime_; }
35  double minGain() const { return minGain_; }
36  double maxGain() const { return maxGain_; }
37 
38 private:
39  utils::Duration clampExposureTime(utils::Duration exposureTime) const;
40  double clampGain(double gain) const;
41 
42  std::vector<utils::Duration> exposureTimes_;
43  std::vector<double> gains_;
44 
45  utils::Duration minExposureTime_;
46  utils::Duration maxExposureTime_;
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 setLimits()
Definition: exposure_mode_helper.h:36
Top-level libcamera namespace.
Definition: backtrace.h:17
utils::Duration minExposureTime() const
Retrieve the configured minimum exposure time limit set through setLimits()
Definition: exposure_mode_helper.h:33
Miscellaneous utility functions.
Class for splitting exposure into exposure 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
void setLimits(utils::Duration minExposureTime, utils::Duration maxExposureTime, double minGain, double maxGain)
Set the exposure time and gain limits.
Definition: exposure_mode_helper.cpp:101
utils::Duration maxExposureTime() const
Retrieve the configured maximum exposure time set through setLimits()
Definition: exposure_mode_helper.h:34
std::tuple< utils::Duration, double, double > splitExposure(utils::Duration exposure) const
Split exposure into exposure 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:370
double minGain() const
Retrieve the configured minimum gain set through setLimits()
Definition: exposure_mode_helper.h:35