summaryrefslogtreecommitdiff
path: root/test/serialization
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-10-26 21:15:11 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-10-28 03:32:58 +0200
commit6cbdc2859963e17bc897a4022f1d68170477d888 (patch)
treecc58ed2ab2abc10fd9b2eae1e021d083ee01aa88 /test/serialization
parent7adf3a069839c1b2c440b07ca2911ffc2d39e816 (diff)
libcamera: Use helper variable template for type traits
C++17 introduces helper variable templates for type traits, allowing shortening std::is_foo<T>::value to std::is_foo_v<T>. Use them through the code base. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Diffstat (limited to 'test/serialization')
0 files changed, 0 insertions, 0 deletions
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_); }