diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2022-10-20 00:44:55 +0300 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2022-10-20 13:36:25 +0300 |
commit | 84ad104499d9efc0253dae1a60ee070ed375ad95 (patch) | |
tree | d10fd53eb79cebb28fa3f72b18b46dddb6382b83 /src/cam/sdl_texture_mjpg.cpp | |
parent | daf3f4b59f4ea0ecb42c6a39fe909f071d3a2842 (diff) |
Move test applications to src/apps/
The cam and qcam test application share code, currently through a crude
hack that references the cam source files directly from the qcam
meson.build file. To prepare for the introduction of hosting that code
in a static library, move all applications to src/apps/.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Diffstat (limited to 'src/cam/sdl_texture_mjpg.cpp')
-rw-r--r-- | src/cam/sdl_texture_mjpg.cpp | 83 |
1 files changed, 0 insertions, 83 deletions
diff --git a/src/cam/sdl_texture_mjpg.cpp b/src/cam/sdl_texture_mjpg.cpp deleted file mode 100644 index da958e03..00000000 --- a/src/cam/sdl_texture_mjpg.cpp +++ /dev/null @@ -1,83 +0,0 @@ -/* 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 <iostream> -#include <setjmp.h> -#include <stdio.h> - -#include <jpeglib.h> - -using namespace libcamera; - -struct JpegErrorManager : public jpeg_error_mgr { - JpegErrorManager() - { - jpeg_std_error(this); - error_exit = errorExit; - output_message = outputMessage; - } - - static void errorExit(j_common_ptr cinfo) - { - JpegErrorManager *self = - static_cast<JpegErrorManager *>(cinfo->err); - longjmp(self->escape_, 1); - } - - static void outputMessage([[maybe_unused]] j_common_ptr cinfo) - { - } - - jmp_buf escape_; -}; - -SDLTextureMJPG::SDLTextureMJPG(const SDL_Rect &rect) - : SDLTexture(rect, SDL_PIXELFORMAT_RGB24, rect.w * 3), - rgb_(std::make_unique<unsigned char[]>(stride_ * rect.h)) -{ -} - -int SDLTextureMJPG::decompress(Span<const uint8_t> data) -{ - struct jpeg_decompress_struct cinfo; - - JpegErrorManager errorManager; - if (setjmp(errorManager.escape_)) { - /* libjpeg found an error */ - jpeg_destroy_decompress(&cinfo); - std::cerr << "JPEG decompression error" << std::endl; - return -EINVAL; - } - - cinfo.err = &errorManager; - jpeg_create_decompress(&cinfo); - - jpeg_mem_src(&cinfo, data.data(), data.size()); - - jpeg_read_header(&cinfo, TRUE); - - jpeg_start_decompress(&cinfo); - - for (int i = 0; cinfo.output_scanline < cinfo.output_height; ++i) { - JSAMPROW rowptr = rgb_.get() + i * stride_; - jpeg_read_scanlines(&cinfo, &rowptr, 1); - } - - jpeg_finish_decompress(&cinfo); - - jpeg_destroy_decompress(&cinfo); - - return 0; -} - -void SDLTextureMJPG::update(const std::vector<libcamera::Span<const uint8_t>> &data) -{ - decompress(data[0]); - SDL_UpdateTexture(ptr_, nullptr, rgb_.get(), stride_); -} |