exiftool_vendored 12.36.0 → 12.37.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 +11 -1
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +22 -12
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +6 -2
- data/bin/lib/Image/ExifTool/Canon.pm +142 -9
- data/bin/lib/Image/ExifTool/DarwinCore.pm +2 -2
- data/bin/lib/Image/ExifTool/GIF.pm +5 -1
- data/bin/lib/Image/ExifTool/GPS.pm +14 -10
- data/bin/lib/Image/ExifTool/Nikon.pm +425 -72
- data/bin/lib/Image/ExifTool/NikonSettings.pm +70 -62
- data/bin/lib/Image/ExifTool/PNG.pm +1 -0
- data/bin/lib/Image/ExifTool/QuickTime.pm +3 -2
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +26 -1
- data/bin/lib/Image/ExifTool/TagLookup.pm +6345 -6331
- data/bin/lib/Image/ExifTool/TagNames.pod +370 -258
- data/bin/lib/Image/ExifTool/WriteXMP.pl +10 -11
- data/bin/lib/Image/ExifTool/Writer.pl +5 -2
- data/bin/lib/Image/ExifTool/XMP.pm +18 -10
- data/bin/lib/Image/ExifTool.pm +5 -5
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -2
@@ -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,7 +549,7 @@ 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
555
|
0x00f => { Name => 'MovieWhiteBalanceSameAsPhoto', PrintConv => \%yesNo }, # (D6/Z7_2)
|
@@ -558,7 +565,7 @@ my %infoD6 = (
|
|
558
565
|
},{ # CSa1 (Z7_2)
|
559
566
|
Name => 'AF-CPrioritySel',
|
560
567
|
PrintConv => \%releaseFocus,
|
561
|
-
%
|
568
|
+
%infoZSeries,
|
562
569
|
}],
|
563
570
|
0x01e => { Name => 'AF-SPrioritySel', PrintConv => \%releaseFocus }, # CSa2 (D6), CSa2 (Z7_2)
|
564
571
|
0x020 => [{ # CSa4 (D6)
|
@@ -572,7 +579,7 @@ my %infoD6 = (
|
|
572
579
|
},{ # CSa4 (Z7_2)
|
573
580
|
Name => 'AFPointSel',
|
574
581
|
PrintConv => { 1 => 'Use All', 2 => 'Use Half' },
|
575
|
-
%
|
582
|
+
%infoZSeries,
|
576
583
|
}],
|
577
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)
|
578
585
|
0x023 => { Name => 'FocusPointWrap', PrintConv => { 1 => 'Wrap', 2 => 'No Wrap' } }, # CSa16 (D6), CSa8 (Z7_2)
|
@@ -609,7 +616,7 @@ my %infoD6 = (
|
|
609
616
|
},{ # CSb3 (Z7_2)
|
610
617
|
Name => 'CenterWeightedAreaSize',
|
611
618
|
PrintConv => { 1 => '12 mm', 2 => 'Average' },
|
612
|
-
%
|
619
|
+
%infoZSeries,
|
613
620
|
}],
|
614
621
|
0x02f => { # CSb7-a (D6), CSb4-a (Z7_2)
|
615
622
|
Name => 'FineTuneOptMatrixMetering',
|
@@ -673,7 +680,7 @@ my %infoD6 = (
|
|
673
680
|
7 => '30 min',
|
674
681
|
8 => 'No Limit',
|
675
682
|
},
|
676
|
-
%
|
683
|
+
%infoZSeries,
|
677
684
|
}],
|
678
685
|
0x035 => { # CSc3-a (D6), CSc2-a (Z7_2)
|
679
686
|
Name => 'SelfTimerTime',
|
@@ -762,7 +769,7 @@ my %infoD6 = (
|
|
762
769
|
6 => '1/80 s',
|
763
770
|
7 => '1/60 s',
|
764
771
|
},
|
765
|
-
%
|
772
|
+
%infoZSeries,
|
766
773
|
}],
|
767
774
|
0x048 => { # CSe2 (D6/Z7_2)
|
768
775
|
Name => 'FlashShutterSpeed',
|
@@ -836,7 +843,7 @@ my %infoD6 = (
|
|
836
843
|
25 => 'Non-CPU Lens',
|
837
844
|
26 => 'None',
|
838
845
|
},
|
839
|
-
%
|
846
|
+
%infoZSeries,
|
840
847
|
}],
|
841
848
|
0x053 => [{ # CSf4-a (D6)
|
842
849
|
Name => 'MultiSelectorShootMode',
|
@@ -856,7 +863,7 @@ my %infoD6 = (
|
|
856
863
|
4 => 'Zoom (High)',
|
857
864
|
5 => 'None',
|
858
865
|
},
|
859
|
-
%
|
866
|
+
%infoZSeries,
|
860
867
|
}],
|
861
868
|
0x054 => [{ # CSf4-c (D6)
|
862
869
|
Name => 'MultiSelectorPlaybackMode',
|
@@ -879,7 +886,7 @@ my %infoD6 = (
|
|
879
886
|
5 => 'Zoom (High)',
|
880
887
|
6 => 'Choose Folder',
|
881
888
|
},
|
882
|
-
%
|
889
|
+
%infoZSeries,
|
883
890
|
}],
|
884
891
|
0x056 => { # CSf4-b (D6)
|
885
892
|
Name => 'MultiSelectorLiveView',
|
@@ -967,7 +974,7 @@ my %infoD6 = (
|
|
967
974
|
1 => 'Manual (dark on light)',
|
968
975
|
2 => 'Manual (light on dark)',
|
969
976
|
},
|
970
|
-
%
|
977
|
+
%infoZSeries,
|
971
978
|
}],
|
972
979
|
0x074 => { Name => 'FlickAdvanceDirection', PrintConv => { 1 => 'Right to Left', 2 => 'Left to Right' } }, # CSf12-3 (D6)
|
973
980
|
0x075 => { # Settings menu # (D6,Z7_2)
|
@@ -976,7 +983,7 @@ my %infoD6 = (
|
|
976
983
|
1 => 'Auto',
|
977
984
|
2 => '2160p',
|
978
985
|
3 => '1080p',
|
979
|
-
4 => '1080i
|
986
|
+
4 => '1080i',
|
980
987
|
5 => '720p',
|
981
988
|
6 => '576p',
|
982
989
|
7 => '480p',
|
@@ -1022,7 +1029,7 @@ my %infoD6 = (
|
|
1022
1029
|
10 => 'None',
|
1023
1030
|
11 => 'LiveView Info Display On/Off',
|
1024
1031
|
},
|
1025
|
-
%
|
1032
|
+
%infoZSeries,
|
1026
1033
|
}],
|
1027
1034
|
0x08b => [{ # CSf6-a-1 and CSf6-a-2 (D6), CSf5-a-1 and CSf5-a-2 (Z7_2), (continued from above)
|
1028
1035
|
Name => 'CmdDialsReverseRotation',
|
@@ -1090,7 +1097,7 @@ my %infoD6 = (
|
|
1090
1097
|
1 => 'Focus Point',
|
1091
1098
|
2 => 'Off',
|
1092
1099
|
},
|
1093
|
-
%
|
1100
|
+
%infoZSeries,
|
1094
1101
|
}],
|
1095
1102
|
0x099 => { Name => 'DynamicAreaAFAssist',PrintConv => \%onOff }, # CSa17-c (D6), CSa9-b (Z7_2)
|
1096
1103
|
0x09a => { Name => 'ExposureCompStepSize', PrintConv => \%thirdHalfFull }, # CSb3 (D6)
|
@@ -1113,7 +1120,7 @@ my %infoD6 = (
|
|
1113
1120
|
},{ # CSf2-a (Z7_2)
|
1114
1121
|
Name => 'Func1Button',
|
1115
1122
|
PrintConv => \%funcButtonZ7m2,
|
1116
|
-
%
|
1123
|
+
%infoZSeries,
|
1117
1124
|
}],
|
1118
1125
|
0x0a2 => [{ # CSf3-c (D6)
|
1119
1126
|
Name => 'Func2Button',
|
@@ -1122,7 +1129,7 @@ my %infoD6 = (
|
|
1122
1129
|
},{ # CSf2-b (Z7_2)
|
1123
1130
|
Name => 'Func2Button',
|
1124
1131
|
PrintConv => \%funcButtonZ7m2,
|
1125
|
-
%
|
1132
|
+
%infoZSeries,
|
1126
1133
|
}],
|
1127
1134
|
0x0a3 => [{ # CSf3-f (D6)
|
1128
1135
|
Name => 'AF-OnButton',
|
@@ -1174,7 +1181,7 @@ my %infoD6 = (
|
|
1174
1181
|
11 => 'Zoom (High)',
|
1175
1182
|
12 => 'None'
|
1176
1183
|
},
|
1177
|
-
%
|
1184
|
+
%infoZSeries,
|
1178
1185
|
}],
|
1179
1186
|
0x0a4 => { Name => 'SubSelector', PrintConv => \%tagSubSelector }, # CSf3-g-1 # (D6), CSf2-d-1 # (Z7_2)
|
1180
1187
|
0x0a5 => [{ # CSf3-h (D6)
|
@@ -1247,7 +1254,7 @@ my %infoD6 = (
|
|
1247
1254
|
24 => 'Non-CPU Lens',
|
1248
1255
|
25 => 'None',
|
1249
1256
|
},
|
1250
|
-
%
|
1257
|
+
%infoZSeries,
|
1251
1258
|
}],
|
1252
1259
|
0x0a7 => [{ # CSf3-n (D6)
|
1253
1260
|
Name => 'LensFunc1Button',
|
@@ -1287,7 +1294,7 @@ my %infoD6 = (
|
|
1287
1294
|
},{ # CSf2-g (Z7_2)
|
1288
1295
|
Name => 'LensFunc1Button',
|
1289
1296
|
PrintConv => \%lensFuncButtonZ7m2,
|
1290
|
-
%
|
1297
|
+
%infoZSeries,
|
1291
1298
|
}],
|
1292
1299
|
0x0a8 => { Name => 'CmdDialsApertureSetting', PrintConv => { 1 => 'Sub-command Dial', 2 => 'Aperture Ring' } }, # CSf6-c (D6)
|
1293
1300
|
0x0a9 => { Name => 'MultiSelector', PrintConv => \%tagMultiSelector }, # CSf7 (D6)
|
@@ -1348,7 +1355,7 @@ my %infoD6 = (
|
|
1348
1355
|
23 => 'Rating (1)', # no mapping for 24 on the Z7_2. Possibly intended for Rating = 'Candidate for Deletion'?
|
1349
1356
|
25 => 'None',
|
1350
1357
|
},
|
1351
|
-
%
|
1358
|
+
%infoZSeries,
|
1352
1359
|
}],
|
1353
1360
|
0x0b3 => [{ # CSg2-b (D6)
|
1354
1361
|
Name => 'MovieFunc1Button',
|
@@ -1392,7 +1399,7 @@ my %infoD6 = (
|
|
1392
1399
|
23 => 'Rating (1)', # no mapping for 24 on the Z7_2. Possibly intended for Rating = 'Candidate for Deletion'?
|
1393
1400
|
25 => 'None',
|
1394
1401
|
},
|
1395
|
-
%
|
1402
|
+
%infoZSeries,
|
1396
1403
|
}],
|
1397
1404
|
0x0b5 => { # CSg2-c (D6)
|
1398
1405
|
Name => 'MovieFunc2Button',
|
@@ -1439,7 +1446,7 @@ my %infoD6 = (
|
|
1439
1446
|
12 => 'Image Area',
|
1440
1447
|
13 => 'None',
|
1441
1448
|
},
|
1442
|
-
%
|
1449
|
+
%infoZSeries,
|
1443
1450
|
}],
|
1444
1451
|
0x0b8 => { Name => 'LimitAFAreaModeSelD9', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa14-a (D6)
|
1445
1452
|
0x0b9 => { Name => 'LimitAFAreaModeSelD25', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa14-b (D6)
|
@@ -1568,6 +1575,7 @@ my %infoD6 = (
|
|
1568
1575
|
PrintConv => {
|
1569
1576
|
1 => '8 Bit',
|
1570
1577
|
2 => '10 Bit',
|
1578
|
+
#5 => 'Auto', #observed on the Z50 - needs confirmation
|
1571
1579
|
},
|
1572
1580
|
},
|
1573
1581
|
0x103 => { # (Z7_2)
|
@@ -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($$$);
|
@@ -6370,7 +6370,7 @@ my %eeBox2 = (
|
|
6370
6370
|
'player.movie.visual.tint' => 'Tint',
|
6371
6371
|
'player.movie.visual.contrast' => 'Contrast',
|
6372
6372
|
'player.movie.audio.gain' => 'AudioGain',
|
6373
|
-
'player.movie.audio.treble' => '
|
6373
|
+
'player.movie.audio.treble' => 'Treble',
|
6374
6374
|
'player.movie.audio.bass' => 'Bass',
|
6375
6375
|
'player.movie.audio.balance' => 'Balance',
|
6376
6376
|
'player.movie.audio.pitchshift' => 'PitchShift',
|
@@ -6465,6 +6465,7 @@ my %eeBox2 = (
|
|
6465
6465
|
%Image::ExifTool::QuickTime::iTunesInfo = (
|
6466
6466
|
PROCESS_PROC => \&ProcessMOV,
|
6467
6467
|
GROUPS => { 1 => 'iTunes', 2 => 'Audio' },
|
6468
|
+
VARS => { LONG_TAGS => 0 }, # (hack for discrepancy in the way long tags are counted in BuildTagLookup)
|
6468
6469
|
NOTES => q{
|
6469
6470
|
ExifTool will extract any iTunesInfo tags that exist, even if they are not
|
6470
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)
|