[libcamera-devel,v3,03/13] libcamera: camera: Log requested configuration in configureStreams()

Message ID 20190418141437.14014-4-laurent.pinchart@ideasonboard.com
State Accepted
Headers show
Series
  • Rockchip ISP pipeline handler
Related show

Commit Message

Laurent Pinchart April 18, 2019, 2:14 p.m. UTC
The IPU3 pipeline handler logs the requested configuration in its
configureStreams() handler. This is useful for other pipeline handlers
as well, move it to the Camera class.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
---
 src/libcamera/camera.cpp             | 14 ++++++++++++++
 src/libcamera/pipeline/ipu3/ipu3.cpp |  6 ------
 2 files changed, 14 insertions(+), 6 deletions(-)

Comments

Jacopo Mondi April 19, 2019, 10:03 a.m. UTC | #1
Hi Laurent,
   I've just noticed a small issue with this patch.

On Thu, Apr 18, 2019 at 05:14:27PM +0300, Laurent Pinchart wrote:
> The IPU3 pipeline handler logs the requested configuration in its
> configureStreams() handler. This is useful for other pipeline handlers
> as well, move it to the Camera class.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
> ---
>  src/libcamera/camera.cpp             | 14 ++++++++++++++
>  src/libcamera/pipeline/ipu3/ipu3.cpp |  6 ------
>  2 files changed, 14 insertions(+), 6 deletions(-)
>
> diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp
> index 75a21008070b..bd381fa1cb56 100644
> --- a/src/libcamera/camera.cpp
> +++ b/src/libcamera/camera.cpp
> @@ -5,6 +5,8 @@
>   * camera.cpp - Camera device
>   */
>
> +#include <iomanip>
> +
>  #include <libcamera/camera.h>
>  #include <libcamera/request.h>
>  #include <libcamera/stream.h>
> @@ -595,11 +597,23 @@ int Camera::configureStreams(const CameraConfiguration &config)
>  		return -EINVAL;
>  	}
>
> +	std::ostringstream msg("configuring streams:");
> +	unsigned int index = 0;
> +
>  	for (Stream *stream : config) {
>  		if (streams_.find(stream) == streams_.end())
>  			return -EINVAL;
> +
> +		const StreamConfiguration &cfg = config[stream];
> +		msg << " (" << index << ") " << cfg.width << "x"
> +		    << cfg.height << "-0x" << std::hex << std::setfill('0')
> +		    << std::setw(8) << cfg.pixelFormat;
> +
> +		index++;

When running with multiple streams I get:
INFO Camera camera.cpp:615  (0) 640x480-0x3231564e (1) 140xa0-0x3231564e

Stream (1) might seems like it is wrongly configured, but it is not,
it is just printed out as hex...

According to the std::hex function documentation, once it gets applied
to a stream, it sets its basefield to hexadecimal, and all numerical
values pushed to the stream will then be interepreted as hexadecimals.

A 'msg << std::dec;' before assembling the format description string,
fixes the issue for me.

Thanks
  j


>  	}
>
> +	LOG(Camera, Info) << msg.str();
> +
>  	ret = pipe_->configureStreams(this, config);
>  	if (ret)
>  		return ret;
> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
> index 924eb46c58d8..f2306efba3bf 100644
> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp
> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
> @@ -244,12 +244,6 @@ int PipelineHandlerIPU3::configureStreams(Camera *camera,
>  	ImgUDevice *imgu = data->imgu_;
>  	int ret;
>
> -	LOG(IPU3, Info)
> -		<< "Requested image format " << cfg.width << "x"
> -		<< cfg.height << "-0x" << std::hex << std::setfill('0')
> -		<< std::setw(8) << cfg.pixelFormat << " on camera '"
> -		<< camera->name() << "'";
> -
>  	/*
>  	 * Verify that the requested size respects the IPU3 alignement
>  	 * requirements (the image width shall be a multiple of 8 pixels and
> --
> Regards,
>
> Laurent Pinchart
>
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel@lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel

Patch

diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp
index 75a21008070b..bd381fa1cb56 100644
--- a/src/libcamera/camera.cpp
+++ b/src/libcamera/camera.cpp
@@ -5,6 +5,8 @@ 
  * camera.cpp - Camera device
  */
 
+#include <iomanip>
+
 #include <libcamera/camera.h>
 #include <libcamera/request.h>
 #include <libcamera/stream.h>
@@ -595,11 +597,23 @@  int Camera::configureStreams(const CameraConfiguration &config)
 		return -EINVAL;
 	}
 
+	std::ostringstream msg("configuring streams:");
+	unsigned int index = 0;
+
 	for (Stream *stream : config) {
 		if (streams_.find(stream) == streams_.end())
 			return -EINVAL;
+
+		const StreamConfiguration &cfg = config[stream];
+		msg << " (" << index << ") " << cfg.width << "x"
+		    << cfg.height << "-0x" << std::hex << std::setfill('0')
+		    << std::setw(8) << cfg.pixelFormat;
+
+		index++;
 	}
 
+	LOG(Camera, Info) << msg.str();
+
 	ret = pipe_->configureStreams(this, config);
 	if (ret)
 		return ret;
diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index 924eb46c58d8..f2306efba3bf 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -244,12 +244,6 @@  int PipelineHandlerIPU3::configureStreams(Camera *camera,
 	ImgUDevice *imgu = data->imgu_;
 	int ret;
 
-	LOG(IPU3, Info)
-		<< "Requested image format " << cfg.width << "x"
-		<< cfg.height << "-0x" << std::hex << std::setfill('0')
-		<< std::setw(8) << cfg.pixelFormat << " on camera '"
-		<< camera->name() << "'";
-
 	/*
 	 * Verify that the requested size respects the IPU3 alignement
 	 * requirements (the image width shall be a multiple of 8 pixels and