From 153b468930a9df22debb28889312f8a5c511ee04 Mon Sep 17 00:00:00 2001 From: Eric Curtin Date: Fri, 20 May 2022 20:01:06 +0100 Subject: cam: sdl_sink: Add MJPG support to SDL sink So we have at least two supported capturing pixel formats (although many possible output pixel formats thanks to SDL conversion). MJPG support only built in if SDL2_image is available, provides decompression. Signed-off-by: Eric Curtin Reviewed-by: Laurent Pinchart Reviewed-by: Kieran Bingham Tested-by: Jacopo Mondi Signed-off-by: Laurent Pinchart --- src/cam/sdl_texture_mjpg.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/cam/sdl_texture_mjpg.cpp (limited to 'src/cam/sdl_texture_mjpg.cpp') diff --git a/src/cam/sdl_texture_mjpg.cpp b/src/cam/sdl_texture_mjpg.cpp new file mode 100644 index 00000000..69e99ad3 --- /dev/null +++ b/src/cam/sdl_texture_mjpg.cpp @@ -0,0 +1,25 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * Copyright (C) 2022, Ideas on Board Oy + * + * sdl_texture_mjpg.cpp - SDL Texture MJPG + */ + +#include "sdl_texture_mjpg.h" + +#include + +using namespace libcamera; + +SDLTextureMJPG::SDLTextureMJPG(const SDL_Rect &rect) + : SDLTexture(rect, SDL_PIXELFORMAT_RGB24, 0) +{ +} + +void SDLTextureMJPG::update(const Span &data) +{ + SDL_RWops *bufferStream = SDL_RWFromMem(data.data(), data.size()); + SDL_Surface *frame = IMG_Load_RW(bufferStream, 0); + SDL_UpdateTexture(ptr_, nullptr, frame->pixels, frame->pitch); + SDL_FreeSurface(frame); +} -- cgit v1.2.1