exiftool_vendored 12.22.0 → 12.34.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 +201 -5
- data/bin/MANIFEST +22 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +45 -43
- data/bin/arg_files/xmp2exif.args +2 -1
- data/bin/config_files/acdsee.config +193 -6
- data/bin/config_files/convert_regions.config +25 -14
- data/bin/config_files/cuepointlist.config +70 -0
- data/bin/config_files/example.config +1 -1
- data/bin/exiftool +89 -70
- data/bin/fmt_files/gpx.fmt +1 -1
- data/bin/fmt_files/gpx_wpt.fmt +1 -1
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +17 -4
- data/bin/lib/Image/ExifTool/CBOR.pm +331 -0
- data/bin/lib/Image/ExifTool/Canon.pm +53 -21
- data/bin/lib/Image/ExifTool/Charset.pm +2 -0
- data/bin/lib/Image/ExifTool/DPX.pm +13 -2
- data/bin/lib/Image/ExifTool/DjVu.pm +6 -5
- data/bin/lib/Image/ExifTool/Exif.pm +120 -12
- data/bin/lib/Image/ExifTool/FlashPix.pm +35 -10
- data/bin/lib/Image/ExifTool/FujiFilm.pm +19 -8
- data/bin/lib/Image/ExifTool/Geotag.pm +13 -2
- data/bin/lib/Image/ExifTool/GoPro.pm +16 -1
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +96 -4
- data/bin/lib/Image/ExifTool/ID3.pm +15 -3
- data/bin/lib/Image/ExifTool/JPEG.pm +74 -4
- data/bin/lib/Image/ExifTool/JSON.pm +30 -5
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +395 -16
- data/bin/lib/Image/ExifTool/LIF.pm +153 -0
- data/bin/lib/Image/ExifTool/Lang/nl.pm +60 -59
- data/bin/lib/Image/ExifTool/M2TS.pm +103 -7
- data/bin/lib/Image/ExifTool/MIE.pm +2 -1
- data/bin/lib/Image/ExifTool/MRC.pm +341 -0
- data/bin/lib/Image/ExifTool/MWG.pm +3 -3
- data/bin/lib/Image/ExifTool/MXF.pm +1 -1
- data/bin/lib/Image/ExifTool/MacOS.pm +3 -3
- data/bin/lib/Image/ExifTool/Microsoft.pm +5 -3
- data/bin/lib/Image/ExifTool/Nikon.pm +17 -5
- data/bin/lib/Image/ExifTool/NikonSettings.pm +19 -2
- data/bin/lib/Image/ExifTool/Olympus.pm +9 -2
- data/bin/lib/Image/ExifTool/Other.pm +93 -0
- data/bin/lib/Image/ExifTool/PDF.pm +11 -12
- data/bin/lib/Image/ExifTool/PNG.pm +8 -7
- data/bin/lib/Image/ExifTool/Panasonic.pm +28 -3
- data/bin/lib/Image/ExifTool/Pentax.pm +28 -5
- data/bin/lib/Image/ExifTool/PhaseOne.pm +4 -3
- data/bin/lib/Image/ExifTool/Photoshop.pm +6 -0
- data/bin/lib/Image/ExifTool/QuickTime.pm +210 -65
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +280 -139
- data/bin/lib/Image/ExifTool/README +9 -2
- data/bin/lib/Image/ExifTool/RIFF.pm +89 -12
- data/bin/lib/Image/ExifTool/Samsung.pm +48 -10
- data/bin/lib/Image/ExifTool/Sony.pm +204 -61
- data/bin/lib/Image/ExifTool/TagLookup.pm +206 -19
- data/bin/lib/Image/ExifTool/TagNames.pod +634 -195
- data/bin/lib/Image/ExifTool/Torrent.pm +18 -11
- data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePDF.pl +1 -0
- data/bin/lib/Image/ExifTool/WritePNG.pl +2 -0
- data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -0
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +58 -16
- data/bin/lib/Image/ExifTool/WriteXMP.pl +7 -3
- data/bin/lib/Image/ExifTool/Writer.pl +44 -0
- data/bin/lib/Image/ExifTool/XMP.pm +51 -18
- data/bin/lib/Image/ExifTool/XMP2.pl +4 -1
- data/bin/lib/Image/ExifTool/XMPStruct.pl +3 -1
- data/bin/lib/Image/ExifTool/ZISRAW.pm +121 -2
- data/bin/lib/Image/ExifTool.pm +188 -61
- data/bin/lib/Image/ExifTool.pod +89 -68
- data/bin/perl-Image-ExifTool.spec +43 -42
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +10 -9
@@ -11,7 +11,7 @@ package Image::ExifTool::Lang::nl;
|
|
11
11
|
use strict;
|
12
12
|
use vars qw($VERSION);
|
13
13
|
|
14
|
-
$VERSION = '1.
|
14
|
+
$VERSION = '1.13';
|
15
15
|
|
16
16
|
%Image::ExifTool::Lang::nl::Translate = (
|
17
17
|
'AEBAutoCancel' => {
|
@@ -1502,97 +1502,98 @@ $VERSION = '1.12';
|
|
1502
1502
|
'GIFVersion' => 'GIF versie',
|
1503
1503
|
'GPSAltitude' => 'Hoogte',
|
1504
1504
|
'GPSAltitudeRef' => {
|
1505
|
-
Description => '
|
1505
|
+
Description => 'GPS hoogte - referentie',
|
1506
1506
|
PrintConv => {
|
1507
|
-
'Above Sea Level' => '
|
1508
|
-
'Below Sea Level' => '
|
1507
|
+
'Above Sea Level' => 'Boven zeeniveau',
|
1508
|
+
'Below Sea Level' => 'Onder zeeniveau',
|
1509
1509
|
},
|
1510
1510
|
},
|
1511
|
-
'GPSAreaInformation' => '
|
1512
|
-
'GPSDOP' => '
|
1513
|
-
'GPSDateStamp' => 'GPS datum',
|
1514
|
-
'GPSDateTime' => 'GPS tijd
|
1515
|
-
'GPSDestBearing' => '
|
1511
|
+
'GPSAreaInformation' => 'GPS naam van het gebied',
|
1512
|
+
'GPSDOP' => 'GPS meetnauwkeurigheid',
|
1513
|
+
'GPSDateStamp' => 'GPS UTC datum',
|
1514
|
+
'GPSDateTime' => 'GPS UTC datum en tijd',
|
1515
|
+
'GPSDestBearing' => 'GPS peiling van bestemming',
|
1516
1516
|
'GPSDestBearingRef' => {
|
1517
|
-
Description => '
|
1517
|
+
Description => 'GPS peiling van bestemming - referentie',
|
1518
1518
|
PrintConv => {
|
1519
|
-
'Magnetic North' => 'Magnetische
|
1520
|
-
'True North' => 'Geografische
|
1519
|
+
'Magnetic North' => 'Magnetische noorden',
|
1520
|
+
'True North' => 'Geografische noorden',
|
1521
1521
|
},
|
1522
1522
|
},
|
1523
|
-
'GPSDestDistance' => '
|
1523
|
+
'GPSDestDistance' => 'GPS afstand tot bestemming',
|
1524
1524
|
'GPSDestDistanceRef' => {
|
1525
|
-
Description => '
|
1525
|
+
Description => 'GPS afstand tot bestemming - referentie',
|
1526
1526
|
PrintConv => {
|
1527
|
-
'Miles' => '
|
1528
|
-
'Nautical Miles' => '
|
1527
|
+
'Miles' => 'Engelse mijlen',
|
1528
|
+
'Nautical Miles' => 'Zeemijlen',
|
1529
1529
|
},
|
1530
1530
|
},
|
1531
|
-
'GPSDestLatitude' => '
|
1531
|
+
'GPSDestLatitude' => 'GPS breedtegraad van bestemming',
|
1532
1532
|
'GPSDestLatitudeRef' => {
|
1533
|
-
Description => '
|
1533
|
+
Description => 'GPS breedtegraad van bestemming - referentie',
|
1534
1534
|
PrintConv => {
|
1535
|
-
'North' => '
|
1536
|
-
'South' => '
|
1535
|
+
'North' => 'Noorderbreedte',
|
1536
|
+
'South' => 'Zuiderbreedte',
|
1537
1537
|
},
|
1538
1538
|
},
|
1539
|
-
'GPSDestLongitude' => '
|
1539
|
+
'GPSDestLongitude' => 'GPS lengtegraad van bestemming',
|
1540
1540
|
'GPSDestLongitudeRef' => {
|
1541
|
-
Description => '
|
1541
|
+
Description => 'GPS lengtegraad van bestemming - referentie',
|
1542
1542
|
PrintConv => {
|
1543
|
-
'East' => '
|
1544
|
-
'West' => '
|
1543
|
+
'East' => 'Oosterlengte',
|
1544
|
+
'West' => 'Westerlengte',
|
1545
1545
|
},
|
1546
1546
|
},
|
1547
1547
|
'GPSDifferential' => {
|
1548
1548
|
Description => 'GPS differentiaal correctie',
|
1549
1549
|
PrintConv => {
|
1550
|
-
'Differential Corrected' => '
|
1551
|
-
'No Correction' => '
|
1550
|
+
'Differential Corrected' => 'Met differentiaal correctie',
|
1551
|
+
'No Correction' => 'Zonder differentiaal correctie',
|
1552
1552
|
},
|
1553
1553
|
},
|
1554
|
-
'GPSImgDirection' => '
|
1554
|
+
'GPSImgDirection' => 'GPS peiling van de afbeelding',
|
1555
1555
|
'GPSImgDirectionRef' => {
|
1556
|
-
Description => '
|
1556
|
+
Description => 'GPS peiling van de afbeelding - referentie',
|
1557
1557
|
PrintConv => {
|
1558
|
-
'Magnetic North' => 'Magnetische
|
1559
|
-
'True North' => 'Geografische
|
1558
|
+
'Magnetic North' => 'Magnetische noorden',
|
1559
|
+
'True North' => 'Geografische noorden',
|
1560
1560
|
},
|
1561
1561
|
},
|
1562
|
-
'GPSInfo' => 'GPS Info
|
1563
|
-
'GPSLatitude' => '
|
1562
|
+
'GPSInfo' => 'GPS Info',
|
1563
|
+
'GPSLatitude' => 'GPS breedtegraad',
|
1564
1564
|
'GPSLatitudeRef' => {
|
1565
|
-
Description => '
|
1565
|
+
Description => 'GPS breedtegraad - referentie',
|
1566
1566
|
PrintConv => {
|
1567
|
-
'North' => '
|
1568
|
-
'South' => '
|
1567
|
+
'North' => 'Noorderbreedte',
|
1568
|
+
'South' => 'Zuiderbreedte',
|
1569
1569
|
},
|
1570
1570
|
},
|
1571
|
-
'GPSLongitude' => '
|
1571
|
+
'GPSLongitude' => 'GPS lengtegraad',
|
1572
1572
|
'GPSLongitudeRef' => {
|
1573
|
-
Description => '
|
1573
|
+
Description => 'GPS lengtegraad - referentie',
|
1574
1574
|
PrintConv => {
|
1575
|
-
'East' => '
|
1576
|
-
'West' => '
|
1575
|
+
'East' => 'Oosterlengte',
|
1576
|
+
'West' => 'Westerlengte',
|
1577
1577
|
},
|
1578
1578
|
},
|
1579
|
-
'GPSMapDatum' => '
|
1579
|
+
'GPSMapDatum' => 'GPS geodetisch datum',
|
1580
1580
|
'GPSMeasureMode' => {
|
1581
|
-
Description => 'GPS
|
1581
|
+
Description => 'GPS meetmethode',
|
1582
1582
|
PrintConv => {
|
1583
|
-
'2-D' => '
|
1584
|
-
'2-Dimensional' => '
|
1585
|
-
'2-Dimensional Measurement' => '
|
1586
|
-
'3-D' => '
|
1587
|
-
'3-Dimensional' => '
|
1588
|
-
'3-Dimensional Measurement' => '
|
1583
|
+
'2-D' => 'Tweedimensionale meting',
|
1584
|
+
'2-Dimensional' => 'Tweedimensionale meting',
|
1585
|
+
'2-Dimensional Measurement' => 'Tweedimensionale meting',
|
1586
|
+
'3-D' => 'Driedimensionale meting',
|
1587
|
+
'3-Dimensional' => 'Driedimensionale meting',
|
1588
|
+
'3-Dimensional Measurement' => 'Driedimensionale meting',
|
1589
1589
|
},
|
1590
1590
|
},
|
1591
|
-
'
|
1592
|
-
'
|
1593
|
-
'
|
1591
|
+
'GPSPosition' => 'GPS positie',
|
1592
|
+
'GPSProcessingMethod' => 'GPS verwerkingsmethode',
|
1593
|
+
'GPSSatellites' => 'GPS satellieten gebruikt voor de meting',
|
1594
|
+
'GPSSpeed' => 'GPS ontvanger bewegingssnelheid',
|
1594
1595
|
'GPSSpeedRef' => {
|
1595
|
-
Description => '
|
1596
|
+
Description => 'GPS ontvanger bewegingssnelheid - referentie',
|
1596
1597
|
PrintConv => {
|
1597
1598
|
'km/h' => 'Kilometer per uur',
|
1598
1599
|
'knots' => 'Knopen',
|
@@ -1602,20 +1603,20 @@ $VERSION = '1.12';
|
|
1602
1603
|
'GPSStatus' => {
|
1603
1604
|
Description => 'GPS ontvanger status',
|
1604
1605
|
PrintConv => {
|
1605
|
-
'Measurement Active' => '
|
1606
|
-
'Measurement Void' => '
|
1606
|
+
'Measurement Active' => 'Actuele meting beschikbaar',
|
1607
|
+
'Measurement Void' => 'Actuele meting niet beschikbaar',
|
1607
1608
|
},
|
1608
1609
|
},
|
1609
|
-
'GPSTimeStamp' => 'GPS tijd
|
1610
|
-
'GPSTrack' => '
|
1610
|
+
'GPSTimeStamp' => 'GPS UTC tijd',
|
1611
|
+
'GPSTrack' => 'GPS ontvanger bewegingsrichting',
|
1611
1612
|
'GPSTrackRef' => {
|
1612
|
-
Description => '
|
1613
|
+
Description => 'GPS ontvanger bewegingsrichting - referentie',
|
1613
1614
|
PrintConv => {
|
1614
|
-
'Magnetic North' => 'Magnetische
|
1615
|
-
'True North' => '
|
1615
|
+
'Magnetic North' => 'Magnetische noorden',
|
1616
|
+
'True North' => 'Geografische noorden',
|
1616
1617
|
},
|
1617
1618
|
},
|
1618
|
-
'GPSVersionID' => 'GPS
|
1619
|
+
'GPSVersionID' => 'GPS versie ID',
|
1619
1620
|
'GainControl' => {
|
1620
1621
|
Description => 'Belichtingsversterking',
|
1621
1622
|
PrintConv => {
|
@@ -31,7 +31,7 @@ use strict;
|
|
31
31
|
use vars qw($VERSION);
|
32
32
|
use Image::ExifTool qw(:DataAccess :Utils);
|
33
33
|
|
34
|
-
$VERSION = '1.
|
34
|
+
$VERSION = '1.21';
|
35
35
|
|
36
36
|
# program map table "stream_type" lookup (ref 6/1)
|
37
37
|
my %streamType = (
|
@@ -113,6 +113,8 @@ my %noSyntax = (
|
|
113
113
|
0xff => 1, # program_stream_directory
|
114
114
|
);
|
115
115
|
|
116
|
+
my $knotsToKph = 1.852; # knots --> km/h
|
117
|
+
|
116
118
|
# information extracted from the MPEG-2 transport stream
|
117
119
|
%Image::ExifTool::M2TS::Main = (
|
118
120
|
GROUPS => { 2 => 'Video' },
|
@@ -327,7 +329,90 @@ sub ParsePID($$$$$)
|
|
327
329
|
my $tbl = GetTagTable('Image::ExifTool::QuickTime::Stream');
|
328
330
|
Image::ExifTool::QuickTime::ProcessFreeGPS($et, { DataPt => \$dat }, $tbl);
|
329
331
|
$more = 1;
|
332
|
+
} elsif ($$dataPt =~ /^A([NS])([EW])\0/s) {
|
333
|
+
# INNOVV TS video (same format is INNOVV MP4)
|
334
|
+
SetByteOrder('II');
|
335
|
+
my $tagTbl = GetTagTable('Image::ExifTool::QuickTime::Stream');
|
336
|
+
while ($$dataPt =~ /(A[NS][EW]\0.{28})/g) {
|
337
|
+
my $dat = $1;
|
338
|
+
my $lat = abs(GetFloat(\$dat, 4)); # (abs just to be safe)
|
339
|
+
my $lon = abs(GetFloat(\$dat, 8)); # (abs just to be safe)
|
340
|
+
my $spd = GetFloat(\$dat, 12) * $knotsToKph;
|
341
|
+
my $trk = GetFloat(\$dat, 16);
|
342
|
+
my @acc = unpack('x20V3', $dat);
|
343
|
+
map { $_ = $_ - 4294967296 if $_ >= 0x80000000 } @acc;
|
344
|
+
Image::ExifTool::QuickTime::ConvertLatLon($lat, $lon);
|
345
|
+
$$et{DOC_NUM} = ++$$et{DOC_COUNT};
|
346
|
+
$et->HandleTag($tagTbl, GPSLatitude => abs($lat) * (substr($dat,1,1) eq 'S' ? -1 : 1));
|
347
|
+
$et->HandleTag($tagTbl, GPSLongitude => abs($lon) * (substr($dat,2,1) eq 'W' ? -1 : 1));
|
348
|
+
$et->HandleTag($tagTbl, GPSSpeed => $spd);
|
349
|
+
$et->HandleTag($tagTbl, GPSSpeedRef => 'K');
|
350
|
+
$et->HandleTag($tagTbl, GPSTrack => $trk);
|
351
|
+
$et->HandleTag($tagTbl, GPSTrackRef => 'T');
|
352
|
+
$et->HandleTag($tagTbl, Accelerometer => "@acc");
|
353
|
+
}
|
354
|
+
SetByteOrder('MM');
|
355
|
+
$more = 1;
|
356
|
+
} elsif ($$dataPt =~ /^\$(GPSINFO|GSNRINFO),/) {
|
357
|
+
# $GPSINFO,0x0004,2021.08.09 13:27:36,2341.54561,12031.70135,8.0,51,153,0,0,\x0d
|
358
|
+
# $GSNRINFO,0.01,0.04,0.25\0
|
359
|
+
$$dataPt =~ tr/\x0d/\x0a/;
|
360
|
+
$$dataPt =~ tr/\0//d;
|
361
|
+
my $tagTbl = GetTagTable('Image::ExifTool::QuickTime::Stream');
|
362
|
+
my @lines = split /\x0a/, $$dataPt;
|
363
|
+
my ($line, $lastTime);
|
364
|
+
foreach $line (@lines) {
|
365
|
+
if ($line =~ /^\$GPSINFO/) {
|
366
|
+
my @a = split /,/, $lines[0];
|
367
|
+
next unless @a > 7;
|
368
|
+
# ignore duplicate fixes
|
369
|
+
next if $lastTime and $a[2] eq $lastTime;
|
370
|
+
$lastTime = $a[2];
|
371
|
+
$$et{DOC_NUM} = ++$$et{DOC_COUNT};
|
372
|
+
$a[2] =~ tr/./:/;
|
373
|
+
# (untested, and probably doesn't work for S/W hemispheres)
|
374
|
+
my ($lat, $lon) = @a[3,4];
|
375
|
+
Image::ExifTool::QuickTime::ConvertLatLon($lat, $lon);
|
376
|
+
# $a[0] - flags? values: '0x0001','0x0004','0x0008','0x0010'
|
377
|
+
$et->HandleTag($tagTbl, GPSDateTime => $a[2]);
|
378
|
+
$et->HandleTag($tagTbl, GPSLatitude => $lat);
|
379
|
+
$et->HandleTag($tagTbl, GPSLongitude => $lon);
|
380
|
+
$et->HandleTag($tagTbl, GPSSpeed => $a[5]);
|
381
|
+
$et->HandleTag($tagTbl, GPSSpeedRef => 'K');
|
382
|
+
# $a[6] - values: 48-60
|
383
|
+
$et->HandleTag($tagTbl, GPSTrack => $a[7]);
|
384
|
+
$et->HandleTag($tagTbl, GPSTrackRef => 'T');
|
385
|
+
# #a[8,9] - always 0
|
386
|
+
} elsif ($line =~ /^\$GSNRINFO/) {
|
387
|
+
my @a = split /,/, $line;
|
388
|
+
shift @a;
|
389
|
+
$et->HandleTag($tagTbl, Accelerometer => "@a");
|
390
|
+
}
|
391
|
+
}
|
392
|
+
$more = 1;
|
393
|
+
} elsif ($$dataPt =~ /^.{44}A\0{3}.{4}([NS])\0{3}.{4}([EW])\0{3}/s and length($$dataPt) >= 84) {
|
394
|
+
#forum11320
|
395
|
+
SetByteOrder('II');
|
396
|
+
my $tagTbl = GetTagTable('Image::ExifTool::QuickTime::Stream');
|
397
|
+
my $lat = abs(GetFloat($dataPt, 48)); # (abs just to be safe)
|
398
|
+
my $lon = abs(GetFloat($dataPt, 56)); # (abs just to be safe)
|
399
|
+
my $spd = GetFloat($dataPt, 64);
|
400
|
+
my $trk = GetFloat($dataPt, 68);
|
401
|
+
$et->WarnOnce('GPSLatitude/Longitude encryption is not yet known, so these will be wrong');
|
402
|
+
$$et{DOC_NUM} = ++$$et{DOC_COUNT};
|
403
|
+
my @date = unpack('x32V3x28V3', $$dataPt);
|
404
|
+
$date[3] += 2000;
|
405
|
+
$et->HandleTag($tagTbl, GPSDateTime => sprintf('%.4d:%.2d:%.2d %.2d:%.2d:%.2d', @date[3..5,0..2]));
|
406
|
+
$et->HandleTag($tagTbl, GPSLatitude => abs($lat) * ($1 eq 'S' ? -1 : 1));
|
407
|
+
$et->HandleTag($tagTbl, GPSLongitude => abs($lon) * ($2 eq 'W' ? -1 : 1));
|
408
|
+
$et->HandleTag($tagTbl, GPSSpeed => $spd);
|
409
|
+
$et->HandleTag($tagTbl, GPSSpeedRef => 'K');
|
410
|
+
$et->HandleTag($tagTbl, GPSTrack => $trk);
|
411
|
+
$et->HandleTag($tagTbl, GPSTrackRef => 'T');
|
412
|
+
SetByteOrder('MM');
|
413
|
+
$more = 1;
|
330
414
|
}
|
415
|
+
delete $$et{DOC_NUM};
|
331
416
|
}
|
332
417
|
return $more;
|
333
418
|
}
|
@@ -379,14 +464,21 @@ sub ProcessM2TS($$)
|
|
379
464
|
);
|
380
465
|
my %didPID = ( 1 => 0, 2 => 0, 0x1fff => 0 );
|
381
466
|
my %needPID = ( 0 => 1 ); # lookup for stream PID's that we still need to parse
|
467
|
+
# PID's that may contain GPS info
|
468
|
+
my %gpsPID = (
|
469
|
+
0x0300 => 1, # Novatek INNOVV
|
470
|
+
0x01e4 => 1, # vsys a6l dashcam
|
471
|
+
);
|
382
472
|
my $pEnd = 0;
|
383
473
|
|
384
|
-
# scan entire file for GPS
|
385
|
-
# (some dashcams write
|
474
|
+
# scan entire file for GPS programs if ExtractEmbedded option is 3 or higher
|
475
|
+
# (some dashcams write these programs but don't include it in the PMT)
|
386
476
|
if (($et->Options('ExtractEmbedded') || 0) > 2) {
|
387
|
-
|
388
|
-
|
389
|
-
|
477
|
+
foreach (keys %gpsPID) {
|
478
|
+
$needPID{$_} = 1;
|
479
|
+
$pidType{$_} = -1;
|
480
|
+
$pidName{$_} ='unregistered dashcam GPS';
|
481
|
+
}
|
390
482
|
}
|
391
483
|
|
392
484
|
# parse packets from MPEG-2 Transport Stream
|
@@ -675,7 +767,11 @@ sub ProcessM2TS($$)
|
|
675
767
|
}
|
676
768
|
$data{$pid} = substr($buff, $pos, $pEnd-$pos);
|
677
769
|
} else {
|
678
|
-
|
770
|
+
unless (defined $data{$pid}) {
|
771
|
+
# (vsys a6l dashcam GPS record doesn't have a start indicator)
|
772
|
+
next unless $gpsPID{$pid};
|
773
|
+
$data{$pid} = '';
|
774
|
+
}
|
679
775
|
# accumulate data for each elementary stream
|
680
776
|
$data{$pid} .= substr($buff, $pos, $pEnd-$pos);
|
681
777
|
}
|
@@ -14,7 +14,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
14
14
|
use Image::ExifTool::Exif;
|
15
15
|
use Image::ExifTool::GPS;
|
16
16
|
|
17
|
-
$VERSION = '1.
|
17
|
+
$VERSION = '1.49';
|
18
18
|
|
19
19
|
sub ProcessMIE($$);
|
20
20
|
sub ProcessMIEGroup($$$);
|
@@ -1023,6 +1023,7 @@ sub WriteMIEGroup($$$)
|
|
1023
1023
|
# we are writing the new tag now
|
1024
1024
|
my ($newVal, $writable, $oldVal, $newFormat, $compress);
|
1025
1025
|
my $newTag = shift @editTags;
|
1026
|
+
length($newTag) > 255 and $et->Warn('Tag name too long'), next; # (just to be safe)
|
1026
1027
|
my $newInfo = $$editDirs{$newTag};
|
1027
1028
|
if ($newInfo) {
|
1028
1029
|
# create the new subdirectory or rewrite existing non-MIE directory
|