00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __FIREVISION_UTILS_COMPRESSION_JPEG_COMPRESSOR_H_
00025 #define __FIREVISION_UTILS_COMPRESSION_JPEG_COMPRESSOR_H_
00026
00027 #include <fvutils/compression/imagecompressor.h>
00028
00029 namespace firevision {
00030 #if 0
00031 }
00032 #endif
00033
00034 class JpegImageCompressor : public ImageCompressor {
00035 public:
00036
00037
00038 enum JpegColorspace {
00039 JPEG_CS_RGB,
00040 JPEG_CS_YUV
00041 };
00042
00043 JpegImageCompressor(unsigned int quality = 80, JpegColorspace jcs = JPEG_CS_RGB);
00044 virtual ~JpegImageCompressor();
00045
00046 virtual void set_image_dimensions(unsigned int width, unsigned int height);
00047 virtual void set_image_buffer(colorspace_t cspace, unsigned char *buffer);
00048 virtual void set_destination_buffer(unsigned char *buf, unsigned int buf_size);
00049 virtual size_t compressed_size();
00050 virtual void set_filename(const char *filename);
00051 virtual void set_compression_destination(ImageCompressor::CompressionDestination cd);
00052 virtual bool supports_compression_destination(ImageCompressor::CompressionDestination cd);
00053 virtual void compress();
00054 virtual size_t recommended_compressed_buffer_size();
00055
00056 private:
00057 unsigned char *jpeg_buffer;
00058 unsigned int jpeg_buffer_size;
00059 unsigned char *buffer;
00060
00061 unsigned int quality;
00062
00063 unsigned int width;
00064 unsigned int height;
00065
00066 unsigned int jpeg_bytes;
00067
00068 const char *filename;
00069
00070 JpegColorspace jpeg_cs;
00071 CompressionDestination compdest;
00072 };
00073
00074 }
00075
00076 #endif