99
100
Name => 'MakerNoteHP4', # PhotoSmart M627
100
101
Condition => '$$valPt =~ /^IIII\x04\0/',
101
103
SubDirectory => {
102
104
TagTable => 'Image::ExifTool::HP::Type4',
103
105
Start => '$valuePtr',
108
110
Name => 'MakerNoteHP6', # PhotoSmart M425, M525 and M527
109
111
Condition => '$$valPt =~ /^IIII\x06\0/',
110
113
SubDirectory => {
111
114
TagTable => 'Image::ExifTool::HP::Type6',
112
115
Start => '$valuePtr',
126
129
Name => 'MakerNoteJVCText',
127
130
Condition => '$self->{CameraMake}=~/^(JVC|Victor)/ and $$valPt=~/^VER:/',
128
132
SubDirectory => {
129
133
TagTable => 'Image::ExifTool::JVC::Text',
133
137
Name => 'MakerNoteKodak1a',
134
138
Condition => '$self->{CameraMake}=~/^EASTMAN KODAK/ and $$valPt=~/^KDK INFO/',
135
140
SubDirectory => {
136
141
TagTable => 'Image::ExifTool::Kodak::Main',
137
142
Start => '$valuePtr + 8',
142
147
Name => 'MakerNoteKodak1b',
143
148
Condition => '$self->{CameraMake}=~/^EASTMAN KODAK/ and $$valPt=~/^KDK/',
144
150
SubDirectory => {
145
151
TagTable => 'Image::ExifTool::Kodak::Main',
146
152
Start => '$valuePtr + 8',
154
160
$$valPt =~ /^.{8}Eastman Kodak/s or
155
161
$$valPt =~ /^\x01\0[\0\x01]\0\0\0\x04\0[a-zA-Z]{4}/
157
164
SubDirectory => {
158
165
TagTable => 'Image::ExifTool::Kodak::Type2',
159
166
ByteOrder => 'BigEndian',
164
171
# upper byte of the year should be 0x07:
165
172
Name => 'MakerNoteKodak3',
166
173
Condition => '$self->{CameraMake}=~/^EASTMAN KODAK/ and $$valPt=~/^.{12}\x07/s',
167
175
SubDirectory => {
168
176
TagTable => 'Image::ExifTool::Kodak::Type3',
169
177
ByteOrder => 'BigEndian',
173
181
Name => 'MakerNoteKodak4',
174
182
Condition => '$self->{CameraMake}=~/^Eastman Kodak/ and $$valPt=~/^.{41}JPG/s',
175
184
SubDirectory => {
176
185
TagTable => 'Image::ExifTool::Kodak::Type4',
177
186
ByteOrder => 'BigEndian',
185
194
# try to pick up similar models we haven't tested yet
186
195
$$valPt=~/^\0(\x1a\x18|\x3a\x08|\x59\xf8|\x14\x80)\0/)
188
198
SubDirectory => {
189
199
TagTable => 'Image::ExifTool::Kodak::Type5',
190
200
ByteOrder => 'BigEndian',
196
206
$self->{CameraMake}=~/^EASTMAN KODAK/ and
197
207
$self->{CameraModel}=~/DX3215/
199
210
SubDirectory => {
200
211
TagTable => 'Image::ExifTool::Kodak::Type6',
201
212
ByteOrder => 'BigEndian',
207
218
$self->{CameraMake}=~/^EASTMAN KODAK/ and
208
219
$self->{CameraModel}=~/DX3700/
210
222
SubDirectory => {
211
223
TagTable => 'Image::ExifTool::Kodak::Type6',
212
224
ByteOrder => 'LittleEndian',
228
Name => 'MakerNoteKodak7',
229
# look for something that looks like a serial number
230
# (confirmed serial numbers have the format KXXXX########, but we also
231
# accept other strings from sample images that may be serial numbers)
233
$self->{CameraMake}=~/Kodak/i and
234
$$valPt =~ /^[CK][A-Z\d]{3} ?[A-Z\d]{1,2}\d{2}[A-Z\d]\d{4}[ \0]/
238
TagTable => 'Image::ExifTool::Kodak::Type7',
239
ByteOrder => 'LittleEndian',
243
Name => 'MakerNoteKodakIFD',
244
# look for reasonable number of entries and check
245
# format and count of first IFD entry
247
$self->{CameraMake}=~/Kodak/i and
248
($$valPt =~ /^\0[\x02-\x7f]..\0[\x01-\x0c]\0\0/s or
249
$$valPt =~ /^[\x02-\x7f]\0..[\x01-\x0c]\0..\0\0/s)
252
TagTable => 'Image::ExifTool::Kodak::IFD',
253
ProcessProc => \&ProcessUnknown,
254
ByteOrder => 'Unknown',
216
258
Name => 'MakerNoteKodakUnknown',
217
259
Condition => '$self->{CameraMake}=~/Kodak/i',
218
261
SubDirectory => {
219
262
TagTable => 'Image::ExifTool::Kodak::Unknown',
220
263
ByteOrder => 'BigEndian',
352
396
Name => 'MakerNotePentax',
353
# (if Make is 'PENTAX Corporation', starts with "AOC\0" (also Samsung DX-1S))
354
# (if Make is 'Asahi Optical Co.,Ltd', starts with an IFD)
355
Condition => '$self->{CameraMake}=~/^(PENTAX|AOC|Asahi)/ or $$valPt=~/^AOC\0/',
397
# (starts with "AOC\0", but so does MakerNotePentax3)
398
# (also used by some Samsung models)
400
$$valPt=~/^AOC\0/ and
401
$self->{CameraModel} !~ /^PENTAX Optio ?[34]30RS\s*$/
356
403
SubDirectory => {
357
404
TagTable => 'Image::ExifTool::Pentax::Main',
358
405
# process as Unknown maker notes because the start offset and
415
Name => 'MakerNotePentax2',
416
# (starts with an IFD)
417
# Casio-like maker notes used only by the Optio 330 and 430
418
Condition => '$self->{CameraMake}=~/^Asahi/ and $$valPt!~/^AOC\0/',
420
TagTable => 'Image::ExifTool::Pentax::Type2',
421
ProcessProc => \&ProcessUnknown,
423
ByteOrder => 'Unknown',
427
Name => 'MakerNotePentax3',
428
# (starts with "AOC\0", like the more common Pentax maker notes)
429
# Casio maker notes used only by the Optio 330RS and 430RS
430
Condition => '$self->{CameraMake}=~/^Asahi/',
432
TagTable => 'Image::ExifTool::Casio::Type2',
433
ProcessProc => \&ProcessUnknown,
435
ByteOrder => 'Unknown',
439
Name => 'MakerNotePentax4',
440
# (starts with 3 or 4 digits)
441
# HP2-like text-based maker notes used by Optio E20
442
Condition => '$self->{CameraMake}=~/^PENTAX/ and $$valPt=~/^\d{3}/',
445
TagTable => 'Image::ExifTool::Pentax::Type4',
446
Start => '$valuePtr',
447
ByteOrder => 'LittleEndian',
368
451
Name => 'MakerNoteRicoh',
369
452
Condition => '$self->{CameraMake}=~/^RICOH/ and $$valPt=~/^Ricoh/i',
370
453
SubDirectory => {
377
460
Name => 'MakerNoteRicohText',
378
461
Condition => '$self->{CameraMake}=~/^RICOH/',
379
463
SubDirectory => {
380
464
TagTable => 'Image::ExifTool::Ricoh::Text',
381
465
ByteOrder => 'Unknown',