25 #include "makernotedir.hpp" 26 #include "io/stream.hpp" 27 #include "ifdfilecontainer.hpp" 42 LOGDBG1(
"createMakerNote()\n");
44 auto file = container.file();
45 file->seek(offset, SEEK_SET);
46 file->read(&data, 18);
48 if (memcmp(
"Nikon\0", data, 6) == 0) {
50 return std::make_shared<MakerNoteDir>(
51 offset + 8, container, offset + 8,
"Nikon2");
53 else if (data[6] == 2) {
55 return std::make_shared<MakerNoteDir>(
56 offset + 18, container, offset + 10,
"Nikon");
59 return std::make_shared<MakerNoteDir>(
64 if (memcmp(
"OLYMPUS\0", data, 8) == 0) {
65 return std::make_shared<MakerNoteDir>(
66 offset + 12, container,
offset,
"Olympus2");
69 if (memcmp(
"OLYMP\0", data, 6) == 0) {
70 return std::make_shared<MakerNoteDir>(
71 offset + 8, container, offset + 8,
"Olympus");
74 if (memcmp(
"MLT0", data + 10, 4) == 0) {
75 return std::make_shared<MakerNoteDir>(
79 return std::make_shared<MakerNoteDir>(
offset, container,
offset,
"");
82 MakerNoteDir::MakerNoteDir(off_t _offset,
85 const std::string &
id)
86 :
MakerNoteDir(
"", 0, _offset, _container, mnote_offset,
id)
90 MakerNoteDir::MakerNoteDir(
const char* magic,
size_t hlen,
94 const std::string &
id)
95 :
IfdDir(_offset, _container)
96 , m_magic(magic ? magic :
"")
98 , m_mnote_offset(mnote_offset)
103 MakerNoteDir::~MakerNoteDir()
CIFF is the container for CRW files. It is an attempt from Canon to make this a standard. I guess it failed.
static Ref createMakerNote(off_t offset, IfdFileContainer &container)