summaryrefslogtreecommitdiff
path: root/src/libcamera/pipeline/ipu3/ipu3.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libcamera/pipeline/ipu3/ipu3.cpp')
-rw-r--r--src/libcamera/pipeline/ipu3/ipu3.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index a0df81a0..ca3a852f 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -67,6 +67,7 @@ public:
Status validate() override;
const StreamConfiguration &cio2Format() const { return cio2Configuration_; };
+ const ImgUDevice::PipeConfig imguConfig() const { return pipeConfig_; }
private:
/*
@@ -462,7 +463,20 @@ int PipelineHandlerIPU3::configure(Camera *camera, CameraConfiguration *c)
if (ret)
return ret;
- ret = imgu->configureInput(sensorSize, &cio2Format);
+ /*
+ * If the ImgU gets configured with proper IF, BDS and GDC sizes, it
+ * is then expected that frames are dequeued from its main output
+ * otherwise the system stalls.
+ *
+ * If no ImgU configuration has been computed, it means only a RAW
+ * stream has been requested: return here to skip the ImgU configuration
+ * part.
+ */
+ ImgUDevice::PipeConfig imguConfig = config->imguConfig();
+ if (imguConfig.isNull())
+ return 0;
+
+ ret = imgu->configureInput(imguConfig, &cio2Format);
if (ret)
return ret;