Fawkes API  Fawkes Development Version
firevision::JpegImageCompressor Class Reference

Jpeg image compressor. More...

#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)
 Set dimensions of image to compress. More...
 
virtual void set_image_buffer (colorspace_t cspace, unsigned char *buffer)
 Set image buffer to compress. More...
 
virtual void set_destination_buffer (unsigned char *buf, unsigned int buf_size)
 Set destination buffer (if compressing to memory). More...
 
virtual size_t compressed_size ()
 Get compressed size. More...
 
virtual void set_filename (const char *filename)
 Set file name. More...
 
virtual void set_compression_destination (ImageCompressor::CompressionDestination cd)
 Set compression destination. More...
 
virtual bool supports_compression_destination (ImageCompressor::CompressionDestination cd)
 Check if compressor supports desired compression destination. More...
 
virtual void compress ()
 Compress image. More...
 
virtual size_t recommended_compressed_buffer_size ()
 Get the recommended size for the compressed buffer. More...
 
virtual bool supports_vflip ()
 Check if image compressor can do vflip during compress. More...
 
virtual void set_vflip (bool enable)
 Enable or disable vflipping. More...
 
- 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 34 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 38 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 44 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 53 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 76 of file jpeg_compressor.cpp.

◆ ~JpegImageCompressor()

firevision::JpegImageCompressor::~JpegImageCompressor ( )
virtual

Destructor.

Definition at line 101 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 70 of file jpeg_compressor.h.

References firevision::ImageCompressor::recommended_compressed_buffer_size().

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 64 of file jpeg_compressor.h.

References firevision::ImageCompressor::set_compression_destination().

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 58 of file jpeg_compressor.h.

References firevision::ImageCompressor::set_destination_buffer().

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 62 of file jpeg_compressor.h.

References firevision::ImageCompressor::set_filename().

◆ 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 56 of file jpeg_compressor.h.

References firevision::ImageCompressor::set_image_buffer().

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 54 of file jpeg_compressor.h.

References firevision::ImageCompressor::set_image_dimensions().

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 74 of file jpeg_compressor.h.

References firevision::ImageCompressor::set_vflip().

◆ 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 66 of file jpeg_compressor.h.

References firevision::ImageCompressor::supports_compression_destination().

◆ 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 72 of file jpeg_compressor.h.

References firevision::ImageCompressor::supports_vflip().


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