From 998f4de65ebccf638b19a90172db74b2dc469c78 Mon Sep 17 00:00:00 2001 From: Kieran Bingham Date: Wed, 24 Jun 2020 14:15:15 +0100 Subject: android: Introduce JPEG encoding Provide an encoder interface and implement a JPEG encoder using libjpeg. Reviewed-by: Jacopo Mondi Signed-off-by: Kieran Bingham --- src/android/jpeg/encoder_libjpeg.h | 42 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/android/jpeg/encoder_libjpeg.h (limited to 'src/android/jpeg/encoder_libjpeg.h') diff --git a/src/android/jpeg/encoder_libjpeg.h b/src/android/jpeg/encoder_libjpeg.h new file mode 100644 index 00000000..aed081a4 --- /dev/null +++ b/src/android/jpeg/encoder_libjpeg.h @@ -0,0 +1,42 @@ +/* SPDX-License-Identifier: GPL-2.0-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/buffer.h" +#include "libcamera/internal/formats.h" + +#include + +class EncoderLibJpeg : public Encoder +{ +public: + EncoderLibJpeg(); + ~EncoderLibJpeg(); + + int configure(const libcamera::StreamConfiguration &cfg) override; + int encode(const libcamera::FrameBuffer *source, + const libcamera::Span &destination) override; + +private: + void compressRGB(const libcamera::MappedBuffer *frame); + void compressNV(const libcamera::MappedBuffer *frame); + + struct jpeg_compress_struct compress_; + struct jpeg_error_mgr jerr_; + + unsigned int quality_; + + const libcamera::PixelFormatInfo *pixelFormatInfo_; + + bool nv_; + bool nvSwap_; +}; + +#endif /* __ANDROID_JPEG_ENCODER_LIBJPEG_H__ */ -- cgit v1.2.1