pipeline: virtual: Use ColorSpace::Smpte170m
diff mbox series

Message ID 20260731133327.126689-1-robert.mader@collabora.com
State New
Headers show
Series
  • pipeline: virtual: Use ColorSpace::Smpte170m
Related show

Commit Message

Robert Mader July 31, 2026, 1:33 p.m. UTC
ColorSpace::Smpte170m notably has YcbcrEncoding::Rec601, which is what
libyuv::ARGBToNV12() - used in TestPatternGenerator - uses internally.
Newer/upcoming versions of libyuv will have ARGBToNV12Matrix(), allowing
us to explicitly request the corresponding matrix for
ColorSpace::Rec709, however for now let's honor to the implicit value in
order to allow color space aware clients to render as correctly as
possible.

Note that I'm not fully sure if the same applies to libyuv::MJPGToNV12() in
ImageFrameGenerator, however I *think* so.

Signed-off-by: Robert Mader <robert.mader@collabora.com>
---
 src/libcamera/pipeline/virtual/virtual.cpp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Patch
diff mbox series

diff --git a/src/libcamera/pipeline/virtual/virtual.cpp b/src/libcamera/pipeline/virtual/virtual.cpp
index 81d2dddab815..9d59c26e2290 100644
--- a/src/libcamera/pipeline/virtual/virtual.cpp
+++ b/src/libcamera/pipeline/virtual/virtual.cpp
@@ -208,8 +208,8 @@  CameraConfiguration::Status VirtualCameraConfiguration::validate()
 			adjusted = true;
 		}
 
-		if (cfg.colorSpace != ColorSpace::Rec709) {
-			cfg.colorSpace = ColorSpace::Rec709;
+		if (cfg.colorSpace != ColorSpace::Smpte170m) {
+			cfg.colorSpace = ColorSpace::Smpte170m;
 			status = Adjusted;
 			adjusted = true;
 		}
@@ -283,7 +283,7 @@  PipelineHandlerVirtual::generateConfiguration(Camera *camera,
 		cfg.pixelFormat = pixelFormat;
 		cfg.size = data->config_.maxResolutionSize;
 		cfg.bufferCount = VirtualCameraConfiguration::kBufferCount;
-		cfg.colorSpace = ColorSpace::Rec709;
+		cfg.colorSpace = ColorSpace::Smpte170m;
 
 		config->addConfiguration(cfg);
 	}