summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>2021-03-16 16:40:23 +0100
committerJean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>2021-03-17 15:13:50 +0100
commit79b48225adddafb6e1e5dcbe384107ba69b89454 (patch)
tree1145c9be9e28a2d2351a8fcbe814b90aa3f06344
parent3f6785963d198e1801ecaa203e4075e18485edd0 (diff)
libcamera: ipu3: Pass the BDS rectangle at IPA configure call
The IPU3 IPA will need the BDS configuration when the AWB/AGC algorithm will be integrated. In order to do that, the configure() interface needs to be modified. Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--include/libcamera/ipa/ipu3.mojom2
-rw-r--r--src/ipa/ipu3/ipu3.cpp6
-rw-r--r--src/libcamera/pipeline/ipu3/ipu3.cpp2
3 files changed, 6 insertions, 4 deletions
diff --git a/include/libcamera/ipa/ipu3.mojom b/include/libcamera/ipa/ipu3.mojom
index 6ee11333..5d13e7ea 100644
--- a/include/libcamera/ipa/ipu3.mojom
+++ b/include/libcamera/ipa/ipu3.mojom
@@ -30,7 +30,7 @@ interface IPAIPU3Interface {
start() => (int32 ret);
stop();
- configure(map<uint32, ControlInfoMap> entityControls) => ();
+ configure(map<uint32, ControlInfoMap> entityControls, Size bdsOutputSize) => ();
mapBuffers(array<IPABuffer> buffers);
unmapBuffers(array<uint32> ids);
diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp
index b63e58be..a5c5e029 100644
--- a/src/ipa/ipu3/ipu3.cpp
+++ b/src/ipa/ipu3/ipu3.cpp
@@ -35,7 +35,8 @@ public:
int start() override { return 0; }
void stop() override {}
- void configure(const std::map<uint32_t, ControlInfoMap> &entityControls) override;
+ void configure(const std::map<uint32_t, ControlInfoMap> &entityControls,
+ const Size &bdsOutputSize) override;
void mapBuffers(const std::vector<IPABuffer> &buffers) override;
void unmapBuffers(const std::vector<unsigned int> &ids) override;
@@ -62,7 +63,8 @@ private:
uint32_t maxGain_;
};
-void IPAIPU3::configure(const std::map<uint32_t, ControlInfoMap> &entityControls)
+void IPAIPU3::configure(const std::map<uint32_t, ControlInfoMap> &entityControls,
+ [[maybe_unused]] const Size &bdsOutputSize)
{
if (entityControls.empty())
return;
diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index bb61ef4a..c9e3c5ef 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -635,7 +635,7 @@ int PipelineHandlerIPU3::configure(Camera *camera, CameraConfiguration *c)
std::map<uint32_t, ControlInfoMap> entityControls;
entityControls.emplace(0, data->cio2_.sensor()->controls());
- data->ipa_->configure(entityControls);
+ data->ipa_->configure(entityControls, config->imguConfig().bds);
return 0;
}