Fawkes API  Fawkes Development Version
firevision::JpegImageCompressorMMAL Class Reference

Jpeg image compressor. More...

#include <>>

Inheritance diagram for firevision::JpegImageCompressorMMAL:

Public Member Functions

 JpegImageCompressorMMAL (unsigned int quality=80)
 Constructor. More...
 
virtual ~JpegImageCompressorMMAL ()
 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...
 

Additional Inherited Members

- Public Types inherited from firevision::ImageCompressor
enum  CompressionDestination { COMP_DEST_FILE, COMP_DEST_MEM }
 Where to put the compressed image. More...
 

Detailed Description

Jpeg image compressor.

This JPEG image compressor implementation uses the MMAL hardware encoder of the Raspberry Pi.

Author
Tim Niemueller

Definition at line 42 of file jpeg_compressor_mmal.h.

Constructor & Destructor Documentation

◆ JpegImageCompressorMMAL()

firevision::JpegImageCompressorMMAL::JpegImageCompressorMMAL ( unsigned int  quality = 80)

Constructor.

Parameters
qualityJPEG quality in percent (1-100)

Definition at line 191 of file jpeg_compressor_mmal.cpp.

◆ ~JpegImageCompressorMMAL()

firevision::JpegImageCompressorMMAL::~JpegImageCompressorMMAL ( )
virtual

Destructor.

Definition at line 202 of file jpeg_compressor_mmal.cpp.

Member Function Documentation

◆ compress()

void firevision::JpegImageCompressorMMAL::compress ( )
virtual

Compress image.

Implements firevision::ImageCompressor.

Definition at line 223 of file jpeg_compressor_mmal.cpp.

◆ compressed_size()

size_t firevision::JpegImageCompressorMMAL::compressed_size ( )
virtual

Get compressed size.

Returns
compressed size

Implements firevision::ImageCompressor.

Definition at line 396 of file jpeg_compressor_mmal.cpp.

◆ recommended_compressed_buffer_size()

size_t firevision::JpegImageCompressorMMAL::recommended_compressed_buffer_size ( )
virtual

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 402 of file jpeg_compressor_mmal.cpp.

◆ set_compression_destination()

void firevision::JpegImageCompressorMMAL::set_compression_destination ( ImageCompressor::CompressionDestination  cd)
virtual

Set compression destination.

Parameters
cdcompression destination

Implements firevision::ImageCompressor.

Definition at line 374 of file jpeg_compressor_mmal.cpp.

◆ set_destination_buffer()

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

Set destination buffer (if compressing to memory).

Parameters
bufbuffer
buf_sizebuffer size

Implements firevision::ImageCompressor.

Definition at line 388 of file jpeg_compressor_mmal.cpp.

◆ set_filename()

void firevision::JpegImageCompressorMMAL::set_filename ( const char *  filename)
virtual

Set file name.

Parameters
filenamefile name (if compressing to file)

Implements firevision::ImageCompressor.

Definition at line 409 of file jpeg_compressor_mmal.cpp.

◆ set_image_buffer()

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

Set image buffer to compress.

Parameters
cspacecolorspace of image
bufferbuffer that contains the image

Implements firevision::ImageCompressor.

Definition at line 363 of file jpeg_compressor_mmal.cpp.

◆ set_image_dimensions()

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

Set dimensions of image to compress.

Parameters
widthwidth of image in pixels
heightheight of image in pixels

Implements firevision::ImageCompressor.

Definition at line 351 of file jpeg_compressor_mmal.cpp.

◆ set_vflip()

void firevision::JpegImageCompressorMMAL::set_vflip ( bool  enable)
virtual

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 217 of file jpeg_compressor_mmal.cpp.

◆ supports_compression_destination()

bool firevision::JpegImageCompressorMMAL::supports_compression_destination ( ImageCompressor::CompressionDestination  cd)
virtual

Check if compressor supports desired compression destination.

Parameters
cdcompression destination
Returns
true if supported, false otherwise

Implements firevision::ImageCompressor.

Definition at line 381 of file jpeg_compressor_mmal.cpp.

◆ supports_vflip()

bool firevision::JpegImageCompressorMMAL::supports_vflip ( )
virtual

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 210 of file jpeg_compressor_mmal.cpp.


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