exiftool_vendored 12.42.0 → 12.52.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 +226 -6
- data/bin/MANIFEST +14 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +45 -44
- data/bin/config_files/acdsee.config +2 -1
- data/bin/config_files/frameCount.config +56 -0
- data/bin/config_files/tiff_version.config +1 -1
- data/bin/exiftool +116 -97
- data/bin/fmt_files/gpx.fmt +3 -0
- data/bin/fmt_files/gpx_wpt.fmt +3 -0
- data/bin/lib/Image/ExifTool/Apple.pm +16 -3
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +23 -12
- data/bin/lib/Image/ExifTool/Canon.pm +66 -37
- data/bin/lib/Image/ExifTool/CanonRaw.pm +8 -1
- data/bin/lib/Image/ExifTool/CanonVRD.pm +7 -8
- data/bin/lib/Image/ExifTool/Casio.pm +3 -3
- data/bin/lib/Image/ExifTool/DJI.pm +2 -1
- data/bin/lib/Image/ExifTool/DarwinCore.pm +13 -1
- data/bin/lib/Image/ExifTool/EXE.pm +9 -1
- data/bin/lib/Image/ExifTool/Exif.pm +17 -12
- data/bin/lib/Image/ExifTool/FLAC.pm +17 -3
- data/bin/lib/Image/ExifTool/FLIR.pm +9 -7
- data/bin/lib/Image/ExifTool/FlashPix.pm +26 -3
- data/bin/lib/Image/ExifTool/FujiFilm.pm +51 -4
- data/bin/lib/Image/ExifTool/GPS.pm +31 -5
- data/bin/lib/Image/ExifTool/Geotag.pm +36 -8
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +3 -2
- data/bin/lib/Image/ExifTool/ICO.pm +143 -0
- data/bin/lib/Image/ExifTool/ID3.pm +6 -6
- data/bin/lib/Image/ExifTool/IPTC.pm +5 -1
- data/bin/lib/Image/ExifTool/JPEG.pm +1 -0
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +24 -3
- data/bin/lib/Image/ExifTool/LNK.pm +5 -2
- data/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/fr.pm +6015 -759
- data/bin/lib/Image/ExifTool/Lang/sk.pm +1927 -0
- data/bin/lib/Image/ExifTool/M2TS.pm +98 -8
- data/bin/lib/Image/ExifTool/MIE.pm +9 -3
- data/bin/lib/Image/ExifTool/MISB.pm +494 -0
- data/bin/lib/Image/ExifTool/MakerNotes.pm +3 -1
- data/bin/lib/Image/ExifTool/Matroska.pm +272 -48
- data/bin/lib/Image/ExifTool/Motorola.pm +8 -2
- data/bin/lib/Image/ExifTool/Nikon.pm +746 -382
- data/bin/lib/Image/ExifTool/NikonCustom.pm +139 -106
- data/bin/lib/Image/ExifTool/NikonSettings.pm +5 -3
- data/bin/lib/Image/ExifTool/Olympus.pm +6 -4
- data/bin/lib/Image/ExifTool/PNG.pm +8 -1
- data/bin/lib/Image/ExifTool/Panasonic.pm +21 -4
- data/bin/lib/Image/ExifTool/PanasonicRaw.pm +25 -5
- data/bin/lib/Image/ExifTool/Parrot.pm +96 -2
- data/bin/lib/Image/ExifTool/Pentax.pm +7 -2
- data/bin/lib/Image/ExifTool/Photoshop.pm +29 -3
- data/bin/lib/Image/ExifTool/QuickTime.pm +166 -13
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +161 -22
- data/bin/lib/Image/ExifTool/README +15 -4
- data/bin/lib/Image/ExifTool/RIFF.pm +106 -9
- data/bin/lib/Image/ExifTool/Samsung.pm +2 -2
- data/bin/lib/Image/ExifTool/Sigma.pm +27 -1
- data/bin/lib/Image/ExifTool/SigmaRaw.pm +37 -13
- data/bin/lib/Image/ExifTool/Sony.pm +75 -47
- data/bin/lib/Image/ExifTool/TagInfoXML.pm +13 -6
- data/bin/lib/Image/ExifTool/TagLookup.pm +4791 -4519
- data/bin/lib/Image/ExifTool/TagNames.pod +2056 -1446
- data/bin/lib/Image/ExifTool/Text.pm +3 -4
- data/bin/lib/Image/ExifTool/Torrent.pm +2 -3
- data/bin/lib/Image/ExifTool/Validate.pm +3 -3
- data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +7 -0
- data/bin/lib/Image/ExifTool/WriteExif.pl +100 -23
- data/bin/lib/Image/ExifTool/WriteIPTC.pl +2 -6
- data/bin/lib/Image/ExifTool/WritePhotoshop.pl +5 -5
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +12 -7
- data/bin/lib/Image/ExifTool/WriteRIFF.pl +359 -0
- data/bin/lib/Image/ExifTool/WriteXMP.pl +15 -1
- data/bin/lib/Image/ExifTool/Writer.pl +46 -18
- data/bin/lib/Image/ExifTool/XMP.pm +78 -59
- data/bin/lib/Image/ExifTool/XMP2.pl +19 -4
- data/bin/lib/Image/ExifTool/ZIP.pm +19 -7
- data/bin/lib/Image/ExifTool.pm +146 -38
- data/bin/lib/Image/ExifTool.pod +83 -69
- data/bin/perl-Image-ExifTool.spec +43 -43
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +10 -4
|
@@ -15,68 +15,87 @@ package Image::ExifTool::NikonCustom;
|
|
|
15
15
|
use strict;
|
|
16
16
|
use vars qw($VERSION);
|
|
17
17
|
|
|
18
|
-
$VERSION = '1.
|
|
18
|
+
$VERSION = '1.22';
|
|
19
19
|
|
|
20
20
|
my %buttonsZ9= (
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
21
|
+
SeparateTable => 'ButtonsZ9',
|
|
22
|
+
PrintConv => {
|
|
23
|
+
0 => 'None',
|
|
24
|
+
1 => 'Preview',
|
|
25
|
+
3 => 'FV Lock',
|
|
26
|
+
4 => 'AE/AF Lock',
|
|
27
|
+
5 => 'AE Lock Only',
|
|
28
|
+
6 => 'AE Lock (reset on release)',
|
|
29
|
+
7 => 'AE Lock (hold)',
|
|
30
|
+
8 => 'AF Lock Only',
|
|
31
|
+
9 => 'AF-On',
|
|
32
|
+
10 => 'Flash Disable/Enable',
|
|
33
|
+
11 => 'Bracketing Burst',
|
|
34
|
+
12 => '+NEF(RAW)',
|
|
35
|
+
18 => 'Virtual Horizon',
|
|
36
|
+
19 => 'Synchronized Release',
|
|
37
|
+
20 => 'My Menu',
|
|
38
|
+
21 => 'My Menu Top Item',
|
|
39
|
+
22 => 'Playback',
|
|
40
|
+
23 => 'Rating',
|
|
41
|
+
24 => 'Protect',
|
|
42
|
+
25 => 'Zoom',
|
|
43
|
+
26 => 'Focus Peaking',
|
|
44
|
+
28 => 'Image Area',
|
|
45
|
+
30 => 'Non-CPU Lens',
|
|
46
|
+
31 => 'Active-D Lighting',
|
|
47
|
+
33 => '1 Stop Speed/Aperture',
|
|
48
|
+
34 => 'White Balance',
|
|
49
|
+
35 => 'Metering',
|
|
50
|
+
36 => 'Auto Bracketing',
|
|
51
|
+
37 => 'Multiple Exposure',
|
|
52
|
+
38 => 'HDR Overlay',
|
|
53
|
+
39 => 'Picture Control',
|
|
54
|
+
40 => 'Quality',
|
|
55
|
+
41 => 'Focus Mode/AF AreaMode',
|
|
56
|
+
42 => 'Select Center Focus Point',
|
|
57
|
+
44 => 'Record Movie',
|
|
58
|
+
47 => 'Choose Folder',
|
|
59
|
+
48 => 'Power Aperture (Open)',
|
|
60
|
+
49 => 'Power Aperture (Close)',
|
|
61
|
+
52 => 'Microphone Sensitivity',
|
|
62
|
+
57 => 'Preset Focus Point',
|
|
63
|
+
58 => 'AE/AWB Lock (hold)',
|
|
64
|
+
59 => 'AF-AreaMode',
|
|
65
|
+
60 => 'AF-AreaMode + AF-On',
|
|
66
|
+
61 => 'Recall Shooting Functions',
|
|
67
|
+
64 => 'Filtered Playback',
|
|
68
|
+
65 => 'Same as AF-On',
|
|
69
|
+
66 => 'Voice Memo',
|
|
70
|
+
70 => 'Photo Shooting Bank',
|
|
71
|
+
71 => 'ISO',
|
|
72
|
+
73 => 'Exposure Compensation',
|
|
73
|
+
76 => 'Silent Mode',
|
|
74
|
+
78 => 'LiveView Information',
|
|
75
|
+
79 => 'AWB Lock (hold)',
|
|
76
|
+
80 => 'Grid Display',
|
|
77
|
+
81 => 'Starlight View',
|
|
78
|
+
82 => 'Select To Send (PC)',
|
|
79
|
+
83 => 'Select To Send (FTP)',
|
|
80
|
+
84 => 'Pattern Tone Range',
|
|
81
|
+
85 => 'Control Lock',
|
|
82
|
+
86 => 'Save Focus Position',
|
|
83
|
+
87 => 'Recall Focus Position',
|
|
84
|
+
88 => 'Recall Shooting Functions (Hold)',
|
|
85
|
+
97 => 'High Frequency Flicker Reduction',
|
|
86
|
+
98 => 'Switch FX/DX',
|
|
87
|
+
99 => 'View Mode (Photo LV)',
|
|
88
|
+
100 => 'Photo Flicker Reduction',
|
|
89
|
+
101 => 'Filtered Playback (Select Criteria)',
|
|
90
|
+
103 => 'Start Series Playback',
|
|
91
|
+
104 => 'View Assist',
|
|
92
|
+
105 => 'Hi-Res Zoom+',
|
|
93
|
+
106 => 'Hi-Res Zoom-',
|
|
94
|
+
108 => 'Override Other Cameras',
|
|
95
|
+
109 => 'DISP - Cycle Information Display (shooting)', # Shooting Mode
|
|
96
|
+
110 => 'DISP - Cycle Information Display (playback)', # Playback mode
|
|
97
|
+
111 => 'Resume Shooting',
|
|
98
|
+
},
|
|
80
99
|
);
|
|
81
100
|
my %dialsZ9 = (
|
|
82
101
|
0 => '1 Frame',
|
|
@@ -116,16 +135,19 @@ my %focusModeRestrictionsZ9 = (
|
|
|
116
135
|
4 => 'No Restrictions',
|
|
117
136
|
);
|
|
118
137
|
my %powerOffDelayTimesZ9 = (
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
138
|
+
SeparateTable => 'DelaysZ9',
|
|
139
|
+
PrintConv => {
|
|
140
|
+
0 => '2 s',
|
|
141
|
+
1 => '4 s',
|
|
142
|
+
3 => '10 s',
|
|
143
|
+
4 => '20 s',
|
|
144
|
+
5 => '30 s',
|
|
145
|
+
6 => '1 min',
|
|
146
|
+
7 => '5 min',
|
|
147
|
+
8 => '10 min',
|
|
148
|
+
11 => '30 min',
|
|
149
|
+
12 => 'No Limit',
|
|
150
|
+
},
|
|
129
151
|
);
|
|
130
152
|
my %thirdHalfFull = (
|
|
131
153
|
0 => '1/3 EV',
|
|
@@ -9767,10 +9789,10 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
|
|
|
9767
9789
|
3 => '3 s',
|
|
9768
9790
|
},
|
|
9769
9791
|
},
|
|
9770
|
-
51 => { Name => 'PlaybackMonitorOffTime',
|
|
9771
|
-
53 => { Name => 'MenuMonitorOffTime',
|
|
9772
|
-
55 => { Name => 'ShootingInfoMonitorOffTime'
|
|
9773
|
-
57 => { Name => 'ImageReviewMonitorOffTime',
|
|
9792
|
+
51 => { Name => 'PlaybackMonitorOffTime', %powerOffDelayTimesZ9 }, # CSc4-a
|
|
9793
|
+
53 => { Name => 'MenuMonitorOffTime', %powerOffDelayTimesZ9 }, # CSc4-b
|
|
9794
|
+
55 => { Name => 'ShootingInfoMonitorOffTime',%powerOffDelayTimesZ9 }, # CSc4-c
|
|
9795
|
+
57 => { Name => 'ImageReviewMonitorOffTime', %powerOffDelayTimesZ9 }, # CSc4-d
|
|
9774
9796
|
59 => { Name => 'CLModeShootingSpeed', ValueConv => '$val + 1', ValueConvInv => '$val - 1', PrintConv => '"$val fps"', PrintConvInv => '$val=~s/\s*fps//i; $val' }, # CSd1b
|
|
9775
9797
|
61 => { # CSd2 # values: 1-200 & 'No Limit'
|
|
9776
9798
|
Name => 'MaxContinuousRelease',
|
|
@@ -9848,25 +9870,25 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
|
|
|
9848
9870
|
},
|
|
9849
9871
|
},
|
|
9850
9872
|
97 => { Name => 'AutoBracketOrder', PrintConv => { 0 => '0,-,+',1 => '-,0,+' } }, # CSe7
|
|
9851
|
-
99 => { Name => 'Func1Button',
|
|
9873
|
+
99 => { Name => 'Func1Button', %buttonsZ9}, # CSf2-a
|
|
9852
9874
|
#101 Func1Button submenu: Preview 0 => 'Press To Recall', 1=> 'Hold To Recall' # CSf2-a
|
|
9853
9875
|
#103 Func1Button submenu: AreaMode 0-7 => S, Dyn-S, Dyn-M, Dyn-L, Wide-S, Wide-L, 3D, Auto; 11=>n/a # CSf2-a
|
|
9854
9876
|
#105 Func1Button submenu: AreaMode+AF-On 0-7 => S, Dyn-S, Dyn-M, Dyn-L, Wide-S, Wide-L, 3D, Auto; 11=>n/a # CSf2-a
|
|
9855
9877
|
#109 Func1Button submenu: SynchronizedRelease 1=>'Master', 2=>'Remote' # CSf2-a
|
|
9856
9878
|
#111 Func1Button submenu: Zoom 0=>'Zoom (Low)', 2=>'Zoom (1:1)', 2=>'Zoom (High)' # CSf2-a
|
|
9857
9879
|
#113 Func1Button & Func1ButtonPlayback submenu: Rating # CSf2-a & CSf3a 0=>'Candidate For Deletion' 6=>''None'
|
|
9858
|
-
115 => { Name => 'Func2Button',
|
|
9880
|
+
115 => { Name => 'Func2Button', %buttonsZ9}, # CSf2-b
|
|
9859
9881
|
#117 Func2Button submenu: Preview 0 => 'Press To Recall', 1=> 'Hold To Recall' # CSf2-b
|
|
9860
9882
|
#119 Func2Button submenu: AreaMode 0-7 => S, Dyn-S, Dyn-M, Dyn-L, Wide-S, Wide-L, 3D, Auto; 11=>n/a # CSf2-b
|
|
9861
9883
|
#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
|
|
9862
9884
|
#125 Func2Button submenu: SynchronizedRelease 1=>'Master', 2=>'Remote' # CSf2-b
|
|
9863
9885
|
#127 Func2Button submenu: Zoom 0=>'Zoom (Low)', 2=>'Zoom (1:1)', 2=>'Zoom (High)' # CSf2-b
|
|
9864
9886
|
#129 Func2Button & Func2ButtonPlayback submenu: Rating # CSf2-b & CSf3b 0=>'Candidate For Deletion' 6=>''None'
|
|
9865
|
-
131 => { Name => 'AFOnButton',
|
|
9866
|
-
143 => { Name => 'SubSelector',
|
|
9867
|
-
155 => { Name => 'AssignMovieRecordButton',
|
|
9868
|
-
159 => { Name => 'LensFunc1Button',
|
|
9869
|
-
167 => { Name => 'LensFunc2Button',
|
|
9887
|
+
131 => { Name => 'AFOnButton', %buttonsZ9}, # CSf2-c
|
|
9888
|
+
143 => { Name => 'SubSelector', %buttonsZ9, Unknown => 1}, # CSf2-g
|
|
9889
|
+
155 => { Name => 'AssignMovieRecordButton', %buttonsZ9, Unknown => 1}, # CSf2-m
|
|
9890
|
+
159 => { Name => 'LensFunc1Button', %buttonsZ9}, # CSf2-o
|
|
9891
|
+
167 => { Name => 'LensFunc2Button', %buttonsZ9}, # CSf2-p
|
|
9870
9892
|
173 => { # CSf2-q
|
|
9871
9893
|
Name => 'LensControlRing',
|
|
9872
9894
|
PrintConv => {
|
|
@@ -9877,8 +9899,8 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
|
|
|
9877
9899
|
4 => 'Aperture',
|
|
9878
9900
|
},
|
|
9879
9901
|
},
|
|
9880
|
-
175 => { Name => 'MultiSelectorShootMode',
|
|
9881
|
-
179 => { Name => 'MultiSelectorPlaybackMode',
|
|
9902
|
+
175 => { Name => 'MultiSelectorShootMode', %buttonsZ9}, # CSf2-h called the OK button in camera, tag name retained for compatibility
|
|
9903
|
+
179 => { Name => 'MultiSelectorPlaybackMode', %buttonsZ9}, # CSf3f
|
|
9882
9904
|
183 => { Name => 'ShutterSpeedLock', PrintConv => \%offOn }, # CSf4-a
|
|
9883
9905
|
184 => { Name => 'ApertureLock', PrintConv => \%offOn }, # CSf4-b
|
|
9884
9906
|
185 => { # CSf5-a Previous cameras reported this tag as part of CmdDialsReverseRotation. Blend with CSf5-b separate settings together to match extant tag name and values
|
|
@@ -9902,9 +9924,20 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
|
|
|
9902
9924
|
}],
|
|
9903
9925
|
191 => { Name => 'UseDialWithoutHold', PrintConv => \%offOn, Unknown => 1 }, # CSf6
|
|
9904
9926
|
193 => { Name => 'ReverseIndicators', PrintConv => { 0 => '+ 0 -', 1 => '- 0 +' }, Unknown => 1 }, # CSf7
|
|
9905
|
-
195 => { Name => 'MovieFunc1Button',
|
|
9906
|
-
|
|
9907
|
-
|
|
9927
|
+
195 => { Name => 'MovieFunc1Button', %buttonsZ9}, # CSg2-a
|
|
9928
|
+
199 => { Name => 'MovieFunc2Button', %buttonsZ9}, # CSg2-b
|
|
9929
|
+
203 => { Name => 'MovieAF-OnButton', %buttonsZ9}, # CSg2-f
|
|
9930
|
+
215 => { # CSg2-z
|
|
9931
|
+
Name => 'MovieLensControlRing',
|
|
9932
|
+
PrintConv => {
|
|
9933
|
+
0 => 'None (Disabled)',
|
|
9934
|
+
2 => 'ISO Sensitivity',
|
|
9935
|
+
3 => 'Exposure Compensation',
|
|
9936
|
+
4 => 'Power Aperture',
|
|
9937
|
+
5 => 'Hi-Res Zoom',
|
|
9938
|
+
},
|
|
9939
|
+
},
|
|
9940
|
+
217 => { Name => 'MovieMultiSelector', %buttonsZ9, Unknown => 1}, # CSg2-h
|
|
9908
9941
|
221 => { Name => 'MovieAFSpeed', ValueConv => '$val - 5', ValueConvInv => '$val + 6' }, # CSg6-a
|
|
9909
9942
|
223 => { Name => 'MovieAFSpeedApply', rintConv => {0 => 'Always', 1 => 'Only During Recording'},}, # CSg6-b
|
|
9910
9943
|
225 => { # CSg7
|
|
@@ -9931,11 +9964,11 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
|
|
|
9931
9964
|
269.4 => { Name => 'LimitReleaseModeSelC120', Mask => 0x40, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-c
|
|
9932
9965
|
269.5 => { Name => 'LimitReleaseModeSelSelf', Mask => 0x80, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-d
|
|
9933
9966
|
273 => { Name => 'FlashBurstPriority', PrintConv => { 0 => 'Frame Rate',1 => 'Exposure'}, Unknown => 1 }, # CSe8
|
|
9934
|
-
277 => { Name => 'VerticalFuncButton',
|
|
9935
|
-
281 => { Name => 'Func3Button',
|
|
9936
|
-
285 => { Name => 'VerticalAFOnButton',
|
|
9967
|
+
277 => { Name => 'VerticalFuncButton', %buttonsZ9}, # CSf2-c
|
|
9968
|
+
281 => { Name => 'Func3Button', %buttonsZ9}, # CSf2-c
|
|
9969
|
+
285 => { Name => 'VerticalAFOnButton', %buttonsZ9}, # CSf2-l
|
|
9937
9970
|
293 => { Name => 'VerticalMultiSelectorPlaybackMode', PrintConv => { 0 => 'Image Scroll L/R', 1 => 'Image Scroll Up/Down' }, Unknown => 1}, # CSf3-j
|
|
9938
|
-
295 => { Name => 'MovieFunc3Button',
|
|
9971
|
+
295 => { Name => 'MovieFunc3Button', %buttonsZ9}, # CSg2-c
|
|
9939
9972
|
335 => { Name => 'LimitAF-AreaModeSelDynamic_S', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
|
|
9940
9973
|
336 => { Name => 'LimitAF-AreaModeSelDynamic_M', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
|
|
9941
9974
|
337 => { Name => 'LimitAF-AreaModeSelDynamic_L', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
|
|
@@ -9947,26 +9980,26 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
|
|
|
9947
9980
|
356 => { Name => 'EVFImageFrame', PrintConv => \%offOn, Unknown => 1 }, # CSd14
|
|
9948
9981
|
357 => { Name => 'EVFGrid', PrintConv => \%evfGridsZ9, Unknown => 1 }, # CSd15
|
|
9949
9982
|
359 => { Name => 'VirtualHorizonStyle', PrintConv => {0 => 'Type A (Cockpit)', 1 => 'Type B (Sides)' }, Unknown => 1}, #CSd16
|
|
9950
|
-
373 => { Name => 'Func4Button',
|
|
9951
|
-
379 => { Name => 'AudioButton',
|
|
9952
|
-
381 => { Name => 'QualityButton',
|
|
9953
|
-
399 => { Name => 'VerticalMultiSelector',
|
|
9954
|
-
421 => { Name => 'Func1ButtonPlaybackMode',
|
|
9955
|
-
423 => { Name => 'Func2ButtonPlaybackMode',
|
|
9956
|
-
425 => { Name => 'Func3ButtonPlaybackMode',
|
|
9957
|
-
431 => { Name => 'Func4ButtonPlaybackMode',
|
|
9958
|
-
437 => { Name => 'MovieRecordButtonPlaybackMode',
|
|
9959
|
-
439 => { Name => 'VerticalFuncButtonPlaybackMode',
|
|
9960
|
-
441 => { Name => 'AudioButtonPlaybackMode',
|
|
9961
|
-
447 => { Name => 'QualityButtonPlaybackMode',
|
|
9983
|
+
373 => { Name => 'Func4Button', %buttonsZ9, Unknown => 1}, # CSf2-e
|
|
9984
|
+
379 => { Name => 'AudioButton', %buttonsZ9, Unknown => 1}, # CSf2-i
|
|
9985
|
+
381 => { Name => 'QualityButton', %buttonsZ9, Unknown => 1}, # CSf2-j
|
|
9986
|
+
399 => { Name => 'VerticalMultiSelector', %buttonsZ9, Unknown => 1}, # CSf2-k
|
|
9987
|
+
421 => { Name => 'Func1ButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-a
|
|
9988
|
+
423 => { Name => 'Func2ButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-b
|
|
9989
|
+
425 => { Name => 'Func3ButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-c
|
|
9990
|
+
431 => { Name => 'Func4ButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-e
|
|
9991
|
+
437 => { Name => 'MovieRecordButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-m
|
|
9992
|
+
439 => { Name => 'VerticalFuncButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-d
|
|
9993
|
+
441 => { Name => 'AudioButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-g
|
|
9994
|
+
447 => { Name => 'QualityButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-h
|
|
9962
9995
|
467 => { Name => 'FocusPointLock', PrintConv => \%offOn, Unknown => 1}, # CSf4-c
|
|
9963
|
-
453 => { Name => 'WhiteBalanceButtonPlaybackMode',
|
|
9996
|
+
453 => { Name => 'WhiteBalanceButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-i
|
|
9964
9997
|
459 => { Name => 'CommandDialPlaybackMode', PrintConv => \%dialsZ9, Unknown => 1}, # CSf3-k
|
|
9965
9998
|
463 => { Name => 'SubCommandDialPlaybackMode', PrintConv => \%dialsZ9, Unknown => 1}, # CSf3-l
|
|
9966
9999
|
469 => { Name => 'ControlRingResponse', PrintConv => { 0 => 'High', 1 => 'Low' } }, # CSf10
|
|
9967
|
-
481 => { Name => 'VerticalMovieFuncButton',
|
|
9968
|
-
505 => { Name => 'VerticalMovieAFOnButton',
|
|
9969
|
-
515 => { Name => 'MovieAFAreaMode',
|
|
10000
|
+
481 => { Name => 'VerticalMovieFuncButton', %buttonsZ9, Unknown => 1}, # CSg2-d
|
|
10001
|
+
505 => { Name => 'VerticalMovieAFOnButton', %buttonsZ9, Unknown => 1}, # CSg2-l
|
|
10002
|
+
515 => { Name => 'MovieAFAreaMode', %buttonsZ9, Unknown => 1}, # CSg2-e
|
|
9970
10003
|
#521 => { Name => 'MovieLimitAF-AreaModeSelWideAF_S', PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-a
|
|
9971
10004
|
#522 => { Name => 'MovieLimitAF-AreaModeSelWideAF_W', PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-b
|
|
9972
10005
|
#523 => { Name => 'MovieLimitAF-AreaModeSelSubjectTrack', PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-c
|
|
@@ -2036,11 +2036,13 @@ sub ProcessNikonSettings($$$)
|
|
|
2036
2036
|
for ($i=0; $i<$num; ++$i) {
|
|
2037
2037
|
my $entry = $start + 0x18 + $i * 8;
|
|
2038
2038
|
my $tag = Get16u($dataPt, $entry);
|
|
2039
|
-
|
|
2039
|
+
# this is odd, but either the format is 16-bit and always big-endian,
|
|
2040
|
+
# or it is 8-bit and we have an unknown byte in the entry...
|
|
2041
|
+
my $fmt = Get8u($dataPt, $entry + 3);
|
|
2040
2042
|
my $val = Get32u($dataPt, $entry + 4);
|
|
2041
2043
|
# abort if the tag has a format that we haven't yet seen
|
|
2042
|
-
# (assuming this is a size/format code. So far we have only seen
|
|
2043
|
-
$fmt ==
|
|
2044
|
+
# (assuming this is a size/format code. So far we have only seen a code of 4)
|
|
2045
|
+
$fmt == 4 or $et->Warn(sprintf('Unknown format $fmt for NikonSettings tag 0x%.4x',$tag)), last;
|
|
2044
2046
|
$et->HandleTag($tagTablePtr, $tag, $val,
|
|
2045
2047
|
DataPt => $dataPt,
|
|
2046
2048
|
DataPos => $$dirInfo{DataPos},
|
|
@@ -40,7 +40,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
|
40
40
|
use Image::ExifTool::Exif;
|
|
41
41
|
use Image::ExifTool::APP12;
|
|
42
42
|
|
|
43
|
-
$VERSION = '2.
|
|
43
|
+
$VERSION = '2.79';
|
|
44
44
|
|
|
45
45
|
sub PrintLensInfo($$$);
|
|
46
46
|
|
|
@@ -115,6 +115,7 @@ my %olympusLensTypes = (
|
|
|
115
115
|
'0 35 00' => 'Olympus Zuiko Digital 14-54mm F2.8-3.5 II', #PH
|
|
116
116
|
'0 35 10' => 'Olympus M.Zuiko 100-400mm F5.0-6.3', #IB
|
|
117
117
|
'0 36 10' => 'Olympus M.Zuiko Digital ED 8-25mm F4 Pro', #IB
|
|
118
|
+
'0 37 10' => 'Olympus M.Zuiko Digital ED 40-150mm F4.0 Pro', #forum3833
|
|
118
119
|
# Sigma lenses
|
|
119
120
|
'1 01 00' => 'Sigma 18-50mm F3.5-5.6 DC', #8
|
|
120
121
|
'1 01 10' => 'Sigma 30mm F2.8 EX DN', #NJ
|
|
@@ -433,6 +434,7 @@ my %olympusCameraTypes = (
|
|
|
433
434
|
S0092 => 'E-M1MarkIII', #IB
|
|
434
435
|
S0093 => 'E-P7', #IB
|
|
435
436
|
S0095 => 'OM-1', #IB
|
|
437
|
+
S0101 => 'OM-5', #IB
|
|
436
438
|
SR45 => 'D220',
|
|
437
439
|
SR55 => 'D320L',
|
|
438
440
|
SR83 => 'D340L',
|
|
@@ -1834,7 +1836,7 @@ my %indexInfo = (
|
|
|
1834
1836
|
1 => 'Sequential shooting AF',
|
|
1835
1837
|
2 => 'Continuous AF',
|
|
1836
1838
|
3 => 'Multi AF',
|
|
1837
|
-
4 => 'Face
|
|
1839
|
+
4 => 'Face Detect', #11
|
|
1838
1840
|
10 => 'MF',
|
|
1839
1841
|
}, {
|
|
1840
1842
|
0 => '(none)',
|
|
@@ -1842,7 +1844,7 @@ my %indexInfo = (
|
|
|
1842
1844
|
0 => 'S-AF',
|
|
1843
1845
|
2 => 'C-AF',
|
|
1844
1846
|
4 => 'MF',
|
|
1845
|
-
5 => 'Face
|
|
1847
|
+
5 => 'Face Detect',
|
|
1846
1848
|
6 => 'Imager AF',
|
|
1847
1849
|
7 => 'Live View Magnification Frame',
|
|
1848
1850
|
8 => 'AF sensor',
|
|
@@ -1919,7 +1921,7 @@ my %indexInfo = (
|
|
|
1919
1921
|
PrintConv => [{
|
|
1920
1922
|
0 => 'Off',
|
|
1921
1923
|
1 => 'Motorsports',
|
|
1922
|
-
2 => '
|
|
1924
|
+
2 => 'Airplanes',
|
|
1923
1925
|
3 => 'Trains',
|
|
1924
1926
|
4 => 'Birds',
|
|
1925
1927
|
5 => 'Dogs & Cats',
|
|
@@ -36,7 +36,7 @@ use strict;
|
|
|
36
36
|
use vars qw($VERSION $AUTOLOAD %stdCase);
|
|
37
37
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
38
38
|
|
|
39
|
-
$VERSION = '1.
|
|
39
|
+
$VERSION = '1.61';
|
|
40
40
|
|
|
41
41
|
sub ProcessPNG_tEXt($$$);
|
|
42
42
|
sub ProcessPNG_iTXt($$$);
|
|
@@ -339,6 +339,11 @@ my %noLeapFrog = ( SAVE => 1, SEEK => 1, IHDR => 1, JHDR => 1, IEND => 1, MEND =
|
|
|
339
339
|
# int32u DividedHeight2
|
|
340
340
|
# int32u IDAT_Offset2 [location of IDAT with start of DividedHeight2 segment]
|
|
341
341
|
},
|
|
342
|
+
caBX => { # C2PA metadata
|
|
343
|
+
Name => 'JUMBF',
|
|
344
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Jpeg2000::Main' },
|
|
345
|
+
},
|
|
346
|
+
# cICP - Coding-independent code points (added in 2022 specification)
|
|
342
347
|
);
|
|
343
348
|
|
|
344
349
|
# PNG IHDR chunk
|
|
@@ -536,6 +541,8 @@ my %unreg = ( Notes => 'unregistered' );
|
|
|
536
541
|
Label => { %unreg },
|
|
537
542
|
Make => { %unreg, Groups => { 2 => 'Camera' } },
|
|
538
543
|
Model => { %unreg, Groups => { 2 => 'Camera' } },
|
|
544
|
+
# parameters (written by Stable Diffusion)
|
|
545
|
+
# aesthetic_score (written by Stable Diffusion)
|
|
539
546
|
'create-date'=> {
|
|
540
547
|
Name => 'CreateDate',
|
|
541
548
|
Groups => { 2 => 'Time' },
|
|
@@ -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.18';
|
|
41
41
|
|
|
42
42
|
sub ProcessLeicaLEIC($$$);
|
|
43
43
|
sub WhiteBalanceConv($;$$);
|
|
@@ -543,7 +543,11 @@ my %shootingMode = (
|
|
|
543
543
|
0x2c => [
|
|
544
544
|
{
|
|
545
545
|
Name => 'ContrastMode',
|
|
546
|
-
Condition =>
|
|
546
|
+
Condition => q{
|
|
547
|
+
$$self{Model} !~ /^DMC-(FX10|G1|L1|L10|LC80|GF\d+|G2|TZ10|ZS7)$/ and
|
|
548
|
+
# tested for DC-GH6, but rule out other DC- models just in case - PH
|
|
549
|
+
$$self{Model} !~ /^DC-/
|
|
550
|
+
},
|
|
547
551
|
Flags => 'PrintHex',
|
|
548
552
|
Writable => 'int16u',
|
|
549
553
|
Notes => q{
|
|
@@ -1129,7 +1133,10 @@ my %shootingMode = (
|
|
|
1129
1133
|
8 => 'Cinelike D', #forum11194
|
|
1130
1134
|
9 => 'Cinelike V', #forum11194
|
|
1131
1135
|
11 => 'L. Monochrome', #forum11194
|
|
1136
|
+
12 => 'Like709', #forum14033
|
|
1132
1137
|
15 => 'L. Monochrome D', #forum11194
|
|
1138
|
+
17 => 'V-Log', #forum14033
|
|
1139
|
+
18 => 'Cinelike D2', #forum14033
|
|
1133
1140
|
},
|
|
1134
1141
|
},
|
|
1135
1142
|
0x8a => { #18
|
|
@@ -1255,8 +1262,9 @@ my %shootingMode = (
|
|
|
1255
1262
|
Writable => 'rational64u',
|
|
1256
1263
|
Format => 'int32u',
|
|
1257
1264
|
PrintConv => {
|
|
1258
|
-
'0 0' => 'Expressive',
|
|
1259
|
-
|
|
1265
|
+
# '0 0' => 'Expressive', #forum11194
|
|
1266
|
+
'0 0' => 'Off', #forum14033 (GH6)
|
|
1267
|
+
'0 1' => 'Expressive', #forum14033 (GH6) (have also seen this for XS1)
|
|
1260
1268
|
'0 2' => 'Retro',
|
|
1261
1269
|
'0 4' => 'High Key',
|
|
1262
1270
|
'0 8' => 'Sepia',
|
|
@@ -1435,6 +1443,15 @@ my %shootingMode = (
|
|
|
1435
1443
|
ValueConv => '$_=sprintf("%.4x",$val); s/(..)(..)/$2 $1/; $_',
|
|
1436
1444
|
ValueConvInv => '$val =~ s/(..) (..)/$2$1/; hex($val)',
|
|
1437
1445
|
},
|
|
1446
|
+
0xe8 => { #PH (DC-GH6)
|
|
1447
|
+
Name => 'MinimumISO',
|
|
1448
|
+
Writable => 'int32u',
|
|
1449
|
+
},
|
|
1450
|
+
0xee => { #PH (DC-GH6)
|
|
1451
|
+
Name => 'DynamicRangeBoost',
|
|
1452
|
+
Writable => 'int16u',
|
|
1453
|
+
PrintConv => { 0 => 'Off', 1 => 'On' },
|
|
1454
|
+
},
|
|
1438
1455
|
0x0e00 => {
|
|
1439
1456
|
Name => 'PrintIM',
|
|
1440
1457
|
Description => 'Print Image Matching',
|
|
@@ -21,7 +21,7 @@ use vars qw($VERSION);
|
|
|
21
21
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
22
22
|
use Image::ExifTool::Exif;
|
|
23
23
|
|
|
24
|
-
$VERSION = '1.
|
|
24
|
+
$VERSION = '1.27';
|
|
25
25
|
|
|
26
26
|
sub ProcessJpgFromRaw($$$);
|
|
27
27
|
sub WriteJpgFromRaw($$$);
|
|
@@ -218,6 +218,7 @@ my %panasonicWhiteBalance = ( #forum9396
|
|
|
218
218
|
0x30 => { Name => 'CropLeft', Writable => 'int16u' },
|
|
219
219
|
0x31 => { Name => 'CropBottom', Writable => 'int16u' },
|
|
220
220
|
0x32 => { Name => 'CropRight', Writable => 'int16u' },
|
|
221
|
+
# 0x44 - may contain another pointer to the raw data starting at byte 2 in this data (DC-GH6)
|
|
221
222
|
0x10f => {
|
|
222
223
|
Name => 'Make',
|
|
223
224
|
Groups => { 2 => 'Camera' },
|
|
@@ -737,6 +738,8 @@ sub WriteDistortionInfo($$$)
|
|
|
737
738
|
# 2 - value count
|
|
738
739
|
# 3 - reference to list of original offset values
|
|
739
740
|
# 4 - IFD format number
|
|
741
|
+
# 5 - (pointer to StripOffsets value added by this PatchRawDataOffset routine)
|
|
742
|
+
# 6 - flag set if this is a fixed offset (Panasonic GH6 fixed-offset hack)
|
|
740
743
|
sub PatchRawDataOffset($$$)
|
|
741
744
|
{
|
|
742
745
|
my ($offsetInfo, $raf, $ifd) = @_;
|
|
@@ -745,15 +748,32 @@ sub PatchRawDataOffset($$$)
|
|
|
745
748
|
my $rawDataOffset = $$offsetInfo{0x118};
|
|
746
749
|
my $err;
|
|
747
750
|
$err = 1 unless $ifd == 0;
|
|
748
|
-
|
|
749
|
-
|
|
751
|
+
if ($stripOffsets or $stripByteCounts) {
|
|
752
|
+
$err = 1 unless $stripOffsets and $stripByteCounts and $$stripOffsets[2] == 1;
|
|
753
|
+
} else {
|
|
754
|
+
# the DC-GH6 and DC-GH5M2 write RawDataOffset with no Strip tags, so we need
|
|
755
|
+
# to create fake StripByteCounts information for copying the data
|
|
756
|
+
if ($$offsetInfo{0x118}) { # (just to be safe)
|
|
757
|
+
$stripByteCounts = $$offsetInfo{0x117} = [ $PanasonicRaw::Main{0x117}, 0, 1, [ 0 ], 4 ];
|
|
758
|
+
# set flag so the offset will be fixed (GH6 hack, see https://exiftool.org/forum/index.php?topic=13861.0)
|
|
759
|
+
# (of course, fixing up the offset is now unnecessary, but continue to do this even
|
|
760
|
+
# though the fixup adjustment will be 0 because this allows us to delete the following
|
|
761
|
+
# line to remove the fix-offset restriction if Panasonic ever sees the light, but note
|
|
762
|
+
# that in this case we should investigate the purpose of the seemily-duplicate raw
|
|
763
|
+
# data offset contained within PanasonicRaw_0x0044)
|
|
764
|
+
$$offsetInfo{0x118}[6] = 1;
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
if ($rawDataOffset and not $err) {
|
|
750
768
|
$err = 1 unless $$rawDataOffset[2] == 1;
|
|
751
|
-
$
|
|
769
|
+
if ($stripOffsets) {
|
|
770
|
+
$err = 1 unless $$stripOffsets[3][0] == 0xffffffff or $$stripByteCounts[3][0] == 0;
|
|
771
|
+
}
|
|
752
772
|
}
|
|
753
773
|
$err and return 'Unsupported Panasonic/Leica RAW variant';
|
|
754
774
|
if ($rawDataOffset) {
|
|
755
775
|
# update StripOffsets along with this tag if it contains a reasonable value
|
|
756
|
-
|
|
776
|
+
if ($stripOffsets and $$stripOffsets[3][0] != 0xffffffff) {
|
|
757
777
|
# save pointer to StripOffsets value for updating later
|
|
758
778
|
push @$rawDataOffset, $$stripOffsets[1];
|
|
759
779
|
}
|