/* SPDX-License-Identifier: LGPL-2.1-or-later */ /* * Copyright (C) 2020, Google Inc. * * encoder_libjpeg.h - JPEG encoding using libjpeg */ #pragma once #include "encoder.h" #include #include "libcamera/internal/formats.h" #include class EncoderLibJpeg : public Encoder { public: EncoderLibJpeg(); ~EncoderLibJpeg(); int configure(const libcamera::StreamConfiguration &cfg) override; int encode(Camera3RequestDescriptor::StreamBuffer *buffer, libcamera::Span exifData, unsigned int quality) override; int encode(const std::vector> &planes, libcamera::Span destination, libcamera::Span exifData, unsigned int quality); private: void compressRGB(const std::vector> &planes); void compressNV(const std::vector> &planes); struct jpeg_compress_struct compress_; struct jpeg_error_mgr jerr_; const libcamera::PixelFormatInfo *pixelFormatInfo_; bool nv_; bool nvSwap_; };