[libcamera-devel] cam: Support RGB888 texture in sdl sink
Pavel Machek
pavel at ucw.cz
Wed Dec 6 12:00:27 CET 2023
Lightly tested; this is useful for SoftISP testing. I get wrong
red/blue swapped, but that may be due to my SoftISP hacks.
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..c4c4144b 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_RGB24, 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/20231206/e9f754a4/attachment.sig>
More information about the libcamera-devel
mailing list