Fawkes API  Fawkes Development Version
firevision::JpegImageCompressor Class Reference

#include <>>

Inheritance diagram for firevision::JpegImageCompressor:

Public Types

enum  JpegColorspace { JPEG_CS_RGB, JPEG_CS_YUV }
 JPEG color space. More...
 
enum  JpegCompressorImplementation { JPEG_CI_LIBJPEG, JPEG_CI_MMAL }
 JPEG color space. More...
 
- Public Types inherited from firevision::ImageCompressor
enum  CompressionDestination { COMP_DEST_FILE, COMP_DEST_MEM }
 Where to put the compressed image. More...
 

Public Member Functions

 JpegImageCompressor (unsigned int quality=80, JpegColorspace jcs=JPEG_CS_RGB)
 Constructor. More...
 
 JpegImageCompressor (JpegCompressorImplementation impl_type, unsigned int quality=80, JpegColorspace jcs=JPEG_CS_RGB)
 Constructor. More...
 
virtual ~JpegImageCompressor ()
 Destructor. More...
 
virtual void set_image_dimensions (unsigned int width, unsigned int height)
 
virtual void set_image_buffer (colorspace_t cspace, unsigned char *buffer)
 
virtual void set_destination_buffer (unsigned char *buf, unsigned int buf_size)
 
virtual size_t compressed_size ()
 
virtual void set_filename (const char *filename)
 
virtual void set_compression_destination (ImageCompressor::CompressionDestination cd)
 
virtual bool supports_compression_destination (ImageCompressor::CompressionDestination cd)
 
virtual void compress ()
 
virtual size_t recommended_compressed_buffer_size ()
 
virtual bool supports_vflip ()
 
virtual void set_vflip (bool enable)
 
- Public Member Functions inherited from firevision::ImageCompressor
virtual ~ImageCompressor ()
 Virtual empty destructor. More...
 

Detailed Description

Jpeg image compressor. The compressor can choose from several actual implementations. The default is to use the system's version of libjpeg. On the Raspberry Pi the MMAL implementation (which uses VideoCore) is preferred.

Author
Tim Niemueller

Definition at line 35 of file jpeg_compressor.h.

Member Enumeration Documentation

◆ JpegColorspace

JPEG color space.

Enumerator
JPEG_CS_RGB 

RGB.

JPEG_CS_YUV 

YUV444 packed.

Definition at line 44 of file jpeg_compressor.h.

◆ JpegCompressorImplementation

JPEG color space.

Enumerator
JPEG_CI_LIBJPEG 

Force usage of libjpeg for compression.

JPEG_CI_MMAL 

Force usage of MMAL for compression.

Definition at line 50 of file jpeg_compressor.h.

Constructor & Destructor Documentation

◆ JpegImageCompressor() [1/2]

firevision::JpegImageCompressor::JpegImageCompressor ( unsigned int  quality = 80,
JpegColorspace  jcs = JPEG_CS_RGB 
)
explicit

Constructor.

Parameters
qualityJPEG quality in percent
jcsJpeg colorspace

Definition at line 48 of file jpeg_compressor.cpp.

◆ JpegImageCompressor() [2/2]

firevision::JpegImageCompressor::JpegImageCompressor ( JpegCompressorImplementation  impl_type,
unsigned int  quality = 80,
JpegColorspace  jcs = JPEG_CS_RGB 
)
explicit

Constructor.

Parameters
impl_typeforce usage of this implementation type
qualityJPEG quality in percent
jcsJpeg colorspace

Definition at line 70 of file jpeg_compressor.cpp.

◆ ~JpegImageCompressor()

firevision::JpegImageCompressor::~JpegImageCompressor ( )
virtual

Destructor.

Definition at line 96 of file jpeg_compressor.cpp.

Member Function Documentation

◆ compress()

virtual void firevision::JpegImageCompressor::compress ( )
inlinevirtual

◆ compressed_size()

virtual size_t firevision::JpegImageCompressor::compressed_size ( )
inlinevirtual

◆ recommended_compressed_buffer_size()

virtual size_t firevision::JpegImageCompressor::recommended_compressed_buffer_size ( )
inlinevirtual

Get the recommended size for the compressed buffer. It is not guaranteed that this size is really enough for compression but in most cases this should be suitable.

Returns
recommended buffer size

Implements firevision::ImageCompressor.

Definition at line 102 of file jpeg_compressor.h.

References firevision::ImageCompressor::set_vflip().

Referenced by fawkes::WebviewJpegStreamProducer::loop(), and firevision::FuseServerClientThread::process_getimage_message().

◆ set_compression_destination()

virtual void firevision::JpegImageCompressor::set_compression_destination ( ImageCompressor::CompressionDestination  cd)
inlinevirtual

Set compression destination.

Parameters
cdcompression destination

Implements firevision::ImageCompressor.

Definition at line 87 of file jpeg_compressor.h.

References firevision::ImageCompressor::compress().

Referenced by firevision::FuseServerClientThread::process_getimage_message().

◆ set_destination_buffer()

virtual void firevision::JpegImageCompressor::set_destination_buffer ( unsigned char *  buf,
unsigned int  buf_size 
)
inlinevirtual

Set destination buffer (if compressing to memory).

Parameters
bufbuffer
buf_sizebuffer size

Implements firevision::ImageCompressor.

Definition at line 72 of file jpeg_compressor.h.

References firevision::ImageCompressor::set_filename().

Referenced by fawkes::WebviewJpegStreamProducer::loop(), and firevision::FuseServerClientThread::process_getimage_message().

◆ set_filename()

virtual void firevision::JpegImageCompressor::set_filename ( const char *  filename)
inlinevirtual

Set file name.

Parameters
filenamefile name (if compressing to file)

Implements firevision::ImageCompressor.

Definition at line 82 of file jpeg_compressor.h.

References firevision::ImageCompressor::supports_compression_destination().

◆ set_image_buffer()

virtual void firevision::JpegImageCompressor::set_image_buffer ( colorspace_t  cspace,
unsigned char *  buffer 
)
inlinevirtual

Set image buffer to compress

Parameters
cspacecolorspace of image
bufferbuffer that contains the image

Implements firevision::ImageCompressor.

Definition at line 67 of file jpeg_compressor.h.

References firevision::ImageCompressor::compressed_size().

Referenced by firevision::FuseServerClientThread::process_getimage_message().

◆ set_image_dimensions()

virtual void firevision::JpegImageCompressor::set_image_dimensions ( unsigned int  width,
unsigned int  height 
)
inlinevirtual

Set dimensions of image to compress.

Parameters
widthwidth of image in pixels
heightheight of image in pixels

Implements firevision::ImageCompressor.

Definition at line 62 of file jpeg_compressor.h.

References firevision::ImageCompressor::set_destination_buffer().

Referenced by firevision::FuseServerClientThread::process_getimage_message().

◆ set_vflip()

virtual void firevision::JpegImageCompressor::set_vflip ( bool  enable)
inlinevirtual

Enable or disable vflipping. This shall throw an exception if vflipping is not supported.

Parameters
enabletrue to enable vflipping, false to disable
Exceptions
Exceptionthrown if vflipping is not supported.

Implements firevision::ImageCompressor.

Definition at line 112 of file jpeg_compressor.h.

◆ supports_compression_destination()

virtual bool firevision::JpegImageCompressor::supports_compression_destination ( ImageCompressor::CompressionDestination  cd)
inlinevirtual

Check if compressor supports desired compression destination.

Parameters
cdcompression destination
Returns
true if supported, false otherwise

Implements firevision::ImageCompressor.

Definition at line 92 of file jpeg_compressor.h.

References firevision::ImageCompressor::recommended_compressed_buffer_size().

◆ supports_vflip()

virtual bool firevision::JpegImageCompressor::supports_vflip ( )
inlinevirtual

Check if image compressor can do vflip during compress.

Vertical flipping (having the image upside down) is an operation necessary for example for cameras hanging upside down. During compression when the buffer is typically copied or converted line-wise anyway, this is a particularly cheap operation. Therfore we provide an API to implement this.

Returns
true, if the image compressor supports vflipping, false otherwise.

Implements firevision::ImageCompressor.

Definition at line 107 of file jpeg_compressor.h.


The documentation for this class was generated from the following files: