exiftool-vendored.exe 12.30.0 → 12.38.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 (52) hide show
  1. package/bin/exiftool_files/Changes +129 -3
  2. package/bin/exiftool_files/README +2 -2
  3. package/bin/exiftool_files/arg_files/xmp2exif.args +2 -1
  4. package/bin/exiftool_files/config_files/example.config +1 -1
  5. package/bin/exiftool_files/exiftool.pl +100 -58
  6. package/bin/exiftool_files/fmt_files/gpx.fmt +1 -1
  7. package/bin/exiftool_files/fmt_files/gpx_wpt.fmt +1 -1
  8. package/bin/exiftool_files/lib/Image/ExifTool/BuildTagLookup.pm +13 -3
  9. package/bin/exiftool_files/lib/Image/ExifTool/CBOR.pm +331 -0
  10. package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +175 -12
  11. package/bin/exiftool_files/lib/Image/ExifTool/CanonCustom.pm +12 -2
  12. package/bin/exiftool_files/lib/Image/ExifTool/Charset.pm +2 -0
  13. package/bin/exiftool_files/lib/Image/ExifTool/DPX.pm +13 -2
  14. package/bin/exiftool_files/lib/Image/ExifTool/DarwinCore.pm +2 -2
  15. package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +109 -3
  16. package/bin/exiftool_files/lib/Image/ExifTool/FLIR.pm +33 -8
  17. package/bin/exiftool_files/lib/Image/ExifTool/GIF.pm +5 -1
  18. package/bin/exiftool_files/lib/Image/ExifTool/GPS.pm +14 -10
  19. package/bin/exiftool_files/lib/Image/ExifTool/Geotag.pm +13 -2
  20. package/bin/exiftool_files/lib/Image/ExifTool/GoPro.pm +16 -1
  21. package/bin/exiftool_files/lib/Image/ExifTool/ICC_Profile.pm +96 -4
  22. package/bin/exiftool_files/lib/Image/ExifTool/JSON.pm +7 -3
  23. package/bin/exiftool_files/lib/Image/ExifTool/Jpeg2000.pm +154 -24
  24. package/bin/exiftool_files/lib/Image/ExifTool/M2TS.pm +27 -12
  25. package/bin/exiftool_files/lib/Image/ExifTool/MacOS.pm +2 -2
  26. package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +1204 -96
  27. package/bin/exiftool_files/lib/Image/ExifTool/NikonCustom.pm +5 -1
  28. package/bin/exiftool_files/lib/Image/ExifTool/NikonSettings.pm +135 -71
  29. package/bin/exiftool_files/lib/Image/ExifTool/Olympus.pm +5 -1
  30. package/bin/exiftool_files/lib/Image/ExifTool/OpenEXR.pm +4 -2
  31. package/bin/exiftool_files/lib/Image/ExifTool/PDF.pm +11 -12
  32. package/bin/exiftool_files/lib/Image/ExifTool/PNG.pm +4 -1
  33. package/bin/exiftool_files/lib/Image/ExifTool/Panasonic.pm +2 -2
  34. package/bin/exiftool_files/lib/Image/ExifTool/Pentax.pm +2 -1
  35. package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +69 -10
  36. package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +141 -111
  37. package/bin/exiftool_files/lib/Image/ExifTool/README +9 -2
  38. package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +56 -13
  39. package/bin/exiftool_files/lib/Image/ExifTool/TagInfoXML.pm +9 -4
  40. package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +6473 -5827
  41. package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +1401 -54
  42. package/bin/exiftool_files/lib/Image/ExifTool/WritePDF.pl +1 -0
  43. package/bin/exiftool_files/lib/Image/ExifTool/WritePNG.pl +2 -0
  44. package/bin/exiftool_files/lib/Image/ExifTool/WriteQuickTime.pl +10 -0
  45. package/bin/exiftool_files/lib/Image/ExifTool/WriteXMP.pl +10 -11
  46. package/bin/exiftool_files/lib/Image/ExifTool/Writer.pl +50 -5
  47. package/bin/exiftool_files/lib/Image/ExifTool/XMP.pm +125 -31
  48. package/bin/exiftool_files/lib/Image/ExifTool/XMP2.pl +3 -1
  49. package/bin/exiftool_files/lib/Image/ExifTool/XMPStruct.pl +3 -1
  50. package/bin/exiftool_files/lib/Image/ExifTool.pm +8931 -8864
  51. package/bin/exiftool_files/lib/Image/ExifTool.pod +21 -13
  52. package/package.json +3 -3
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
88
88
  sub ProcessExifInfo($$$);
89
89
  sub SwapWords($);
90
90
 
91
- $VERSION = '4.50';
91
+ $VERSION = '4.55';
92
92
 
93
93
  # Note: Removed 'USM' from 'L' lenses since it is redundant - PH
94
94
  # (or is it? Ref 32 shows 5 non-USM L-type lenses)
@@ -187,7 +187,7 @@ $VERSION = '4.50';
187
187
  37.2 => 'Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical [IF] Macro (A20)', #38
188
188
  37.3 => 'Tamron SP AF 17-50mm f/2.8 XR Di II VC LD Aspherical [IF]', #34
189
189
  37.4 => 'Tamron AF 18-270mm f/3.5-6.3 Di II VC LD Aspherical [IF] Macro', #forum2937
190
- 38 => 'Canon EF 80-200mm f/4.5-5.6', #32
190
+ 38 => 'Canon EF 80-200mm f/4.5-5.6 II', #32 (II added ref https://github.com/Exiv2/exiv2/issues/1906)
191
191
  39 => 'Canon EF 75-300mm f/4-5.6',
192
192
  40 => 'Canon EF 28-80mm f/3.5-5.6',
193
193
  41 => 'Canon EF 28-90mm f/4-5.6', #32
@@ -519,7 +519,8 @@ $VERSION = '4.50';
519
519
  507 => 'Canon EF 16-35mm f/4L IS USM', #42
520
520
  508 => 'Canon EF 11-24mm f/4L USM or Tamron Lens', #PH
521
521
  508.1 => 'Tamron 10-24mm f/3.5-4.5 Di II VC HLD (B023)', #PH
522
- 624 => 'Sigma 70-200mm f/2.8 DG OS HSM | S', #IB (018)
522
+ 624 => 'Sigma 70-200mm f/2.8 DG OS HSM | S or other Sigma Lens', #IB (018)
523
+ 624.1 => 'Sigma 150-600mm f/5-6.3 | C', #ChrisSkopec
523
524
  747 => 'Canon EF 100-400mm f/4.5-5.6L IS II USM or Tamron Lens', #JR
524
525
  747.1 => 'Tamron SP 150-600mm f/5-6.3 Di VC USD G2', #50
525
526
  748 => 'Canon EF 100-400mm f/4.5-5.6L IS II USM + 1.4x or Tamron Lens', #JR (1.4x Mk III)
@@ -593,6 +594,12 @@ $VERSION = '4.50';
593
594
  '61182.20' => 'Canon RF 100-500mm F4.5-7.1L IS USM + RF2x',
594
595
  '61182.21' => 'Canon RF 70-200mm F4L IS USM', #42
595
596
  '61182.22' => 'Canon RF 50mm F1.8 STM', #42
597
+ '61182.23' => 'Canon RF 14-35mm F4L IS USM', #IB
598
+ '61182.24' => 'Canon RF 100-400mm F5.6-8 IS USM', #42
599
+ '61182.25' => 'Canon RF 100-400mm F5.6-8 IS USM + RF1.4x', #42 (NC)
600
+ '61182.26' => 'Canon RF 100-400mm F5.6-8 IS USM + RF2x', #42 (NC)
601
+ '61182.27' => 'Canon RF 16mm F2.8 STM', #42
602
+ #'61182.xx' => 'Canon RF 100mm F2.8L MACRO IS USM',
596
603
  65535 => 'n/a',
597
604
  );
598
605
 
@@ -947,6 +954,7 @@ $VERSION = '4.50';
947
954
  0x80000435 => 'EOS Rebel T8i / 850D / X10i', #JR/PH
948
955
  0x80000436 => 'EOS SL3 / 250D / Kiss X10', #25
949
956
  0x80000437 => 'EOS 90D', #IB
957
+ 0x80000450 => 'EOS R3', #42
950
958
  0x80000453 => 'EOS R6', #PH
951
959
  0x80000467 => 'PowerShot ZOOM',
952
960
  0x80000468 => 'EOS M50 Mark II / Kiss M2', #IB
@@ -1911,6 +1919,11 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
1911
1919
  Name => 'ColorData10',
1912
1920
  SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorData10' },
1913
1921
  },
1922
+ { # (int16u[3973]) - R3 ref IB
1923
+ Condition => '$count == 3973',
1924
+ Name => 'ColorData11',
1925
+ SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorData11' },
1926
+ },
1914
1927
  {
1915
1928
  Name => 'ColorDataUnknown',
1916
1929
  SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorDataUnknown' },
@@ -6728,7 +6741,17 @@ my %ciMaxFocal = (
6728
6741
  PrintConvInv => '$val =~ s/ ?m$//; IsFloat($val) ? $val : 655.35',
6729
6742
  },
6730
6743
  # 22 - values: 0, 1
6731
- # 23 - values: 0, 21, 22
6744
+ 23 => { #JohnMoyer (forum12925)
6745
+ Name => 'ShutterMode',
6746
+ PrintConv => {
6747
+ 0 => 'Mechanical',
6748
+ 1 => 'Electronic First Curtain',
6749
+ 2 => 'Electronic',
6750
+ # 3 => ?
6751
+ # 21 => ?
6752
+ # 22 => ?
6753
+ },
6754
+ },
6732
6755
  25 => { #PH
6733
6756
  Name => 'FlashExposureLock',
6734
6757
  PrintConv => \%offOn,
@@ -6761,6 +6784,12 @@ my %ciMaxFocal = (
6761
6784
  277 => 'Canon RF 100-500mm F4.5-7.1L IS USM + RF2x',
6762
6785
  278 => 'Canon RF 70-200mm F4L IS USM', #42
6763
6786
  280 => 'Canon RF 50mm F1.8 STM', #42
6787
+ 281 => 'Canon RF 14-35mm F4L IS USM', #42/IB
6788
+ 283 => 'Canon RF 100-400mm F5.6-8 IS USM', #42
6789
+ 284 => 'Canon RF 100-400mm F5.6-8 IS USM + RF1.4x', #42 (NC)
6790
+ 285 => 'Canon RF 100-400mm F5.6-8 IS USM + RF2x', #42 (NC)
6791
+ 288 => 'Canon RF 16mm F2.8 STM', #42
6792
+ #xxx => 'Canon RF 100mm F2.8L MACRO IS USM',
6764
6793
  # Note: add new RF lenses to %canonLensTypes with ID 61182
6765
6794
  },
6766
6795
  },
@@ -7696,7 +7725,10 @@ my %ciMaxFocal = (
7696
7725
  # Color data (MakerNotes tag 0x4001, count=1312,1313,1316) (ref PH)
7697
7726
  %Image::ExifTool::Canon::ColorData7 = (
7698
7727
  %binaryDataAttrs,
7699
- NOTES => 'These tags are used by the EOS 1DX, 5DmkIII, 6D, 100D, 650D, 700D, M and 7DmkII.',
7728
+ NOTES => q{
7729
+ These tags are used by the EOS 1DX, 5DmkIII, 6D, 7DmkII, 100D, 650D, 700D,
7730
+ 8000D, M and M2.
7731
+ },
7700
7732
  FORMAT => 'int16s',
7701
7733
  FIRST_ENTRY => 0,
7702
7734
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
@@ -7707,8 +7739,8 @@ my %ciMaxFocal = (
7707
7739
  DataMember => 'ColorDataVersion',
7708
7740
  RawConv => '$$self{ColorDataVersion} = $val',
7709
7741
  PrintConv => {
7710
- 10 => '10 (1DX/5DmkIII/6D/70D/100D/650D/700D/M)',
7711
- 11 => '11 (7DmkII/750D/760D)',
7742
+ 10 => '10 (1DX/5DmkIII/6D/70D/100D/650D/700D/M/M2)',
7743
+ 11 => '11 (7DmkII/750D/760D/8000D)',
7712
7744
  },
7713
7745
  },
7714
7746
  # not really sure about the AsShot, Auto and Measured values any more - PH
@@ -7843,6 +7875,10 @@ my %ciMaxFocal = (
7843
7875
  # Color data (MakerNotes tag 0x4001, count=1560,etc) (ref IB)
7844
7876
  %Image::ExifTool::Canon::ColorData8 = (
7845
7877
  %binaryDataAttrs,
7878
+ NOTES => q{
7879
+ These tags are used by the EOS 1DXmkII, 5DS, 5DSR, 5DmkIV, 6DmkII, 77D, 80D,
7880
+ 200D, 800D, 1300D, 2000D, 4000D and 9000D.
7881
+ },
7846
7882
  FORMAT => 'int16s',
7847
7883
  FIRST_ENTRY => 0,
7848
7884
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
@@ -7853,10 +7889,10 @@ my %ciMaxFocal = (
7853
7889
  DataMember => 'ColorDataVersion',
7854
7890
  RawConv => '$$self{ColorDataVersion} = $val',
7855
7891
  PrintConv => {
7856
- 12 => '12 (5DS/5DSR)',
7857
- 13 => '13 (80D)', #PH
7892
+ 12 => '12 (1DXmkII/5DS/5DSR)',
7893
+ 13 => '13 (80D/5DmkIV)', #PH
7858
7894
  14 => '14 (1300D/2000D/4000D)', #IB
7859
- 15 => '15 (6DmkII/77D/200D/800D)', #IB
7895
+ 15 => '15 (6DmkII/77D/200D/800D,9000D)', #IB
7860
7896
  },
7861
7897
  },
7862
7898
  0x3f => { Name => 'WB_RGGBLevelsAsShot', Format => 'int16s[4]' },
@@ -8003,6 +8039,7 @@ my %ciMaxFocal = (
8003
8039
  # Color data (MakerNotes tag 0x4001, count=1820,etc) (ref PH)
8004
8040
  %Image::ExifTool::Canon::ColorData9 = (
8005
8041
  %binaryDataAttrs,
8042
+ NOTES => 'These tags are used by the M6mkII, M50, M200, EOS R, RP, 90D, 250D and 850D',
8006
8043
  FORMAT => 'int16s',
8007
8044
  FIRST_ENTRY => 0,
8008
8045
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
@@ -8015,8 +8052,8 @@ my %ciMaxFocal = (
8015
8052
  PrintConv => {
8016
8053
  16 => '16 (M50)',
8017
8054
  17 => '17 (EOS R)', # (and PowerShot SX740HS)
8018
- 18 => '18 (EOS RP)', # (and PowerShot SX70HS)
8019
- 19 => '19 (90D/M6mkII/M200)',# (and PowerShot G7XmkIII)
8055
+ 18 => '18 (EOS RP/250D)', # (and PowerShot SX70HS)
8056
+ 19 => '19 (90D/850D/M6mkII/M200)',# (and PowerShot G7XmkIII)
8020
8057
  },
8021
8058
  },
8022
8059
  0x47 => { Name => 'WB_RGGBLevelsAsShot', Format => 'int16s[4]' },
@@ -8127,6 +8164,7 @@ my %ciMaxFocal = (
8127
8164
  # (same as ColorData9 but shifted up by 0x0e, ref PH)
8128
8165
  %Image::ExifTool::Canon::ColorData10 = (
8129
8166
  %binaryDataAttrs,
8167
+ NOTES => 'These tags are used by the R5, R5 and EOS 1DXmkIII.',
8130
8168
  FORMAT => 'int16s',
8131
8169
  FIRST_ENTRY => 0,
8132
8170
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
@@ -8245,6 +8283,125 @@ my %ciMaxFocal = (
8245
8283
  },
8246
8284
  );
8247
8285
 
8286
+ # Color data (MakerNotes tag 0x4001, count=3973, ref IB)
8287
+ %Image::ExifTool::Canon::ColorData11 = (
8288
+ %binaryDataAttrs,
8289
+ NOTES => 'These tags are used by the EOS R3',
8290
+ FORMAT => 'int16s',
8291
+ FIRST_ENTRY => 0,
8292
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
8293
+ DATAMEMBER => [ 0 ],
8294
+ IS_SUBDIR => [ 0x12c ],
8295
+ 0x00 => {
8296
+ Name => 'ColorDataVersion',
8297
+ DataMember => 'ColorDataVersion',
8298
+ RawConv => '$$self{ColorDataVersion} = $val',
8299
+ PrintConv => {
8300
+ 34 => '34 (R3)', #IB
8301
+ },
8302
+ },
8303
+ 0x69 => { Name => 'WB_RGGBLevelsAsShot', Format => 'int16s[4]' },
8304
+ 0x6d => 'ColorTempAsShot',
8305
+ 0x6e => { Name => 'WB_RGGBLevelsAuto', Format => 'int16s[4]' },
8306
+ 0x72 => 'ColorTempAuto',
8307
+ 0x73 => { Name => 'WB_RGGBLevelsMeasured', Format => 'int16s[4]' },
8308
+ 0x77 => 'ColorTempMeasured',
8309
+ 0x78 => { Name => 'WB_RGGBLevelsUnknown', Format => 'int16s[4]', Unknown => 1 },
8310
+ 0x7c => { Name => 'ColorTempUnknown', Unknown => 1 },
8311
+ 0x7d => { Name => 'WB_RGGBLevelsUnknown2', Format => 'int16s[4]', Unknown => 1 },
8312
+ 0x81 => { Name => 'ColorTempUnknown2', Unknown => 1 },
8313
+ 0x82 => { Name => 'WB_RGGBLevelsUnknown3', Format => 'int16s[4]', Unknown => 1 },
8314
+ 0x86 => { Name => 'ColorTempUnknown3', Unknown => 1 },
8315
+ 0x87 => { Name => 'WB_RGGBLevelsUnknown4', Format => 'int16s[4]', Unknown => 1 },
8316
+ 0x8b => { Name => 'ColorTempUnknown4', Unknown => 1 },
8317
+ 0x8c => { Name => 'WB_RGGBLevelsUnknown5', Format => 'int16s[4]', Unknown => 1 },
8318
+ 0x90 => { Name => 'ColorTempUnknown5', Unknown => 1 },
8319
+ 0x91 => { Name => 'WB_RGGBLevelsUnknown6', Format => 'int16s[4]', Unknown => 1 },
8320
+ 0x95 => { Name => 'ColorTempUnknown6', Unknown => 1 },
8321
+ 0x96 => { Name => 'WB_RGGBLevelsUnknown7', Format => 'int16s[4]', Unknown => 1 },
8322
+ 0x9a => { Name => 'ColorTempUnknown7', Unknown => 1 },
8323
+ 0x9b => { Name => 'WB_RGGBLevelsUnknown8', Format => 'int16s[4]', Unknown => 1 },
8324
+ 0x9f => { Name => 'ColorTempUnknown8', Unknown => 1 },
8325
+ 0xa0 => { Name => 'WB_RGGBLevelsUnknown9', Format => 'int16s[4]', Unknown => 1 },
8326
+ 0xa4 => { Name => 'ColorTempUnknown9', Unknown => 1 },
8327
+ 0xa5 => { Name => 'WB_RGGBLevelsUnknown10', Format => 'int16s[4]', Unknown => 1 },
8328
+ 0xa9 => { Name => 'ColorTempUnknown10', Unknown => 1 },
8329
+ 0xaa => { Name => 'WB_RGGBLevelsUnknown11', Format => 'int16s[4]', Unknown => 1 },
8330
+ 0xae => { Name => 'ColorTempUnknown11', Unknown => 1 },
8331
+ 0xaf => { Name => 'WB_RGGBLevelsUnknown11', Format => 'int16s[4]', Unknown => 1 },
8332
+ 0xb3 => { Name => 'ColorTempUnknown11', Unknown => 1 },
8333
+ 0xb4 => { Name => 'WB_RGGBLevelsUnknown12', Format => 'int16s[4]', Unknown => 1 },
8334
+ 0xb8 => { Name => 'ColorTempUnknown12', Unknown => 1 },
8335
+ 0xb9 => { Name => 'WB_RGGBLevelsUnknown13', Format => 'int16s[4]', Unknown => 1 },
8336
+ 0xbd => { Name => 'ColorTempUnknown13', Unknown => 1 },
8337
+ 0xbe => { Name => 'WB_RGGBLevelsUnknown14', Format => 'int16s[4]', Unknown => 1 },
8338
+ 0xc2 => { Name => 'ColorTempUnknown14', Unknown => 1 },
8339
+ 0xc3 => { Name => 'WB_RGGBLevelsUnknown15', Format => 'int16s[4]', Unknown => 1 },
8340
+ 0xc7 => { Name => 'ColorTempUnknown15', Unknown => 1 },
8341
+ 0xc8 => { Name => 'WB_RGGBLevelsUnknown16', Format => 'int16s[4]', Unknown => 1 },
8342
+ 0xcc => { Name => 'ColorTempUnknown16', Unknown => 1 },
8343
+ 0xcd => { Name => 'WB_RGGBLevelsDaylight', Format => 'int16s[4]' },
8344
+ 0xd1 => 'ColorTempDaylight',
8345
+ 0xd2 => { Name => 'WB_RGGBLevelsShade', Format => 'int16s[4]' },
8346
+ 0xd6 => 'ColorTempShade',
8347
+ 0xd7 => { Name => 'WB_RGGBLevelsCloudy', Format => 'int16s[4]' },
8348
+ 0xdb => 'ColorTempCloudy',
8349
+ 0xdc => { Name => 'WB_RGGBLevelsTungsten', Format => 'int16s[4]' },
8350
+ 0xe0 => 'ColorTempTungsten',
8351
+ 0xe1 => { Name => 'WB_RGGBLevelsFluorescent',Format => 'int16s[4]' },
8352
+ 0xe5 => 'ColorTempFluorescent',
8353
+ 0xe6 => { Name => 'WB_RGGBLevelsKelvin', Format => 'int16s[4]' },
8354
+ 0xea => 'ColorTempKelvin',
8355
+ 0xeb => { Name => 'WB_RGGBLevelsFlash', Format => 'int16s[4]' },
8356
+ 0xef => 'ColorTempFlash',
8357
+ 0xf0 => { Name => 'WB_RGGBLevelsUnknown17', Format => 'int16s[4]', Unknown => 1 },
8358
+ 0xf4 => { Name => 'ColorTempUnknown17', Unknown => 1 },
8359
+ 0xf5 => { Name => 'WB_RGGBLevelsUnknown18', Format => 'int16s[4]', Unknown => 1 },
8360
+ 0xf9 => { Name => 'ColorTempUnknown18', Unknown => 1 },
8361
+ 0xfa => { Name => 'WB_RGGBLevelsUnknown19', Format => 'int16s[4]', Unknown => 1 },
8362
+ 0xfe => { Name => 'ColorTempUnknown19', Unknown => 1 },
8363
+ 0xff => { Name => 'WB_RGGBLevelsUnknown20', Format => 'int16s[4]', Unknown => 1 },
8364
+ 0x103 => { Name => 'ColorTempUnknown20', Unknown => 1 },
8365
+ 0x104 => { Name => 'WB_RGGBLevelsUnknown21', Format => 'int16s[4]', Unknown => 1 },
8366
+ 0x108 => { Name => 'ColorTempUnknown21', Unknown => 1 },
8367
+ 0x109 => { Name => 'WB_RGGBLevelsUnknown22', Format => 'int16s[4]', Unknown => 1 },
8368
+ 0x10d => { Name => 'ColorTempUnknown22', Unknown => 1 },
8369
+ 0x10e => { Name => 'WB_RGGBLevelsUnknown23', Format => 'int16s[4]', Unknown => 1 },
8370
+ 0x112 => { Name => 'ColorTempUnknown23', Unknown => 1 },
8371
+ 0x113 => { Name => 'WB_RGGBLevelsUnknown24', Format => 'int16s[4]', Unknown => 1 },
8372
+ 0x117 => { Name => 'ColorTempUnknown24', Unknown => 1 },
8373
+ 0x118 => { Name => 'WB_RGGBLevelsUnknown25', Format => 'int16s[4]', Unknown => 1 },
8374
+ 0x11c => { Name => 'ColorTempUnknown25', Unknown => 1 },
8375
+ 0x11d => { Name => 'WB_RGGBLevelsUnknown26', Format => 'int16s[4]', Unknown => 1 },
8376
+ 0x121 => { Name => 'ColorTempUnknown26', Unknown => 1 },
8377
+ 0x122 => { Name => 'WB_RGGBLevelsUnknown27', Format => 'int16s[4]', Unknown => 1 },
8378
+ 0x126 => { Name => 'ColorTempUnknown27', Unknown => 1 },
8379
+ 0x12c => {
8380
+ Name => 'ColorCalib',
8381
+ Format => 'undef[120]',
8382
+ Unknown => 1,
8383
+ SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorCalib' }
8384
+ },
8385
+ 0x16b => {
8386
+ Name => 'PerChannelBlackLevel',
8387
+ Format => 'int16u[4]',
8388
+ },
8389
+ # 0x27c - PerChannelBlackLevel again
8390
+ 0x280 => {
8391
+ Name => 'NormalWhiteLevel',
8392
+ Format => 'int16u',
8393
+ RawConv => '$val || undef',
8394
+ },
8395
+ 0x281 => {
8396
+ Name => 'SpecularWhiteLevel',
8397
+ Format => 'int16u',
8398
+ },
8399
+ 0x282 => {
8400
+ Name => 'LinearityUpperMargin',
8401
+ Format => 'int16u',
8402
+ },
8403
+ );
8404
+
8248
8405
  # Unknown color data (MakerNotes tag 0x4001)
8249
8406
  %Image::ExifTool::Canon::ColorDataUnknown = (
8250
8407
  PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
@@ -8735,6 +8892,7 @@ my %filterConv = (
8735
8892
  # --> ignored when reading, but offsets are updated when writing
8736
8893
  CMT1 => { # (CR3 files)
8737
8894
  Name => 'IFD0',
8895
+ PreservePadding => 1,
8738
8896
  SubDirectory => {
8739
8897
  TagTable => 'Image::ExifTool::Exif::Main',
8740
8898
  ProcessProc => \&Image::ExifTool::ProcessTIFF,
@@ -8743,6 +8901,7 @@ my %filterConv = (
8743
8901
  },
8744
8902
  CMT2 => { # (CR3 files)
8745
8903
  Name => 'ExifIFD',
8904
+ PreservePadding => 1,
8746
8905
  SubDirectory => {
8747
8906
  TagTable => 'Image::ExifTool::Exif::Main',
8748
8907
  ProcessProc => \&Image::ExifTool::ProcessTIFF,
@@ -8751,6 +8910,7 @@ my %filterConv = (
8751
8910
  },
8752
8911
  CMT3 => { # (CR3 files)
8753
8912
  Name => 'MakerNoteCanon',
8913
+ PreservePadding => 1,
8754
8914
  SubDirectory => {
8755
8915
  TagTable => 'Image::ExifTool::Canon::Main',
8756
8916
  ProcessProc => \&ProcessCMT3,
@@ -8759,6 +8919,7 @@ my %filterConv = (
8759
8919
  },
8760
8920
  CMT4 => { # (CR3 files)
8761
8921
  Name => 'GPSInfo',
8922
+ PreservePadding => 1,
8762
8923
  SubDirectory => {
8763
8924
  TagTable => 'Image::ExifTool::GPS::Main',
8764
8925
  ProcessProc => \&Image::ExifTool::ProcessTIFF,
@@ -8769,6 +8930,7 @@ my %filterConv = (
8769
8930
  THMB => {
8770
8931
  Name => 'ThumbnailImage',
8771
8932
  Groups => { 2 => 'Preview' },
8933
+ PreservePadding => 1,
8772
8934
  RawConv => 'substr($val, 16)',
8773
8935
  Binary => 1,
8774
8936
  },
@@ -8783,6 +8945,7 @@ my %filterConv = (
8783
8945
  WRITE_PROC => 'Image::ExifTool::QuickTime::WriteQuickTime',
8784
8946
  CNOP => {
8785
8947
  Name => 'CanonVRD',
8948
+ PreservePadding => 1,
8786
8949
  SubDirectory => {
8787
8950
  TagTable => 'Image::ExifTool::CanonVRD::Main',
8788
8951
  WriteProc => 'Image::ExifTool::CanonVRD::WriteCanonDR4',
@@ -1290,9 +1290,19 @@ my %convPFn = ( PrintConv => \&ConvertPfn, PrintConvInv => \&ConvertPfnInv );
1290
1290
  },
1291
1291
  },
1292
1292
  0x0106 => [{
1293
+ Name => 'AEBShotCount',
1294
+ Condition => '$$self{Model} =~ /\b90D\b/',
1295
+ Notes => 'EOS 90D', # (and who knows what others?)
1296
+ PrintConv => {
1297
+ 2 => '2 shots',
1298
+ 3 => '3 shots',
1299
+ 5 => '5 shots',
1300
+ 7 => '7 shots',
1301
+ },
1302
+ },{
1293
1303
  Name => 'AEBShotCount',
1294
1304
  Condition => '$count == 1',
1295
- Notes => 'one value for some models...',
1305
+ Notes => 'other models storing a single value',
1296
1306
  PrintConv => {
1297
1307
  0 => '3 shots',
1298
1308
  1 => '2 shots',
@@ -1302,7 +1312,7 @@ my %convPFn = ( PrintConv => \&ConvertPfn, PrintConvInv => \&ConvertPfnInv );
1302
1312
  },{
1303
1313
  Name => 'AEBShotCount',
1304
1314
  Count => 2,
1305
- Notes => 'two values for others',
1315
+ Notes => 'models storing two values',
1306
1316
  PrintConv => {
1307
1317
  '3 0' => '3 shots',
1308
1318
  '2 1' => '2 shots',
@@ -6,6 +6,8 @@
6
6
  # Revisions: 2009/08/28 - P. Harvey created
7
7
  # 2010/01/20 - P. Harvey complete re-write
8
8
  # 2010/07/16 - P. Harvey added UTF-16 support
9
+ #
10
+ # Notes: Charset lookups are generated using my convertCharset script
9
11
  #------------------------------------------------------------------------------
10
12
 
11
13
  package Image::ExifTool::Charset;
@@ -15,7 +15,7 @@ use strict;
15
15
  use vars qw($VERSION);
16
16
  use Image::ExifTool qw(:DataAccess :Utils);
17
17
 
18
- $VERSION = '1.05';
18
+ $VERSION = '1.06';
19
19
 
20
20
  # DPX tags
21
21
  %Image::ExifTool::DPX::Main = (
@@ -156,7 +156,18 @@ $VERSION = '1.05';
156
156
  1532=> { Name => 'SourceCreateDate', Format => 'string[24]' },
157
157
  1556=> { Name => 'InputDeviceName', Format => 'string[32]' },
158
158
  1588=> { Name => 'InputDeviceSerialNumber', Format => 'string[32]' },
159
- # 1620=> { Name => 'AspectRatio', Format => 'int32u' },
159
+ # 1620 => { Name => 'Border', Format => 'int16u[4]' },
160
+ 1628 => {
161
+ Name => 'AspectRatio',
162
+ Format => 'int32u[2]',
163
+ RawConv => '$val =~ /4294967295/ ? undef : $val', # ignore undefined values
164
+ PrintConv => q{
165
+ return 'undef' if $val eq '0 0';
166
+ return 'inf' if $val=~/ 0$/;
167
+ my @a=split(' ',$val);
168
+ return join(':', Rationalize($a[0]/$a[1]));
169
+ },
170
+ },
160
171
  1724 => { Name => 'OriginalFrameRate',Format => 'float' },
161
172
  1728 => { Name => 'ShutterAngle', Format => 'float', RawConv => '($val =~ /\d/ and $val !~ /nan/i) ? $val : undef' }, #2
162
173
  1732 => { Name => 'FrameID', Format => 'string[32]' },
@@ -15,7 +15,7 @@ use strict;
15
15
  use vars qw($VERSION);
16
16
  use Image::ExifTool::XMP;
17
17
 
18
- $VERSION = '1.05';
18
+ $VERSION = '1.06';
19
19
 
20
20
  my %dateTimeInfo = (
21
21
  # NOTE: Do NOT put "Groups" here because Groups hash must not be common!
@@ -38,7 +38,7 @@ my %event = (
38
38
  earliestDate => { %dateTimeInfo, Groups => { 2 => 'Time' } },
39
39
  endDayOfYear => { Writable => 'integer', Groups => { 2 => 'Time' } },
40
40
  eventDate => { %dateTimeInfo, Groups => { 2 => 'Time' } },
41
- eventID => { },
41
+ eventID => { Avoid => 1, Notes => 'avoided in favor of XMP-iptcExt:EventID' },
42
42
  eventRemarks => { Writable => 'lang-alt' },
43
43
  eventTime => {
44
44
  Groups => { 2 => 'Time' },
@@ -56,7 +56,7 @@ use vars qw($VERSION $AUTOLOAD @formatSize @formatName %formatNumber %intFormat
56
56
  use Image::ExifTool qw(:DataAccess :Utils);
57
57
  use Image::ExifTool::MakerNotes;
58
58
 
59
- $VERSION = '4.36';
59
+ $VERSION = '4.38';
60
60
 
61
61
  sub ProcessExif($$$);
62
62
  sub WriteExif($$$);
@@ -265,6 +265,7 @@ sub BINARY_DATA_LIMIT { return 10 * 1024 * 1024; }
265
265
  32892 => 'Sequential Color Filter', #JR (Sony ARQ)
266
266
  34892 => 'Linear Raw', #2
267
267
  51177 => 'Depth Map', # (DNG 1.5)
268
+ 52527 => 'Semantic Mask', # (DNG 1.6)
268
269
  );
269
270
 
270
271
  %orientation = (
@@ -291,6 +292,7 @@ sub BINARY_DATA_LIMIT { return 10 * 1024 * 1024; }
291
292
  9 => 'Depth map of reduced-resolution image', # (DNG 1.5)
292
293
  16 => 'Enhanced image data', # (DNG 1.5)
293
294
  0x10001 => 'Alternate reduced-resolution image', # (DNG 1.2)
295
+ 0x10004 => 'Semantic Mask', # (DNG 1.6)
294
296
  0xffffffff => 'invalid', #(found in E5700 NEF's)
295
297
  BITMASK => {
296
298
  0 => 'Reduced resolution',
@@ -366,6 +368,7 @@ my %opcodeInfo = (
366
368
  11 => 'DeltaPerColumn',
367
369
  12 => 'ScalePerRow',
368
370
  13 => 'ScalePerColumn',
371
+ 14 => 'WarpRectilinear2', # (DNG 1.6)
369
372
  },
370
373
  PrintConvInv => undef, # (so the inverse conversion is not performed)
371
374
  );
@@ -3038,12 +3041,12 @@ my %opcodeInfo = (
3038
3041
  },
3039
3042
  },
3040
3043
  #
3041
- # DNG tags 0xc6XX and 0xc7XX (ref 2 unless otherwise stated)
3044
+ # DNG tags 0xc6XX, 0xc7XX and 0xcdXX (ref 2 unless otherwise stated)
3042
3045
  #
3043
3046
  0xc612 => {
3044
3047
  Name => 'DNGVersion',
3045
3048
  Notes => q{
3046
- tags 0xc612-0xc7b5 are defined by the DNG specification unless otherwise
3049
+ tags 0xc612-0xcd3b are defined by the DNG specification unless otherwise
3047
3050
  noted. See L<https://helpx.adobe.com/photoshop/digital-negative.html> for
3048
3051
  the specification
3049
3052
  },
@@ -4041,6 +4044,97 @@ my %opcodeInfo = (
4041
4044
  Protected => 1,
4042
4045
  WriteGroup => 'IFD0',
4043
4046
  },
4047
+ 0xcd2d => { # DNG 1.6
4048
+ Name => 'ProfileGainTableMap',
4049
+ Writable => 'undef',
4050
+ WriteGroup => 'SubIFD',
4051
+ Protected => 1,
4052
+ Binary => 1,
4053
+ },
4054
+ 0xcd2e => { # DNG 1.6
4055
+ Name => 'SemanticName',
4056
+ # Writable => 'string',
4057
+ WriteGroup => 'SubIFD' #? (NC) Semantic Mask IFD (only for Validate)
4058
+ },
4059
+ 0xcd30 => { # DNG 1.6
4060
+ Name => 'SemanticInstanceIFD',
4061
+ # Writable => 'string',
4062
+ WriteGroup => 'SubIFD' #? (NC) Semantic Mask IFD (only for Validate)
4063
+ },
4064
+ 0xcd31 => { # DNG 1.6
4065
+ Name => 'CalibrationIlluminant3',
4066
+ Writable => 'int16u',
4067
+ WriteGroup => 'IFD0',
4068
+ Protected => 1,
4069
+ SeparateTable => 'LightSource',
4070
+ PrintConv => \%lightSource,
4071
+ },
4072
+ 0xcd32 => { # DNG 1.6
4073
+ Name => 'CameraCalibration3',
4074
+ Writable => 'rational64s',
4075
+ WriteGroup => 'IFD0',
4076
+ Count => -1,
4077
+ Protected => 1,
4078
+ },
4079
+ 0xcd33 => { # DNG 1.6
4080
+ Name => 'ColorMatrix3',
4081
+ Writable => 'rational64s',
4082
+ WriteGroup => 'IFD0',
4083
+ Count => -1,
4084
+ Protected => 1,
4085
+ },
4086
+ 0xcd34 => { # DNG 1.6
4087
+ Name => 'ForwardMatrix3',
4088
+ Writable => 'rational64s',
4089
+ WriteGroup => 'IFD0',
4090
+ Count => -1,
4091
+ Protected => 1,
4092
+ },
4093
+ 0xcd35 => { # DNG 1.6
4094
+ Name => 'IlluminantData1',
4095
+ Writable => 'undef',
4096
+ WriteGroup => 'IFD0',
4097
+ Protected => 1,
4098
+ },
4099
+ 0xcd36 => { # DNG 1.6
4100
+ Name => 'IlluminantData2',
4101
+ Writable => 'undef',
4102
+ WriteGroup => 'IFD0',
4103
+ Protected => 1,
4104
+ },
4105
+ 0xcd37 => { # DNG 1.6
4106
+ Name => 'IlluminantData3',
4107
+ Writable => 'undef',
4108
+ WriteGroup => 'IFD0',
4109
+ Protected => 1,
4110
+ },
4111
+ 0xcd38 => { # DNG 1.6
4112
+ Name => 'MaskSubArea',
4113
+ # Writable => 'int32u',
4114
+ WriteGroup => 'SubIFD', #? (NC) Semantic Mask IFD (only for Validate)
4115
+ Count => 4,
4116
+ },
4117
+ 0xcd39 => { # DNG 1.6
4118
+ Name => 'ProfileHueSatMapData3',
4119
+ %longBin,
4120
+ Writable => 'float',
4121
+ WriteGroup => 'IFD0',
4122
+ Count => -1,
4123
+ Protected => 1,
4124
+ },
4125
+ 0xcd3a => { # DNG 1.6
4126
+ Name => 'ReductionMatrix3',
4127
+ Writable => 'rational64s',
4128
+ WriteGroup => 'IFD0',
4129
+ Count => -1,
4130
+ Protected => 1,
4131
+ },
4132
+ 0xcd3b => { # DNG 1.6
4133
+ Name => 'RGBTables',
4134
+ Writable => 'undef',
4135
+ WriteGroup => 'IFD0',
4136
+ Protected => 1,
4137
+ },
4044
4138
  0xea1c => { #13
4045
4139
  Name => 'Padding',
4046
4140
  Binary => 1,
@@ -4722,11 +4816,23 @@ my %subSecConv = (
4722
4816
  },
4723
4817
  GPSPosition => {
4724
4818
  Groups => { 2 => 'Location' },
4819
+ Writable => 1,
4820
+ WriteAlso => {
4821
+ GPSLatitude => '$val =~ /(.*?)( ?[NS])?,/ ? $1 : undef',
4822
+ GPSLatitudeRef => '$val =~ /(-?)(.*?) ?([NS]?),/ ? ($3 || ($1 ? "S" : "N")) : undef',
4823
+ GPSLongitude => '$val =~ /, ?(.*?)( ?[EW]?)$/ ? $1 : undef',
4824
+ GPSLongitudeRef => '$val =~ /, ?(-?)(.*?) ?([EW]?)$/ ? ($3 || ($1 ? "W" : "E")) : undef',
4825
+ },
4725
4826
  Require => {
4726
4827
  0 => 'GPSLatitude',
4727
4828
  1 => 'GPSLongitude',
4728
4829
  },
4729
4830
  Priority => 0,
4831
+ Notes => q{
4832
+ when written, writes GPSLatitude, GPSLatitudeRef, GPSLongitude and
4833
+ GPSLongitudeRef. This tag may be written using the same coordinate
4834
+ format as provided by Google Maps when right-clicking on a location
4835
+ },
4730
4836
  ValueConv => '(length($val[0]) or length($val[1])) ? "$val[0] $val[1]" : undef',
4731
4837
  PrintConv => '"$prt[0], $prt[1]"',
4732
4838
  },