diff options
Diffstat (limited to 'xbmc/pictures/JpegParse.h')
-rw-r--r-- | xbmc/pictures/JpegParse.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/xbmc/pictures/JpegParse.h b/xbmc/pictures/JpegParse.h new file mode 100644 index 0000000..11d2ca6 --- /dev/null +++ b/xbmc/pictures/JpegParse.h @@ -0,0 +1,63 @@ +#pragma once + +#include "ExifParse.h" +#include "IptcParse.h" + +#include <stdio.h> + +//-------------------------------------------------------------------------- +// JPEG markers consist of one or more 0xFF bytes, followed by a marker +// code byte (which is not an FF). Here are the marker codes of interest +// in this application. +//-------------------------------------------------------------------------- + +#define M_SOF0 0xC0 // Start Of Frame N +#define M_SOF1 0xC1 // N indicates which compression process +#define M_SOF2 0xC2 // Only SOF0-SOF2 are now in common use +#define M_SOF3 0xC3 +#define M_SOF5 0xC5 // NB: codes C4 and CC are NOT SOF markers +#define M_SOF6 0xC6 +#define M_SOF7 0xC7 +#define M_SOF9 0xC9 +#define M_SOF10 0xCA +#define M_SOF11 0xCB +#define M_SOF13 0xCD +#define M_SOF14 0xCE +#define M_SOF15 0xCF +#define M_SOI 0xD8 // Start Of Image (beginning of datastream) +#define M_EOI 0xD9 // End Of Image (end of datastream) +#define M_SOS 0xDA // Start Of Scan (begins compressed data) +#define M_JFIF 0xE0 // Jfif marker +#define M_EXIF 0xE1 // Exif marker +#define M_COM 0xFE // COMment +#define M_DQT 0xDB +#define M_DHT 0xC4 +#define M_DRI 0xDD +#define M_IPTC 0xED // IPTC marker + +namespace XFILE +{ + class CFile; +} + + +class CJpegParse +{ + public: + CJpegParse(); + ~CJpegParse(void) = default; + bool Process(const char *picFileName); + const ExifInfo_t* GetExifInfo() const { return &m_ExifInfo; } + const IPTCInfo_t* GetIptcInfo() const { return &m_IPTCInfo; } + + private: + bool ExtractInfo(XFILE::CFile& infile); + bool GetSection(XFILE::CFile& infile, const unsigned short sectionLength); + void ReleaseSection(void); + void ProcessSOFn(void); + + unsigned char* m_SectionBuffer; + ExifInfo_t m_ExifInfo; + IPTCInfo_t m_IPTCInfo; +}; + |