exiftool_vendored 12.36.0 → 12.37.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 +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)
|