/* SPDX-License-Identifier: LGPL-2.1-or-later */ /* * Copyright (C) 2024, Paul Elder * * Helper class that performs computations relating to exposure */ #pragma once #include #include #include #include #include namespace libcamera { namespace ipa { class ExposureModeHelper { public: ExposureModeHelper(const Span> stages); ~ExposureModeHelper() = default; void setLimits(utils::Duration minShutter, utils::Duration maxShutter, double minGain, double maxGain); std::tuple splitExposure(utils::Duration exposure) const; utils::Duration minShutter() const { return minShutter_; } utils::Duration maxShutter() const { return maxShutter_; } double minGain() const { return minGain_; } double maxGain() const { return maxGain_; } private: utils::Duration clampShutter(utils::Duration shutter) const; double clampGain(double gain) const; std::vector shutters_; std::vector gains_; utils::Duration minShutter_; utils::Duration maxShutter_; double minGain_; double maxGain_; }; } /* namespace ipa */ } /* namespace libcamera */