exiftool_vendored 12.34.0 → 12.38.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 +61 -2
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +65 -37
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +6 -2
- data/bin/lib/Image/ExifTool/Canon.pm +143 -9
- data/bin/lib/Image/ExifTool/CanonCustom.pm +12 -2
- data/bin/lib/Image/ExifTool/DarwinCore.pm +2 -2
- data/bin/lib/Image/ExifTool/Exif.pm +13 -1
- data/bin/lib/Image/ExifTool/FLIR.pm +33 -8
- data/bin/lib/Image/ExifTool/GIF.pm +5 -1
- data/bin/lib/Image/ExifTool/GPS.pm +14 -10
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +3 -3
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +108 -11
- data/bin/lib/Image/ExifTool/Nikon.pm +1203 -96
- data/bin/lib/Image/ExifTool/NikonCustom.pm +5 -1
- data/bin/lib/Image/ExifTool/NikonSettings.pm +135 -71
- data/bin/lib/Image/ExifTool/OpenEXR.pm +4 -2
- data/bin/lib/Image/ExifTool/PNG.pm +1 -0
- data/bin/lib/Image/ExifTool/QuickTime.pm +14 -2
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +26 -1
- data/bin/lib/Image/ExifTool/Sony.pm +3 -1
- data/bin/lib/Image/ExifTool/TagInfoXML.pm +9 -4
- data/bin/lib/Image/ExifTool/TagLookup.pm +6363 -5846
- data/bin/lib/Image/ExifTool/TagNames.pod +1215 -39
- data/bin/lib/Image/ExifTool/WriteXMP.pl +10 -11
- data/bin/lib/Image/ExifTool/Writer.pl +10 -5
- data/bin/lib/Image/ExifTool/XMP.pm +110 -24
- data/bin/lib/Image/ExifTool/XMP2.pl +1 -1
- data/bin/lib/Image/ExifTool.pm +51 -12
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -2
@@ -15,7 +15,7 @@ package Image::ExifTool::NikonCustom;
|
|
15
15
|
use strict;
|
16
16
|
use vars qw($VERSION);
|
17
17
|
|
18
|
-
$VERSION = '1.
|
18
|
+
$VERSION = '1.18';
|
19
19
|
|
20
20
|
my %offOn = ( 0 => 'Off', 1 => 'On' );
|
21
21
|
my %onOff = ( 0 => 'On', 1 => 'Off' );
|
@@ -3358,6 +3358,8 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
|
|
3358
3358
|
47 => 'AF-Area Mode + AF-On (Auto Area AF)',
|
3359
3359
|
49 => 'Sync Release (Master Only)',
|
3360
3360
|
50 => 'Sync Release (Remote Only)',
|
3361
|
+
58 => 'AF-Area Mode + AF-On (Group Area AF - HL)',
|
3362
|
+
59 => 'AF-Area Mode + AF-On (Group Area AF - VL)',
|
3361
3363
|
},
|
3362
3364
|
},
|
3363
3365
|
15.1 => { # CSf1-a
|
@@ -3401,6 +3403,8 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
|
|
3401
3403
|
47 => 'AF-Area Mode + AF-On (Auto Area AF)',
|
3402
3404
|
49 => 'Sync Release (Master Only)',
|
3403
3405
|
50 => 'Sync Release (Remote Only)',
|
3406
|
+
58 => 'AF-Area Mode + AF-On (Group Area AF - HL)',
|
3407
|
+
59 => 'AF-Area Mode + AF-On (Group Area AF - VL)',
|
3404
3408
|
},
|
3405
3409
|
},
|
3406
3410
|
16.1 => { # CSf1-p
|
@@ -17,7 +17,7 @@ use strict;
|
|
17
17
|
use vars qw($VERSION);
|
18
18
|
use Image::ExifTool qw(:DataAccess :Utils);
|
19
19
|
|
20
|
-
$VERSION = '1.
|
20
|
+
$VERSION = '1.06';
|
21
21
|
|
22
22
|
sub ProcessNikonSettings($$$);
|
23
23
|
|
@@ -161,6 +161,39 @@ my %iSOAutoHiLimitD6 = (
|
|
161
161
|
45 => 'ISO Hi 5.0',
|
162
162
|
);
|
163
163
|
|
164
|
+
my %iSOAutoHiLimitZ7 = (
|
165
|
+
1 => 'ISO 100',
|
166
|
+
2 => 'ISO 125',
|
167
|
+
4 => 'ISO 160',
|
168
|
+
5 => 'ISO 200',
|
169
|
+
6 => 'ISO 250',
|
170
|
+
8 => 'ISO 320',
|
171
|
+
9 => 'ISO 400',
|
172
|
+
10 => 'ISO 500',
|
173
|
+
12 => 'ISO 640',
|
174
|
+
13 => 'ISO 800',
|
175
|
+
14 => 'ISO 1000',
|
176
|
+
16 => 'ISO 1250',
|
177
|
+
17 => 'ISO 1600',
|
178
|
+
18 => 'ISO 2000',
|
179
|
+
20 => 'ISO 2500',
|
180
|
+
21 => 'ISO 3200',
|
181
|
+
22 => 'ISO 4000',
|
182
|
+
24 => 'ISO 5000',
|
183
|
+
25 => 'ISO 6400',
|
184
|
+
26 => 'ISO 8000',
|
185
|
+
28 => 'ISO 10000',
|
186
|
+
29 => 'ISO 12800',
|
187
|
+
30 => 'ISO 16000',
|
188
|
+
32 => 'ISO 20000',
|
189
|
+
33 => 'ISO 25600',
|
190
|
+
38 => 'ISO Hi 0.3',
|
191
|
+
39 => 'ISO Hi 0.5',
|
192
|
+
40 => 'ISO Hi 0.7',
|
193
|
+
41 => 'ISO Hi 1.0',
|
194
|
+
42 => 'ISO Hi 2.0',
|
195
|
+
);
|
196
|
+
|
164
197
|
my %lensFuncButtonZ7m2 = (
|
165
198
|
1 => 'AF-On',
|
166
199
|
2 => 'AF Lock Only',
|
@@ -305,16 +338,21 @@ my %times4s10s20s1m5m20m = (
|
|
305
338
|
|
306
339
|
my %yesNo = ( 1 => 'Yes', 2 => 'No' );
|
307
340
|
|
308
|
-
my %infoZ72 = (
|
309
|
-
Condition => '$$self{Model} =~ /^NIKON Z 6_2/i or $$self{Model} =~ /^NIKON Z 7_2/i',
|
310
|
-
Notes => 'Z7_2',
|
311
|
-
);
|
312
|
-
|
313
341
|
my %infoD6 = (
|
314
|
-
Condition => '$$self{Model} =~ /^NIKON D6/i',
|
342
|
+
Condition => '$$self{Model} =~ /^NIKON D6\b/i',
|
315
343
|
Notes => 'D6',
|
316
344
|
);
|
317
345
|
|
346
|
+
my %infoZ7 = (
|
347
|
+
Condition => '$$self{Model} =~ /^NIKON Z (7|7_2)\b/i',
|
348
|
+
Notes => 'Z7 and Z7_2',
|
349
|
+
);
|
350
|
+
|
351
|
+
my %infoZSeries = (
|
352
|
+
Condition => '$$self{Model} =~ /^NIKON Z (5|50|6|6_2|7|7_2|fc)\b/i',
|
353
|
+
Notes => 'Z Series cameras thru November 2021',
|
354
|
+
);
|
355
|
+
|
318
356
|
# Nikon Settings tags (ref 1, tag ID's ref PH)
|
319
357
|
%Image::ExifTool::NikonSettings::Main = (
|
320
358
|
PROCESS_PROC => \&ProcessNikonSettings,
|
@@ -329,39 +367,8 @@ my %infoD6 = (
|
|
329
367
|
%infoD6,
|
330
368
|
},{
|
331
369
|
Name => 'ISOAutoHiLimit',
|
332
|
-
PrintConv =>
|
333
|
-
|
334
|
-
2 => 'ISO 125',
|
335
|
-
4 => 'ISO 160',
|
336
|
-
5 => 'ISO 200',
|
337
|
-
6 => 'ISO 250',
|
338
|
-
8 => 'ISO 320',
|
339
|
-
9 => 'ISO 400',
|
340
|
-
10 => 'ISO 500',
|
341
|
-
12 => 'ISO 640',
|
342
|
-
13 => 'ISO 800',
|
343
|
-
14 => 'ISO 1000',
|
344
|
-
16 => 'ISO 1250',
|
345
|
-
17 => 'ISO 1600',
|
346
|
-
18 => 'ISO 2000',
|
347
|
-
20 => 'ISO 2500',
|
348
|
-
21 => 'ISO 3200',
|
349
|
-
22 => 'ISO 4000',
|
350
|
-
24 => 'ISO 5000',
|
351
|
-
25 => 'ISO 6400',
|
352
|
-
26 => 'ISO 8000',
|
353
|
-
28 => 'ISO 10000',
|
354
|
-
29 => 'ISO 12800',
|
355
|
-
30 => 'ISO 16000',
|
356
|
-
32 => 'ISO 20000',
|
357
|
-
33 => 'ISO 25600',
|
358
|
-
38 => 'ISO Hi 0.3',
|
359
|
-
39 => 'ISO Hi 0.5',
|
360
|
-
40 => 'ISO Hi 0.7',
|
361
|
-
41 => 'ISO Hi 1.0',
|
362
|
-
42 => 'ISO Hi 2.0',
|
363
|
-
},
|
364
|
-
%infoZ72,
|
370
|
+
PrintConv => \%iSOAutoHiLimitZ7,
|
371
|
+
%infoZ7,
|
365
372
|
}],
|
366
373
|
0x002 => [{
|
367
374
|
Name => 'ISOAutoFlashLimit',
|
@@ -441,7 +448,7 @@ my %infoD6 = (
|
|
441
448
|
42 => 'ISO Hi 1.0',
|
442
449
|
43 => 'ISO Hi 2.0',
|
443
450
|
},
|
444
|
-
%
|
451
|
+
%infoZ7,
|
445
452
|
}],
|
446
453
|
0x003 => { # (D6/Z7_2)
|
447
454
|
Name => 'ISOAutoShutterTime',
|
@@ -542,18 +549,10 @@ my %infoD6 = (
|
|
542
549
|
37 => 'ISO Hi 1.0',
|
543
550
|
38 => 'ISO Hi 2.0',
|
544
551
|
},
|
545
|
-
%
|
552
|
+
%infoZ7,
|
546
553
|
}],
|
547
554
|
0x00e => { Name => 'MovieISOAutoControlManualMode',PrintConv => \%onOff }, # (D6/Z7_2)
|
548
|
-
|
549
|
-
# Name => 'MovieISOAutoManualMode',
|
550
|
-
# PrintConv => \%iSOAutoHiLimitD6,
|
551
|
-
# %infoD6,
|
552
|
-
# },{
|
553
|
-
# Name => 'MovieISOAutoManualMode',
|
554
|
-
# PrintConv => \%iSOAutoHiLimitZ7m2,
|
555
|
-
# %infoZ72,
|
556
|
-
# }],
|
555
|
+
0x00f => { Name => 'MovieWhiteBalanceSameAsPhoto', PrintConv => \%yesNo }, # (D6/Z7_2)
|
557
556
|
0x01d => [{ # CSa1 (D6)
|
558
557
|
Name => 'AF-CPrioritySel',
|
559
558
|
PrintConv => { # valid for cameras with 4 options for CS1, otherwise 1=Release, 2=Focus
|
@@ -566,7 +565,7 @@ my %infoD6 = (
|
|
566
565
|
},{ # CSa1 (Z7_2)
|
567
566
|
Name => 'AF-CPrioritySel',
|
568
567
|
PrintConv => \%releaseFocus,
|
569
|
-
%
|
568
|
+
%infoZSeries,
|
570
569
|
}],
|
571
570
|
0x01e => { Name => 'AF-SPrioritySel', PrintConv => \%releaseFocus }, # CSa2 (D6), CSa2 (Z7_2)
|
572
571
|
0x020 => [{ # CSa4 (D6)
|
@@ -580,7 +579,7 @@ my %infoD6 = (
|
|
580
579
|
},{ # CSa4 (Z7_2)
|
581
580
|
Name => 'AFPointSel',
|
582
581
|
PrintConv => { 1 => 'Use All', 2 => 'Use Half' },
|
583
|
-
%
|
582
|
+
%infoZSeries,
|
584
583
|
}],
|
585
584
|
0x022 => { Name => 'AFActivation', PrintConv => { 1 => 'Shutter/AF-On', 2 => 'AF-On Only' } }, # CSa6-a (D6/Z7_2) (missing enable/disable out of focus release) # (D6)
|
586
585
|
0x023 => { Name => 'FocusPointWrap', PrintConv => { 1 => 'Wrap', 2 => 'No Wrap' } }, # CSa16 (D6), CSa8 (Z7_2)
|
@@ -617,7 +616,7 @@ my %infoD6 = (
|
|
617
616
|
},{ # CSb3 (Z7_2)
|
618
617
|
Name => 'CenterWeightedAreaSize',
|
619
618
|
PrintConv => { 1 => '12 mm', 2 => 'Average' },
|
620
|
-
%
|
619
|
+
%infoZSeries,
|
621
620
|
}],
|
622
621
|
0x02f => { # CSb7-a (D6), CSb4-a (Z7_2)
|
623
622
|
Name => 'FineTuneOptMatrixMetering',
|
@@ -681,7 +680,7 @@ my %infoD6 = (
|
|
681
680
|
7 => '30 min',
|
682
681
|
8 => 'No Limit',
|
683
682
|
},
|
684
|
-
%
|
683
|
+
%infoZSeries,
|
685
684
|
}],
|
686
685
|
0x035 => { # CSc3-a (D6), CSc2-a (Z7_2)
|
687
686
|
Name => 'SelfTimerTime',
|
@@ -770,7 +769,7 @@ my %infoD6 = (
|
|
770
769
|
6 => '1/80 s',
|
771
770
|
7 => '1/60 s',
|
772
771
|
},
|
773
|
-
%
|
772
|
+
%infoZSeries,
|
774
773
|
}],
|
775
774
|
0x048 => { # CSe2 (D6/Z7_2)
|
776
775
|
Name => 'FlashShutterSpeed',
|
@@ -844,7 +843,7 @@ my %infoD6 = (
|
|
844
843
|
25 => 'Non-CPU Lens',
|
845
844
|
26 => 'None',
|
846
845
|
},
|
847
|
-
%
|
846
|
+
%infoZSeries,
|
848
847
|
}],
|
849
848
|
0x053 => [{ # CSf4-a (D6)
|
850
849
|
Name => 'MultiSelectorShootMode',
|
@@ -864,7 +863,7 @@ my %infoD6 = (
|
|
864
863
|
4 => 'Zoom (High)',
|
865
864
|
5 => 'None',
|
866
865
|
},
|
867
|
-
%
|
866
|
+
%infoZSeries,
|
868
867
|
}],
|
869
868
|
0x054 => [{ # CSf4-c (D6)
|
870
869
|
Name => 'MultiSelectorPlaybackMode',
|
@@ -887,7 +886,7 @@ my %infoD6 = (
|
|
887
886
|
5 => 'Zoom (High)',
|
888
887
|
6 => 'Choose Folder',
|
889
888
|
},
|
890
|
-
%
|
889
|
+
%infoZSeries,
|
891
890
|
}],
|
892
891
|
0x056 => { # CSf4-b (D6)
|
893
892
|
Name => 'MultiSelectorLiveView',
|
@@ -975,9 +974,29 @@ my %infoD6 = (
|
|
975
974
|
1 => 'Manual (dark on light)',
|
976
975
|
2 => 'Manual (light on dark)',
|
977
976
|
},
|
978
|
-
%
|
977
|
+
%infoZSeries,
|
979
978
|
}],
|
980
979
|
0x074 => { Name => 'FlickAdvanceDirection', PrintConv => { 1 => 'Right to Left', 2 => 'Left to Right' } }, # CSf12-3 (D6)
|
980
|
+
0x075 => { # Settings menu # (D6,Z7_2)
|
981
|
+
Name => 'HDMIOutputResolution',
|
982
|
+
PrintConv => {
|
983
|
+
1 => 'Auto',
|
984
|
+
2 => '2160p',
|
985
|
+
3 => '1080p',
|
986
|
+
4 => '1080i',
|
987
|
+
5 => '720p',
|
988
|
+
6 => '576p',
|
989
|
+
7 => '480p',
|
990
|
+
},
|
991
|
+
},
|
992
|
+
0x077 => { # Settings menu # (D6,Z7_2)
|
993
|
+
Name => 'HDMIOutputRange',
|
994
|
+
PrintConv => {
|
995
|
+
1 => 'Auto',
|
996
|
+
2 => 'Limit',
|
997
|
+
3 => 'Full',
|
998
|
+
},
|
999
|
+
},
|
981
1000
|
0x080 => [{
|
982
1001
|
Name => 'RemoteFuncButton',
|
983
1002
|
PrintConv => {
|
@@ -1010,7 +1029,7 @@ my %infoD6 = (
|
|
1010
1029
|
10 => 'None',
|
1011
1030
|
11 => 'LiveView Info Display On/Off',
|
1012
1031
|
},
|
1013
|
-
%
|
1032
|
+
%infoZSeries,
|
1014
1033
|
}],
|
1015
1034
|
0x08b => [{ # CSf6-a-1 and CSf6-a-2 (D6), CSf5-a-1 and CSf5-a-2 (Z7_2), (continued from above)
|
1016
1035
|
Name => 'CmdDialsReverseRotation',
|
@@ -1051,6 +1070,7 @@ my %infoD6 = (
|
|
1051
1070
|
8 => '180',
|
1052
1071
|
},
|
1053
1072
|
},
|
1073
|
+
0x092 => { Name => 'HDMIExternalRecorder', PrintConv => \%onOff }, # Settings Menu/HDMI/Advanced entry (D6 & Z7_2)
|
1054
1074
|
0x093 => { # CSa3-a (D6), CSa3 (Z7_2)
|
1055
1075
|
Name => 'BlockShotAFResponse',
|
1056
1076
|
PrintConv => {
|
@@ -1077,7 +1097,7 @@ my %infoD6 = (
|
|
1077
1097
|
1 => 'Focus Point',
|
1078
1098
|
2 => 'Off',
|
1079
1099
|
},
|
1080
|
-
%
|
1100
|
+
%infoZSeries,
|
1081
1101
|
}],
|
1082
1102
|
0x099 => { Name => 'DynamicAreaAFAssist',PrintConv => \%onOff }, # CSa17-c (D6), CSa9-b (Z7_2)
|
1083
1103
|
0x09a => { Name => 'ExposureCompStepSize', PrintConv => \%thirdHalfFull }, # CSb3 (D6)
|
@@ -1100,7 +1120,7 @@ my %infoD6 = (
|
|
1100
1120
|
},{ # CSf2-a (Z7_2)
|
1101
1121
|
Name => 'Func1Button',
|
1102
1122
|
PrintConv => \%funcButtonZ7m2,
|
1103
|
-
%
|
1123
|
+
%infoZSeries,
|
1104
1124
|
}],
|
1105
1125
|
0x0a2 => [{ # CSf3-c (D6)
|
1106
1126
|
Name => 'Func2Button',
|
@@ -1109,7 +1129,7 @@ my %infoD6 = (
|
|
1109
1129
|
},{ # CSf2-b (Z7_2)
|
1110
1130
|
Name => 'Func2Button',
|
1111
1131
|
PrintConv => \%funcButtonZ7m2,
|
1112
|
-
%
|
1132
|
+
%infoZSeries,
|
1113
1133
|
}],
|
1114
1134
|
0x0a3 => [{ # CSf3-f (D6)
|
1115
1135
|
Name => 'AF-OnButton',
|
@@ -1161,7 +1181,7 @@ my %infoD6 = (
|
|
1161
1181
|
11 => 'Zoom (High)',
|
1162
1182
|
12 => 'None'
|
1163
1183
|
},
|
1164
|
-
%
|
1184
|
+
%infoZSeries,
|
1165
1185
|
}],
|
1166
1186
|
0x0a4 => { Name => 'SubSelector', PrintConv => \%tagSubSelector }, # CSf3-g-1 # (D6), CSf2-d-1 # (Z7_2)
|
1167
1187
|
0x0a5 => [{ # CSf3-h (D6)
|
@@ -1234,7 +1254,7 @@ my %infoD6 = (
|
|
1234
1254
|
24 => 'Non-CPU Lens',
|
1235
1255
|
25 => 'None',
|
1236
1256
|
},
|
1237
|
-
%
|
1257
|
+
%infoZSeries,
|
1238
1258
|
}],
|
1239
1259
|
0x0a7 => [{ # CSf3-n (D6)
|
1240
1260
|
Name => 'LensFunc1Button',
|
@@ -1274,7 +1294,7 @@ my %infoD6 = (
|
|
1274
1294
|
},{ # CSf2-g (Z7_2)
|
1275
1295
|
Name => 'LensFunc1Button',
|
1276
1296
|
PrintConv => \%lensFuncButtonZ7m2,
|
1277
|
-
%
|
1297
|
+
%infoZSeries,
|
1278
1298
|
}],
|
1279
1299
|
0x0a8 => { Name => 'CmdDialsApertureSetting', PrintConv => { 1 => 'Sub-command Dial', 2 => 'Aperture Ring' } }, # CSf6-c (D6)
|
1280
1300
|
0x0a9 => { Name => 'MultiSelector', PrintConv => \%tagMultiSelector }, # CSf7 (D6)
|
@@ -1335,7 +1355,7 @@ my %infoD6 = (
|
|
1335
1355
|
23 => 'Rating (1)', # no mapping for 24 on the Z7_2. Possibly intended for Rating = 'Candidate for Deletion'?
|
1336
1356
|
25 => 'None',
|
1337
1357
|
},
|
1338
|
-
%
|
1358
|
+
%infoZSeries,
|
1339
1359
|
}],
|
1340
1360
|
0x0b3 => [{ # CSg2-b (D6)
|
1341
1361
|
Name => 'MovieFunc1Button',
|
@@ -1379,7 +1399,7 @@ my %infoD6 = (
|
|
1379
1399
|
23 => 'Rating (1)', # no mapping for 24 on the Z7_2. Possibly intended for Rating = 'Candidate for Deletion'?
|
1380
1400
|
25 => 'None',
|
1381
1401
|
},
|
1382
|
-
%
|
1402
|
+
%infoZSeries,
|
1383
1403
|
}],
|
1384
1404
|
0x0b5 => { # CSg2-c (D6)
|
1385
1405
|
Name => 'MovieFunc2Button',
|
@@ -1426,7 +1446,7 @@ my %infoD6 = (
|
|
1426
1446
|
12 => 'Image Area',
|
1427
1447
|
13 => 'None',
|
1428
1448
|
},
|
1429
|
-
%
|
1449
|
+
%infoZSeries,
|
1430
1450
|
}],
|
1431
1451
|
0x0b8 => { Name => 'LimitAFAreaModeSelD9', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa14-a (D6)
|
1432
1452
|
0x0b9 => { Name => 'LimitAFAreaModeSelD25', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa14-b (D6)
|
@@ -1549,6 +1569,29 @@ my %infoD6 = (
|
|
1549
1569
|
0x0fb => { Name => 'SecondarySlotFunction', PrintConv => \%tagSecondarySlotFunction }, # (D6)
|
1550
1570
|
0x0fc => { Name => 'SilentPhotography', PrintConv => \%onOff }, # (D6,Z7_2) # tag is associated with Silent LiveView Photography (as distinguisehed from Silent Interval or Silent Focus Shift)
|
1551
1571
|
0x0fd => { Name => 'ExtendedShutterSpeeds', PrintConv => \%onOff }, # CSd7 (D6), CSd6 (Z7_2)
|
1572
|
+
0x102 => { # (Z7_2)
|
1573
|
+
Name => 'HDMIBitDepth',
|
1574
|
+
RawConv => '$$self{HDMIBitDepth} = $val',
|
1575
|
+
PrintConv => {
|
1576
|
+
1 => '8 Bit',
|
1577
|
+
2 => '10 Bit',
|
1578
|
+
#5 => 'Auto', #observed on the Z50 - needs confirmation
|
1579
|
+
},
|
1580
|
+
},
|
1581
|
+
0x103 => { # (Z7_2)
|
1582
|
+
Name => 'HDMIOutputHDR',
|
1583
|
+
Condition => '$$self{HDMIBitDepth} == 2', # HDR(HLC) output option only available only for 10 bit
|
1584
|
+
RawConv => '$$self{HDMIOutputHDR} = $val',
|
1585
|
+
PrintConv => {
|
1586
|
+
2 => 'On', # unusual decode perhaps due to sharing sub-menu with tag HDMIOutputN-Log?
|
1587
|
+
3 => 'Off',
|
1588
|
+
},
|
1589
|
+
},
|
1590
|
+
0x104 => { # valid for 10 bit with either N-Log or HDR/HLG selected (Z7_2)
|
1591
|
+
Name => 'HDMIViewAssist',
|
1592
|
+
Condition => '$$self{HDMIBitDepth} == 2',
|
1593
|
+
PrintConv => \%onOff
|
1594
|
+
},
|
1552
1595
|
0x109 => { # (D6,Z7_2)
|
1553
1596
|
Name => 'BracketSet',
|
1554
1597
|
RawConv => '$$self{BracketSet} = $val',
|
@@ -1640,6 +1683,11 @@ my %infoD6 = (
|
|
1640
1683
|
8 => 'Off, Low, Normal, High, Extra High',
|
1641
1684
|
},
|
1642
1685
|
},
|
1686
|
+
0x10e => { # (D6/Z7_2)
|
1687
|
+
Name => 'MonitorBrightness',
|
1688
|
+
# settings: -5 to +5
|
1689
|
+
ValueConv => '$val - 6',
|
1690
|
+
},
|
1643
1691
|
0x116 => { Name => 'GroupAreaC1', PrintConv =>\%groupAreaCustom }, # CSa10-a (new with D6) # (D6)
|
1644
1692
|
0x117 => { Name => 'AutoAreaAFStartingPoint', PrintConv => \%enableDisable }, # CSa12 (D6)
|
1645
1693
|
0x118 => { Name => 'FocusPointPersistence', PrintConv => { 1 => 'Auto', 2 => 'Off' } }, # CSa13 (new with D6) # (D6)
|
@@ -1823,8 +1871,9 @@ my %infoD6 = (
|
|
1823
1871
|
},
|
1824
1872
|
},
|
1825
1873
|
0x151 => { Name => 'LensFunc2Button', PrintConv => \%lensFuncButtonZ7m2 }, # CSf2-h (Z7_2)
|
1874
|
+
#0x153 => { Name => 'ViewfinderBrightness', } #(Z7_2) # commented out to reduce output volume. Range [-5,+5]. PrintConv matches MonitorBrightness.
|
1826
1875
|
0x158 => { Name => 'USBPowerDelivery', PrintConv => \%enableDisable }, # (Z7_2)
|
1827
|
-
|
1876
|
+
0x159 => { Name => 'EnergySavingMode', PrintConv =>\%onOff }, # (Z7_2)
|
1828
1877
|
0x15c => { Name => 'BracketingBurstOptions',PrintConv => \%enableDisable }, # CSe9 (D6)
|
1829
1878
|
# 0x15d => CSf3-j-2 (D6) 'Same as Multi-Selector with Info(U/D) & Playback(R/L)' and 'Same as Multi-Selector with Info(R/L) & Playback(U/D)' (skipped to reduce volume of output)
|
1830
1879
|
0x15e => { Name => 'PrimarySlot', PrintConv => { 1 => 'CFexpress/XQD Card', 2 => 'SD Card' } }, # (Z7_2)
|
@@ -1900,10 +1949,12 @@ my %infoD6 = (
|
|
1900
1949
|
13 => 'None',
|
1901
1950
|
},
|
1902
1951
|
},
|
1952
|
+
#0x168 => { Name => 'ControlPanelBrightness', # (Z7_2) #commented to reduce output volume
|
1903
1953
|
0x169 => { Name => 'LimitAF-AreaModeSelAutoPeople', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa7-h (Z7_2)
|
1904
1954
|
0x16a => { Name => 'LimitAF-AreaModeSelAutoAnimals', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa7-h (Z7_2)
|
1905
1955
|
0x16b => { Name => 'LimitAF-AreaModeSelWideLPeople', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa7-e (Z7_2)
|
1906
1956
|
0x16c => { Name => 'LimitAF-AreaModeSelWideLAnimals', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa7-f (Z7_2)
|
1957
|
+
0x16d => { Name => 'SaveFocus', PrintConv => \%onOff }, # (Z7_2)
|
1907
1958
|
0x16e => { # (Z7_2)
|
1908
1959
|
Name => 'AFAreaMode',
|
1909
1960
|
RawConv => '$$self{AFAreaMode} = $val',
|
@@ -1919,6 +1970,19 @@ my %infoD6 = (
|
|
1919
1970
|
10 => 'Auto (Animals)',
|
1920
1971
|
},
|
1921
1972
|
},
|
1973
|
+
0x16f => { # (Z7_2)
|
1974
|
+
Name => 'MovieAFAreaMode',
|
1975
|
+
PrintConv => {
|
1976
|
+
1 => 'Single-point',
|
1977
|
+
2 => 'Wide (S)',
|
1978
|
+
3 => 'Wide (L)',
|
1979
|
+
4 => 'Wide (L-people)',
|
1980
|
+
5 => 'Wide (L-animals)',
|
1981
|
+
6 => 'Auto',
|
1982
|
+
7 => 'Auto (People)',
|
1983
|
+
8 => 'Auto (Animals)',
|
1984
|
+
},
|
1985
|
+
},
|
1922
1986
|
0x170 => { Name => 'PreferSubSelectorCenter', PrintConv => \%offOn }, # CSf13 (D6 firmware v1.2.0)
|
1923
1987
|
0x171 => { # CSb8 (D6 firmware v1.3.0)
|
1924
1988
|
Name => 'KeepExposureWithTeleconverter',
|
@@ -15,7 +15,7 @@ use vars qw($VERSION);
|
|
15
15
|
use Image::ExifTool qw(:DataAccess :Utils);
|
16
16
|
use Image::ExifTool::GPS;
|
17
17
|
|
18
|
-
$VERSION = '1.
|
18
|
+
$VERSION = '1.03';
|
19
19
|
|
20
20
|
# supported EXR value format types (other types are extracted as undef binary data)
|
21
21
|
my %formatType = (
|
@@ -172,12 +172,13 @@ sub ProcessEXR($$)
|
|
172
172
|
my $ver = unpack('x4V', $buff);
|
173
173
|
$et->HandleTag($tagTablePtr, '_ver', $ver & 0xff);
|
174
174
|
$et->HandleTag($tagTablePtr, '_lay', $ver & 0x200);
|
175
|
+
my $maxLen = ($ver & 0x400) ? 255 : 31;
|
175
176
|
|
176
177
|
# extract attributes
|
177
178
|
for (;;) {
|
178
179
|
$raf->Read($buff, 68) or last;
|
179
180
|
last if $buff =~ /^\0/;
|
180
|
-
unless ($buff =~ /^([^\0]{1
|
181
|
+
unless ($buff =~ /^([^\0]{1,$maxLen})\0([^\0]{1,$maxLen})\0(.{4})/sg) {
|
181
182
|
$et->Warn('EXR format error');
|
182
183
|
last;
|
183
184
|
}
|
@@ -189,6 +190,7 @@ sub ProcessEXR($$)
|
|
189
190
|
my $tagInfo = $et->GetTagInfo($tagTablePtr, $tag);
|
190
191
|
unless ($tagInfo) {
|
191
192
|
my $name = ucfirst $tag;
|
193
|
+
$name =~ s/([^a-zA-Z])([a-z])/$1\U$2/g; # capitalize first letter of each word
|
192
194
|
$name =~ tr/-_a-zA-Z0-9//dc;
|
193
195
|
if (length $name <= 1) {
|
194
196
|
if (length $name) {
|
@@ -259,6 +259,7 @@ my %noLeapFrog = ( SAVE => 1, SEEK => 1, IHDR => 1, JHDR => 1, IEND => 1, MEND =
|
|
259
259
|
},
|
260
260
|
tRNS => {
|
261
261
|
Name => 'Transparency',
|
262
|
+
# may have as many entries as the PLTE table, but who wants to see all that?
|
262
263
|
ValueConv => q{
|
263
264
|
return \$val if length($val) > 6;
|
264
265
|
join(" ",unpack($Image::ExifTool::PNG::colorType == 3 ? "C*" : "n*", $val));
|
@@ -47,7 +47,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
47
47
|
use Image::ExifTool::Exif;
|
48
48
|
use Image::ExifTool::GPS;
|
49
49
|
|
50
|
-
$VERSION = '2.
|
50
|
+
$VERSION = '2.73';
|
51
51
|
|
52
52
|
sub ProcessMOV($$;$);
|
53
53
|
sub ProcessKeys($$$);
|
@@ -482,6 +482,17 @@ my %eeBox2 = (
|
|
482
482
|
# (Pittasoft Blackview dashcam MP4 videos)
|
483
483
|
Condition => '$$valPt =~ /^\0\0..(cprt|sttm|ptnm|ptrh|thum|gps |3gf )/s',
|
484
484
|
SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::Pittasoft' },
|
485
|
+
},{
|
486
|
+
Name => 'ThumbnailImage',
|
487
|
+
# (DJI Zenmuse XT2 thermal camera)
|
488
|
+
Groups => { 2 => 'Preview' },
|
489
|
+
Condition => '$$valPt =~ /^.{4}mdat\xff\xd8\xff/s',
|
490
|
+
RawConv => q{
|
491
|
+
my $len = unpack('N', $val);
|
492
|
+
return undef if $len <= 8 or $len > length($val);
|
493
|
+
return substr($val, 8, $len-8);
|
494
|
+
},
|
495
|
+
Binary => 1,
|
485
496
|
},{
|
486
497
|
Unknown => 1,
|
487
498
|
Binary => 1,
|
@@ -6359,7 +6370,7 @@ my %eeBox2 = (
|
|
6359
6370
|
'player.movie.visual.tint' => 'Tint',
|
6360
6371
|
'player.movie.visual.contrast' => 'Contrast',
|
6361
6372
|
'player.movie.audio.gain' => 'AudioGain',
|
6362
|
-
'player.movie.audio.treble' => '
|
6373
|
+
'player.movie.audio.treble' => 'Treble',
|
6363
6374
|
'player.movie.audio.bass' => 'Bass',
|
6364
6375
|
'player.movie.audio.balance' => 'Balance',
|
6365
6376
|
'player.movie.audio.pitchshift' => 'PitchShift',
|
@@ -6454,6 +6465,7 @@ my %eeBox2 = (
|
|
6454
6465
|
%Image::ExifTool::QuickTime::iTunesInfo = (
|
6455
6466
|
PROCESS_PROC => \&ProcessMOV,
|
6456
6467
|
GROUPS => { 1 => 'iTunes', 2 => 'Audio' },
|
6468
|
+
VARS => { LONG_TAGS => 0 }, # (hack for discrepancy in the way long tags are counted in BuildTagLookup)
|
6457
6469
|
NOTES => q{
|
6458
6470
|
ExifTool will extract any iTunesInfo tags that exist, even if they are not
|
6459
6471
|
defined in this table. These tags belong to the family 1 "iTunes" group,
|
@@ -99,7 +99,7 @@ my %insvLimit = (
|
|
99
99
|
The tags below are extracted from timed metadata in QuickTime and other
|
100
100
|
formats of video files when the ExtractEmbedded option is used. Although
|
101
101
|
most of these tags are combined into the single table below, ExifTool
|
102
|
-
currently reads
|
102
|
+
currently reads 59 different formats of timed GPS metadata from video files.
|
103
103
|
},
|
104
104
|
VARS => { NO_ID => 1 },
|
105
105
|
GPSLatitude => { PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")', RawConv => '$$self{FoundGPSLatitude} = 1; $val' },
|
@@ -1581,6 +1581,31 @@ sub ProcessFreeGPS($$$)
|
|
1581
1581
|
substr($time,7,6) = pack 'C*', map { $_ ^= 0x70 } unpack 'C*', substr($time,7,6);
|
1582
1582
|
# (other values are currently unknown)
|
1583
1583
|
|
1584
|
+
} elsif ($$dataPt =~ /^.{64}A([NS])([EW])\0/s) {
|
1585
|
+
|
1586
|
+
# Vantrue S1 dashcam
|
1587
|
+
# 0000: 00 00 80 00 66 72 65 65 47 50 53 20 78 00 00 00 [....freeGPS x...]
|
1588
|
+
# 0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [................]
|
1589
|
+
# 0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [................]
|
1590
|
+
# 0030: 68 6f 72 73 6f 6e 74 65 63 68 00 00 00 00 00 00 [horsontech......]
|
1591
|
+
# 0040: 41 4e 45 00 15 00 00 00 07 00 00 00 02 00 00 00 [ANE.............]
|
1592
|
+
# 0050: 03 00 00 00 35 00 00 00 05 00 00 00 4f 74 4c 44 [....5.......OtLD]
|
1593
|
+
# 0060: e2 77 a0 45 89 c1 98 42 71 bd ac 42 02 ab 0d 43 [.w.E...Bq..B...C]
|
1594
|
+
# 0070: 05 00 00 00 7f 00 00 00 07 01 00 00 00 00 00 00 [................]
|
1595
|
+
($latRef, $lonRef) = ($1, $2);
|
1596
|
+
($yr,$mon,$day,$hr,$min,$sec,@acc) = unpack('x68V6x20V3', $$dataPt);
|
1597
|
+
return 0 unless $mon>=1 and $mon<=12 and $day>=1 and $day<=31;
|
1598
|
+
$yr += 2000 if $yr < 2000;
|
1599
|
+
# (not sure about acc scaling)
|
1600
|
+
map { $_ = $_ - 4294967296 if $_ >= 0x80000000; $_ /= 1000 } @acc;
|
1601
|
+
SetByteOrder('II');
|
1602
|
+
$lon = GetFloat($dataPt, 0x5c);
|
1603
|
+
$lat = GetFloat($dataPt, 0x60);
|
1604
|
+
$spd = GetFloat($dataPt, 0x64) * $knotsToKph;
|
1605
|
+
$trk = GetFloat($dataPt, 0x68);
|
1606
|
+
$alt = GetFloat($dataPt, 0x6c);
|
1607
|
+
SetByteOrder('MM');
|
1608
|
+
|
1584
1609
|
} else {
|
1585
1610
|
|
1586
1611
|
# decode binary GPS format (Viofo A119S, ref 2)
|
@@ -34,7 +34,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
34
34
|
use Image::ExifTool::Exif;
|
35
35
|
use Image::ExifTool::Minolta;
|
36
36
|
|
37
|
-
$VERSION = '3.
|
37
|
+
$VERSION = '3.48';
|
38
38
|
|
39
39
|
sub ProcessSRF($$$);
|
40
40
|
sub ProcessSR2($$$);
|
@@ -198,6 +198,8 @@ sub PrintInvLensSpec($;$$);
|
|
198
198
|
49466 => 'Tamron 150-500mm F5-6.7 Di III VC VXD', #JR (Model A057)
|
199
199
|
49467 => 'Tamron 11-20mm F2.8 Di III-A RXD', #JR (Model B060)
|
200
200
|
49468 => 'Tamron 18-300mm F3.5-6.3 Di III-A VC VXD', #JR (Model B061)
|
201
|
+
49469 => 'Tamron 35-150mm F2-F2.8 Di III VXD', #JR (Model A058)
|
202
|
+
49470 => 'Tamron 28-75mm F2.8 Di III VXD G2', #JR (Model A063)
|
201
203
|
|
202
204
|
49473 => 'Tokina atx-m 85mm F1.8 FE or Viltrox lens', #JR
|
203
205
|
49473.1 => 'Viltrox 23mm F1.4 E', #JR
|
@@ -15,7 +15,7 @@ use vars qw($VERSION @ISA $makeMissing);
|
|
15
15
|
use Image::ExifTool qw(:Utils :Vars);
|
16
16
|
use Image::ExifTool::XMP;
|
17
17
|
|
18
|
-
$VERSION = '1.
|
18
|
+
$VERSION = '1.32';
|
19
19
|
@ISA = qw(Exporter);
|
20
20
|
|
21
21
|
# set this to a language code to generate Lang module with 'MISSING' entries
|
@@ -58,6 +58,12 @@ my %translateLang = (
|
|
58
58
|
my $numbersFirst = 1; # set to -1 to sort numbers last, or 2 to put negative numbers last
|
59
59
|
my $caseInsensitive; # used internally by sort routine
|
60
60
|
|
61
|
+
# write groups that don't represent real family 1 group names
|
62
|
+
my %fakeWriteGroup = (
|
63
|
+
Comment => 1, # (JPEG Comment)
|
64
|
+
colr => 1, # (Jpeg2000 'colr' box)
|
65
|
+
);
|
66
|
+
|
61
67
|
#------------------------------------------------------------------------------
|
62
68
|
# Utility to print tag information database as an XML list
|
63
69
|
# Inputs: 0) output file name (undef to send to console),
|
@@ -178,9 +184,8 @@ PTILoop: for ($index=0; $index<@infoArray; ++$index) {
|
|
178
184
|
}
|
179
185
|
my @groups = $et->GetGroup($tagInfo);
|
180
186
|
my $writeGroup = $$tagInfo{WriteGroup} || $$table{WRITE_GROUP};
|
181
|
-
|
182
|
-
|
183
|
-
}
|
187
|
+
# use common write group for group 1 (unless fake)
|
188
|
+
$groups[1] = $writeGroup if $writeGroup and not $fakeWriteGroup{$writeGroup};
|
184
189
|
# add group names if different from table defaults
|
185
190
|
my $grp = '';
|
186
191
|
for ($fam=0; $fam<3; ++$fam) {
|