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

Laurent Pinchart laurent.pinchart at ideasonboard.com
Tue Apr 2 19:40:53 CEST 2019


Hi Jacopo,

Thank you for the patch.

On Tue, Apr 02, 2019 at 07:13:07PM +0200, Jacopo Mondi wrote:
> 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.
> 
> Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>

Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

> ---
>  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 f6d08af906da..e4f8f90e2302 100644
> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp
> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
> @@ -183,6 +183,8 @@ private:
>  		Stream stream_;
>  	};
>  
> +	static constexpr unsigned int IPU3_BUFFER_COUNT = 4;
> +
>  	IPU3CameraData *cameraData(const Camera *camera)
>  	{
>  		return static_cast<IPU3CameraData *>(
> @@ -215,26 +217,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;
>  }

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list