~ubuntu-branches/ubuntu/karmic/libimage-exiftool-perl/karmic

« back to all changes in this revision

Viewing changes to lib/Image/ExifTool/MakerNotes.pm

  • Committer: Bazaar Package Importer
  • Author(s): Mari Wang
  • Date: 2008-02-04 20:32:53 UTC
  • mfrom: (1.1.5 upstream)
  • Revision ID: james.westby@ubuntu.com-20080204203253-mpbal8trlfe1fz5d
Tags: 7.00-1
* Upload of new production release (Closes: #456430)
* Added Recommends: libcompress-zlib-perl (Closes: #435589)
* Package now includes iptc2xmp.args and xmp2iptc.args, they are put
  into /usr/share/libimage-exiftool/ (Closes: #436100)
* Updated standards-version (3.7.2 -> 3.7.3). No changes needed.
* Lots of updates and bugfixes compared to last debian version
  (6.90).  See the Changes file for details
* Upload sponsored by Petter Reinholdtsen

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
 
16
16
sub ProcessUnknown($$$);
17
17
 
18
 
$VERSION = '1.31';
 
18
$VERSION = '1.34';
19
19
 
20
20
my $debug;          # set to 1 to enabled debugging code
21
21
 
89
89
            $$valPt !~ /^.{8}Hewlett-Packard/s and
90
90
            $$valPt !~ /^IIII/ and $$valPt =~ /^\d{3}.\0/s
91
91
        },
 
92
        NotIFD => 1,
92
93
        SubDirectory => {
93
94
            TagTable => 'Image::ExifTool::HP::Type2',
94
95
            Start => '$valuePtr',
98
99
    {
99
100
        Name => 'MakerNoteHP4', # PhotoSmart M627
100
101
        Condition => '$$valPt =~ /^IIII\x04\0/',
 
102
        NotIFD => 1,
101
103
        SubDirectory => {
102
104
            TagTable => 'Image::ExifTool::HP::Type4',
103
105
            Start => '$valuePtr',
107
109
    {
108
110
        Name => 'MakerNoteHP6', # PhotoSmart M425, M525 and M527
109
111
        Condition => '$$valPt =~ /^IIII\x06\0/',
 
112
        NotIFD => 1,
110
113
        SubDirectory => {
111
114
            TagTable => 'Image::ExifTool::HP::Type6',
112
115
            Start => '$valuePtr',
125
128
    {
126
129
        Name => 'MakerNoteJVCText',
127
130
        Condition => '$self->{CameraMake}=~/^(JVC|Victor)/ and $$valPt=~/^VER:/',
 
131
        NotIFD => 1,
128
132
        SubDirectory => {
129
133
            TagTable => 'Image::ExifTool::JVC::Text',
130
134
        },
132
136
    {
133
137
        Name => 'MakerNoteKodak1a',
134
138
        Condition => '$self->{CameraMake}=~/^EASTMAN KODAK/ and $$valPt=~/^KDK INFO/',
 
139
        NotIFD => 1,
135
140
        SubDirectory => {
136
141
            TagTable => 'Image::ExifTool::Kodak::Main',
137
142
            Start => '$valuePtr + 8',
141
146
    {
142
147
        Name => 'MakerNoteKodak1b',
143
148
        Condition => '$self->{CameraMake}=~/^EASTMAN KODAK/ and $$valPt=~/^KDK/',
 
149
        NotIFD => 1,
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}/
156
162
        },
 
163
        NotIFD => 1,
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',
 
174
        NotIFD => 1,
167
175
        SubDirectory => {
168
176
            TagTable => 'Image::ExifTool::Kodak::Type3',
169
177
            ByteOrder => 'BigEndian',
172
180
    {
173
181
        Name => 'MakerNoteKodak4',
174
182
        Condition => '$self->{CameraMake}=~/^Eastman Kodak/ and $$valPt=~/^.{41}JPG/s',
 
183
        NotIFD => 1,
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/)
187
196
        },
 
197
        NotIFD => 1,
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/
198
208
        },
 
209
        NotIFD => 1,
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/
209
220
        },
 
221
        NotIFD => 1,
210
222
        SubDirectory => {
211
223
            TagTable => 'Image::ExifTool::Kodak::Type6',
212
224
            ByteOrder => 'LittleEndian',
213
225
        },
214
226
    },
215
227
    {
 
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)
 
232
        Condition => q{
 
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]/
 
235
        },
 
236
        NotIFD => 1,
 
237
        SubDirectory => {
 
238
            TagTable => 'Image::ExifTool::Kodak::Type7',
 
239
            ByteOrder => 'LittleEndian',
 
240
        },
 
241
    },
 
242
    {
 
243
        Name => 'MakerNoteKodakIFD',
 
244
        # look for reasonable number of entries and check
 
245
        # format and count of first IFD entry
 
246
        Condition => q{
 
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)
 
250
        },
 
251
        SubDirectory => {
 
252
            TagTable => 'Image::ExifTool::Kodak::IFD',
 
253
            ProcessProc => \&ProcessUnknown,
 
254
            ByteOrder => 'Unknown',
 
255
        },
 
256
    },
 
257
    {
216
258
        Name => 'MakerNoteKodakUnknown',
217
259
        Condition => '$self->{CameraMake}=~/Kodak/i',
 
260
        NotIFD => 1,
218
261
        SubDirectory => {
219
262
            TagTable => 'Image::ExifTool::Kodak::Unknown',
220
263
            ByteOrder => 'BigEndian',
264
307
        Condition => '$self->{CameraMake} =~ /^(Konica Minolta|Minolta)/i',
265
308
        Notes => 'not EXIF-based',
266
309
        Binary => 1,
 
310
        NotIFD => 1,
267
311
    },
268
312
    {
269
313
        # this maker notes starts with a standard TIFF header at offset 0x0a
350
394
    },
351
395
    {
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)
 
399
        Condition => q{
 
400
            $$valPt=~/^AOC\0/ and
 
401
            $self->{CameraModel} !~ /^PENTAX Optio ?[34]30RS\s*$/
 
402
        },
356
403
        SubDirectory => {
357
404
            TagTable => 'Image::ExifTool::Pentax::Main',
358
405
            # process as Unknown maker notes because the start offset and
365
412
        },
366
413
    },
367
414
    {
 
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/',
 
419
        SubDirectory => {
 
420
            TagTable => 'Image::ExifTool::Pentax::Type2',
 
421
            ProcessProc => \&ProcessUnknown,
 
422
            FixBase => 1,
 
423
            ByteOrder => 'Unknown',
 
424
        },
 
425
    },
 
426
    {
 
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/',
 
431
        SubDirectory => {
 
432
            TagTable => 'Image::ExifTool::Casio::Type2',
 
433
            ProcessProc => \&ProcessUnknown,
 
434
            FixBase => 1,
 
435
            ByteOrder => 'Unknown',
 
436
        },
 
437
    },
 
438
    {
 
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}/',
 
443
        NotIFD => 1,
 
444
        SubDirectory => {
 
445
            TagTable => 'Image::ExifTool::Pentax::Type4',
 
446
            Start => '$valuePtr',
 
447
            ByteOrder => 'LittleEndian',
 
448
        },
 
449
    },
 
450
    {
368
451
        Name => 'MakerNoteRicoh',
369
452
        Condition => '$self->{CameraMake}=~/^RICOH/ and $$valPt=~/^Ricoh/i',
370
453
        SubDirectory => {
376
459
    {
377
460
        Name => 'MakerNoteRicohText',
378
461
        Condition => '$self->{CameraMake}=~/^RICOH/',
 
462
        NotIFD => 1,
379
463
        SubDirectory => {
380
464
            TagTable => 'Image::ExifTool::Ricoh::Text',
381
465
            ByteOrder => 'Unknown',