ipa: Add sensor model string to IPASettings

Pass the sensor model string to the IPA init() method through the
IPASettings structure.

Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
Tested-by: David Plowman <david.plowman@raspberrypi.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Naushir Patuck 2021-03-23 14:36:04 +00:00 committed by Laurent Pinchart
parent 500c9a1f98
commit ff9f60ce3f
5 changed files with 21 additions and 11 deletions

View file

@ -145,8 +145,16 @@ struct IPABuffer {
* This field may be an empty string if the IPA doesn't require a configuration
* file.
*/
/**
* \var IPASettings::sensorModel
* \brief The sensor model name
*
* Provides the sensor model name to the IPA.
*/
struct IPASettings {
string configurationFile;
string sensorModel;
};
/**

View file

@ -1144,7 +1144,8 @@ int IPU3CameraData::loadIPA()
ipa_->queueFrameAction.connect(this, &IPU3CameraData::queueFrameAction);
ipa_->init(IPASettings{});
CameraSensor *sensor = cio2_.sensor();
ipa_->init(IPASettings{ "", sensor->model() });
return 0;
}

View file

@ -1227,7 +1227,8 @@ int RPiCameraData::loadIPA()
ipa_->setIspControls.connect(this, &RPiCameraData::setIspControls);
ipa_->setDelayedControls.connect(this, &RPiCameraData::setDelayedControls);
IPASettings settings(ipa_->configurationFile(sensor_->model() + ".json"));
IPASettings settings(ipa_->configurationFile(sensor_->model() + ".json"),
sensor_->model());
return ipa_->init(settings);
}

View file

@ -422,18 +422,18 @@ bool PipelineHandlerVimc::match(DeviceEnumerator *enumerator)
std::unique_ptr<VimcCameraData> data = std::make_unique<VimcCameraData>(this, media);
data->ipa_ = IPAManager::createIPA<ipa::vimc::IPAProxyVimc>(this, 0, 0);
if (data->ipa_ != nullptr) {
std::string conf = data->ipa_->configurationFile("vimc.conf");
data->ipa_->init(IPASettings{ conf });
} else {
LOG(VIMC, Warning) << "no matching IPA found";
}
/* Locate and open the capture video node. */
if (data->init())
return false;
data->ipa_ = IPAManager::createIPA<ipa::vimc::IPAProxyVimc>(this, 0, 0);
if (data->ipa_ != nullptr) {
std::string conf = data->ipa_->configurationFile("vimc.conf");
data->ipa_->init(IPASettings{ conf, data->sensor_->model() });
} else {
LOG(VIMC, Warning) << "no matching IPA found";
}
/* Create and register the camera. */
std::set<Stream *> streams{ &data->stream_ };
std::shared_ptr<Camera> camera =

View file

@ -104,7 +104,7 @@ protected:
/* Test initialization of IPA module. */
std::string conf = ipa_->configurationFile("vimc.conf");
int ret = ipa_->init(IPASettings{ conf });
int ret = ipa_->init(IPASettings{ conf, "vimc" });
if (ret < 0) {
cerr << "IPA interface init() failed" << endl;
return TestFail;