Fawkes API  Fawkes Development Version
firevision::ImageCompressor Class Referenceabstract

Image compressor interface. More...

#include <>>

Inheritance diagram for firevision::ImageCompressor:

Public Types

enum  CompressionDestination { COMP_DEST_FILE, COMP_DEST_MEM }
 Where to put the compressed image. More...
 

Public Member Functions

virtual ~ImageCompressor ()
 Virtual empty destructor. More...
 
virtual void set_image_dimensions (unsigned int width, unsigned int height)=0
 Set dimensions of image to compress. More...
 
virtual void set_image_buffer (colorspace_t cspace, unsigned char *buffer)=0
 Set image buffer to compress. More...
 
virtual void set_destination_buffer (unsigned char *buf, unsigned int buf_size)=0
 Set destination buffer (if compressing to memory). More...
 
virtual size_t compressed_size ()=0
 Get compressed size. More...
 
virtual void set_filename (const char *filename)=0
 Set file name. More...
 
virtual void set_compression_destination (CompressionDestination cd)=0
 Set compression destination. More...
 
virtual bool supports_compression_destination (CompressionDestination cd)=0
 Check if compressor supports desired compression destination. More...
 
virtual size_t recommended_compressed_buffer_size ()=0
 Get the recommended size for the compressed buffer. More...
 
virtual void compress ()=0
 Compress image. More...
 
virtual bool supports_vflip ()=0
 Check if image compressor can do vflip during compress. More...
 
virtual void set_vflip (bool enable)=0
 Enable or disable vflipping. More...
 

Detailed Description

Image compressor interface.

Definition at line 35 of file imagecompressor.h.

Member Enumeration Documentation

◆ CompressionDestination

Where to put the compressed image.

Enumerator
COMP_DEST_FILE 

write compressed image to file

COMP_DEST_MEM 

write compressed image to buffer in memory

Definition at line 39 of file imagecompressor.h.

Constructor & Destructor Documentation

◆ ~ImageCompressor()

firevision::ImageCompressor::~ImageCompressor ( )
virtual

Virtual empty destructor.

Definition at line 95 of file imagecompressor.cpp.

Member Function Documentation

◆ compress()

◆ compressed_size()

size_t firevision::ImageCompressor::compressed_size ( )
pure virtual

◆ recommended_compressed_buffer_size()

size_t firevision::ImageCompressor::recommended_compressed_buffer_size ( )
pure 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

Implemented in firevision::JpegImageCompressor, firevision::JpegImageCompressorMMAL, and firevision::JpegImageCompressorLibJpeg.

Referenced by firevision::JpegImageCompressor::recommended_compressed_buffer_size(), and firevision::CompressedImageWriter::write().

◆ set_compression_destination()

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

◆ set_destination_buffer()

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

Set destination buffer (if compressing to memory).

Parameters
bufbuffer
buf_sizebuffer size

Implemented in firevision::JpegImageCompressor, firevision::JpegImageCompressorMMAL, and firevision::JpegImageCompressorLibJpeg.

Referenced by firevision::JpegImageCompressor::set_destination_buffer(), and firevision::CompressedImageWriter::write().

◆ set_filename()

void firevision::ImageCompressor::set_filename ( const char *  filename)
pure virtual

◆ set_image_buffer()

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

◆ set_image_dimensions()

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

◆ set_vflip()

void firevision::ImageCompressor::set_vflip ( bool  enable)
pure 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.

Implemented in firevision::JpegImageCompressor, firevision::JpegImageCompressorMMAL, and firevision::JpegImageCompressorLibJpeg.

Referenced by firevision::JpegImageCompressor::set_vflip().

◆ supports_compression_destination()

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

Check if compressor supports desired compression destination.

Parameters
cdcompression destination
Returns
true if supported, false otherwise

Implemented in firevision::JpegImageCompressor, firevision::JpegImageCompressorMMAL, and firevision::JpegImageCompressorLibJpeg.

Referenced by firevision::JpegImageCompressor::supports_compression_destination(), and firevision::CompressedImageWriter::write().

◆ supports_vflip()

bool firevision::ImageCompressor::supports_vflip ( )
pure 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.

Implemented in firevision::JpegImageCompressor, firevision::JpegImageCompressorMMAL, and firevision::JpegImageCompressorLibJpeg.

Referenced by firevision::JpegImageCompressor::supports_vflip().


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