exiftool-vendored.exe 13.32.0 → 13.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/README.md +2 -2
  2. package/bin/exiftool.exe +0 -0
  3. package/bin/exiftool_files/exiftool.pl +17 -4
  4. package/bin/exiftool_files/lib/Image/ExifTool/BuildTagLookup.pm +4 -2
  5. package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +15 -2
  6. package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +6 -5
  7. package/bin/exiftool_files/lib/Image/ExifTool/FlashPix.pm +4 -159
  8. package/bin/exiftool_files/lib/Image/ExifTool/FujiFilm.pm +11 -3
  9. package/bin/exiftool_files/lib/Image/ExifTool/Geotag.pm +5 -3
  10. package/bin/exiftool_files/lib/Image/ExifTool/GoPro.pm +14 -2
  11. package/bin/exiftool_files/lib/Image/ExifTool/LNK.pm +4 -1
  12. package/bin/exiftool_files/lib/Image/ExifTool/Lang/cs.pm +0 -1
  13. package/bin/exiftool_files/lib/Image/ExifTool/Lang/de.pm +0 -1
  14. package/bin/exiftool_files/lib/Image/ExifTool/Lang/fr.pm +0 -1
  15. package/bin/exiftool_files/lib/Image/ExifTool/Lang/it.pm +0 -1
  16. package/bin/exiftool_files/lib/Image/ExifTool/Lang/ja.pm +0 -1
  17. package/bin/exiftool_files/lib/Image/ExifTool/Lang/nl.pm +0 -1
  18. package/bin/exiftool_files/lib/Image/ExifTool/Lang/pl.pm +0 -1
  19. package/bin/exiftool_files/lib/Image/ExifTool/Lang/zh_cn.pm +0 -1
  20. package/bin/exiftool_files/lib/Image/ExifTool/Microsoft.pm +158 -1
  21. package/bin/exiftool_files/lib/Image/ExifTool/Minolta.pm +4 -2
  22. package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +69 -35
  23. package/bin/exiftool_files/lib/Image/ExifTool/NikonCustom.pm +40 -10
  24. package/bin/exiftool_files/lib/Image/ExifTool/Olympus.pm +253 -34
  25. package/bin/exiftool_files/lib/Image/ExifTool/Panasonic.pm +3 -3
  26. package/bin/exiftool_files/lib/Image/ExifTool/Pentax.pm +168 -14
  27. package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +11 -4
  28. package/bin/exiftool_files/lib/Image/ExifTool/README +2 -1
  29. package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +43 -17
  30. package/bin/exiftool_files/lib/Image/ExifTool/TNEF.pm +487 -0
  31. package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +4375 -4267
  32. package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +244 -16
  33. package/bin/exiftool_files/lib/Image/ExifTool/WriteExif.pl +14 -12
  34. package/bin/exiftool_files/lib/Image/ExifTool/Writer.pl +12 -12
  35. package/bin/exiftool_files/lib/Image/ExifTool.pm +12 -4
  36. package/bin/exiftool_files/lib/Image/ExifTool.pod +50 -44
  37. package/bin/exiftool_files/windows_exiftool.txt +87 -82
  38. package/package.json +9 -8
@@ -59,7 +59,7 @@ use Image::ExifTool::Exif;
59
59
  use Image::ExifTool::GPS;
60
60
  use Image::ExifTool::HP;
61
61
 
62
- $VERSION = '3.53';
62
+ $VERSION = '3.55';
63
63
 
64
64
  sub CryptShutterCount($$);
65
65
  sub PrintFilter($$$);
@@ -751,6 +751,11 @@ my @k3iiiAF = qw(
751
751
  C1 E1 G1 I1 K1 C3 E3 G3 I3 K3 C5 E5 G5
752
752
  I5 K5 C7 E7 G7 I7 K7 C9 E9 G9 I9 K9 A5 M5 B3
753
753
  L3 B5 L5 B7 L7 B1 L1 B9 L9 A3 M3 A7 M7
754
+ D1 F1 H1 J1 D3 F3 H3 J3 D5 F5 H5 J5 D7
755
+ F7 H7 J7 D9 F9 H9 J9 C2 E2 G2 I2 K2 C4
756
+ E4 G4 I4 K4 C6 E6 G6 I6 K6 C8 E8 G8 I8
757
+ K8 B2 L2 B4 L4 B6 L6 B8 L8 A1 M1 A2 M2
758
+ A4 M4 A6 M6 A8 M8 A9 M9
754
759
  );
755
760
 
756
761
  # decoding for Pentax Firmware ID tags - PH
@@ -1972,6 +1977,8 @@ my %binaryDataAttrs = (
1972
1977
  '18 3' => 'Auto Program (MTF)', #PH (NC)
1973
1978
  '18 22' => 'Auto Program (Shallow DOF)', #PH (NC)
1974
1979
  '20 22' => 'Blur Control', #PH (Q)
1980
+ '24 0' => 'Aperture Priority (Adv.Hyp)', #KG
1981
+ '25 0' => 'Manual Exposure (Adv.Hyp)', #KG
1975
1982
  '26 0' => 'Shutter and Aperture Priority (TAv)', #PH (K-3III)
1976
1983
  '249 0' => 'Movie (TAv)', #31
1977
1984
  '250 0' => 'Movie (TAv, Auto Aperture)', #31
@@ -1993,10 +2000,13 @@ my %binaryDataAttrs = (
1993
2000
  Count => 4,
1994
2001
  PrintConv => [{
1995
2002
  0 => 'Single-frame', # (also Interval Shooting for K-01 - PH)
1996
- 1 => 'Continuous', # (K-5 Hi)
1997
- 2 => 'Continuous (Lo)', #PH (K-5)
2003
+ 1 => 'Continuous', #KG *ist D, *ist Ds, *ist DS2, K110D, K10D, K100D, K100D Super, K20D, Ricoh GR III / GR IIIx
2004
+ #KG Hi: K200D, K-x, K-7, K-r, K-5, K-01, K-5 II, K-5 IIs, K-30, K-500, K-50, K-S1, K-S2, K-70
2005
+ #KG High: K-3, K-3 II, K-1, K-1 II, KP, K-3 III, K-3 III Mono
2006
+ 2 => 'Continuous (Lo)', #KG all models listed under 'Hi'
1998
2007
  3 => 'Burst', #PH (K20D)
1999
- 4 => 'Continuous (Medium)', #PH (K-3)
2008
+ 4 => 'Continuous (Medium)', #KG all models listed under 'High'
2009
+ 5 => 'Continuous (Low)', #KG all models listed under 'High'
2000
2010
  255 => 'Video', #PH (K-x)
2001
2011
  },{
2002
2012
  0 => 'No Timer',
@@ -3004,7 +3014,7 @@ my %binaryDataAttrs = (
3004
3014
  }],
3005
3015
  0x022b => [{
3006
3016
  Name => 'LevelInfoK3III',
3007
- Condition => '$$self{Model} eq "PENTAX K-3 Mark III"',
3017
+ Condition => '$$self{Model} =~ /K-3 Mark III/',
3008
3018
  SubDirectory => { TagTable => 'Image::ExifTool::Pentax::LevelInfoK3III' },
3009
3019
  },{ #PH (K-5)
3010
3020
  Name => 'LevelInfo',
@@ -3112,6 +3122,11 @@ my %binaryDataAttrs = (
3112
3122
  # 0x0406 - undef[4116] (K-5)
3113
3123
  # 0x0407 - undef[3072] (Q DNG)
3114
3124
  # 0x0408 - undef[1024] (Q DNG)
3125
+ 0x040b => {
3126
+ Name => 'FaceInfoK3III',
3127
+ # undef[1640] (actually int32u[410], K3III)
3128
+ SubDirectory => { TagTable => 'Image::ExifTool::Pentax::FaceInfoK3III' },
3129
+ },
3115
3130
  0x040c => {
3116
3131
  Name => 'AFInfoK3III',
3117
3132
  SubDirectory => { TagTable => 'Image::ExifTool::Pentax::AFInfoK3III' },
@@ -5056,7 +5071,7 @@ my %binaryDataAttrs = (
5056
5071
  },
5057
5072
  0x14 => {
5058
5073
  Name => 'AFPointValues',
5059
- Condition => '$$self{Model} eq "PENTAX K-3 Mark III"', # any other models?
5074
+ Condition => '$$self{Model} =~ /K-3 Mark III/', #KG
5060
5075
  Format => 'int16uRev[69]',
5061
5076
  Unknown => 1,
5062
5077
  Notes => 'some unknown values related to each AFPoint',
@@ -5067,15 +5082,18 @@ my %binaryDataAttrs = (
5067
5082
  ValueConv => 'my @a=split " ",$val;$_>32767 and $_-=65536 foreach @a;join " ",@a',
5068
5083
  PrintConv => \&AFPointValuesK3III,
5069
5084
  },
5070
- 0x12a => { # byte has a value of 2 if corresponding AF point is selected
5085
+ 0x12a => {
5071
5086
  Name => 'AFPointsSelected', # (should probably be "AFPointSelected", but the bitmask allows multiple points)
5072
- Condition => '$$self{Model} eq "PENTAX K-3 Mark III"', # any other models?
5087
+ Condition => '$$self{Model} =~ /K-3 Mark III/',
5073
5088
  Notes => q{
5074
5089
  K-3III only. 41 selectable AF points from a total of 101 available in a 13x9
5075
- grid. Columns are labelled A-M and rows are 1-9. The center point is G5
5090
+ grid. Columns are labelled A-M and rows are 1-9. The center point is G5. The
5091
+ exact meaning of this tag is not fully understood, although it does seem
5092
+ related to the selected AF point
5076
5093
  },
5077
- Format => 'int8u[41]',
5078
- PrintConv => 'Image::ExifTool::Pentax::AFPointNamesK3III($val,$self,2)',
5094
+ Format => 'int8u[101]',
5095
+ # value of 1 means "selected point", and 2 means "center of selected area"
5096
+ PrintConv => \&AFPointNamesK3III,
5079
5097
  },
5080
5098
  #
5081
5099
  # (maybe not coincidentally, there are 60 unknown bytes
@@ -5084,15 +5102,15 @@ my %binaryDataAttrs = (
5084
5102
  0x18f => { # byte has a value of 1 if corresponding AF point is ... in focus maybe?
5085
5103
  # usually the same points as AFPointsSelected above, but not always
5086
5104
  Name => 'AFPointsUnknown',
5087
- Condition => '$$self{Model} eq "PENTAX K-3 Mark III"', # any other models?
5105
+ Condition => '$$self{Model} =~ /K-3 Mark III/', #KG
5088
5106
  Unknown => 1,
5089
- Format => 'int8u[41]',
5107
+ Format => 'int8u[101]',
5090
5108
  PrintConv => \&AFPointNamesK3III,
5091
5109
  },
5092
5110
  0x1fa => {
5093
5111
  Name => 'LiveView',
5094
5112
  Notes => 'decoded only for the K-3 III',
5095
- Condition => '$$self{Model} eq "PENTAX K-3 Mark III"', # and other models?
5113
+ Condition => '$$self{Model} =~ /K-3 Mark III/', #KG
5096
5114
  PrintConv => { 0 => 'Off', 1 => 'On' },
5097
5115
  },
5098
5116
  0x1fd => {
@@ -5101,6 +5119,54 @@ my %binaryDataAttrs = (
5101
5119
  Condition => '$$self{Model} eq "PENTAX K-3 II"',
5102
5120
  PrintConv => { 0 => 'Off', 1 => 'Short', 2 => 'Medium', 3 => 'Long' },
5103
5121
  },
5122
+ 0x021f => { #KG
5123
+ Name => 'FirstFrameActionInAFC',
5124
+ Condition => '$$self{Model} =~ /K-3 Mark III/',
5125
+ PrintConv => {
5126
+ '0' => 'Auto',
5127
+ '1' => 'Release Priority',
5128
+ '2' => 'Focus Priority',
5129
+ # there is at least another value '3' but I couldn't figure out the
5130
+ # meaning. However, this occurs for a few AF-S captures, so it has
5131
+ # no real practical meaning.
5132
+ },
5133
+ },
5134
+ 0x0220 => { #KG
5135
+ Name => 'ActionInAFCCont',
5136
+ Condition => '$$self{Model} =~ /K-3 Mark III/',
5137
+ PrintConv => {
5138
+ '0' => 'Auto',
5139
+ '1' => 'Focus Priority',
5140
+ '2' => 'FPS Priority',
5141
+ },
5142
+ },
5143
+ 545 => { #KG
5144
+ Name => 'AFCHold',
5145
+ Condition => '$$self{Model} =~ /K-3 Mark III/',
5146
+ Mask => 0x03,
5147
+ PrintConv => { 0 => 'Low', 1 => 'Medium', 2 => 'High', 3 => 'Off' },
5148
+ },
5149
+ 545.1 => { #KG
5150
+ Name => 'AFCSensitivity',
5151
+ Condition => '$$self{Model} =~ /K-3 Mark III/',
5152
+ Mask => 0x0c,
5153
+ PrintConv => '5 - $val',
5154
+ PrintConvInv => '5 - $val',
5155
+ },
5156
+ 545.2 => { #KG
5157
+ Name => 'AFCPointTracking',
5158
+ Condition => '$$self{Model} =~ /K-3 Mark III/',
5159
+ Mask => 0x70,
5160
+ PrintConv => { 0 => 'Type 1', 1 => 'Type 2', 2 => 'Type 3' },
5161
+ },
5162
+ 0x0960 => { #KG
5163
+ Name => 'SubjectRecognition',
5164
+ Condition => '$$self{Model} =~ /K-3 Mark III/',
5165
+ PrintConv => {
5166
+ 0 => 'Off',
5167
+ 1 => 'On',
5168
+ },
5169
+ },
5104
5170
  );
5105
5171
 
5106
5172
  # AF information for K-01 and later (ref Karsten Gieselmann private communication)
@@ -5705,6 +5771,86 @@ my %binaryDataAttrs = (
5705
5771
  },
5706
5772
  );
5707
5773
 
5774
+ %Image::ExifTool::Pentax::FaceInfoK3III = (
5775
+ %binaryDataAttrs,
5776
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
5777
+ FORMAT => 'int32u',
5778
+ DATAMEMBER => [ 6, 8 ],
5779
+ 0.1 => {
5780
+ Name => 'FaceInfoK3III',
5781
+ Format => 'int32u[$size/4]',
5782
+ Notes => q{
5783
+ entire FaceInfoK3III structure. Provides access to raw numerical values and
5784
+ facilitates the writing of the whole structure
5785
+ },
5786
+ Unknown => 1,
5787
+ },
5788
+ 0 => { Name => 'FaceImageSize', Format => 'int32u[2]' },
5789
+ 2 => { Name => 'CAFArea', Format => 'int32u[4]', Notes => 'top, left, width, height' },
5790
+ 6 => { Name => 'FacesDetectedA', RawConv => '$$self{FacesA} = $val' },
5791
+ 8 => { Name => 'FacesDetectedB', RawConv => '$$self{FacesA} = $val' },
5792
+ 10 => { Name => 'Face1AArea', Condition => '$$self{FacesA} >= 1', Format => 'int32u[4]' },
5793
+ 14 => { Name => 'Face1AEye1', Condition => '$$self{FacesA} >= 1', Format => 'int32u[4]' },
5794
+ 18 => { Name => 'Face1AEye2', Condition => '$$self{FacesA} >= 1', Format => 'int32u[4]' },
5795
+ 30 => { Name => 'Face2AArea', Condition => '$$self{FacesA} >= 2', Format => 'int32u[4]' },
5796
+ 34 => { Name => 'Face2AEye1', Condition => '$$self{FacesA} >= 2', Format => 'int32u[4]' },
5797
+ 38 => { Name => 'Face2AEye2', Condition => '$$self{FacesA} >= 2', Format => 'int32u[4]' },
5798
+ 50 => { Name => 'Face3AArea', Condition => '$$self{FacesA} >= 3', Format => 'int32u[4]' },
5799
+ 54 => { Name => 'Face3AEye1', Condition => '$$self{FacesA} >= 3', Format => 'int32u[4]' },
5800
+ 58 => { Name => 'Face3AEye2', Condition => '$$self{FacesA} >= 3', Format => 'int32u[4]' },
5801
+ 70 => { Name => 'Face4AArea', Condition => '$$self{FacesA} >= 4', Format => 'int32u[4]' },
5802
+ 74 => { Name => 'Face4AEye1', Condition => '$$self{FacesA} >= 4', Format => 'int32u[4]' },
5803
+ 78 => { Name => 'Face4AEye2', Condition => '$$self{FacesA} >= 4', Format => 'int32u[4]' },
5804
+ 90 => { Name => 'Face5AArea', Condition => '$$self{FacesA} >= 5', Format => 'int32u[4]' },
5805
+ 94 => { Name => 'Face5AEye1', Condition => '$$self{FacesA} >= 5', Format => 'int32u[4]' },
5806
+ 98 => { Name => 'Face5AEye2', Condition => '$$self{FacesA} >= 5', Format => 'int32u[4]' },
5807
+ 110 => { Name => 'Face6AArea', Condition => '$$self{FacesA} >= 6', Format => 'int32u[4]' },
5808
+ 114 => { Name => 'Face6AEye1', Condition => '$$self{FacesA} >= 6', Format => 'int32u[4]' },
5809
+ 118 => { Name => 'Face6AEye2', Condition => '$$self{FacesA} >= 6', Format => 'int32u[4]' },
5810
+ 130 => { Name => 'Face7AArea', Condition => '$$self{FacesA} >= 7', Format => 'int32u[4]' },
5811
+ 134 => { Name => 'Face7AEye1', Condition => '$$self{FacesA} >= 7', Format => 'int32u[4]' },
5812
+ 138 => { Name => 'Face7AEye2', Condition => '$$self{FacesA} >= 7', Format => 'int32u[4]' },
5813
+ 150 => { Name => 'Face8AArea', Condition => '$$self{FacesA} >= 8', Format => 'int32u[4]' },
5814
+ 154 => { Name => 'Face8AEye1', Condition => '$$self{FacesA} >= 8', Format => 'int32u[4]' },
5815
+ 158 => { Name => 'Face8AEye2', Condition => '$$self{FacesA} >= 8', Format => 'int32u[4]' },
5816
+ 170 => { Name => 'Face9AArea', Condition => '$$self{FacesA} >= 9', Format => 'int32u[4]' },
5817
+ 174 => { Name => 'Face9AEye1', Condition => '$$self{FacesA} >= 9', Format => 'int32u[4]' },
5818
+ 178 => { Name => 'Face9AEye2', Condition => '$$self{FacesA} >= 9', Format => 'int32u[4]' },
5819
+ 190 => { Name => 'Face10AArea',Condition => '$$self{FacesA} >= 10', Format => 'int32u[4]' },
5820
+ 194 => { Name => 'Face10AEye1',Condition => '$$self{FacesA} >= 10', Format => 'int32u[4]' },
5821
+ 198 => { Name => 'Face10AEye2',Condition => '$$self{FacesA} >= 10', Format => 'int32u[4]' },
5822
+ 210 => { Name => 'Face1BArea', Condition => '$$self{FacesA} >= 1', Format => 'int32u[4]' },
5823
+ 214 => { Name => 'Face1BEye1', Condition => '$$self{FacesA} >= 1', Format => 'int32u[4]' },
5824
+ 218 => { Name => 'Face1BEye2', Condition => '$$self{FacesA} >= 1', Format => 'int32u[4]' },
5825
+ 230 => { Name => 'Face2BArea', Condition => '$$self{FacesA} >= 2', Format => 'int32u[4]' },
5826
+ 234 => { Name => 'Face2BEye1', Condition => '$$self{FacesA} >= 2', Format => 'int32u[4]' },
5827
+ 238 => { Name => 'Face2BEye2', Condition => '$$self{FacesA} >= 2', Format => 'int32u[4]' },
5828
+ 250 => { Name => 'Face3BArea', Condition => '$$self{FacesA} >= 3', Format => 'int32u[4]' },
5829
+ 254 => { Name => 'Face3BEye1', Condition => '$$self{FacesA} >= 3', Format => 'int32u[4]' },
5830
+ 258 => { Name => 'Face3BEye2', Condition => '$$self{FacesA} >= 3', Format => 'int32u[4]' },
5831
+ 270 => { Name => 'Face4BArea', Condition => '$$self{FacesA} >= 4', Format => 'int32u[4]' },
5832
+ 274 => { Name => 'Face4BEye1', Condition => '$$self{FacesA} >= 4', Format => 'int32u[4]' },
5833
+ 278 => { Name => 'Face4BEye2', Condition => '$$self{FacesA} >= 4', Format => 'int32u[4]' },
5834
+ 290 => { Name => 'Face5BArea', Condition => '$$self{FacesA} >= 5', Format => 'int32u[4]' },
5835
+ 294 => { Name => 'Face5BEye1', Condition => '$$self{FacesA} >= 5', Format => 'int32u[4]' },
5836
+ 298 => { Name => 'Face5BEye2', Condition => '$$self{FacesA} >= 5', Format => 'int32u[4]' },
5837
+ 310 => { Name => 'Face6BArea', Condition => '$$self{FacesA} >= 6', Format => 'int32u[4]' },
5838
+ 314 => { Name => 'Face6BEye1', Condition => '$$self{FacesA} >= 6', Format => 'int32u[4]' },
5839
+ 318 => { Name => 'Face6BEye2', Condition => '$$self{FacesA} >= 6', Format => 'int32u[4]' },
5840
+ 330 => { Name => 'Face7BArea', Condition => '$$self{FacesA} >= 7', Format => 'int32u[4]' },
5841
+ 334 => { Name => 'Face7BEye1', Condition => '$$self{FacesA} >= 7', Format => 'int32u[4]' },
5842
+ 338 => { Name => 'Face7BEye2', Condition => '$$self{FacesA} >= 7', Format => 'int32u[4]' },
5843
+ 350 => { Name => 'Face8BArea', Condition => '$$self{FacesA} >= 8', Format => 'int32u[4]' },
5844
+ 354 => { Name => 'Face8BEye1', Condition => '$$self{FacesA} >= 8', Format => 'int32u[4]' },
5845
+ 358 => { Name => 'Face8BEye2', Condition => '$$self{FacesA} >= 8', Format => 'int32u[4]' },
5846
+ 370 => { Name => 'Face9BArea', Condition => '$$self{FacesA} >= 9', Format => 'int32u[4]' },
5847
+ 374 => { Name => 'Face9BEye1', Condition => '$$self{FacesA} >= 9', Format => 'int32u[4]' },
5848
+ 378 => { Name => 'Face9BEye2', Condition => '$$self{FacesA} >= 9', Format => 'int32u[4]' },
5849
+ 390 => { Name => 'Face10BArea',Condition => '$$self{FacesA} >= 10', Format => 'int32u[4]' },
5850
+ 394 => { Name => 'Face10BEye1',Condition => '$$self{FacesA} >= 10', Format => 'int32u[4]' },
5851
+ 398 => { Name => 'Face10BEye2',Condition => '$$self{FacesA} >= 10', Format => 'int32u[4]' },
5852
+ );
5853
+
5708
5854
  %Image::ExifTool::Pentax::AFInfoK3III = (
5709
5855
  %binaryDataAttrs,
5710
5856
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
@@ -5930,6 +6076,14 @@ my %binaryDataAttrs = (
5930
6076
  K-500. It is currently not known where the corresponding temperature
5931
6077
  sensors are located in the camera.
5932
6078
  },
6079
+ 0x0a => { #KG
6080
+ Name => 'ShotNumber',
6081
+ Condition => '$$self{Model} =~ /K-3 Mark III/',
6082
+ # The exact same method to detect this tag with a similar set of files
6083
+ # does not reveal anything for K-1. Is this only available for K-3-III ?
6084
+ # Internal representation starts at 0 for the 1st shot
6085
+ ValueConv => '$val+1',
6086
+ },
5933
6087
  # (it would be nice to know where these temperature sensors are located,
5934
6088
  # but since according to the manual the Slow Shutter Speed NR Auto mode
5935
6089
  # is based on "internal temperature", my guess is that there must be
@@ -49,7 +49,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
49
49
  use Image::ExifTool::Exif;
50
50
  use Image::ExifTool::GPS;
51
51
 
52
- $VERSION = '3.18';
52
+ $VERSION = '3.19';
53
53
 
54
54
  sub ProcessMOV($$;$);
55
55
  sub ProcessKeys($$$);
@@ -2379,7 +2379,14 @@ my %userDefined = (
2379
2379
  # saut - 4 bytes all zero (Samsung SM-N900T)
2380
2380
  # smrd - string "TRUEBLUE" (Samsung SM-C101, etc)
2381
2381
  # ---- Sigma ----
2382
- SIGM => {
2382
+ SIGM => [{
2383
+ Name => 'SigmaEXIF',
2384
+ Condition => '$$valPt =~ /^(II\x2a\0|MM\0\x2a)/',
2385
+ SubDirectory => {
2386
+ TagTable => 'Image::ExifTool::Exif::Main',
2387
+ ProcessProc => \&Image::ExifTool::ProcessTIFF, # (because ProcessMOV is default)
2388
+ },
2389
+ },{
2383
2390
  Name => 'PreviewImage',
2384
2391
  # 32-byte header followed by preview image. Length at offset 6 in header
2385
2392
  Condition => 'length($$valPt) > 0x20 and length($$valPt) == unpack("x6V",$$valPt) + 0x20',
@@ -2396,7 +2403,7 @@ my %userDefined = (
2396
2403
  }
2397
2404
  return $pt;
2398
2405
  },
2399
- },
2406
+ }],
2400
2407
  # ---- TomTom Bandit Action Cam ----
2401
2408
  TTMD => {
2402
2409
  Name => 'TomTomMetaData',
@@ -2937,7 +2944,7 @@ my %userDefined = (
2937
2944
  Writable => 'int8u',
2938
2945
  Protected => 1,
2939
2946
  PrintConv => {
2940
- 0 => 'Horizontal (Normal)',
2947
+ 0 => 'Horizontal (normal)',
2941
2948
  1 => 'Rotate 270 CW',
2942
2949
  2 => 'Rotate 180',
2943
2950
  3 => 'Rotate 90 CW',
@@ -802,7 +802,8 @@ numerical, and generated automatically otherwise.
802
802
  Shift : [Writable tags only] Specifies type of shift to apply if this
803
803
  value may be shifted. Set to 'Time' for shifting date/time
804
804
  tags, or '0' to prevent tag from being shifted or
805
- conditionally deleted.
805
+ conditionally deleted. May not be used for Writable Composite
806
+ tags.
806
807
 
807
808
  Writable : Indicates this tag can be written (or not written if Writable
808
809
  is set to zero), and for EXIF and QuickTime tables gives
@@ -34,7 +34,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
34
34
  use Image::ExifTool::Exif;
35
35
  use Image::ExifTool::Minolta;
36
36
 
37
- $VERSION = '3.74';
37
+ $VERSION = '3.75';
38
38
 
39
39
  sub ProcessSRF($$$);
40
40
  sub ProcessSR2($$$);
@@ -76,6 +76,9 @@ sub PrintInvLensSpec($;$$);
76
76
  6 => 'Sony LA-EA4 Adapter',
77
77
  7 => 'Sony LA-EA5 Adapter', #JR
78
78
  13 => 'Samyang AF 35-150mm F2-2.8',
79
+ 17 => 'Samyang RS 21mm F3.5', #JR
80
+ 18 => 'Samyang RS 28mm F3.5', #JR
81
+ 19 => 'Samyang RS 32mm F2.8', #JR
79
82
  20 => 'Samyang AF 35mm F1.4 P FE', #JR
80
83
  21 => 'Samyang AF 14-24mm F2.8', #JR
81
84
  # 27 => Venus Optics Laowa 12mm f2.8 Zero-D or 105mm f2 (T3.2) Smooth Trans Focus (ref IB)
@@ -202,7 +205,9 @@ sub PrintInvLensSpec($;$$);
202
205
  33091 => 'Sony FE 400-800mm F6.3-8 G OSS + 1.4X Teleconverter', #JR
203
206
  33092 => 'Sony FE 400-800mm F6.3-8 G OSS + 2X Teleconverter', #JR
204
207
 
205
- 49201 => 'Zeiss Touit 12mm F2.8', #JR (lens firmware Ver.02)
208
+ 49201 => 'Zeiss Touit 12mm F2.8 or other Touit lens', #JR (lens firmware Ver.02) / github342 (firmware Ver.02.001)
209
+ 49201.1 => 'Zeiss Touit 32mm F1.8', #github342 (firmware Ver.02.001)
210
+ 49201.2 => 'Zeiss Touit 50mm F2.8', #github342 (firmware Ver.02.001) (NC)
206
211
  49202 => 'Zeiss Touit 32mm F1.8', #JR (lens firmware Ver.02)
207
212
  49203 => 'Zeiss Touit 50mm F2.8 Macro', #JR (lens firmware Ver.02)
208
213
  49216 => 'Zeiss Batis 25mm F2', #JR
@@ -249,9 +254,11 @@ sub PrintInvLensSpec($;$$);
249
254
  49474.8 => 'Viltrox 50mm F1.8 FE', #JR
250
255
  49474.9 => 'Viltrox 75mm F1.2 E', #JR
251
256
  '49474.10' => 'Viltrox 20mm F2.8 FE', #JR
257
+ '49474.11' => 'Viltrox AF 135/1.8 LAB FE', #JR
252
258
  49475 => 'Tamron 50-300mm F4.5-6.3 Di III VC VXD', #JR (Model A069)
253
259
  49476 => 'Tamron 28-300mm F4-7.1 Di III VC VXD', #JR (Model A074)
254
260
  49477 => 'Tamron 90mm F2.8 Di III Macro VXD', #JR (Model F072)
261
+ 49478 => 'Tamron 16-30mm F2.8 Di III VXD G2', #JR (Model A064)
255
262
 
256
263
  49712 => 'Tokina FiRIN 20mm F2 FE AF', # (firmware Ver.01)
257
264
  49713 => 'Tokina FiRIN 100mm F2.8 FE MACRO', # (firmware Ver.01)
@@ -313,6 +320,8 @@ sub PrintInvLensSpec($;$$);
313
320
  50550 => 'Sigma 28-105mm F2.8 DG DN | A', #JR (024)
314
321
  50551 => 'Sigma 28-45mm F1.8 DG DN | A', #JR (024)
315
322
  50553 => 'Sigma 300-600mm F4 DG OS | S', #JR (025)
323
+ 50554 => 'Sigma 16-300mm F3.5-6.7 DC OS | C', #JR (025)
324
+ 50556 => 'Sigma 17-40mm F1.8 DC | C', #JR (025)
316
325
 
317
326
  # lenses listed in the Sigma MC-11 list, but not yet seen:
318
327
  # 504xx => 'Sigma 18-200mm F3.5-6.3 DC MACRO OS HSM | C + MC-11', # (014)
@@ -1196,7 +1205,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1196
1205
  # FocusMode for SLT/HV/ILCA and NEX/ILCE; doesn't seem to apply to DSC models (always 0)
1197
1206
  # from 2018: at least DSC-RX10M4 and RX100M6 also use this tag
1198
1207
  Name => 'FocusMode',
1199
- Condition => '($$self{Model} !~ /^DSC-/) or ($$self{Model} =~ /^DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2)/)',
1208
+ Condition => '($$self{Model} !~ /^DSC-/) or ($$self{Model} =~ /^DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2|RX1RM3)/)',
1200
1209
  Writable => 'int8u',
1201
1210
  Priority => 0,
1202
1211
  PrintConv => {
@@ -1228,7 +1237,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1228
1237
  },
1229
1238
  },{
1230
1239
  Name => 'AFAreaModeSetting',
1231
- Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|ZV-|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2))/',
1240
+ Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|ZV-|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2|RX1RM3))/',
1232
1241
  Notes => 'NEX, ILCE and some DSC models',
1233
1242
  RawConv => '$$self{AFAreaILCE} = $val',
1234
1243
  DataMember => 'AFAreaILCE',
@@ -1265,7 +1274,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1265
1274
  # observed values in range (0 0) to (640 480), with center (320 240) often seen
1266
1275
  # for NEX-5R/6, positions appear to be in an 11x9 grid
1267
1276
  Name => 'FlexibleSpotPosition',
1268
- Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|ZV-|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2))/',
1277
+ Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|ZV-|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2|RX1RM3))/',
1269
1278
  Writable => 'int16u',
1270
1279
  Count => 2,
1271
1280
  Notes => q{
@@ -1425,7 +1434,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1425
1434
  # from 2018: at least DSC-RX10M4 and RX100M6 also use this tag
1426
1435
  0x2021 => { #JR
1427
1436
  Name => 'AFTracking',
1428
- Condition => '($$self{Model} !~ /^DSC-/) or ($$self{Model} =~ /^DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2)/)',
1437
+ Condition => '($$self{Model} !~ /^DSC-/) or ($$self{Model} =~ /^DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2|RX1RM3)/)',
1429
1438
  Writable => 'int8u',
1430
1439
  PrintConv => {
1431
1440
  0 => 'Off',
@@ -1721,7 +1730,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1721
1730
  # from mid-2015: ILCE-7RM2/7SM2/6300 and newer models use different offsets
1722
1731
  {
1723
1732
  Name => 'Tag9050a',
1724
- Condition => '$$self{Model} !~ /^(DSC-|Stellar|ILCE-(1|6100|6300|6400|6500|6600|6700|7C|7M3|7M4|7RM2|7RM3A?|7RM4A?|7RM5|7SM2|7SM3|9|9M2)|ILCA-99M2|ILME-FX3|ZV-)/',
1733
+ Condition => '$$self{Model} !~ /^(DSC-|Stellar|ILCE-(1|6100|6300|6400|6500|6600|6700|7C|7M3|7M4|7RM2|7RM3A?|7RM4A?|7RM5|7SM2|7SM3|9|9M2)|ILCA-99M2|ILME-(FX2|FX3)|ZV-)/',
1725
1734
  SubDirectory => {
1726
1735
  TagTable => 'Image::ExifTool::Sony::Tag9050a',
1727
1736
  ByteOrder => 'LittleEndian',
@@ -1742,7 +1751,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1742
1751
  },
1743
1752
  },{
1744
1753
  Name => 'Tag9050d',
1745
- Condition => '$$self{Model} =~ /^(ILCE-(6700|7CM2|7CR)|ZV-(E1|E10M2))\b/ or ($$self{Model} =~ /^(ILCE-1M2)/ and $$valPt =~ /^\x00/)',
1754
+ Condition => '$$self{Model} =~ /^(ILCE-(6700|7CM2|7CR)|ILME-FX2|ZV-(E1|E10M2))\b/ or ($$self{Model} =~ /^(ILCE-1M2)/ and $$valPt =~ /^\x00/)',
1746
1755
  SubDirectory => {
1747
1756
  TagTable => 'Image::ExifTool::Sony::Tag9050d',
1748
1757
  ByteOrder => 'LittleEndian',
@@ -2183,6 +2192,8 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
2183
2192
  398 => 'ILX-LR1', #JR
2184
2193
  399 => 'ZV-E10M2', #JR
2185
2194
  400 => 'ILCE-1M2', #PH
2195
+ 401 => 'DSC-RX1RM3', #JR
2196
+ 406 => 'ILME-FX2', #JR
2186
2197
  },
2187
2198
  },
2188
2199
  0xb020 => { #2
@@ -6325,6 +6336,8 @@ my %pictureProfile2010 = (
6325
6336
  38 => 'VV2',
6326
6337
  39 => 'IN',
6327
6338
  40 => 'SH',
6339
+ 48 => 'FL2', #JR
6340
+ 49 => 'FL3', #JR
6328
6341
  },
6329
6342
  );
6330
6343
  my %isoSetting2010 = (
@@ -8234,7 +8247,7 @@ my %isoSetting2010 = (
8234
8247
  0x000a => {
8235
8248
  Name => 'ShutterCount',
8236
8249
  # number of mechanical shutter actuations, does not increase during electronic shutter / Silent Shooting
8237
- Condition => '$$self{Model} =~ /^(ILCE-(1M2|6700|7CM2|7CR))/',
8250
+ Condition => '$$self{Model} =~ /^(ILCE-(1M2|6700|7CM2|7CR)|ILME-FX2)/',
8238
8251
  Format => 'int32u',
8239
8252
  Notes => 'total number of mechanical shutter actuations',
8240
8253
  RawConv => '$val & 0x00ffffff',
@@ -8495,7 +8508,7 @@ my %isoSetting2010 = (
8495
8508
  },
8496
8509
  0x002a => [{
8497
8510
  Name => 'Quality2',
8498
- Condition => '$$self{Model} !~ /^(ILCE-(1|1M2|6700|7CM2|7CR|7M4|7RM5|7SM3|9M3)|ILME-(FX3|FX30)|ZV-(E1|E10M2))\b/',
8511
+ Condition => '$$self{Model} !~ /^(DSC-RX1RM3|ILCE-(1|1M2|6700|7CM2|7CR|7M4|7RM5|7SM3|9M3)|ILME-(FX2|FX3|FX30)|ZV-(E1|E10M2))\b/',
8499
8512
  PrintConv => {
8500
8513
  0 => 'JPEG',
8501
8514
  1 => 'RAW',
@@ -8520,7 +8533,7 @@ my %isoSetting2010 = (
8520
8533
  # },
8521
8534
  0x0053 => {
8522
8535
  Name => 'ModelReleaseYear',
8523
- Condition => '$$self{Model} !~ /^(ILCE-(1|6700|7CM2|7CR|7M4|7RM5|7SM3|9M3)|ILME-(FX3|FX30)|ZV-(E1|E10M2))\b/',
8536
+ Condition => '$$self{Model} !~ /^(DSC-RX1RM3|ILCE-(1|6700|7CM2|7CR|7M4|7RM5|7SM3|9M3)|ILME-(FX2|FX3|FX30)|ZV-(E1|E10M2))\b/',
8524
8537
  Format => 'int8u',
8525
8538
  PrintConv => 'sprintf("20%.2d", $val)',
8526
8539
  },
@@ -8563,7 +8576,7 @@ my %isoSetting2010 = (
8563
8576
  0x0000 => { Name => 'Ver9401', Hidden => 1, RawConv => '$$self{Ver9401} = $val; $$self{OPTIONS}{Unknown}<2 ? undef : $val' },
8564
8577
 
8565
8578
  0x03e2 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 181', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8566
- 0x03f4 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(185|186)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8579
+ 0x03f4 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(185|186|187)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8567
8580
  0x044e => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 178', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8568
8581
  0x0498 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 148', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8569
8582
  0x049d => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 167 and $$self{Software} !~ /^ILCE-7M4 (v2|v3)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
@@ -9891,10 +9904,19 @@ my %isoSetting2010 = (
9891
9904
  WRITE_PROC => \&WriteEnciphered,
9892
9905
  CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
9893
9906
  FORMAT => 'int8u',
9894
- NOTES => 'Valid for the ILCE-1/6700/7CM2/7CR/7M4/7RM5/7SM3/9M3, ILME-FX3/FX30, ZV-E1/E10M2.',
9907
+ DATAMEMBER => [ 0x00, 0x37 ],
9908
+ NOTES => q{
9909
+ Valid for the ILCE-1/6700/7CM2/7CR/7M4/7RM5/7SM3/9M3, ILME-FX2/FX3/FX30,
9910
+ ZV-E1/E10M2.
9911
+ },
9895
9912
  FIRST_ENTRY => 0,
9896
9913
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
9897
- 0x0000 => { Name => 'Tag9416_0000', PrintConv => 'sprintf("%3d",$val)', RawConv => '$$self{TagVersion} = $val' },
9914
+ 0x0000 => {
9915
+ Name => 'Tag9416_0000',
9916
+ Hidden => 1, # (hide from documentation)
9917
+ PrintConv => 'sprintf("%3d",$val)',
9918
+ RawConv => '$$self{TagVersion} = $val; undef', # (used only to set TagVersion)
9919
+ },
9898
9920
  0x0004 => {
9899
9921
  Name => 'SonyISO',
9900
9922
  Format => 'int16u',
@@ -9943,7 +9965,9 @@ my %isoSetting2010 = (
9943
9965
  PrintConv => \%sonyExposureProgram3,
9944
9966
  },
9945
9967
  0x0037 => {
9946
- Name => 'CreativeStyle',
9968
+ Name => 'CreativeStyle',
9969
+ Notes => 'offsets after this are shifted by 1 for the ILME-FX2',
9970
+ Hook => '$varSize += 1 if $$self{Model} =~ /^(ILME-FX2)/',
9947
9971
  PrintConv => {
9948
9972
  0 => 'Standard',
9949
9973
  1 => 'Vivid',
@@ -9962,6 +9986,8 @@ my %isoSetting2010 = (
9962
9986
  16 => 'VV2',
9963
9987
  17 => 'IN',
9964
9988
  18 => 'SH',
9989
+ 19 => 'FL2',
9990
+ 20 => 'FL3',
9965
9991
  255 => 'Off',
9966
9992
  },
9967
9993
  },
@@ -10054,7 +10080,7 @@ my %isoSetting2010 = (
10054
10080
  },
10055
10081
  0x089d => { # Note: 32 values for these newer models, and 32 non-zero values present for new lenses like SEL2470GM2 and SEL2070G
10056
10082
  Name => 'VignettingCorrParams',
10057
- Condition => '$$self{Model} =~ /^(ILCE-(1M2|6700|7CM2|7CR|7RM5)|ILME-FX30|ZV-(E1|E10M2))\b/',
10083
+ Condition => '$$self{Model} =~ /^(ILCE-(1M2|6700|7CM2|7CR|7RM5)|ILME-(FX2|FX30)|ZV-(E1|E10M2))\b/',
10058
10084
  Format => 'int16s[32]',
10059
10085
  },
10060
10086
  0x08b5 => {
@@ -10093,7 +10119,7 @@ my %isoSetting2010 = (
10093
10119
  },
10094
10120
  0x0945 => {
10095
10121
  Name => 'ChromaticAberrationCorrParams',
10096
- Condition => '$$self{Model} =~ /^(ILCE-(1M2|6700|7CM2|7CR|7RM5)|ILME-FX30|ZV-(E1|E10M2))\b/',
10122
+ Condition => '$$self{Model} =~ /^(ILCE-(1M2|6700|7CM2|7CR|7RM5)|ILME-(FX2|FX30)|ZV-(E1|E10M2))\b/',
10097
10123
  Format => 'int16s[32]',
10098
10124
  },
10099
10125
  );