exiftool_vendored 10.56.0 → 10.58.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of exiftool_vendored might be problematic. Click here for more details.

@@ -4,6 +4,7 @@
4
4
  # Description: DJI Phantom maker notes tags
5
5
  #
6
6
  # Revisions: 2016-07-25 - P. Harvey Created
7
+ # 2017-06-23 - PH Added XMP tags
7
8
  #------------------------------------------------------------------------------
8
9
 
9
10
  package Image::ExifTool::DJI;
@@ -11,8 +12,9 @@ package Image::ExifTool::DJI;
11
12
  use strict;
12
13
  use vars qw($VERSION);
13
14
  use Image::ExifTool::Exif;
15
+ use Image::ExifTool::XMP;
14
16
 
15
- $VERSION = '1.00';
17
+ $VERSION = '1.01';
16
18
 
17
19
  my %convFloat2 = (
18
20
  PrintConv => 'sprintf("%+.2f", $val)',
@@ -41,6 +43,23 @@ my %convFloat2 = (
41
43
  0x0b => { Name => 'CameraRoll', Writable => 'float', %convFloat2 },
42
44
  );
43
45
 
46
+ %Image::ExifTool::DJI::XMP = (
47
+ %Image::ExifTool::XMP::xmpTableDefaults,
48
+ GROUPS => { 0 => 'XMP', 1 => 'XMP-drone-dji', 2 => 'Image' },
49
+ NAMESPACE => 'drone-dji',
50
+ TABLE_DESC => 'XMP DJI',
51
+ VARS => { NO_ID => 1 },
52
+ NOTES => 'XMP tags used by DJI for images from drones.',
53
+ AbsoluteAltitude => { Writable => 'real' },
54
+ RelativeAltitude => { Writable => 'real' },
55
+ GimbalRollDegree => { Writable => 'real' },
56
+ GimbalYawDegree => { Writable => 'real' },
57
+ GimbalPitchDegree => { Writable => 'real' },
58
+ FlightRollDegree => { Writable => 'real' },
59
+ FlightYawDegree => { Writable => 'real' },
60
+ FlightPitchDegree => { Writable => 'real' },
61
+ );
62
+
44
63
  __END__
45
64
 
46
65
  =head1 NAME
@@ -21,7 +21,7 @@ use strict;
21
21
  use vars qw($VERSION);
22
22
  use Image::ExifTool qw(:DataAccess :Utils);
23
23
 
24
- $VERSION = '1.13';
24
+ $VERSION = '1.14';
25
25
 
26
26
  sub ProcessPEResources($$);
27
27
  sub ProcessPEVersion($$);
@@ -1171,7 +1171,7 @@ sub ProcessEXE($$)
1171
1171
  DataPos => $raf->Tell() - $size,
1172
1172
  DataLen => $size,
1173
1173
  DirStart => 4,
1174
- DirLen => $size,
1174
+ DirLen => $size - 4,
1175
1175
  );
1176
1176
  $et->ProcessDirectory(\%dirInfo, $tagTablePtr);
1177
1177
  # process data dictionary
@@ -877,6 +877,7 @@ my %sampleFormat = (
877
877
  Notes => 'the data offset in original Sony DSLR-A100 ARW images',
878
878
  DataMember => 'A100DataOffset',
879
879
  RawConv => '$$self{A100DataOffset} = $val',
880
+ WriteGroup => 'IFD0', # (only for Validate)
880
881
  IsOffset => 1,
881
882
  Protected => 2,
882
883
  },
@@ -909,6 +910,7 @@ my %sampleFormat = (
909
910
  0x153 => {
910
911
  Name => 'SampleFormat',
911
912
  Notes => 'SamplesPerPixel values',
913
+ WriteGroup => 'SubIFD', # (only for Validate)
912
914
  PrintConvColumns => 2,
913
915
  PrintConv => [ \%sampleFormat, \%sampleFormat, \%sampleFormat, \%sampleFormat ],
914
916
  },
@@ -2823,6 +2825,7 @@ my %sampleFormat = (
2823
2825
  },
2824
2826
  0xc616 => {
2825
2827
  Name => 'CFAPlaneColor',
2828
+ WriteGroup => 'SubIFD', # (only for Validate)
2826
2829
  PrintConv => q{
2827
2830
  my @cols = qw(Red Green Blue Cyan Magenta Yellow White);
2828
2831
  my @vals = map { $cols[$_] || "Unknown($_)" } split(' ', $val);
@@ -2831,6 +2834,7 @@ my %sampleFormat = (
2831
2834
  },
2832
2835
  0xc617 => {
2833
2836
  Name => 'CFALayout',
2837
+ WriteGroup => 'SubIFD', # (only for Validate)
2834
2838
  PrintConv => {
2835
2839
  1 => 'Rectangular',
2836
2840
  2 => 'Even columns offset down 1/2 row',
@@ -3286,6 +3290,7 @@ my %sampleFormat = (
3286
3290
  Name => 'ProfileIFD', # (ExtraCameraProfiles)
3287
3291
  Groups => { 1 => 'ProfileIFD' },
3288
3292
  Flags => 'SubIFD',
3293
+ WriteGroup => 'IFD0', # (only for Validate)
3289
3294
  SubDirectory => {
3290
3295
  ProcessProc => \&ProcessTiffIFD,
3291
3296
  WriteProc => \&ProcessTiffIFD,
@@ -17,6 +17,7 @@
17
17
  # 8) http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,5223.0.html
18
18
  # 9) Zilvinas Brobliauskas private communication
19
19
  # 10) Albert Shan private communication
20
+ # 11) http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,8377.0.html
20
21
  # IB) Iliah Borg private communication (LibRaw)
21
22
  # JD) Jens Duttke private communication
22
23
  #------------------------------------------------------------------------------
@@ -28,7 +29,7 @@ use vars qw($VERSION);
28
29
  use Image::ExifTool qw(:DataAccess :Utils);
29
30
  use Image::ExifTool::Exif;
30
31
 
31
- $VERSION = '1.58';
32
+ $VERSION = '1.59';
32
33
 
33
34
  sub ProcessFujiDir($$$);
34
35
  sub ProcessFaceRec($$$);
@@ -296,7 +297,7 @@ my %faceCategories = (
296
297
  Flags => 'PrintHex',
297
298
  Writable => 'int16u',
298
299
  PrintConv => {
299
- 0x0 => 'Auto',
300
+ 0x0 => 'Auto', # (or 'SR+' if SceneRecognition present, ref 11)
300
301
  0x1 => 'Portrait',
301
302
  0x2 => 'Landscape',
302
303
  0x3 => 'Macro', #JD
@@ -546,7 +547,7 @@ my %faceCategories = (
546
547
  },
547
548
  # 0x1408 - values: '0100', 'S100', 'VQ10'
548
549
  # 0x1409 - values: same as 0x1408
549
- # 0x140a - values: 0, 1, 3, 5, 7
550
+ # 0x140a - values: 0, 1, 3, 5, 7 (bit 2=red-eye detection, ref 11)
550
551
  0x140b => { #6
551
552
  Name => 'AutoDynamicRange',
552
553
  Writable => 'int16u',
@@ -568,6 +569,18 @@ my %faceCategories = (
568
569
  2 => 'On (mode 2, shooting only)',
569
570
  }],
570
571
  },
572
+ 0x1425 => { # if present and 0x1031 PictureMode is zero, then PictureMode is SR+, not Auto (ref 11)
573
+ Name => 'SceneRecognition',
574
+ Writable => 'int16u',
575
+ PrintHex => 1,
576
+ PrintConv => {
577
+ 0 => 'Unrecognized',
578
+ 0x100 => 'Portrait Image',
579
+ 0x200 => 'Landscape Image',
580
+ 0x300 => 'Night Scene',
581
+ 0x400 => 'Macro',
582
+ },
583
+ },
571
584
  0x1431 => { #forum6109
572
585
  Name => 'Rating',
573
586
  Groups => { 2 => 'Image' },
@@ -617,6 +630,30 @@ my %faceCategories = (
617
630
  detected
618
631
  },
619
632
  },
633
+ 0x4200 => { #11
634
+ Name => 'NumFaceElements',
635
+ Writable => 'int16u',
636
+ },
637
+ 0x4201 => { #11
638
+ Name => 'FaceElementTypes',
639
+ Writable => 'int8u',
640
+ Count => -1,
641
+ PrintConv => [{
642
+ 1 => 'Face',
643
+ 2 => 'Left Eye',
644
+ 3 => 'Right Eye',
645
+ },'REPEAT'],
646
+ },
647
+ # 0x4202 int8u[-1] - number of cooredinates in each rectangle? (ref 11)
648
+ 0x4203 => { #11
649
+ Name => 'FaceElementPositions',
650
+ Writable => 'int16u',
651
+ Count => -1,
652
+ Notes => q{
653
+ left, top, right and bottom coordinates in full-sized image for each face
654
+ element
655
+ },
656
+ },
620
657
  # 0x4101-0x4105 - exist only if face detection active
621
658
  # 0x4104 - also related to face detection (same number of entries as FacePositions)
622
659
  # 0x4200 - same as 0x4100?
@@ -20,7 +20,7 @@ use strict;
20
20
  use vars qw($VERSION);
21
21
  use Image::ExifTool qw(:DataAccess :Utils);
22
22
 
23
- $VERSION = '1.13';
23
+ $VERSION = '1.14';
24
24
 
25
25
  # road map of directory locations in GIF images
26
26
  my %gifMap = (
@@ -461,7 +461,7 @@ Block:
461
461
  Write($outfile, "\0") or $err = 1; # write null terminator
462
462
  }
463
463
  } elsif (not $outfile) {
464
- $et->HandleTag($tagTablePtr, $tag, $dat);
464
+ $et->HandleTag($extTable, $tag, $dat);
465
465
  }
466
466
  next;
467
467
 
@@ -23,7 +23,7 @@ use strict;
23
23
  use vars qw($VERSION);
24
24
  use Image::ExifTool qw(:DataAccess :Utils);
25
25
 
26
- $VERSION = '1.30';
26
+ $VERSION = '1.31';
27
27
 
28
28
  sub ProcessICC($$);
29
29
  sub ProcessICC_Profile($$$);
@@ -774,7 +774,7 @@ sub ProcessICC($$)
774
774
  return 1;
775
775
  }
776
776
  $raf->Seek(0, 0);
777
- unless ($raf->Read($buff, $size)) {
777
+ unless ($raf->Read($buff, $size) == $size) {
778
778
  $et->Error('Truncated ICC profile');
779
779
  return 1;
780
780
  }
@@ -12,7 +12,7 @@ require Exporter;
12
12
 
13
13
  use vars qw($VERSION @ISA @EXPORT_OK);
14
14
 
15
- $VERSION = '1.06';
15
+ $VERSION = '1.07';
16
16
  @ISA = qw(Exporter);
17
17
  @EXPORT_OK = qw(ReadCSV ReadJSON);
18
18
 
@@ -100,6 +100,8 @@ sub ReadCSV($$;$)
100
100
  }
101
101
  last if $err;
102
102
  @tags or $err = 'No tags found', last;
103
+ # fix "SourceFile" case if necessary
104
+ $tags[0] = 'SourceFile' if lc $tags[0] eq 'sourcefile';
103
105
  }
104
106
  }
105
107
  close CSVFILE if $openedFile;
@@ -259,8 +261,16 @@ sub ReadJSON($$;$$)
259
261
  my ($info, $found);
260
262
  foreach $info (@$obj) {
261
263
  next unless ref $info eq 'HASH';
262
- # assume a SourceFile of '*' if none specified
263
- defined $$info{SourceFile} or $$info{SourceFile} = '*';
264
+ # fix "SourceFile" case, or assume '*' if SourceFile not specified
265
+ unless (defined $$info{SourceFile}) {
266
+ my ($key) = grep /^SourceFile$/i, keys %$info;
267
+ if ($key) {
268
+ $$info{SourceFile} = $$info{$key};
269
+ delete $$info{$key};
270
+ } else {
271
+ $$info{SourceFile} = '*';
272
+ }
273
+ }
264
274
  if (defined $missingValue) {
265
275
  $$info{$_} eq $missingValue and $$info{$_} = undef foreach keys %$info;
266
276
  }
@@ -49,7 +49,7 @@ use vars qw($VERSION %minoltaLensTypes %minoltaTeleconverters %minoltaColorMode
49
49
  use Image::ExifTool qw(:DataAccess :Utils);
50
50
  use Image::ExifTool::Exif;
51
51
 
52
- $VERSION = '2.50';
52
+ $VERSION = '2.52';
53
53
 
54
54
  # Full list of product codes for Sony-compatible Minolta lenses
55
55
  # (ref http://www.kb.sony.com/selfservice/documentLink.do?externalId=C1000570)
@@ -366,8 +366,8 @@ $VERSION = '2.50';
366
366
  213 => 'Tamron 16-300mm F3.5-6.3 Di II PZD Macro', #JR (Model B016)
367
367
  214 => 'Tamron SP 150-600mm F5-6.3 Di USD', #JR (Model A011)
368
368
  215 => 'Tamron SP 15-30mm F2.8 Di USD', #JR (Model A012)
369
- 216 => 'Tamron SP 45mm F1.8 Di VC USD', #forum8320 (F013)
370
- 217 => 'Tamron SP 35mm F1.8 Di VC USD', #forum8320 (F012)
369
+ 216 => 'Tamron SP 45mm F1.8 Di USD', #forum8320 (F013)
370
+ 217 => 'Tamron SP 35mm F1.8 Di USD', #forum8320 (F012)
371
371
  218 => 'Tamron SP 90mm F2.8 Di Macro 1:1 USD (F017)', #JR (Model F017)
372
372
  224 => 'Tamron SP 90mm F2.8 Di Macro 1:1 USD (F004)', #JR (Model F004)
373
373
  255 => 'Tamron Lens (255)',
@@ -563,50 +563,56 @@ $VERSION = '2.50';
563
563
  '65535.29' => 'Sony FE 28mm F2', #JR (32816 - SEL28F20)
564
564
  '65535.30' => 'Sony FE PZ 28-135mm F4 G OSS', #JR (32817 - SELP28135G)
565
565
  '65535.31' => 'Sony FE 100mm F2.8 STF GM OSS', #JR (32819 - SEL100F28GM, uses 33076 when set to 0.57m - 1.0m range)
566
- '65535.32' => 'Sony FE 24-70mm F2.8 GM', #JR (32821 - SEL2470GM)
567
- '65535.33' => 'Sony FE 50mm F1.4 ZA', #JR (32822 - SEL50F14Z)
568
- '65535.34' => 'Sony FE 85mm F1.4 GM', #JR (32823 - SEL85F14GM)
569
- '65535.35' => 'Sony FE 50mm F1.8', #JR (32824 - SEL50F18F with trailing "F" as compared to 32790)
570
- '65535.36' => 'Sony FE 21mm F2.8 (SEL28F20 + SEL075UWC)', #JR (32826 - SEL28F20 + SEL075UWC Ultra-wide converter)
571
- '65535.37' => 'Sony FE 16mm F3.5 Fisheye (SEL28F20 + SEL057FEC)', #JR (32827 - SEL28F20 + SEL057FEC Fisheye converter)
572
- '65535.38' => 'Sony FE 70-300mm F4.5-5.6 G OSS', #JR (32828 - SEL70300G)
573
- '65535.39' => 'Sony FE 100-400mm F4.5-5.6 GM OSS', #JR (32829 - SEL100400GM)
574
- '65535.40' => 'Sony FE 70-200mm F2.8 GM OSS', #JR (32830 - SEL70200GM)
575
- '65535.41' => 'Sony FE 16-35mm F2.8 GM', #JR (32831 - SEL1635GM)
576
- '65535.42' => 'Sony FE 70-200mm F2.8 GM OSS + 1.4X Teleconverter', #JR (33072 - SEL70200GM + SEL14TC)
577
- '65535.43' => 'Sony FE 70-200mm F2.8 GM OSS + 2X Teleconverter', #JR (33073 - SEL70200GM + SEL20TC)
566
+ '65535.32' => 'Sony E PZ 18-110mm F4 G OSS', #JR (32820 - SELP18110G)
567
+ '65535.33' => 'Sony FE 24-70mm F2.8 GM', #JR (32821 - SEL2470GM)
568
+ '65535.34' => 'Sony FE 50mm F1.4 ZA', #JR (32822 - SEL50F14Z)
569
+ '65535.35' => 'Sony FE 85mm F1.4 GM', #JR (32823 - SEL85F14GM)
570
+ '65535.36' => 'Sony FE 50mm F1.8', #JR (32824 - SEL50F18F with trailing "F" as compared to 32790)
571
+ '65535.37' => 'Sony FE 21mm F2.8 (SEL28F20 + SEL075UWC)', #JR (32826 - SEL28F20 + SEL075UWC Ultra-wide converter)
572
+ '65535.38' => 'Sony FE 16mm F3.5 Fisheye (SEL28F20 + SEL057FEC)', #JR (32827 - SEL28F20 + SEL057FEC Fisheye converter)
573
+ '65535.39' => 'Sony FE 70-300mm F4.5-5.6 G OSS', #JR (32828 - SEL70300G)
574
+ '65535.40' => 'Sony FE 100-400mm F4.5-5.6 GM OSS', #JR (32829 - SEL100400GM)
575
+ '65535.41' => 'Sony FE 70-200mm F2.8 GM OSS', #JR (32830 - SEL70200GM)
576
+ '65535.42' => 'Sony FE 16-35mm F2.8 GM', #JR (32831 - SEL1635GM)
577
+ '65535.43' => 'Sony FE 70-200mm F2.8 GM OSS + 1.4X Teleconverter', #JR (33072 - SEL70200GM + SEL14TC)
578
+ '65535.44' => 'Sony FE 70-200mm F2.8 GM OSS + 2X Teleconverter', #JR (33073 - SEL70200GM + SEL20TC)
578
579
  #
579
580
  # 3rd party E lenses
580
581
  #
581
- '65535.44' => 'Samyang AF 50mm F1.4 FE', #JR (32789)
582
- '65535.45' => 'Samyang AF 14mm F2.8 FE', #JR (32790 and 51505)
583
- '65535.46' => 'Sigma 19mm F2.8 [EX] DN', #JR (0)
584
- '65535.47' => 'Sigma 30mm F2.8 [EX] DN', #JR (0)
585
- '65535.48' => 'Sigma 60mm F2.8 DN', #JR (0)
586
- '65535.49' => 'Sigma 30mm F1.4 DC DN | C 016', #IB (50480)
587
- '65535.50' => 'Tamron 18-200mm F3.5-6.3 Di III VC', #JR (0 - Model B011)
588
- '65535.51' => 'Tokina Firin 20mm F2 FE MF', #JR (0)
589
- '65535.52' => 'Zeiss Touit 12mm F2.8', #JR (49201 or 0)
590
- '65535.53' => 'Zeiss Touit 32mm F1.8', #JR (49202 or 0)
591
- '65535.54' => 'Zeiss Touit 50mm F2.8 Macro', #JR (49203 or 0)
592
- '65535.55' => 'Zeiss Batis 25mm F2', #JR (49216)
593
- '65535.56' => 'Zeiss Batis 85mm F1.8', #JR (49217)
594
- '65535.57' => 'Zeiss Batis 18mm F2.8', #IB (49218)
595
- '65535.58' => 'Zeiss Batis 135mm F2.8', #IB (49219)
596
- '65535.59' => 'Zeiss Loxia 50mm F2', #JR (49232 or 0)
597
- '65535.60' => 'Zeiss Loxia 35mm F2', #JR (49233 or 0)
598
- '65535.61' => 'Zeiss Loxia 21mm F2.8', #JR (49234)
599
- '65535.62' => 'Zeiss Loxia 85mm F2.4', #JR (49235)
582
+ '65535.45' => 'Samyang AF 50mm F1.4 FE', #JR (32789)
583
+ '65535.46' => 'Samyang AF 14mm F2.8 FE', #JR (32790 and 51505)
584
+ '65535.47' => 'Samyang AF 35mm F2.8 FE', #PH (51505)
585
+ '65535.48' => 'Sigma 19mm F2.8 [EX] DN', #JR (0)
586
+ '65535.49' => 'Sigma 30mm F2.8 [EX] DN', #JR (0)
587
+ '65535.50' => 'Sigma 60mm F2.8 DN', #JR (0)
588
+ '65535.51' => 'Sigma 30mm F1.4 DC DN | C 016', #IB (50480)
589
+ '65535.52' => 'Tamron 18-200mm F3.5-6.3 Di III VC', #JR (0 - Model B011)
590
+ '65535.53' => 'Tokina Firin 20mm F2 FE MF', #JR (0)
591
+ '65535.54' => 'Voigtlander SUPER WIDE-HELIAR 15mm F4.5 III', #JR (50992)
592
+ '65535.55' => 'Voigtlander HELIAR-HYPER WIDE 10mm F5.6', #IB (50993)
593
+ '65535.56' => 'Voigtlander ULTRA WIDE-HELIAR 12mm F5.6 III', #IB (50994)
594
+ '65535.57' => 'Voigtlander NOKTON 40mm F1.2', #JR (50996)
595
+ '65535.58' => 'Zeiss Touit 12mm F2.8', #JR (49201 or 0)
596
+ '65535.59' => 'Zeiss Touit 32mm F1.8', #JR (49202 or 0)
597
+ '65535.60' => 'Zeiss Touit 50mm F2.8 Macro', #JR (49203 or 0)
598
+ '65535.61' => 'Zeiss Batis 25mm F2', #JR (49216)
599
+ '65535.62' => 'Zeiss Batis 85mm F1.8', #JR (49217)
600
+ '65535.63' => 'Zeiss Batis 18mm F2.8', #IB (49218)
601
+ '65535.64' => 'Zeiss Batis 135mm F2.8', #IB (49219)
602
+ '65535.65' => 'Zeiss Loxia 50mm F2', #JR (49232 or 0)
603
+ '65535.66' => 'Zeiss Loxia 35mm F2', #JR (49233 or 0)
604
+ '65535.67' => 'Zeiss Loxia 21mm F2.8', #JR (49234)
605
+ '65535.68' => 'Zeiss Loxia 85mm F2.4', #JR (49235)
600
606
  #
601
607
  # other lenses
602
608
  #
603
- '65535.63' => 'Arax MC 35mm F2.8 Tilt+Shift', #JD
604
- '65535.64' => 'Arax MC 80mm F2.8 Tilt+Shift', #JD
605
- '65535.65' => 'Zenitar MF 16mm F2.8 Fisheye M42', #JD
606
- '65535.66' => 'Samyang 500mm Mirror F8.0', #19
607
- '65535.67' => 'Pentacon Auto 135mm F2.8', #19
608
- '65535.68' => 'Pentacon Auto 29mm F2.8', #19
609
- '65535.69' => 'Helios 44-2 58mm F2.0', #19
609
+ '65535.69' => 'Arax MC 35mm F2.8 Tilt+Shift', #JD
610
+ '65535.70' => 'Arax MC 80mm F2.8 Tilt+Shift', #JD
611
+ '65535.71' => 'Zenitar MF 16mm F2.8 Fisheye M42', #JD
612
+ '65535.72' => 'Samyang 500mm Mirror F8.0', #19
613
+ '65535.73' => 'Pentacon Auto 135mm F2.8', #19
614
+ '65535.74' => 'Pentacon Auto 29mm F2.8', #19
615
+ '65535.75' => 'Helios 44-2 58mm F2.0', #19
610
616
  );
611
617
 
612
618
  %minoltaTeleconverters = (
@@ -26,7 +26,7 @@ use strict;
26
26
  use vars qw($VERSION $AUTOLOAD %stdCase);
27
27
  use Image::ExifTool qw(:DataAccess :Utils);
28
28
 
29
- $VERSION = '1.41';
29
+ $VERSION = '1.42';
30
30
 
31
31
  sub ProcessPNG_tEXt($$$);
32
32
  sub ProcessPNG_iTXt($$$);
@@ -260,7 +260,7 @@ $Image::ExifTool::PNG::colorType = -1;
260
260
  Name => $stdCase{exif},
261
261
  Notes => q{
262
262
  proposed but not yet registered. This is where ExifTool will create new
263
- EXIF without the Compress option
263
+ EXIF
264
264
  },
265
265
  SubDirectory => {
266
266
  TagTable => 'Image::ExifTool::Exif::Main',
@@ -271,10 +271,7 @@ $Image::ExifTool::PNG::colorType = -1;
271
271
  # zXIf
272
272
  $stdCase{zxif} => {
273
273
  Name => $stdCase{zxif},
274
- Notes => q{
275
- proposed but not yet registered. This is where ExifTool will create new
276
- EXIF with the Compress option
277
- },
274
+ Notes => 'a once-proposed chunk for compressed EXIF',
278
275
  SubDirectory => {
279
276
  TagTable => 'Image::ExifTool::Exif::Main',
280
277
  DirName => 'EXIF', # (to write as a block)
@@ -460,6 +457,7 @@ my %unreg = ( Notes => 'unregistered' );
460
457
  Warning => { Name => 'PNGWarning', },
461
458
  Source => { },
462
459
  Comment => { },
460
+ Collection => { }, # (PNG extensions, 2004)
463
461
  #
464
462
  # The following tags are not part of the original PNG specification,
465
463
  # but are written by ImageMagick and other software
@@ -526,6 +524,7 @@ my %unreg = ( Notes => 'unregistered' );
526
524
  'Raw profile type exif' => {
527
525
  Name => 'EXIF_Profile',
528
526
  %unreg,
527
+ NonStandard => 1,
529
528
  SubDirectory => {
530
529
  TagTable => 'Image::ExifTool::Exif::Main',
531
530
  ProcessProc => \&ProcessProfile,
@@ -1118,7 +1117,9 @@ sub ProcessPNG_eXIf($$$)
1118
1117
  return FoundPNG($et, $tagTablePtr, $$tagInfo{TagID}, \$buf, 2, $outBuff);
1119
1118
  } elsif (not $outBuff) {
1120
1119
  return $et->ProcessTIFF($dirInfo);
1121
- } elsif ($del and ($et->Options('Compress') xor lc($tag) eq 'zxif')) {
1120
+ # (zxIf was not adopted)
1121
+ #} elsif ($del and ($et->Options('Compress') xor lc($tag) eq 'zxif')) {
1122
+ } elsif ($del and lc($tag) eq 'zxif') {
1122
1123
  $et->VPrint(0, " Deleting $tag chunk");
1123
1124
  $$outBuff = '';
1124
1125
  ++$$et{CHANGED};
@@ -629,7 +629,7 @@ my %shootingMode = (
629
629
  2 => '10 s',
630
630
  3 => '2 s',
631
631
  4 => '10 s / 3 pictures', #17
632
- # 258 - seen for FZ2500 (PH)
632
+ # 258 - seen for FZ2500,TZ90 (PH)
633
633
  },
634
634
  },
635
635
  # 0x2f - values: 1 (LZ6,FX10K)
@@ -58,7 +58,7 @@ use Image::ExifTool::Exif;
58
58
  use Image::ExifTool::GPS;
59
59
  use Image::ExifTool::HP;
60
60
 
61
- $VERSION = '3.16';
61
+ $VERSION = '3.17';
62
62
 
63
63
  sub CryptShutterCount($$);
64
64
  sub PrintFilter($$$);
@@ -1503,14 +1503,28 @@ my %binaryDataAttrs = (
1503
1503
  approximate Light Value. May not be valid for some models, eg. Optio S
1504
1504
  },
1505
1505
  },
1506
- 0x0016 => { #PH
1506
+ 0x0016 => [{ #PH
1507
1507
  Name => 'ExposureCompensation',
1508
+ Condition => '$count == 1',
1509
+ Notes => q{
1510
+ some models write two values here. The second value is meaning of the
1511
+ second value is not yet known
1512
+ },
1508
1513
  Writable => 'int16u',
1509
1514
  ValueConv => '($val - 50) / 10',
1510
1515
  ValueConvInv => 'int($val * 10 + 50.5)',
1511
1516
  PrintConv => '$val ? sprintf("%+.1f", $val) : 0',
1512
1517
  PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
1513
- },
1518
+ },{
1519
+ Name => 'ExposureCompensation',
1520
+ Writable => 'int16u',
1521
+ # (2 values for K-70, etc -- have only seen "0" for the 2nd value - PH)
1522
+ Count => 2,
1523
+ ValueConv => '$val =~ s/ .*//; ($val - 50) / 10',
1524
+ ValueConvInv => 'int($val * 10 + 50.5) . " 0"',
1525
+ PrintConv => '$val ? sprintf("%+.1f", $val) : 0',
1526
+ PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
1527
+ }],
1514
1528
  0x0017 => { #3
1515
1529
  Name => 'MeteringMode',
1516
1530
  Writable => 'int16u',
@@ -3021,8 +3035,10 @@ my %binaryDataAttrs = (
3021
3035
  5 => 'On but Disabled', # (NC for K-3)
3022
3036
  6 => 'On (Video)', # (NC for K-3)
3023
3037
  7 => 'On (AA simulation off)',
3038
+ 8 => 'Off (AA simulation type 1) (8)', #forum8362 (K-70)
3024
3039
  12 => 'Off (AA simulation type 1)', # (AA linear motion)
3025
3040
  15 => 'On (AA simulation type 1)', # (AA linear motion)
3041
+ 16 => 'Off (AA simulation type 2) (16)', #forum8362 (K-70)
3026
3042
  20 => 'Off (AA simulation type 2)', # (AA circular motion)
3027
3043
  23 => 'On (AA simulation type 2)', # (AA circular motion)
3028
3044
  },