[3/4] virtual: Validate stride and frameSize
diff mbox series

Message ID 20261008211149.51765-4-robert.mader@collabora.com
State New
Headers show
Series
  • virtual: Support more common pixel formats
Related show

Commit Message

Robert Mader Oct. 8, 2026, 9:11 p.m. UTC
If a client requested a specific stride that's incompatible with what
we'll produce, let the client know.

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

Patch
diff mbox series

diff --git a/src/libcamera/pipeline/virtual/virtual.cpp b/src/libcamera/pipeline/virtual/virtual.cpp
index 565b66477363..349cb88a3f05 100644
--- a/src/libcamera/pipeline/virtual/virtual.cpp
+++ b/src/libcamera/pipeline/virtual/virtual.cpp
@@ -231,13 +231,20 @@  CameraConfiguration::Status VirtualCameraConfiguration::validate()
 			adjusted = true;
 		}
 
+		auto stride = info.stride(cfg.size.width, 0);
+		auto frameSize = info.frameSize(cfg.size);
+		if ((cfg.stride && cfg.stride != stride) ||
+		    (cfg.frameSize && cfg.frameSize != frameSize)) {
+			status = Adjusted;
+			adjusted = true;
+		}
+		cfg.stride = stride;
+		cfg.frameSize = frameSize;
+
 		if (adjusted)
 			LOG(Virtual, Info)
 				<< "Stream configuration adjusted to " << cfg.toString();
 
-		cfg.stride = info.stride(cfg.size.width, 0, 1);
-		cfg.frameSize = info.frameSize(cfg.size, 1);
-
 		cfg.bufferCount = VirtualCameraConfiguration::kBufferCount;
 	}