[libcamera-devel] cam: Support RGB888 texture in sdl sink

Pavel Machek pavel at ucw.cz
Tue Dec 12 18:36:30 CET 2023


    
Briefly tested on PinePhone, it is useful for SoftISP testing.
    
Signed-off-by: Pavel Machek <pavel at ucw.cz>

diff --git a/src/apps/cam/sdl_sink.cpp b/src/apps/cam/sdl_sink.cpp
index a2f4abc1..105fa781 100644
--- a/src/apps/cam/sdl_sink.cpp
+++ b/src/apps/cam/sdl_sink.cpp
@@ -76,6 +76,9 @@ int SDLSink::configure(const libcamera::CameraConfiguration &config)
 	case libcamera::formats::YUYV:
 		texture_ = std::make_unique<SDLTextureYUYV>(rect_, cfg.stride);
 		break;
+	case libcamera::formats::RGB888:
+		texture_ = std::make_unique<SDLTextureRGB888>(rect_, cfg.stride);
+		break;
 	default:
 		std::cerr << "Unsupported pixel format "
 			  << cfg.pixelFormat.toString() << std::endl;
diff --git a/src/apps/cam/sdl_texture_yuv.cpp b/src/apps/cam/sdl_texture_yuv.cpp
index b29c3b93..bb066540 100644
--- a/src/apps/cam/sdl_texture_yuv.cpp
+++ b/src/apps/cam/sdl_texture_yuv.cpp
@@ -31,3 +31,13 @@ void SDLTextureYUYV::update(const std::vector<libcamera::Span<const uint8_t>> &d
 {
 	SDL_UpdateTexture(ptr_, &rect_, data[0].data(), stride_);
 }
+
+SDLTextureRGB888::SDLTextureRGB888(const SDL_Rect &rect, unsigned int stride)
+	: SDLTexture(rect, SDL_PIXELFORMAT_BGR24, stride)
+{
+}
+
+void SDLTextureRGB888::update(const std::vector<libcamera::Span<const uint8_t>> &data)
+{
+	SDL_UpdateTexture(ptr_, &rect_, data[0].data(), stride_);
+}
diff --git a/src/apps/cam/sdl_texture_yuv.h b/src/apps/cam/sdl_texture_yuv.h
index 310e4e50..0df6b445 100644
--- a/src/apps/cam/sdl_texture_yuv.h
+++ b/src/apps/cam/sdl_texture_yuv.h
@@ -24,3 +24,10 @@ public:
 	SDLTextureYUYV(const SDL_Rect &rect, unsigned int stride);
 	void update(const std::vector<libcamera::Span<const uint8_t>> &data) override;
 };
+
+class SDLTextureRGB888 : public SDLTexture
+{
+public:
+	SDLTextureRGB888(const SDL_Rect &rect, unsigned int stride);
+	void update(const std::vector<libcamera::Span<const uint8_t>> &data) override;
+};

-- 
People of Russia, stop Putin before his war on Ukraine escalates.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <https://lists.libcamera.org/pipermail/libcamera-devel/attachments/20231212/f45fa8b0/attachment.sig>


More information about the libcamera-devel mailing list