summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNaushir Patuck <naush@raspberrypi.com>2021-03-23 14:36:10 +0000
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-03-23 18:43:59 +0200
commit787852a240ae00a5574e7af9341460cec92ce04a (patch)
treeb4e3e1746aa28ceecb32bf36eebbb187008e5cbc
parentb876c64613293bdf7735f761bf3281ec2a55a3bb (diff)
ipa: raspberrypi: Rationalise parameters to ipa::configure()
Rename ConfigInput to IPAConfig to be more consistent with the naming, and remove ConfigInput::op, as it is never used. Replace ConfigOutput with a ControlList type, as that is the only return type from ipa::configure(). 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>
-rw-r--r--include/libcamera/ipa/raspberrypi.mojom15
-rw-r--r--src/ipa/raspberrypi/raspberrypi.cpp11
-rw-r--r--src/libcamera/pipeline/raspberrypi/raspberrypi.cpp13
3 files changed, 16 insertions, 23 deletions
diff --git a/include/libcamera/ipa/raspberrypi.mojom b/include/libcamera/ipa/raspberrypi.mojom
index 55824eeb..f38c2261 100644
--- a/include/libcamera/ipa/raspberrypi.mojom
+++ b/include/libcamera/ipa/raspberrypi.mojom
@@ -29,16 +29,11 @@ struct ISPConfig {
ControlList controls;
};
-struct ConfigInput {
- uint32 op;
+struct IPAConfig {
uint32 transform;
FileDescriptor lsTableHandle;
};
-struct ConfigOutput {
- ControlList controls;
-};
-
struct StartConfig {
ControlList controls;
int32 dropFrameCount;
@@ -56,7 +51,7 @@ interface IPARPiInterface {
* \param[in] streamConfig Configuration of all active streams
* \param[in] entityControls Controls provided by the pipeline entities
* \param[in] ipaConfig Pipeline-handler-specific configuration data
- * \param[out] results Pipeline-handler-specific configuration result
+ * \param[out] controls Controls to apply by the pipeline entity
*
* This method shall be called when the camera is configured to inform
* the IPA of the camera's streams and the sensor settings.
@@ -64,14 +59,14 @@ interface IPARPiInterface {
* The \a sensorInfo conveys information about the camera sensor settings that
* the pipeline handler has selected for the configuration.
*
- * The \a ipaConfig and \a results parameters carry data passed by the
+ * The \a ipaConfig and \a controls parameters carry data passed by the
* pipeline handler to the IPA and back.
*/
configure(CameraSensorInfo sensorInfo,
map<uint32, IPAStream> streamConfig,
map<uint32, ControlInfoMap> entityControls,
- ConfigInput ipaConfig)
- => (int32 ret, ConfigOutput results);
+ IPAConfig ipaConfig)
+ => (int32 ret, ControlList controls);
/**
* \fn mapBuffers()
diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp
index b717a83e..1c928b72 100644
--- a/src/ipa/raspberrypi/raspberrypi.cpp
+++ b/src/ipa/raspberrypi/raspberrypi.cpp
@@ -85,8 +85,8 @@ public:
int configure(const CameraSensorInfo &sensorInfo,
const std::map<unsigned int, IPAStream> &streamConfig,
const std::map<unsigned int, ControlInfoMap> &entityControls,
- const ipa::RPi::ConfigInput &data,
- ipa::RPi::ConfigOutput *response) override;
+ const ipa::RPi::IPAConfig &data,
+ ControlList *controls) override;
void mapBuffers(const std::vector<IPABuffer> &buffers) override;
void unmapBuffers(const std::vector<unsigned int> &ids) override;
void signalStatReady(const uint32_t bufferId) override;
@@ -313,8 +313,8 @@ void IPARPi::setMode(const CameraSensorInfo &sensorInfo)
int IPARPi::configure(const CameraSensorInfo &sensorInfo,
[[maybe_unused]] const std::map<unsigned int, IPAStream> &streamConfig,
const std::map<unsigned int, ControlInfoMap> &entityControls,
- const ipa::RPi::ConfigInput &ipaConfig,
- ipa::RPi::ConfigOutput *result)
+ const ipa::RPi::IPAConfig &ipaConfig,
+ ControlList *controls)
{
if (entityControls.size() != 2) {
LOG(IPARPI, Error) << "No ISP or sensor controls found.";
@@ -377,7 +377,8 @@ int IPARPi::configure(const CameraSensorInfo &sensorInfo,
agcStatus.analogue_gain = DefaultAnalogueGain;
applyAGC(&agcStatus, ctrls);
- result->controls = std::move(ctrls);
+ ASSERT(controls);
+ *controls = std::move(ctrls);
}
return 0;
diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
index a65d5389..2cac802c 100644
--- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
+++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
@@ -1236,7 +1236,7 @@ int RPiCameraData::configureIPA(const CameraConfiguration *config)
std::map<unsigned int, IPAStream> streamConfig;
std::map<unsigned int, ControlInfoMap> entityControls;
- ipa::RPi::ConfigInput ipaConfig;
+ ipa::RPi::IPAConfig ipaConfig;
/* Get the device format to pass to the IPA. */
V4L2DeviceFormat sensorFormat;
@@ -1279,19 +1279,16 @@ int RPiCameraData::configureIPA(const CameraConfiguration *config)
}
/* Ready the IPA - it must know about the sensor resolution. */
- ipa::RPi::ConfigOutput result;
-
+ ControlList controls;
ret = ipa_->configure(sensorInfo_, streamConfig, entityControls, ipaConfig,
- &result);
+ &controls);
if (ret < 0) {
LOG(RPI, Error) << "IPA configuration failed!";
return -EPIPE;
}
- if (!result.controls.empty()) {
- ControlList &ctrls = result.controls;
- unicam_[Unicam::Image].dev()->setControls(&ctrls);
- }
+ if (!controls.empty())
+ unicam_[Unicam::Image].dev()->setControls(&controls);
/*
* Configure the H/V flip controls based on the combination of