exiftool_vendored 12.42.0 → 12.52.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
}
|