[PATCH v4 20/20] pipeline: rkisp1: Limit sensor size to max resolution
Stefan Klug
stefan.klug at ideasonboard.com
Mon Dec 16 16:41:00 CET 2024
In RkISPPath::validate() the sensor sizes are correctly filtered to the
ones supported by the ISP. But later in RkISPPipeline::configure() the
configured stream size is passed to sensor->getFormat() and the
CameraSensor class chooses the best sensor format for the requested
stream size. This can result in a sensor format that is too big for the
ISP. Fix that by supplying the maximum resolution supported by the ISP
to setFormat().
Fixes: 761545407c76 ("pipeline: rkisp1: Filter out sensor sizes not supported by the pipeline")
Signed-off-by: Stefan Klug <stefan.klug at ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo.mondi at ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder at ideasonboard.com>
---
Changes in v4:
- Changed commit tite prefix to pipeline:
Changes in v3:
- Added this patch
---
src/libcamera/pipeline/rkisp1/rkisp1.cpp | 3 ++-
src/libcamera/pipeline/rkisp1/rkisp1_path.h | 1 +
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
index 432a01694913..35c793da9bba 100644
--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp
+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
@@ -677,7 +677,8 @@ CameraConfiguration::Status RkISP1CameraConfiguration::validate()
[](const auto &value) { return value.second; });
}
- sensorFormat_ = sensor->getFormat(mbusCodes, maxSize);
+ sensorFormat_ = sensor->getFormat(mbusCodes, maxSize,
+ mainPath->maxResolution());
if (sensorFormat_.size.isNull())
sensorFormat_.size = sensor->resolution();
diff --git a/src/libcamera/pipeline/rkisp1/rkisp1_path.h b/src/libcamera/pipeline/rkisp1/rkisp1_path.h
index 45be8476616c..2a1ef0abe6d1 100644
--- a/src/libcamera/pipeline/rkisp1/rkisp1_path.h
+++ b/src/libcamera/pipeline/rkisp1/rkisp1_path.h
@@ -62,6 +62,7 @@ public:
int queueBuffer(FrameBuffer *buffer) { return video_->queueBuffer(buffer); }
Signal<FrameBuffer *> &bufferReady() { return video_->bufferReady; }
+ const Size &maxResolution() const { return maxResolution_; }
private:
void populateFormats();
--
2.43.0
More information about the libcamera-devel
mailing list