exiftool-vendored.pl 13.32.0 → 13.34.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 (42) hide show
  1. package/bin/Changes +43 -4
  2. package/bin/MANIFEST +5 -0
  3. package/bin/META.json +1 -1
  4. package/bin/META.yml +1 -1
  5. package/bin/README +47 -46
  6. package/bin/exiftool +100 -83
  7. package/bin/lib/Image/ExifTool/BuildTagLookup.pm +4 -2
  8. package/bin/lib/Image/ExifTool/Canon.pm +15 -2
  9. package/bin/lib/Image/ExifTool/Exif.pm +6 -5
  10. package/bin/lib/Image/ExifTool/FlashPix.pm +4 -159
  11. package/bin/lib/Image/ExifTool/FujiFilm.pm +11 -3
  12. package/bin/lib/Image/ExifTool/Geotag.pm +5 -3
  13. package/bin/lib/Image/ExifTool/GoPro.pm +14 -2
  14. package/bin/lib/Image/ExifTool/LNK.pm +4 -1
  15. package/bin/lib/Image/ExifTool/Lang/cs.pm +0 -1
  16. package/bin/lib/Image/ExifTool/Lang/de.pm +0 -1
  17. package/bin/lib/Image/ExifTool/Lang/fr.pm +0 -1
  18. package/bin/lib/Image/ExifTool/Lang/it.pm +0 -1
  19. package/bin/lib/Image/ExifTool/Lang/ja.pm +0 -1
  20. package/bin/lib/Image/ExifTool/Lang/nl.pm +0 -1
  21. package/bin/lib/Image/ExifTool/Lang/pl.pm +0 -1
  22. package/bin/lib/Image/ExifTool/Lang/zh_cn.pm +0 -1
  23. package/bin/lib/Image/ExifTool/Microsoft.pm +158 -1
  24. package/bin/lib/Image/ExifTool/Minolta.pm +4 -2
  25. package/bin/lib/Image/ExifTool/Nikon.pm +69 -35
  26. package/bin/lib/Image/ExifTool/NikonCustom.pm +40 -10
  27. package/bin/lib/Image/ExifTool/Olympus.pm +253 -34
  28. package/bin/lib/Image/ExifTool/Panasonic.pm +3 -3
  29. package/bin/lib/Image/ExifTool/Pentax.pm +168 -14
  30. package/bin/lib/Image/ExifTool/QuickTime.pm +11 -4
  31. package/bin/lib/Image/ExifTool/README +2 -1
  32. package/bin/lib/Image/ExifTool/Sony.pm +43 -17
  33. package/bin/lib/Image/ExifTool/TNEF.pm +487 -0
  34. package/bin/lib/Image/ExifTool/TagLookup.pm +4375 -4267
  35. package/bin/lib/Image/ExifTool/TagNames.pod +244 -16
  36. package/bin/lib/Image/ExifTool/WriteExif.pl +14 -12
  37. package/bin/lib/Image/ExifTool/Writer.pl +12 -12
  38. package/bin/lib/Image/ExifTool.pm +12 -4
  39. package/bin/lib/Image/ExifTool.pod +50 -44
  40. package/bin/perl-Image-ExifTool.spec +46 -45
  41. package/bin/windows_exiftool.txt +87 -82
  42. package/package.json +1 -1
@@ -28,6 +28,7 @@
28
28
  # 22) Herbert Kauer private communication
29
29
  # 23) Daniel Pollock private communication (PEN-F)
30
30
  # 24) Sebastian private communication (E-M1 Mark III)
31
+ # 25) Karsten Gieselmann private communication (OM series)
31
32
  # IB) Iliah Borg private communication (LibRaw)
32
33
  # NJ) Niels Kristian Bech Jensen private communication
33
34
  #------------------------------------------------------------------------------
@@ -40,7 +41,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
40
41
  use Image::ExifTool::Exif;
41
42
  use Image::ExifTool::APP12;
42
43
 
43
- $VERSION = '2.87';
44
+ $VERSION = '2.89';
44
45
 
45
46
  sub PrintLensInfo($$$);
46
47
 
@@ -1933,20 +1934,39 @@ my %indexInfo = (
1933
1934
  0x309 => { #forum13341
1934
1935
  Name => 'AISubjectTrackingMode',
1935
1936
  Writable => 'int16u',
1936
- ValueConv => '($val >> 8) . " " . ($val & 0xff)',
1937
- ValueConvInv => 'my @a = split " ", $val; $val = $a[0]*256 + $a[1]',
1938
- PrintConv => [{
1939
- 0 => 'Off',
1940
- 1 => 'Motorsports',
1941
- 2 => 'Airplanes',
1942
- 3 => 'Trains',
1943
- 4 => 'Birds',
1944
- 5 => 'Dogs & Cats',
1945
- 6 => 'Human', #forum16072
1946
- },{
1947
- 0 => 'Object Not Found',
1948
- 1 => 'Object Found',
1949
- }],
1937
+ PrintConv => { #25 (OM models)
1938
+ 0 => 'Off',
1939
+ 0x100 => 'Motorsports; Object Not Found',
1940
+ 0x101 => 'Motorsports; Racing Car Found',
1941
+ 0x102 => 'Motorsports; Car Found',
1942
+ 0x103 => 'Motorsports; Motorcyle Found',
1943
+ 0x200 => 'Airplanes; Object Not Found',
1944
+ 0x201 => 'Airplanes; Passenger/Transport Plane Found',
1945
+ 0x202 => 'Airplanes; Small Plane/Fighter Jet Found',
1946
+ 0x203 => 'Airplanes; Helicopter Found',
1947
+ 0x300 => 'Trains; Object Not Found',
1948
+ 0x301 => 'Trains; Object Found',
1949
+ 0x400 => 'Birds; Object Not Found',
1950
+ 0x401 => 'Birds; Object Found',
1951
+ 0x500 => 'Dogs & Cats; Object Not Found',
1952
+ 0x501 => 'Dogs & Cats; Object Found',
1953
+ 0x600 => 'Human; Object Not Found',
1954
+ 0x601 => 'Human; Object Found',
1955
+ },
1956
+ },
1957
+ 0x030a => {
1958
+ Name => 'AFTargetInfo',
1959
+ Format => 'undef',
1960
+ Writable => 'int16u',
1961
+ Count => 10,
1962
+ SubDirectory => { TagTable => 'Image::ExifTool::Olympus::AFTargetInfo' },
1963
+ },
1964
+ 0x030b => {
1965
+ Name => 'SubjectDetectInfo',
1966
+ Format => 'undef',
1967
+ Writable => 'int16u',
1968
+ Count => 11,
1969
+ SubDirectory => { TagTable => 'Image::ExifTool::Olympus::SubjectDetectInfo' },
1950
1970
  },
1951
1971
  0x400 => { #6
1952
1972
  Name => 'FlashMode',
@@ -2490,15 +2510,22 @@ my %indexInfo = (
2490
2510
  Name => 'DriveMode',
2491
2511
  Writable => 'int16u',
2492
2512
  Count => -1,
2493
- Notes => '2, 3 or 5 numbers: 1. Mode, 2. Shot number, 3. Mode bits, 5. Shutter mode',
2513
+ Notes => q{
2514
+ 2, 3, 5 or numbers: 1. Mode, 2. Shot number, 3. Mode bits, 5. Shutter mode,
2515
+ 6. Shooting mode (E-M1 II and later models)
2516
+ },
2494
2517
  PrintConv => q{
2495
- my ($a,$b,$c,$d,$e) = split ' ',$val;
2496
- if ($e) {
2497
- $e = '; ' . ({ 2 => 'Anti-shock 0', 4 => 'Electronic shutter' }->{$e} || "Unknown ($e)");
2518
+ my ($a,$b,$c,$d,$e,$f) = split ' ',$val;
2519
+ if ($b) {
2520
+ $b = ', Shot ' . $b;
2498
2521
  } else {
2522
+ $b = '';
2523
+ }
2524
+ if (not defined $e or $e == 4) { #KG: personally, I'd like to skip 'Electronic shutter' since this is the defacto default setting
2499
2525
  $e = '';
2526
+ } else {
2527
+ $e = '; ' . ({ 0 => 'Mechanical shutter' , 2 => 'Anti-shock' }->{$e} || "Unknown ($e)");
2500
2528
  }
2501
- return "Single Shot$e" unless $a;
2502
2529
  if ($a == 5 and defined $c) {
2503
2530
  $a = DecodeBits($c, { #6
2504
2531
  0 => 'AE',
@@ -2510,16 +2537,51 @@ my %indexInfo = (
2510
2537
  6 => 'Focus', #PH
2511
2538
  }) . ' Bracketing';
2512
2539
  $a =~ s/, /+/g;
2540
+ } elsif ($f) { #25
2541
+ # for newer models (E-M1 and later) look at byte 6 for other shooting modes
2542
+ my %f = (
2543
+ # Mechanical shutter modes
2544
+ 0x01 => 'Single Shot',
2545
+ 0x02 => 'Sequential L',
2546
+ 0x03 => 'Sequential H',
2547
+ 0x07 => 'Sequential',
2548
+ # Anti-shock modes
2549
+ 0x11 => 'Single Shot',
2550
+ 0x12 => 'Sequential L',
2551
+ 0x13 => 'Sequential H',
2552
+ 0x14 => 'Self-Timer 12 sec',
2553
+ 0x15 => 'Self-Timer 2 sec',
2554
+ 0x16 => 'Custom Self-Timer',
2555
+ 0x17 => 'Sequential',
2556
+ # Electronical shutter modes
2557
+ 0x21 => 'Single Shot',
2558
+ 0x22 => 'Sequential L',
2559
+ 0x23 => 'Sequential H',
2560
+ 0x24 => 'Self-Timer 2 sec',
2561
+ 0x25 => 'Self-Timer 12 sec',
2562
+ 0x26 => 'Custom Self-Timer',
2563
+ 0x27 => 'Sequential',
2564
+ 0x28 => 'Sequential SH1',
2565
+ 0x29 => 'Sequential SH2',
2566
+ 0x30 => 'HighRes Shot', # only E-M models
2567
+ 0x41 => 'ProCap H',
2568
+ 0x42 => 'ProCap L',
2569
+ 0x43 => 'ProCap',
2570
+ 0x48 => 'ProCap SH1',
2571
+ 0x49 => 'ProCap SH2',
2572
+ );
2573
+ $a = $f{$f} || "Unknown ($f)";
2513
2574
  } else {
2514
- my %a = (
2515
- 1 => 'Continuous Shooting',
2516
- 2 => 'Exposure Bracketing',
2517
- 3 => 'White Balance Bracketing',
2518
- 4 => 'Exposure+WB Bracketing', #6
2519
- );
2520
- $a = $a{$a} || "Unknown ($a)";
2575
+ my %a = (
2576
+ 0 => 'Single Shot',
2577
+ 1 => 'Continuous Shooting',
2578
+ 2 => 'Exposure Bracketing',
2579
+ 3 => 'White Balance Bracketing',
2580
+ 4 => 'Exposure+WB Bracketing', #6
2581
+ );
2582
+ $a = $a{$a} || "Unknown ($a)";
2521
2583
  }
2522
- return "$a, Shot $b$e";
2584
+ return "$a$b$e";
2523
2585
  },
2524
2586
  },
2525
2587
  0x601 => { #6
@@ -2556,10 +2618,10 @@ my %indexInfo = (
2556
2618
  RawConv => '$$self{ImageStabilization} = $val',
2557
2619
  PrintConv => {
2558
2620
  0 => 'Off',
2559
- 1 => 'On, Mode 1',
2560
- 2 => 'On, Mode 2',
2561
- 3 => 'On, Mode 3',
2562
- 4 => 'On, Mode 4', # (NC, E-P5)
2621
+ 1 => 'On, S-IS1 (All Direction Shake IS)', #25
2622
+ 2 => 'On, S-IS2 (Vertical Shake IS)', #25
2623
+ 3 => 'On, S-IS3 (Horizontal Shake IS)', #25
2624
+ 4 => 'On, S-IS Auto', #25
2563
2625
  },
2564
2626
  },
2565
2627
  0x804 => { #PH (E-M1 with firmware update)
@@ -2582,6 +2644,9 @@ my %indexInfo = (
2582
2644
  '9 *' => 'Focus-stacked (* images)', #IB (* = 2-15)
2583
2645
  '11 12' => 'Hand-held high resolution (11 12)', #forum13341 (OM-1)
2584
2646
  '11 16' => 'Hand-held high resolution (11 16)', #IB (perhaps '11 15' would be possible, ref 24)
2647
+ '13 2' => 'GND2 (1EV)', #25
2648
+ '13 4' => 'GND4 (2EV)', #25
2649
+ '13 8' => 'GND8 (3EV)', #25
2585
2650
  OTHER => sub {
2586
2651
  my ($val, $inv, $conv) = @_;
2587
2652
  if ($inv) {
@@ -2602,6 +2667,73 @@ my %indexInfo = (
2602
2667
  },
2603
2668
  },
2604
2669
  },
2670
+ 0x0821 => { #25
2671
+ Name => 'ISOAutoSettings',
2672
+ Writable => 'int16u',
2673
+ Count => 2,
2674
+ Notes => '2 numbers: 1. Default sensitivty, 2. Maximum sensitivity',
2675
+ PrintConv => [{
2676
+ 0 => 'n/a',
2677
+ 0x0600 => '200',
2678
+ 0x0655 => '250',
2679
+ 0x06aa => '320',
2680
+ 0x0700 => '400',
2681
+ 0x0755 => '500',
2682
+ 0x07aa => '640',
2683
+ 0x0800 => '800',
2684
+ 0x0855 => '1000',
2685
+ 0x08aa => '1250',
2686
+ 0x0900 => '1600',
2687
+ 0x0955 => '2000',
2688
+ 0x09aa => '2500',
2689
+ 0x0a00 => '3200',
2690
+ 0x0a55 => '4000',
2691
+ 0x0aaa => '5000',
2692
+ 0x0b00 => '6400',
2693
+ 0x0b55 => '8000',
2694
+ 0x0baa => '10000',
2695
+ 0x0c00 => '12800',
2696
+ 0x0c55 => '16000',
2697
+ 0x0caa => '20000',
2698
+ 0x0d00 => '25600',
2699
+ 0x0d55 => '32000',
2700
+ 0x0daa => '40000',
2701
+ 0x0e00 => '51200',
2702
+ 0x0e55 => '64000',
2703
+ 0x0eaa => '80000',
2704
+ 0x0f00 => '102400',
2705
+ },{
2706
+ 0 => 'n/a',
2707
+ 0x0600 => '200',
2708
+ 0x0655 => '250',
2709
+ 0x06aa => '320',
2710
+ 0x0700 => '400',
2711
+ 0x0755 => '500',
2712
+ 0x07aa => '640',
2713
+ 0x0800 => '800',
2714
+ 0x0855 => '1000',
2715
+ 0x08aa => '1250',
2716
+ 0x0900 => '1600',
2717
+ 0x0955 => '2000',
2718
+ 0x09aa => '2500',
2719
+ 0x0a00 => '3200',
2720
+ 0x0a55 => '4000',
2721
+ 0x0aaa => '5000',
2722
+ 0x0b00 => '6400',
2723
+ 0x0b55 => '8000',
2724
+ 0x0baa => '10000',
2725
+ 0x0c00 => '12800',
2726
+ 0x0c55 => '16000',
2727
+ 0x0caa => '20000',
2728
+ 0x0d00 => '25600',
2729
+ 0x0d55 => '32000',
2730
+ 0x0daa => '40000',
2731
+ 0x0e00 => '51200',
2732
+ 0x0e55 => '64000',
2733
+ 0x0eaa => '80000',
2734
+ 0x0f00 => '102400',
2735
+ }],
2736
+ },
2605
2737
  0x900 => { #11
2606
2738
  Name => 'ManometerPressure',
2607
2739
  Writable => 'int16u',
@@ -2652,6 +2784,66 @@ my %indexInfo = (
2652
2784
  },
2653
2785
  );
2654
2786
 
2787
+ # ref 25
2788
+ %Image::ExifTool::Olympus::AFTargetInfo = (
2789
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
2790
+ WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
2791
+ CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
2792
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
2793
+ FIRST_ENTRY => 0,
2794
+ FORMAT => 'int16u',
2795
+ WRITABLE => 1,
2796
+ NOTES => 'Position and size of selected AF Area and focus areas for OM cameras.',
2797
+ 0 => { Name => 'AFFrameSize', Format => 'int16u[2]' , Notes => 'width/height of the focus/select frame' },
2798
+ 2 => { Name => 'AFFocusArea', Format => 'int16u[4]' , Notes => 'X Y width height. The center is identical to AFPointSelected' },
2799
+ 6 => {
2800
+ Name => 'AFSelectedArea',
2801
+ Format => 'int16u[4]',
2802
+ Notes => q{
2803
+ X Y width height. Subject and Face Detection OFF: User selected AF target
2804
+ area. Subject or Face Detection ON: Area related to detection process.
2805
+ },
2806
+ },
2807
+ );
2808
+
2809
+ # ref 25
2810
+ %Image::ExifTool::Olympus::SubjectDetectInfo = (
2811
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
2812
+ WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
2813
+ CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
2814
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
2815
+ FIRST_ENTRY => 0,
2816
+ FORMAT => 'int16u',
2817
+ WRITABLE => 1,
2818
+ NOTES => q{
2819
+ Subject Detection data for OM cameras. These tags contain the areas of a
2820
+ subject and its elements detected by Subject Detection, or the main face and
2821
+ eyes detected by Face Detection. These elements can be either L1 details
2822
+ (level 1, such as head, chassis, airplane nose, etc.) or L2 details (level
2823
+ 2, such as eye, driver, airplane cockpit, etc.).
2824
+ },
2825
+ 0 => { Name => 'SubjectDetectFrameSize', Format => 'int16u[2]', Notes => 'width/height of the subject detect frame' },
2826
+ 2 => { Name => 'SubjectDetectArea', Format => 'int16u[4]', Notes => 'X Y width height' },
2827
+ 6 => { Name => 'SubjectDetectDetail', Format => 'int16u[4]', Notes => 'X Y width height' },
2828
+ 10 => {
2829
+ Name => 'SubjectDetectStatus',
2830
+ Notes => q{
2831
+ Indicates the presence of data related to subject and face detection, not
2832
+ necessarily corresponding to the detection result
2833
+ },
2834
+ PrintConv => {
2835
+ 0 => 'No Data',
2836
+ 257 => 'Subject and L1 Detail Detected', # (head, airplane nose, ...)
2837
+ 258 => 'Subject and L2 Detail Detected', # (eye, airplane cockpit, ...)
2838
+ 260 => 'Subject Detected, No Details',
2839
+ 515 => 'Face and Eye Detected',
2840
+ 516 => 'Face Detected',
2841
+ 771 => 'Subject Detail or Eye Detected',
2842
+ 772 => 'No Subject or Face Detected',
2843
+ },
2844
+ },
2845
+ );
2846
+
2655
2847
  # Olympus RAW processing IFD (ref 6)
2656
2848
  %Image::ExifTool::Olympus::RawDevelopment = (
2657
2849
  WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
@@ -2836,6 +3028,23 @@ my %indexInfo = (
2836
3028
  PrintConvColumns => 2,
2837
3029
  PrintConv => [ \%filters ],
2838
3030
  },
3031
+ 0x8000 => {
3032
+ Name => 'RawDevSubIFD',
3033
+ Groups => { 1 => 'MakerNotes' },
3034
+ Flags => 'SubIFD',
3035
+ FixFormat => 'ifd',
3036
+ SubDirectory => {
3037
+ TagTable => 'Image::ExifTool::Olympus::RawDevSubIFD',
3038
+ Start => '$val',
3039
+ },
3040
+ },
3041
+ );
3042
+
3043
+ %Image::ExifTool::Olympus::RawDevSubIFD = (
3044
+ WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
3045
+ CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
3046
+ WRITABLE => 1,
3047
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
2839
3048
  );
2840
3049
 
2841
3050
  # Olympus Image processing IFD
@@ -3074,6 +3283,11 @@ my %indexInfo = (
3074
3283
  # (use in conjunction with KeystoneDirection, -ve is Top or Right, +ve is Bottom or Left)
3075
3284
  Notes => '3 numbers: 1. Keystone Value, 2. Min, 3. Max',
3076
3285
  },
3286
+ 0x2110 => { #25
3287
+ Name => 'GNDFilterType',
3288
+ Format => 'int8u',
3289
+ PrintConv => { 0 => 'High', 1 => 'Medium', 2 => 'Soft' },
3290
+ },
3077
3291
  );
3078
3292
 
3079
3293
  # Olympus Focus Info IFD
@@ -3239,7 +3453,7 @@ my %indexInfo = (
3239
3453
  ],
3240
3454
  # 0x31a Continuous AF parameters?
3241
3455
  0x31b => [ #herb, based on investigations of abgestumpft: https://exiftool.org/forum/index.php?topic=14527.0
3242
- # for newer models E-Mxxx and OM-x
3456
+ # for newer models E-Mxxx and OM-x
3243
3457
  {
3244
3458
  Name => 'AFPointDetails',
3245
3459
  Condition => '$$self{Model} =~ m/^E-M|^OM-/ ',
@@ -3251,7 +3465,7 @@ my %indexInfo = (
3251
3465
  (($val >> 8) & 0x3) . " " . (($val >> 7) & 0x1) . " " . (($val >> 5) & 0x1) . " " .
3252
3466
  # eye AF face detect x-AF with MF
3253
3467
  (($val >> 4) & 0x1) . " " . (($val >> 3) & 0x1) . " " . ($val & 0x7)',
3254
- # release object found MF...
3468
+ # release object found MF...
3255
3469
  PrintConvColumns => 4,
3256
3470
  PrintConv => [
3257
3471
  {
@@ -3406,6 +3620,7 @@ my %indexInfo = (
3406
3620
  },
3407
3621
  },
3408
3622
  # 0x102a same as Subdir4-0x300
3623
+ 0x2100 => 'AntiShockWaitingTime', #25
3409
3624
  );
3410
3625
 
3411
3626
  # AF information (ref PH)
@@ -3420,6 +3635,10 @@ my %indexInfo = (
3420
3635
  # 0x36 - int16u: AFAreaHeight? (50)
3421
3636
  # (AF area positions above give the top-left coordinates of the AF area in the
3422
3637
  # AF frame. Increasing Y is downwards, and the AF frame size is about 1280x256)
3638
+ 0x062c => { #25
3639
+ Name => 'CAFSensitivity',
3640
+ Format => 'int8s',
3641
+ },
3423
3642
  );
3424
3643
 
3425
3644
  # Olympus raw information tags (ref 6)
@@ -37,7 +37,7 @@ use vars qw($VERSION %leicaLensTypes);
37
37
  use Image::ExifTool qw(:DataAccess :Utils);
38
38
  use Image::ExifTool::Exif;
39
39
 
40
- $VERSION = '2.25';
40
+ $VERSION = '2.26';
41
41
 
42
42
  sub ProcessLeicaLEIC($$$);
43
43
  sub WhiteBalanceConv($;$$);
@@ -1374,10 +1374,10 @@ my %shootingMode = (
1374
1374
  Writable => 'int16u',
1375
1375
  Format => 'int16s',
1376
1376
  },
1377
- 0xbe => { #forum11194
1377
+ 0xbe => { #forum11194/17508
1378
1378
  Name => 'LongExposureNRUsed',
1379
1379
  Writable => 'int16u',
1380
- PrintConv => { 0 => 'No', 1 => 'Yes' },
1380
+ PrintConv => { 1 => 'No', 2 => 'Yes' },
1381
1381
  },
1382
1382
  0xbf => { #forum11194
1383
1383
  Name => 'PostFocusMerging',