[v9,03/10] libcamera: simple: Don't use raw output formats with conversions
diff mbox series

Message ID 20250707155856.33436-4-mzamazal@redhat.com
State Superseded
Headers show
Series
  • Enable raw streams with software ISP
Related show

Commit Message

Milan Zamazal July 7, 2025, 3:58 p.m. UTC
In order to support raw streams, we need to add raw formats to software
ISP configurations.  In this preparatory patch, the raw formats are
excluded from output configurations for conversions.

Signed-off-by: Milan Zamazal <mzamazal@redhat.com>
---
 src/libcamera/pipeline/simple/simple.cpp | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

Comments

Umang Jain July 10, 2025, 2:37 p.m. UTC | #1
Hi Milan,

On Mon, Jul 07, 2025 at 05:58:48PM +0200, Milan Zamazal wrote:
> In order to support raw streams, we need to add raw formats to software
> ISP configurations.  In this preparatory patch, the raw formats are
> excluded from output configurations for conversions.
> 
> Signed-off-by: Milan Zamazal <mzamazal@redhat.com>

nit: Commit subject could be more clear and concise:
"libcamera: simple: Exclude raw configurations from output conversions"

Reviewed-by: Umang Jain <uajain@igalia.com>

> ---
>  src/libcamera/pipeline/simple/simple.cpp | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp
> index a900918db..368bf3020 100644
> --- a/src/libcamera/pipeline/simple/simple.cpp
> +++ b/src/libcamera/pipeline/simple/simple.cpp
> @@ -27,6 +27,7 @@
>  #include <libcamera/camera.h>
>  #include <libcamera/color_space.h>
>  #include <libcamera/control_ids.h>
> +#include <libcamera/pixel_format.h>
>  #include <libcamera/request.h>
>  #include <libcamera/stream.h>
>  
> @@ -261,6 +262,12 @@ static const SimplePipelineInfo supportedDevices[] = {
>  	{ "sun6i-csi", {}, false },
>  };
>  
> +bool isFormatRaw(const libcamera::PixelFormat &pixFmt)
> +{
> +	return libcamera::PixelFormatInfo::info(pixFmt).colourEncoding ==
> +	       libcamera::PixelFormatInfo::ColourEncodingRAW;
> +}
> +
>  } /* namespace */
>  
>  class SimpleCameraData : public Camera::Private
> @@ -1424,7 +1431,7 @@ int SimplePipelineHandler::configure(Camera *camera, CameraConfiguration *c)
>  
>  		cfg.setStream(&data->streams_[i]);
>  
> -		if (data->useConversion_)
> +		if (data->useConversion_ && !isFormatRaw(cfg.pixelFormat))
>  			outputCfgs.push_back(cfg);
>  	}
>  
> -- 
> 2.50.0
>

Patch
diff mbox series

diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp
index a900918db..368bf3020 100644
--- a/src/libcamera/pipeline/simple/simple.cpp
+++ b/src/libcamera/pipeline/simple/simple.cpp
@@ -27,6 +27,7 @@ 
 #include <libcamera/camera.h>
 #include <libcamera/color_space.h>
 #include <libcamera/control_ids.h>
+#include <libcamera/pixel_format.h>
 #include <libcamera/request.h>
 #include <libcamera/stream.h>
 
@@ -261,6 +262,12 @@  static const SimplePipelineInfo supportedDevices[] = {
 	{ "sun6i-csi", {}, false },
 };
 
+bool isFormatRaw(const libcamera::PixelFormat &pixFmt)
+{
+	return libcamera::PixelFormatInfo::info(pixFmt).colourEncoding ==
+	       libcamera::PixelFormatInfo::ColourEncodingRAW;
+}
+
 } /* namespace */
 
 class SimpleCameraData : public Camera::Private
@@ -1424,7 +1431,7 @@  int SimplePipelineHandler::configure(Camera *camera, CameraConfiguration *c)
 
 		cfg.setStream(&data->streams_[i]);
 
-		if (data->useConversion_)
+		if (data->useConversion_ && !isFormatRaw(cfg.pixelFormat))
 			outputCfgs.push_back(cfg);
 	}