exiftool_vendored 13.30.0 → 13.33.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.
- checksums.yaml +4 -4
- data/bin/Changes +57 -1
- data/bin/MANIFEST +5 -0
- data/bin/META.json +4 -3
- data/bin/META.yml +3 -2
- data/bin/README +47 -46
- data/bin/exiftool +88 -60
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +7 -5
- data/bin/lib/Image/ExifTool/Canon.pm +16 -5
- data/bin/lib/Image/ExifTool/Exif.pm +7 -4
- data/bin/lib/Image/ExifTool/FlashPix.pm +4 -159
- data/bin/lib/Image/ExifTool/FujiFilm.pm +13 -3
- data/bin/lib/Image/ExifTool/Geotag.pm +5 -3
- data/bin/lib/Image/ExifTool/GoPro.pm +23 -4
- data/bin/lib/Image/ExifTool/LNK.pm +24 -3
- data/bin/lib/Image/ExifTool/Lang/cs.pm +0 -1
- data/bin/lib/Image/ExifTool/Lang/de.pm +2 -2
- data/bin/lib/Image/ExifTool/Lang/fr.pm +2 -2
- data/bin/lib/Image/ExifTool/Lang/it.pm +0 -1
- data/bin/lib/Image/ExifTool/Lang/ja.pm +0 -1
- data/bin/lib/Image/ExifTool/Lang/nl.pm +0 -1
- data/bin/lib/Image/ExifTool/Lang/pl.pm +0 -1
- data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +0 -1
- data/bin/lib/Image/ExifTool/LigoGPS.pm +14 -6
- data/bin/lib/Image/ExifTool/Microsoft.pm +158 -1
- data/bin/lib/Image/ExifTool/Minolta.pm +1 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +80 -39
- data/bin/lib/Image/ExifTool/NikonCustom.pm +40 -10
- data/bin/lib/Image/ExifTool/Olympus.pm +240 -35
- data/bin/lib/Image/ExifTool/PDF.pm +1 -0
- data/bin/lib/Image/ExifTool/Panasonic.pm +4 -4
- data/bin/lib/Image/ExifTool/Parrot.pm +1 -1
- data/bin/lib/Image/ExifTool/Pentax.pm +276 -56
- data/bin/lib/Image/ExifTool/Plot.pm +2 -3
- data/bin/lib/Image/ExifTool/QuickTime.pm +13 -5
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +41 -17
- data/bin/lib/Image/ExifTool/Sigma.pm +19 -1
- data/bin/lib/Image/ExifTool/Sony.pm +5 -2
- data/bin/lib/Image/ExifTool/TNEF.pm +487 -0
- data/bin/lib/Image/ExifTool/TagLookup.pm +4374 -4262
- data/bin/lib/Image/ExifTool/TagNames.pod +259 -22
- data/bin/lib/Image/ExifTool/WriteExif.pl +14 -12
- data/bin/lib/Image/ExifTool/WritePDF.pl +1 -0
- data/bin/lib/Image/ExifTool/Writer.pl +142 -139
- data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
- data/bin/lib/Image/ExifTool.pm +16 -7
- data/bin/lib/Image/ExifTool.pod +45 -44
- data/bin/perl-Image-ExifTool.spec +46 -45
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +3 -2
@@ -13,16 +13,14 @@
|
|
13
13
|
package Image::ExifTool::NikonCustom;
|
14
14
|
|
15
15
|
use strict;
|
16
|
-
use vars qw($VERSION @ISA @EXPORT_OK %buttonsZ9);
|
16
|
+
use vars qw($VERSION @ISA @EXPORT_OK %buttonsZ8 %buttonsZ9);
|
17
17
|
|
18
|
-
$VERSION = '1.
|
18
|
+
$VERSION = '1.27';
|
19
19
|
|
20
20
|
@ISA = qw(Exporter);
|
21
|
-
@EXPORT_OK = qw(%buttonsZ9);
|
21
|
+
@EXPORT_OK = qw(%buttonsZ8 %buttonsZ9);
|
22
22
|
|
23
|
-
%
|
24
|
-
SeparateTable => 'ButtonsZ9',
|
25
|
-
PrintConv => {
|
23
|
+
my %buttonsCommonZ8Z9 = ( #button roles shared by the Z8 & Z9. Assigments began to diverge with Z8 fw 2.00 and became significant with z8 fw 3.0
|
26
24
|
0 => 'None',
|
27
25
|
1 => 'Preview',
|
28
26
|
3 => 'FV Lock',
|
@@ -112,7 +110,37 @@ $VERSION = '1.26';
|
|
112
110
|
113 => 'Power Zoom +',
|
113
111
|
114 => 'Power Zoom -',
|
114
112
|
115 => 'Delete',
|
115
|
-
|
113
|
+
);
|
114
|
+
%buttonsZ8 = (
|
115
|
+
SeparateTable => 'ButtonsZ8',
|
116
|
+
PrintConv => {
|
117
|
+
%buttonsCommonZ8Z9,
|
118
|
+
116 => 'Pixel Shift Shooting',
|
119
|
+
117 => 'Cycle AF-area Mode',
|
120
|
+
119 => 'Focus Limiter',
|
121
|
+
120 => 'Jump to Source Image',
|
122
|
+
121 => 'Raw Processing (Current)',
|
123
|
+
122 => 'Raw Processing (Multiple)',
|
124
|
+
123 => 'Trim',
|
125
|
+
124 => 'Resize (Current)',
|
126
|
+
125 => 'Resize (Multiple)',
|
127
|
+
126 => 'D-Lighting',
|
128
|
+
127 => 'Straighten',
|
129
|
+
128 => 'Distortion Control',
|
130
|
+
129 => 'Perspective Control',
|
131
|
+
130 => 'Monochrome',
|
132
|
+
131 => 'Overlay (Add)',
|
133
|
+
132 => 'Lighten',
|
134
|
+
133 => 'Darken',
|
135
|
+
134 => 'Motion Blend',
|
136
|
+
135 => 'Cycle Monitor Mode',
|
137
|
+
},
|
138
|
+
);
|
139
|
+
%buttonsZ9= (
|
140
|
+
SeparateTable => 'ButtonsZ9',
|
141
|
+
PrintConv => {
|
142
|
+
%buttonsCommonZ8Z9,
|
143
|
+
116 => 'Save and Load Power Zoom Position',
|
116
144
|
117 => 'Cycle AF-area Mode',
|
117
145
|
118 => 'Raw Processing (Current)', #118-131 are Playback Retouch options
|
118
146
|
119 => 'Raw Processing (Multiple)',
|
@@ -10243,6 +10271,7 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
|
|
10243
10271
|
1 => '1 s',
|
10244
10272
|
2 => '2 s',
|
10245
10273
|
3 => '3 s',
|
10274
|
+
4 => 'Min',
|
10246
10275
|
},
|
10247
10276
|
},
|
10248
10277
|
51 => { Name => 'PlaybackMonitorOffTime', %powerOffDelayTimesZ9 }, # CSc3-a
|
@@ -10404,6 +10433,7 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
|
|
10404
10433
|
263 => { Name => 'AutoFocusModeRestrictions', PrintConv => \%focusModeRestrictionsZ9, Unknown => 1}, # CSa9
|
10405
10434
|
267 => { Name => 'CHModeShootingSpeed', ValueConv => '$val + 1', ValueConvInv => '$val - 1', PrintConv => '"$val fps"', PrintConvInv => '$val=~s/\s*fps//i; $val' }, # CSd1a
|
10406
10435
|
273 => { Name => 'FlashBurstPriority', PrintConv => { 0 => 'Frame Rate',1 => 'Exposure'}, Unknown => 1 }, # CSe8
|
10436
|
+
281 => { Name => 'Func3Button', %buttonsZ9}, # CSf2-c
|
10407
10437
|
335 => { Name => 'LimitAF-AreaModeSelDynamic_S', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
|
10408
10438
|
336 => { Name => 'LimitAF-AreaModeSelDynamic_M', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
|
10409
10439
|
337 => { Name => 'LimitAF-AreaModeSelDynamic_L', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
|
@@ -10426,7 +10456,7 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
|
|
10426
10456
|
463 => { Name => 'SubCommandDialPlaybackMode', PrintConv => \%dialsZ9, Unknown => 1}, # CSf3-l
|
10427
10457
|
469 => { Name => 'ControlRingResponse', PrintConv => { 0 => 'High', 1 => 'Low' } }, # CSf10
|
10428
10458
|
|
10429
|
-
515 => { Name => 'MovieAFAreaMode', %buttonsZ9, Unknown => 1}, # CSg2-e
|
10459
|
+
#515 => { Name => 'MovieAFAreaMode', %buttonsZ9, Unknown => 1}, # CSg2-e #28 this is incorrect - MovieAFAreaMode is set in the Photo Shooting Menu and the tag is set in Nikon.pm
|
10430
10460
|
529 => { # CSg9-a
|
10431
10461
|
Name => 'ZebraPatternToneRange',
|
10432
10462
|
Unknown => 1,
|
@@ -10736,7 +10766,7 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
|
|
10736
10766
|
#119 Func2Button submenu: AreaMode 0-7 => S, Dyn-S, Dyn-M, Dyn-L, Wide-S, Wide-L, 3D, Auto; 11=>n/a # CSf2-b
|
10737
10767
|
#121 Func2Button submenu: AreaMode+AF-On 0-7 => S, Dyn-S, Dyn-M, Dyn-L, Wide-S, Wide-L, 3D, Auto; 11=>n/a # CSf2-b
|
10738
10768
|
#125 Func2Button submenu: SynchronizedRelease 1=>'Master', 2=>'Remote' # CSf2-b
|
10739
|
-
#127 Func2Button submenu: Zoom 0=>'Zoom
|
10769
|
+
#127 Func2Button submenu: Zoom 0=>'Zoom 5', 2=>'Zoom (1:1)', 2=>'Zoom 200%, 2=>'Zoom 400%' # CSf2-b
|
10740
10770
|
#129 Func2Button & Func2ButtonPlayback submenu: Rating # CSf2-b & CSf3b 0=>'Candidate For Deletion' 6=>''None'
|
10741
10771
|
131 => { Name => 'AFOnButton', %buttonsZ9}, # CSf2-c
|
10742
10772
|
143 => { Name => 'SubSelector', %buttonsZ9, Unknown => 1}, # CSf2-g
|
@@ -11275,7 +11305,7 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
|
|
11275
11305
|
493 => { Name => 'ControlRingResponse', PrintConv => { 0 => 'High', 1 => 'Low' } }, # CSf10
|
11276
11306
|
505 => { Name => 'VerticalMovieFuncButton', %buttonsZ9, Unknown => 1}, # CSg2-d
|
11277
11307
|
529 => { Name => 'VerticalMovieAFOnButton', %buttonsZ9, Unknown => 1}, # CSg2-l
|
11278
|
-
539 => { Name => 'MovieAFAreaMode', %buttonsZ9, Unknown => 1}, # CSg2-e
|
11308
|
+
#539 => { Name => 'MovieAFAreaMode', %buttonsZ9, Unknown => 1}, # CSg2-e #28 this feels incorrect - MovieAFAreaMode is set in the Photo Shooting Menu and the tag should be in Nikon.pm
|
11279
11309
|
#545 => { Name => 'MovieLimitAF-AreaModeSelWideAF_S', PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-a
|
11280
11310
|
#546 => { Name => 'MovieLimitAF-AreaModeSelWideAF_W', PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-b
|
11281
11311
|
#547 => { Name => 'MovieLimitAF-AreaModeSelSubjectTrack', PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-c
|
@@ -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.
|
44
|
+
$VERSION = '2.88';
|
44
45
|
|
45
46
|
sub PrintLensInfo($$$);
|
46
47
|
|
@@ -447,6 +448,7 @@ my %olympusCameraTypes = (
|
|
447
448
|
S0101 => 'OM-5', #IB
|
448
449
|
S0121 => 'OM-1MarkII', #forum15652
|
449
450
|
S0123 => 'OM-3', #forum17208
|
451
|
+
S0130 => 'OM-5MarkII', #forum17465
|
450
452
|
SR45 => 'D220',
|
451
453
|
SR55 => 'D320L',
|
452
454
|
SR83 => 'D340L',
|
@@ -1932,20 +1934,39 @@ my %indexInfo = (
|
|
1932
1934
|
0x309 => { #forum13341
|
1933
1935
|
Name => 'AISubjectTrackingMode',
|
1934
1936
|
Writable => 'int16u',
|
1935
|
-
|
1936
|
-
|
1937
|
-
|
1938
|
-
|
1939
|
-
|
1940
|
-
|
1941
|
-
|
1942
|
-
|
1943
|
-
|
1944
|
-
|
1945
|
-
|
1946
|
-
|
1947
|
-
|
1948
|
-
|
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' },
|
1949
1970
|
},
|
1950
1971
|
0x400 => { #6
|
1951
1972
|
Name => 'FlashMode',
|
@@ -2489,15 +2510,22 @@ my %indexInfo = (
|
|
2489
2510
|
Name => 'DriveMode',
|
2490
2511
|
Writable => 'int16u',
|
2491
2512
|
Count => -1,
|
2492
|
-
Notes =>
|
2493
|
-
|
2494
|
-
|
2495
|
-
|
2496
|
-
|
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
|
+
},
|
2517
|
+
PrintConv => q {
|
2518
|
+
my ($a,$b,$c,$d,$e,$f) = split ' ',$val;
|
2519
|
+
if ($b) {
|
2520
|
+
$b = ', Shot ' . $b;
|
2497
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
|
2498
2525
|
$e = '';
|
2526
|
+
} else {
|
2527
|
+
$e = '; ' . ({ 0 => 'Mechanical shutter' , 2 => 'Anti-shock' }->{$e} || "Unknown ($e)");
|
2499
2528
|
}
|
2500
|
-
return "Single Shot$e" unless $a;
|
2501
2529
|
if ($a == 5 and defined $c) {
|
2502
2530
|
$a = DecodeBits($c, { #6
|
2503
2531
|
0 => 'AE',
|
@@ -2509,16 +2537,51 @@ my %indexInfo = (
|
|
2509
2537
|
6 => 'Focus', #PH
|
2510
2538
|
}) . ' Bracketing';
|
2511
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)";
|
2512
2574
|
} else {
|
2513
|
-
|
2514
|
-
|
2515
|
-
|
2516
|
-
|
2517
|
-
|
2518
|
-
|
2519
|
-
|
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)";
|
2520
2583
|
}
|
2521
|
-
return "$a
|
2584
|
+
return "$a$b$e";
|
2522
2585
|
},
|
2523
2586
|
},
|
2524
2587
|
0x601 => { #6
|
@@ -2555,10 +2618,10 @@ my %indexInfo = (
|
|
2555
2618
|
RawConv => '$$self{ImageStabilization} = $val',
|
2556
2619
|
PrintConv => {
|
2557
2620
|
0 => 'Off',
|
2558
|
-
1 => 'On,
|
2559
|
-
2 => 'On,
|
2560
|
-
3 => 'On,
|
2561
|
-
4 => 'On,
|
2621
|
+
1 => 'On, S-IS1 (All Direction Shake I.S.)', #25
|
2622
|
+
2 => 'On, S-IS2 (Vertical Shake I.S.)', #25
|
2623
|
+
3 => 'On, S-IS3 (Horizontal Shake I.S.)', #25
|
2624
|
+
4 => 'On, S-IS Auto (Auto I.S.)', #25
|
2562
2625
|
},
|
2563
2626
|
},
|
2564
2627
|
0x804 => { #PH (E-M1 with firmware update)
|
@@ -2581,6 +2644,9 @@ my %indexInfo = (
|
|
2581
2644
|
'9 *' => 'Focus-stacked (* images)', #IB (* = 2-15)
|
2582
2645
|
'11 12' => 'Hand-held high resolution (11 12)', #forum13341 (OM-1)
|
2583
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
|
2584
2650
|
OTHER => sub {
|
2585
2651
|
my ($val, $inv, $conv) = @_;
|
2586
2652
|
if ($inv) {
|
@@ -2601,6 +2667,73 @@ my %indexInfo = (
|
|
2601
2667
|
},
|
2602
2668
|
},
|
2603
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
|
+
},
|
2604
2737
|
0x900 => { #11
|
2605
2738
|
Name => 'ManometerPressure',
|
2606
2739
|
Writable => 'int16u',
|
@@ -2651,6 +2784,51 @@ my %indexInfo = (
|
|
2651
2784
|
},
|
2652
2785
|
);
|
2653
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
|
+
0 => { Name => 'AFFrameSize', Format => 'int16u[2]' },
|
2797
|
+
2 => { Name => 'AFFocusArea', Format => 'int16u[4]' },
|
2798
|
+
6 => {
|
2799
|
+
Name => 'AFSelectedArea',
|
2800
|
+
Format => 'int16u[4]',
|
2801
|
+
Notes => q{
|
2802
|
+
X Y width height. Subject Detection OFF: User selected AF target area.
|
2803
|
+
Subject Detection ON: Area related to subject
|
2804
|
+
}
|
2805
|
+
},
|
2806
|
+
);
|
2807
|
+
|
2808
|
+
# ref 25
|
2809
|
+
%Image::ExifTool::Olympus::SubjectDetectInfo = (
|
2810
|
+
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
2811
|
+
WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
|
2812
|
+
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
|
2813
|
+
NOTES => 'Subject Detection for OM cameras.',
|
2814
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
2815
|
+
FIRST_ENTRY => 0,
|
2816
|
+
FORMAT => 'int16u',
|
2817
|
+
WRITABLE => 1,
|
2818
|
+
0 => { Name => 'SubjectDetectFrameSize', Format => 'int16u[2]' },
|
2819
|
+
2 => { Name => 'SubjectDetectArea', Format => 'int16u[4]', Notes => 'X Y width height' },
|
2820
|
+
6 => { Name => 'SubjectDetectDetail', Format => 'int16u[4]' },
|
2821
|
+
10 => {
|
2822
|
+
Name => 'SubjectDetectStatus',
|
2823
|
+
PrintConv => {
|
2824
|
+
256 => 'Level 2 Detail', # (eye, airplane cockpit, ...)
|
2825
|
+
257 => 'Level 1 Detail', # (head, airplane nose, ...)
|
2826
|
+
260 => 'Subject Detected, No Detail',
|
2827
|
+
772 => 'No Detection',
|
2828
|
+
},
|
2829
|
+
},
|
2830
|
+
);
|
2831
|
+
|
2654
2832
|
# Olympus RAW processing IFD (ref 6)
|
2655
2833
|
%Image::ExifTool::Olympus::RawDevelopment = (
|
2656
2834
|
WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
|
@@ -2835,6 +3013,23 @@ my %indexInfo = (
|
|
2835
3013
|
PrintConvColumns => 2,
|
2836
3014
|
PrintConv => [ \%filters ],
|
2837
3015
|
},
|
3016
|
+
0x8000 => {
|
3017
|
+
Name => 'RawDevSubIFD',
|
3018
|
+
Groups => { 1 => 'MakerNotes' },
|
3019
|
+
Flags => 'SubIFD',
|
3020
|
+
FixFormat => 'ifd',
|
3021
|
+
SubDirectory => {
|
3022
|
+
TagTable => 'Image::ExifTool::Olympus::RawDevSubIFD',
|
3023
|
+
Start => '$val',
|
3024
|
+
},
|
3025
|
+
},
|
3026
|
+
);
|
3027
|
+
|
3028
|
+
%Image::ExifTool::Olympus::RawDevSubIFD = (
|
3029
|
+
WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
|
3030
|
+
CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
|
3031
|
+
WRITABLE => 1,
|
3032
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
2838
3033
|
);
|
2839
3034
|
|
2840
3035
|
# Olympus Image processing IFD
|
@@ -3073,6 +3268,11 @@ my %indexInfo = (
|
|
3073
3268
|
# (use in conjunction with KeystoneDirection, -ve is Top or Right, +ve is Bottom or Left)
|
3074
3269
|
Notes => '3 numbers: 1. Keystone Value, 2. Min, 3. Max',
|
3075
3270
|
},
|
3271
|
+
0x2110 => { #25
|
3272
|
+
Name => 'GNDFilterType',
|
3273
|
+
Format => 'int8u',
|
3274
|
+
PrintConv => { 0 => 'High', 1 => 'Medium', 2 => 'Soft' },
|
3275
|
+
},
|
3076
3276
|
);
|
3077
3277
|
|
3078
3278
|
# Olympus Focus Info IFD
|
@@ -3238,7 +3438,7 @@ my %indexInfo = (
|
|
3238
3438
|
],
|
3239
3439
|
# 0x31a Continuous AF parameters?
|
3240
3440
|
0x31b => [ #herb, based on investigations of abgestumpft: https://exiftool.org/forum/index.php?topic=14527.0
|
3241
|
-
# for newer models E-Mxxx and OM-x
|
3441
|
+
# for newer models E-Mxxx and OM-x
|
3242
3442
|
{
|
3243
3443
|
Name => 'AFPointDetails',
|
3244
3444
|
Condition => '$$self{Model} =~ m/^E-M|^OM-/ ',
|
@@ -3250,7 +3450,7 @@ my %indexInfo = (
|
|
3250
3450
|
(($val >> 8) & 0x3) . " " . (($val >> 7) & 0x1) . " " . (($val >> 5) & 0x1) . " " .
|
3251
3451
|
# eye AF face detect x-AF with MF
|
3252
3452
|
(($val >> 4) & 0x1) . " " . (($val >> 3) & 0x1) . " " . ($val & 0x7)',
|
3253
|
-
# release object found MF...
|
3453
|
+
# release object found MF...
|
3254
3454
|
PrintConvColumns => 4,
|
3255
3455
|
PrintConv => [
|
3256
3456
|
{
|
@@ -3405,6 +3605,7 @@ my %indexInfo = (
|
|
3405
3605
|
},
|
3406
3606
|
},
|
3407
3607
|
# 0x102a same as Subdir4-0x300
|
3608
|
+
0x2100 => 'AntiShockWaitingTime', #25
|
3408
3609
|
);
|
3409
3610
|
|
3410
3611
|
# AF information (ref PH)
|
@@ -3419,6 +3620,10 @@ my %indexInfo = (
|
|
3419
3620
|
# 0x36 - int16u: AFAreaHeight? (50)
|
3420
3621
|
# (AF area positions above give the top-left coordinates of the AF area in the
|
3421
3622
|
# AF frame. Increasing Y is downwards, and the AF frame size is about 1280x256)
|
3623
|
+
0x062c => { #25
|
3624
|
+
Name => 'CAFSensitivity',
|
3625
|
+
Format => 'int8s',
|
3626
|
+
},
|
3422
3627
|
);
|
3423
3628
|
|
3424
3629
|
# 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.
|
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 => {
|
1380
|
+
PrintConv => { 1 => 'No', 2 => 'Yes' },
|
1381
1381
|
},
|
1382
1382
|
0xbf => { #forum11194
|
1383
1383
|
Name => 'PostFocusMerging',
|
@@ -1439,7 +1439,7 @@ my %shootingMode = (
|
|
1439
1439
|
0xde => { #forum17299
|
1440
1440
|
Name => 'AFAreaSize',
|
1441
1441
|
Writable => 'rational64u',
|
1442
|
-
Notes => 'relative to size of image',
|
1442
|
+
Notes => 'relative to size of image. "n/a" for manual focus',
|
1443
1443
|
Count => 2,
|
1444
1444
|
PrintConv => '$val =~ /^4194303.999/ ? "n/a" : $val',
|
1445
1445
|
PrintConvInv => '$val eq "n/a" ? "4194303.999 4194303.999" : $val',
|
@@ -56,7 +56,7 @@ sub Process_mett($$$);
|
|
56
56
|
Name => 'ParrotAutomation',
|
57
57
|
SubDirectory => { TagTable => 'Image::ExifTool::Parrot::Automation' },
|
58
58
|
},
|
59
|
-
# timed metadata written by ARCore (see forum13653)
|
59
|
+
# MetaType of timed metadata written by ARCore (see forum13653)
|
60
60
|
'application/arcore-accel' => {
|
61
61
|
Name => 'ARCoreAccel',
|
62
62
|
SubDirectory => { TagTable => 'Image::ExifTool::Parrot::ARCoreAccel', ByteOrder => 'II' },
|