From c204a67bae262945cf5455e475e79a6b626a7827 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Mon, 23 Jan 2023 15:49:23 +0000 Subject: pipeline: ipa: raspberrypi: Replace entityControls Replace the legacy entityControls map passed into ipa::configure() with explicit fields for sensor and ISP controls. This removes any ambiguity over which set of controls corresponds with specific integer keys. Signed-off-by: Naushir Patuck Reviewed-by: Nick Hollinghurst Reviewed-by: David Plowman Signed-off-by: Kieran Bingham --- src/ipa/raspberrypi/raspberrypi.cpp | 17 ++++------------- src/libcamera/pipeline/raspberrypi/raspberrypi.cpp | 7 +++---- 2 files changed, 7 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp index f748b6e2..aa18ed75 100644 --- a/src/ipa/raspberrypi/raspberrypi.cpp +++ b/src/ipa/raspberrypi/raspberrypi.cpp @@ -119,9 +119,7 @@ public: void start(const ControlList &controls, StartConfig *startConfig) override; void stop() override {} - int configure(const IPACameraSensorInfo &sensorInfo, - const std::map &entityControls, - const IPAConfig &data, + int configure(const IPACameraSensorInfo &sensorInfo, const IPAConfig &data, ControlList *controls, IPAConfigResult *result) override; void mapBuffers(const std::vector &buffers) override; void unmapBuffers(const std::vector &ids) override; @@ -380,18 +378,11 @@ void IPARPi::setMode(const IPACameraSensorInfo &sensorInfo) mode_.sensitivity = helper_->getModeSensitivity(mode_); } -int IPARPi::configure(const IPACameraSensorInfo &sensorInfo, - const std::map &entityControls, - const IPAConfig &ipaConfig, +int IPARPi::configure(const IPACameraSensorInfo &sensorInfo, const IPAConfig &ipaConfig, ControlList *controls, IPAConfigResult *result) { - if (entityControls.size() != 2) { - LOG(IPARPI, Error) << "No ISP or sensor controls found."; - return -1; - } - - sensorCtrls_ = entityControls.at(0); - ispCtrls_ = entityControls.at(1); + sensorCtrls_ = ipaConfig.sensorControls; + ispCtrls_ = ipaConfig.ispControls; if (!validateSensorControls()) { LOG(IPARPI, Error) << "Sensor control validation failed."; diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp index 211648bd..381271ad 100644 --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp @@ -1522,8 +1522,8 @@ int RPiCameraData::configureIPA(const CameraConfiguration *config, ipa::RPi::IPA std::map entityControls; ipa::RPi::IPAConfig ipaConfig; - entityControls.emplace(0, sensor_->controls()); - entityControls.emplace(1, isp_[Isp::Input].dev()->controls()); + ipaConfig.sensorControls = sensor_->controls(); + ipaConfig.ispControls = isp_[Isp::Input].dev()->controls(); /* Always send the user transform to the IPA. */ ipaConfig.transform = static_cast(config->transform); @@ -1551,8 +1551,7 @@ int RPiCameraData::configureIPA(const CameraConfiguration *config, ipa::RPi::IPA /* Ready the IPA - it must know about the sensor resolution. */ ControlList controls; - ret = ipa_->configure(sensorInfo_, entityControls, ipaConfig, - &controls, result); + ret = ipa_->configure(sensorInfo_, ipaConfig, &controls, result); if (ret < 0) { LOG(RPI, Error) << "IPA configuration failed!"; return -EPIPE; -- cgit v1.2.1