diff options
Diffstat (limited to 'src/libcamera/pipeline/ipu3/ipu3.cpp')
-rw-r--r-- | src/libcamera/pipeline/ipu3/ipu3.cpp | 16 |
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; |