diff options
Diffstat (limited to 'src/ipa/rpi/controller')
-rw-r--r-- | src/ipa/rpi/controller/agc_algorithm.h | 11 | ||||
-rw-r--r-- | src/ipa/rpi/controller/rpi/agc.cpp | 51 | ||||
-rw-r--r-- | src/ipa/rpi/controller/rpi/agc.h | 13 |
3 files changed, 35 insertions, 40 deletions
diff --git a/src/ipa/rpi/controller/agc_algorithm.h b/src/ipa/rpi/controller/agc_algorithm.h index b8986560..534e38e2 100644 --- a/src/ipa/rpi/controller/agc_algorithm.h +++ b/src/ipa/rpi/controller/agc_algorithm.h @@ -22,17 +22,16 @@ public: virtual unsigned int getConvergenceFrames() const = 0; virtual std::vector<double> const &getWeights() const = 0; virtual void setEv(unsigned int channel, double ev) = 0; - virtual void setFlickerPeriod(unsigned int channel, - libcamera::utils::Duration flickerPeriod) = 0; + virtual void setFlickerPeriod(libcamera::utils::Duration flickerPeriod) = 0; virtual void setFixedShutter(unsigned int channel, libcamera::utils::Duration fixedShutter) = 0; virtual void setMaxShutter(libcamera::utils::Duration maxShutter) = 0; virtual void setFixedAnalogueGain(unsigned int channel, double fixedAnalogueGain) = 0; virtual void setMeteringMode(std::string const &meteringModeName) = 0; - virtual void setExposureMode(unsigned int channel, std::string const &exposureModeName) = 0; - virtual void setConstraintMode(unsigned int channel, std::string const &contraintModeName) = 0; - virtual void enableAuto(unsigned int channel) = 0; - virtual void disableAuto(unsigned int channel) = 0; + virtual void setExposureMode(std::string const &exposureModeName) = 0; + virtual void setConstraintMode(std::string const &contraintModeName) = 0; + virtual void enableAuto() = 0; + virtual void disableAuto() = 0; virtual void setActiveChannels(const std::vector<unsigned int> &activeChannels) = 0; }; diff --git a/src/ipa/rpi/controller/rpi/agc.cpp b/src/ipa/rpi/controller/rpi/agc.cpp index 32eb3624..6549dedd 100644 --- a/src/ipa/rpi/controller/rpi/agc.cpp +++ b/src/ipa/rpi/controller/rpi/agc.cpp @@ -74,22 +74,22 @@ int Agc::checkChannel(unsigned int channelIndex) const return 0; } -void Agc::disableAuto(unsigned int channelIndex) +void Agc::disableAuto() { - if (checkChannel(channelIndex)) - return; + LOG(RPiAgc, Debug) << "disableAuto"; - LOG(RPiAgc, Debug) << "disableAuto for channel " << channelIndex; - channelData_[channelIndex].channel.disableAuto(); + /* All channels are enabled/disabled together. */ + for (auto &data : channelData_) + data.channel.disableAuto(); } -void Agc::enableAuto(unsigned int channelIndex) +void Agc::enableAuto() { - if (checkChannel(channelIndex)) - return; + LOG(RPiAgc, Debug) << "enableAuto"; - LOG(RPiAgc, Debug) << "enableAuto for channel " << channelIndex; - channelData_[channelIndex].channel.enableAuto(); + /* All channels are enabled/disabled together. */ + for (auto &data : channelData_) + data.channel.enableAuto(); } unsigned int Agc::getConvergenceFrames() const @@ -118,14 +118,13 @@ void Agc::setEv(unsigned int channelIndex, double ev) channelData_[channelIndex].channel.setEv(ev); } -void Agc::setFlickerPeriod(unsigned int channelIndex, Duration flickerPeriod) +void Agc::setFlickerPeriod(Duration flickerPeriod) { - if (checkChannel(channelIndex)) - return; + LOG(RPiAgc, Debug) << "setFlickerPeriod " << flickerPeriod; - LOG(RPiAgc, Debug) << "setFlickerPeriod " << flickerPeriod - << " for channel " << channelIndex; - channelData_[channelIndex].channel.setFlickerPeriod(flickerPeriod); + /* Flicker period will be the same across all channels. */ + for (auto &data : channelData_) + data.channel.setFlickerPeriod(flickerPeriod); } void Agc::setMaxShutter(Duration maxShutter) @@ -162,22 +161,22 @@ void Agc::setMeteringMode(std::string const &meteringModeName) data.channel.setMeteringMode(meteringModeName); } -void Agc::setExposureMode(unsigned int channelIndex, std::string const &exposureModeName) +void Agc::setExposureMode(std::string const &exposureModeName) { - if (checkChannel(channelIndex)) - return; + LOG(RPiAgc, Debug) << "setExposureMode " << exposureModeName; - LOG(RPiAgc, Debug) << "setExposureMode " << exposureModeName - << " for channel " << channelIndex; - channelData_[channelIndex].channel.setExposureMode(exposureModeName); + /* Exposure mode will be the same across all channels. */ + for (auto &data : channelData_) + data.channel.setExposureMode(exposureModeName); } -void Agc::setConstraintMode(unsigned int channelIndex, std::string const &constraintModeName) +void Agc::setConstraintMode(std::string const &constraintModeName) { - if (checkChannel(channelIndex)) - return; + LOG(RPiAgc, Debug) << "setConstraintMode " << constraintModeName; - channelData_[channelIndex].channel.setConstraintMode(constraintModeName); + /* Constraint mode will be the same across all channels. */ + for (auto &data : channelData_) + data.channel.setConstraintMode(constraintModeName); } template<typename T> diff --git a/src/ipa/rpi/controller/rpi/agc.h b/src/ipa/rpi/controller/rpi/agc.h index 90890439..7d26bdf6 100644 --- a/src/ipa/rpi/controller/rpi/agc.h +++ b/src/ipa/rpi/controller/rpi/agc.h @@ -31,20 +31,17 @@ public: unsigned int getConvergenceFrames() const override; std::vector<double> const &getWeights() const override; void setEv(unsigned int channel, double ev) override; - void setFlickerPeriod(unsigned int channelIndex, - libcamera::utils::Duration flickerPeriod) override; + void setFlickerPeriod(libcamera::utils::Duration flickerPeriod) override; void setMaxShutter(libcamera::utils::Duration maxShutter) override; void setFixedShutter(unsigned int channelIndex, libcamera::utils::Duration fixedShutter) override; void setFixedAnalogueGain(unsigned int channelIndex, double fixedAnalogueGain) override; void setMeteringMode(std::string const &meteringModeName) override; - void setExposureMode(unsigned int channelIndex, - std::string const &exposureModeName) override; - void setConstraintMode(unsigned int channelIndex, - std::string const &contraintModeName) override; - void enableAuto(unsigned int channelIndex) override; - void disableAuto(unsigned int channelIndex) override; + void setExposureMode(std::string const &exposureModeName) override; + void setConstraintMode(std::string const &contraintModeName) override; + void enableAuto() override; + void disableAuto() override; void switchMode(CameraMode const &cameraMode, Metadata *metadata) override; void prepare(Metadata *imageMetadata) override; void process(StatisticsPtr &stats, Metadata *imageMetadata) override; |