28 #ifndef OR_INTERNALS_CIFFCONTAINER_H_ 29 #define OR_INTERNALS_CIFFCONTAINER_H_ 33 #include <sys/types.h> 38 #include <libopenraw/debug.h> 40 #include "io/stream.hpp" 41 #include "rawcontainer.hpp" 53 STORAGELOC_MASK = 0xc000,
63 TAG_NULLRECORD = 0x0000,
64 TAG_FREEBYTES = 0x0001,
65 TAG_COLORINFO1 = 0x0032,
66 TAG_FILEDESCRIPTION = 0x0805,
67 TAG_RAWMAKEMODEL = 0x080a,
68 TAG_FIRMWAREVERSION = 0x080b,
69 TAG_COMPONENTVERSION = 0x080c,
70 TAG_ROMOPERATIONMODE = 0x080d,
71 TAG_OWNERNAME = 0x0810,
72 TAG_IMAGETYPE = 0x0815,
73 TAG_ORIGINALFILENAME = 0x0816,
74 TAG_THUMBNAILFILENAME = 0x0817,
76 TAG_TARGETIMAGETYPE = 0x100a,
77 TAG_SHUTTERRELEASEMETHOD = 0x1010,
78 TAG_SHUTTERRELEASETIMING = 0x1011,
79 TAG_RELEASESETTING = 0x1016,
81 TAG_FOCALLENGTH = 0x1029,
82 TAG_SHOTINFO = 0x102a,
83 TAG_COLORINFO2 = 0x102c,
84 TAG_CAMERASETTINGS = 0x102d,
85 TAG_SENSORINFO = 0x1031,
86 TAG_CUSTOMFUNCTIONS = 0x1033,
87 TAG_PICTUREINFO = 0x1038,
88 TAG_WHITEBALANCETABLE = 0x10a9,
89 TAG_COLORSPACE = 0x10b4,
91 TAG_IMAGESPEC = 0x1803,
92 TAG_RECORDID = 0x1804,
93 TAG_SELFTIMERTIME = 0x1806,
94 TAG_TARGETDISTANCESETTING = 0x1807,
95 TAG_SERIALNUMBER = 0x180b,
96 TAG_CAPTUREDTIME = 0x180e,
97 TAG_IMAGEINFO = 0x1810,
98 TAG_FLASHINFO = 0x1813,
99 TAG_MEASUREDEV = 0x1814,
100 TAG_FILENUMBER = 0x1817,
101 TAG_EXPOSUREINFO = 0x1818,
102 TAG_DECODERTABLE = 0x1835,
104 TAG_RAWIMAGEDATA = 0x2005,
105 TAG_JPEGIMAGE = 0x2007,
106 TAG_JPEGTHUMBNAIL = 0x2008,
108 TAG_IMAGEDESCRIPTION = 0x2804,
109 TAG_CAMERAOBJECT = 0x2807,
110 TAG_SHOOTINGRECORD = 0x3002,
111 TAG_MEASUREDINFO = 0x3003,
112 TAG_CAMERASPECIFICATION = 0x3004,
113 TAG_IMAGEPROPS = 0x300a,
114 TAG_EXIFINFORMATION = 0x300b
124 : imageWidth(0), imageHeight(0),
125 pixelAspectRatio(0), rotationAngle(0),
126 componentBitDepth(0), colorBitDepth(0),
137 int32_t exifOrientation()
const;
140 uint32_t imageHeight;
141 uint32_t pixelAspectRatio;
142 int32_t rotationAngle;
143 uint32_t componentBitDepth;
144 uint32_t colorBitDepth;
152 typedef std::vector<RecordEntry> List;
167 size_t fetchData(
Heap* heap,
void* buf,
size_t size)
const;
172 bool isA(uint16_t _typeCode)
const 174 LOGDBG2(
"typeCode = %u\n", typeCode);
175 return typeCode == (TAGCODE_MASK & _typeCode);
187 typedef std::shared_ptr<Heap> Ref;
197 Heap & operator=(
const Heap &) =
delete;
199 RecordEntry::List & records();
215 RecordEntry::List m_records;
225 uint32_t headerLength;
249 CIFF::Heap::Ref heap();
255 CIFF::Heap::Ref getImageProps();
258 const CIFF::Heap::Ref getCameraProps();
265 CIFF::Heap::Ref m_heap;
266 CIFF::Heap::Ref m_imageprops;
269 CIFF::Heap::Ref m_cameraprops;
CIFF is the container for CRW files. It is an attempt from Canon to make this a standard. I guess it failed.
bool readFrom(off_t offset, CIFFContainer *container)
bool isA(uint16_t _typeCode) const