[libcamera-devel] [PATCH v8 11/13] libcamera: ipu3: Set stream configuration

Jacopo Mondi jacopo at jmondi.org
Wed Apr 3 10:01:46 CEST 2019


Use the cached sensor maximum resolution and the pixel format
generated by the ImgU output devices as default stream configuration.

While at it, replace the hardcoded numerical value for the number of
buffers with a named constexpr.

Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
---
 src/libcamera/pipeline/ipu3/ipu3.cpp | 34 ++++++++++++----------------
 1 file changed, 15 insertions(+), 19 deletions(-)

diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index 5fe036a3b239..792ff42c0eaa 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -169,6 +169,8 @@ private:
 		Stream stream_;
 	};
 
+	static constexpr unsigned int IPU3_BUFFER_COUNT = 4;
+
 	IPU3CameraData *cameraData(const Camera *camera)
 	{
 		return static_cast<IPU3CameraData *>(
@@ -201,26 +203,20 @@ std::map<Stream *, StreamConfiguration>
 PipelineHandlerIPU3::streamConfiguration(Camera *camera,
 					 std::set<Stream *> &streams)
 {
-	IPU3CameraData *data = cameraData(camera);
 	std::map<Stream *, StreamConfiguration> configs;
-	V4L2SubdeviceFormat format = {};
-
-	/*
-	 * FIXME: As of now, return the image format reported by the sensor.
-	 * In future good defaults should be provided for each stream.
-	 */
-	if (data->cio2_.sensor_->getFormat(0, &format)) {
-		LOG(IPU3, Error) << "Failed to create stream configurations";
-		return configs;
-	}
-
-	StreamConfiguration config = {};
-	config.width = format.width;
-	config.height = format.height;
-	config.pixelFormat = V4L2_PIX_FMT_IPU3_SGRBG10;
-	config.bufferCount = 4;
-
-	configs[&data->stream_] = config;
+	IPU3CameraData *data = cameraData(camera);
+	StreamConfiguration *config = &configs[&data->stream_];
+	Size *maxSize = &data->.cio2_.maxSize_;
+
+	config->width = maxSize->width;
+	config->height = maxSize->height;
+	config->pixelFormat = V4L2_PIX_FMT_NV12;
+	config->bufferCount = IPU3_BUFFER_COUNT;
+
+	LOG(IPU3, Debug)
+		<< "Stream format set to " << config->width << "x"
+		<< config->height << "-0x" << std::hex << std::setfill('0')
+		<< std::setw(8) << config->pixelFormat;
 
 	return configs;
 }
-- 
2.21.0



More information about the libcamera-devel mailing list