[3/3] pipeline: virtual: Rectify validation of colorspace
diff mbox series

Message ID 20260121090705.274081-4-uajain@igalia.com
State New
Headers show
Series
  • virtual: colorspace validation fix
Related show

Commit Message

Umang Jain Jan. 21, 2026, 9:07 a.m. UTC
Now that each frame generator class supports the colorspace
information using the colorspace() getter, use that to validate
(or set) the colorspace of a particular stream configuration instead
of a incorrect hard-coded one.

Fixes: 5d2d005306ad ("pipeline: virtual: Provide and validate colorspace")
Signed-off-by: Umang Jain <uajain@igalia.com>
---
 src/libcamera/pipeline/virtual/virtual.cpp | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Comments

Barnabás Pőcze Jan. 21, 2026, 9:37 a.m. UTC | #1
Hi


2026. 01. 21. 10:07 keltezéssel, Umang Jain írta:
> Now that each frame generator class supports the colorspace
> information using the colorspace() getter, use that to validate
> (or set) the colorspace of a particular stream configuration instead
> of a incorrect hard-coded one.
> 
> Fixes: 5d2d005306ad ("pipeline: virtual: Provide and validate colorspace")
> Signed-off-by: Umang Jain <uajain@igalia.com>
> ---

Looks ok to me.

Reviewed-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>


>   src/libcamera/pipeline/virtual/virtual.cpp | 8 ++++----
>   1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/src/libcamera/pipeline/virtual/virtual.cpp b/src/libcamera/pipeline/virtual/virtual.cpp
> index 40c35264..3d205a6c 100644
> --- a/src/libcamera/pipeline/virtual/virtual.cpp
> +++ b/src/libcamera/pipeline/virtual/virtual.cpp
> @@ -185,7 +185,7 @@ CameraConfiguration::Status VirtualCameraConfiguration::validate()
>   		status = Adjusted;
>   	}
>   
> -	for (StreamConfiguration &cfg : config_) {
> +	for (auto [i, cfg] : utils::enumerate(config_)) {
>   		bool adjusted = false;
>   		bool found = false;
>   		for (const auto &resolution : data_->config_.resolutions) {
> @@ -214,8 +214,9 @@ CameraConfiguration::Status VirtualCameraConfiguration::validate()
>   			adjusted = true;
>   		}
>   
> -		if (cfg.colorSpace != ColorSpace::Rec709) {
> -			cfg.colorSpace = ColorSpace::Rec709;
> +		const ColorSpace colorspace = data_->streamConfigs_[i].frameGenerator->colorspace();
> +		if (cfg.colorSpace != colorspace) {
> +			cfg.colorSpace = colorspace;
>   			status = Adjusted;
>   			adjusted = true;
>   		}
> @@ -289,7 +290,6 @@ PipelineHandlerVirtual::generateConfiguration(Camera *camera,
>   		cfg.pixelFormat = pixelFormat;
>   		cfg.size = data->config_.maxResolutionSize;
>   		cfg.bufferCount = VirtualCameraConfiguration::kBufferCount;
> -		cfg.colorSpace = ColorSpace::Rec709;
>   
>   		config->addConfiguration(cfg);
>   	}

Patch
diff mbox series

diff --git a/src/libcamera/pipeline/virtual/virtual.cpp b/src/libcamera/pipeline/virtual/virtual.cpp
index 40c35264..3d205a6c 100644
--- a/src/libcamera/pipeline/virtual/virtual.cpp
+++ b/src/libcamera/pipeline/virtual/virtual.cpp
@@ -185,7 +185,7 @@  CameraConfiguration::Status VirtualCameraConfiguration::validate()
 		status = Adjusted;
 	}
 
-	for (StreamConfiguration &cfg : config_) {
+	for (auto [i, cfg] : utils::enumerate(config_)) {
 		bool adjusted = false;
 		bool found = false;
 		for (const auto &resolution : data_->config_.resolutions) {
@@ -214,8 +214,9 @@  CameraConfiguration::Status VirtualCameraConfiguration::validate()
 			adjusted = true;
 		}
 
-		if (cfg.colorSpace != ColorSpace::Rec709) {
-			cfg.colorSpace = ColorSpace::Rec709;
+		const ColorSpace colorspace = data_->streamConfigs_[i].frameGenerator->colorspace();
+		if (cfg.colorSpace != colorspace) {
+			cfg.colorSpace = colorspace;
 			status = Adjusted;
 			adjusted = true;
 		}
@@ -289,7 +290,6 @@  PipelineHandlerVirtual::generateConfiguration(Camera *camera,
 		cfg.pixelFormat = pixelFormat;
 		cfg.size = data->config_.maxResolutionSize;
 		cfg.bufferCount = VirtualCameraConfiguration::kBufferCount;
-		cfg.colorSpace = ColorSpace::Rec709;
 
 		config->addConfiguration(cfg);
 	}