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