summaryrefslogtreecommitdiff
path: root/src/cam/sdl_texture_mjpg.cpp
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-10-20 00:44:55 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-10-20 13:36:25 +0300
commit84ad104499d9efc0253dae1a60ee070ed375ad95 (patch)
treed10fd53eb79cebb28fa3f72b18b46dddb6382b83 /src/cam/sdl_texture_mjpg.cpp
parentdaf3f4b59f4ea0ecb42c6a39fe909f071d3a2842 (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.cpp83
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_);
-}