Files
AlarmServer/Image/JpegImage.h
T
2020-05-01 10:21:46 +02:00

55 lines
1.0 KiB
C++

#ifndef JPEGIMAGE_H
#define JPEGIMAGE_H
#include <string>
#include <vector>
#include <jpeglib.h>
namespace Image {
class JpegImage
{
public:
JpegImage();
void SetImageData(const std::string& data);
unsigned int Width() const;
unsigned int Height() const;
unsigned int StrideX() const;
unsigned int StrideY() const;
const std::vector<char>& Data() const;
private:
struct SourceMgr
{
struct jpeg_source_mgr pub;
const JOCTET *data;
size_t len;
};
typedef SourceMgr* SourceMgrPtr;
private:
static void InitSource(j_decompress_ptr pCinfo);
static boolean FillInputBuffer(j_decompress_ptr pCinfo);
static void SkipInputData(j_decompress_ptr pCinfo, long numBytes);
static void TermSource(j_decompress_ptr pCinfo);
void SetSourceMgr(j_decompress_ptr pCinfo, const char* pData, size_t len) const;
void DecompressImage(const char* pData, size_t len);
private:
unsigned int m_width;
unsigned int m_height;
unsigned int m_strideX;
unsigned int m_strideY;
std::vector<char> m_data;
};
} // namespace Image
#endif // JPEGIMAGE_H