[libcamera-devel] [PATCH 1/4] cam: sdl_texture_yuyv: Make line stride configurable

Laurent Pinchart laurent.pinchart at ideasonboard.com
Sun Aug 7 04:17:15 CEST 2022


The line stride of the texture is currently hardcoded based on the image
width, which may not match the real stride. Use the stride value from
the stream configuration instead.

Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
 src/cam/sdl_sink.cpp         | 2 +-
 src/cam/sdl_texture_yuyv.cpp | 4 ++--
 src/cam/sdl_texture_yuyv.h   | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/cam/sdl_sink.cpp b/src/cam/sdl_sink.cpp
index 19fdfd6dced5..a59d07519e1f 100644
--- a/src/cam/sdl_sink.cpp
+++ b/src/cam/sdl_sink.cpp
@@ -68,7 +68,7 @@ int SDLSink::configure(const libcamera::CameraConfiguration &config)
 		break;
 #endif
 	case libcamera::formats::YUYV:
-		texture_ = std::make_unique<SDLTextureYUYV>(rect_);
+		texture_ = std::make_unique<SDLTextureYUYV>(rect_, cfg.stride);
 		break;
 	default:
 		std::cerr << "Unsupported pixel format "
diff --git a/src/cam/sdl_texture_yuyv.cpp b/src/cam/sdl_texture_yuyv.cpp
index 637c0900edff..cb51fb0ef478 100644
--- a/src/cam/sdl_texture_yuyv.cpp
+++ b/src/cam/sdl_texture_yuyv.cpp
@@ -9,8 +9,8 @@
 
 using namespace libcamera;
 
-SDLTextureYUYV::SDLTextureYUYV(const SDL_Rect &rect)
-	: SDLTexture(rect, SDL_PIXELFORMAT_YUY2, 4 * ((rect.w + 1) / 2))
+SDLTextureYUYV::SDLTextureYUYV(const SDL_Rect &rect, unsigned int stride)
+	: SDLTexture(rect, SDL_PIXELFORMAT_YUY2, stride)
 {
 }
 
diff --git a/src/cam/sdl_texture_yuyv.h b/src/cam/sdl_texture_yuyv.h
index 529a72d6a40e..81e51381ec62 100644
--- a/src/cam/sdl_texture_yuyv.h
+++ b/src/cam/sdl_texture_yuyv.h
@@ -12,6 +12,6 @@
 class SDLTextureYUYV : public SDLTexture
 {
 public:
-	SDLTextureYUYV(const SDL_Rect &rect);
+	SDLTextureYUYV(const SDL_Rect &rect, unsigned int stride);
 	void update(libcamera::Span<const uint8_t> data) override;
 };
-- 
Regards,

Laurent Pinchart



More information about the libcamera-devel mailing list