[libcamera-devel] [PATCH 1/2] libcamera: ipu3: Move Imgu configuration to IPU3CameraData
Jean-Michel Hautbois
jeanmichel.hautbois at ideasonboard.com
Fri Mar 12 14:03:03 CET 2021
The IPU3 IPA needs to know the BayerDownScaler (BDS) configuration to
calculate the statistics grids.
This patch makes it possible for PipelineHandlerIPU3::start() to access
the BDS configuration and later pass the rectangle to the IPU3 IPA
configure method.
Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois at ideasonboard.com>
---
src/libcamera/pipeline/ipu3/ipu3.cpp | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index 00da2bb2..0d133031 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -70,6 +70,8 @@ public:
CIO2Device cio2_;
ImgUDevice *imgu_;
+ ImgUDevice::PipeConfig pipeConfig_;
+
Stream outStream_;
Stream vfStream_;
Stream rawStream_;
@@ -97,7 +99,6 @@ public:
Status validate() override;
const StreamConfiguration &cio2Format() const { return cio2Configuration_; }
- const ImgUDevice::PipeConfig imguConfig() const { return pipeConfig_; }
/* Cache the combinedTransform_ that will be applied to the sensor */
Transform combinedTransform_;
@@ -108,10 +109,9 @@ private:
* corresponding Camera instance is valid. In order to borrow a
* reference to the camera data, store a new reference to the camera.
*/
- const IPU3CameraData *data_;
+ IPU3CameraData *data_;
StreamConfiguration cio2Configuration_;
- ImgUDevice::PipeConfig pipeConfig_;
};
class PipelineHandlerIPU3 : public PipelineHandler
@@ -375,12 +375,13 @@ CameraConfiguration::Status IPU3CameraConfiguration::validate()
/* Only compute the ImgU configuration if a YUV stream has been requested. */
if (yuvCount) {
- pipeConfig_ = data_->imgu_->calculatePipeConfig(&pipe);
- if (pipeConfig_.isNull()) {
+ ImgUDevice::PipeConfig imguConfig = data_->imgu_->calculatePipeConfig(&pipe);
+ if (imguConfig.isNull()) {
LOG(IPU3, Error) << "Failed to calculate pipe configuration: "
<< "unsupported resolutions.";
return Invalid;
}
+ data_->pipeConfig_ = imguConfig;
}
return status;
@@ -576,7 +577,7 @@ int PipelineHandlerIPU3::configure(Camera *camera, CameraConfiguration *c)
* stream has been requested: return here to skip the ImgU configuration
* part.
*/
- ImgUDevice::PipeConfig imguConfig = config->imguConfig();
+ ImgUDevice::PipeConfig imguConfig = data->pipeConfig_;
if (imguConfig.isNull())
return 0;
--
2.27.0
More information about the libcamera-devel
mailing list