exiftool_vendored 13.25.0 → 13.27.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.
@@ -30,7 +30,7 @@ use strict;
30
30
  use vars qw($VERSION $AUTOLOAD);
31
31
  use Image::ExifTool qw(:DataAccess :Utils);
32
32
 
33
- $VERSION = '1.70';
33
+ $VERSION = '1.71';
34
34
 
35
35
  sub ConvertTimecode($);
36
36
  sub ProcessSGLT($$$);
@@ -547,6 +547,10 @@ my %code2charset = (
547
547
  Name => 'ID3',
548
548
  SubDirectory => { TagTable => 'Image::ExifTool::ID3::Main' },
549
549
  },
550
+ 'ID3 ' => { # (NC)
551
+ Name => 'ID3-2',
552
+ SubDirectory => { TagTable => 'Image::ExifTool::ID3::Main' },
553
+ },
550
554
  #
551
555
  # WebP-specific tags
552
556
  #
@@ -668,6 +672,9 @@ my %code2charset = (
668
672
  Name => 'SEAL',
669
673
  SubDirectory => { TagTable => 'Image::ExifTool::XMP::SEAL' },
670
674
  },
675
+ # LGWV - written by Logic Pro
676
+ # minf, elm1, regn, umid, DGDA - written by Pro Tools
677
+ # MXrt, muma, chrp - written by Sequoia Pro
671
678
  );
672
679
 
673
680
  # the maker notes used by some digital cameras
@@ -1554,9 +1561,9 @@ my %code2charset = (
1554
1561
  Name => 'Duration',
1555
1562
  Require => {
1556
1563
  0 => 'RIFF:AvgBytesPerSec',
1557
- 1 => 'FileSize',
1558
1564
  },
1559
1565
  Desire => {
1566
+ 1 => 'FileSize', # (only used if 'data' length isn't available)
1560
1567
  # check FrameCount because this calculation only applies
1561
1568
  # to audio-only files (eg. WAV)
1562
1569
  2 => 'FrameCount',
@@ -1564,8 +1571,9 @@ my %code2charset = (
1564
1571
  },
1565
1572
  # (can't calculate duration like this for compressed audio types)
1566
1573
  RawConv => q{
1567
- return undef if $$self{FileType} =~ /^(LA|OFR|PAC|WV)$/;
1568
- return(($val[0] and not ($val[2] or $val[3])) ? $val[1] / $val[0] : undef);
1574
+ return undef if $$self{FileType} =~ /^(LA|OFR|PAC|WV)$/ or $val[2] or $val[3];
1575
+ return undef unless $val[0] and ($$self{RIFFDataLen} or $val[1]);
1576
+ return(($$self{RIFFDataLen} || $val[1]) / $val[0]);
1569
1577
  },
1570
1578
  PrintConv => 'ConvertDuration($val)',
1571
1579
  },
@@ -2098,8 +2106,9 @@ sub ProcessRIFF($$)
2098
2106
  $pos += 4;
2099
2107
  $tag .= "_$buff";
2100
2108
  $len -= 4; # already read 4 bytes (the LIST type)
2101
- } elsif ($tag eq 'data' and $len == 0xffffffff and $$et{DataSize64}) {
2102
- $len = $$et{DataSize64};
2109
+ } elsif ($tag eq 'data') {
2110
+ $len = $$et{DataSize64} if $len == 0xffffffff and $$et{DataSize64};
2111
+ $$et{RIFFDataLen} = ($$et{RIFFDataLen} || 0) + $len;
2103
2112
  }
2104
2113
  $et->VPrint(0, "RIFF '${tag}' chunk ($len bytes of data):\n");
2105
2114
  if ($len <= 0) {
@@ -785,7 +785,7 @@ my %tagLookup = (
785
785
  'afpointmode' => { 374 => 0x3 },
786
786
  'afpointposition' => { 119 => 0x2021, 358 => 0x4d },
787
787
  'afpointregistration' => { 88 => 0x7 },
788
- 'afpoints' => { 190 => 0x10 },
788
+ 'afpoints' => { 190 => 0x10, 369 => 0x12a },
789
789
  'afpointsel' => { 329 => 0xb, 330 => 0xb, 331 => 0xb, 332 => 0xb },
790
790
  'afpointselected' => { 191 => 0xd, 334 => 0x305, 394 => 0xe, 445 => 0x15, 446 => 0x14, 447 => [0x14,0x1c], 462 => 0x201e },
791
791
  'afpointselected2' => { 374 => 0x4 },
@@ -797,10 +797,12 @@ my %tagLookup = (
797
797
  'afpointspotmetering' => { 89 => 0xd },
798
798
  'afpointsselected' => { 200 => 0x1c, 201 => 0x1c, 370 => '4.1', 497 => 0x4 },
799
799
  'afpointsspecial' => { 370 => '4.2' },
800
+ 'afpointsunknown' => { 369 => 0x18f },
800
801
  'afpointsunknown1' => { 369 => 0x0 },
801
802
  'afpointsunknown2' => { 369 => 0x2 },
802
803
  'afpointsused' => { 200 => 0x8, 201 => [0x1c,0x8], 202 => 0x8, 203 => 0xa, 204 => 0xa, 441 => [0x10,0x16e] },
803
804
  'afpointswitching' => { 2 => 0x4 },
805
+ 'afpointvalues' => { 369 => 0x14 },
804
806
  'afpredictor' => { 369 => 0x4 },
805
807
  'afresponse' => { 246 => 0xad },
806
808
  'afresult' => { 339 => 0x1038 },
@@ -6466,7 +6468,7 @@ my %tagLookup = (
6466
6468
  'sensorserialnumber' => { 145 => 0x9ce },
6467
6469
  'sensorshield' => { 253 => 0x76b, 254 => 0x77b, 255 => 0x66d, 256 => 0x69d, 257 => 0x705 },
6468
6470
  'sensorsize' => { 163 => 'SensorSize', 394 => 0x35 },
6469
- 'sensortemperature' => { 337 => 0x1500, 339 => 0x1007, 399 => 0xc, 403 => 0x210, 438 => [0x39,0x55] },
6471
+ 'sensortemperature' => { 337 => 0x1500, 339 => 0x1007, 399 => [0xc,0x2a], 403 => 0x210, 438 => [0x39,0x55] },
6470
6472
  'sensortemperature2' => { 399 => 0xe, 403 => 0x211 },
6471
6473
  'sensortopborder' => { 145 => 0x3ec },
6472
6474
  'sensortopmargin' => { 403 => 0x10b },
@@ -7042,6 +7044,7 @@ my %tagLookup = (
7042
7044
  'track' => { 412 => "\xa9trk", 420 => "\xa9trk" },
7043
7045
  'trackcreatedate' => { 419 => 0x1 },
7044
7046
  'trackmodifydate' => { 419 => 0x2 },
7047
+ 'trackname' => { 420 => 'tnam' },
7045
7048
  'tracknumber' => { 412 => 'trkn', 557 => 'trackNumber' },
7046
7049
  'tracks' => { 557 => 'Tracks' },
7047
7050
  'tracksframerate' => { 557 => [\'Tracks','TracksFrameRate'] },
@@ -7818,6 +7821,7 @@ my %tagExists = (
7818
7821
  'alternateduotonecolors' => 1,
7819
7822
  'alternateellipsoidheight' => 1,
7820
7823
  'alternateellipsoidheightextended' => 1,
7824
+ 'alternateformattrack' => 1,
7821
7825
  'alternateheading' => 1,
7822
7826
  'alternatelatitude' => 1,
7823
7827
  'alternatelongitude' => 1,
@@ -8573,6 +8577,7 @@ my %tagExists = (
8573
8577
  'cloneobject' => 1,
8574
8578
  'clonetype' => 1,
8575
8579
  'closedcaptioning' => 1,
8580
+ 'closedcaptiontrack' => 1,
8576
8581
  'cmddialsaperturesetting' => 1,
8577
8582
  'cmddialschangemainsub' => 1,
8578
8583
  'cmddialschangemainsubexposure' => 1,
@@ -9388,6 +9393,7 @@ my %tagExists = (
9388
9393
  'extendedcontentdescr' => 1,
9389
9394
  'extendedcontentencryption' => 1,
9390
9395
  'extendedinfo' => 1,
9396
+ 'extendedlanguagetag' => 1,
9391
9397
  'extendedstreamprops' => 1,
9392
9398
  'extendedtracktitle' => 1,
9393
9399
  'extendedxmp' => 1,
@@ -9632,6 +9638,7 @@ my %tagExists = (
9632
9638
  'fontweight' => 1,
9633
9639
  'footerposition' => 1,
9634
9640
  'footnotes' => 1,
9641
+ 'forcedsubtitletrack' => 1,
9635
9642
  'form' => 1,
9636
9643
  'formatsdcard' => 1,
9637
9644
  'formattag' => 1,
@@ -10022,6 +10029,7 @@ my %tagExists = (
10022
10029
  'ics' => 1,
10023
10030
  'id' => 1,
10024
10031
  'id3' => 1,
10032
+ 'id3-2' => 1,
10025
10033
  'id3size' => 1,
10026
10034
  'id3v1' => 1,
10027
10035
  'id3v1_enh' => 1,
@@ -11116,6 +11124,7 @@ my %tagExists = (
11116
11124
  'nominalplaytime' => 1,
11117
11125
  'nominalvideobitrate' => 1,
11118
11126
  'nomssmarttags' => 1,
11127
+ 'non-primarysourcetrack' => 1,
11119
11128
  'normallinetransfertiming' => 1,
11120
11129
  'noseslimming' => 1,
11121
11130
  'note' => 1,
@@ -12034,6 +12043,7 @@ my %tagExists = (
12034
12043
  'rotationxyz' => 1,
12035
12044
  'rotmode' => 1,
12036
12045
  'roundtripversion' => 1,
12046
+ 'rovegps' => 1,
12037
12047
  'rowcount' => 1,
12038
12048
  'rowinterleavefactor' => 1,
12039
12049
  'rsrc' => 1,
@@ -12561,6 +12571,7 @@ my %tagExists = (
12561
12571
  'subsystemversion' => 1,
12562
12572
  'subtileblocksize' => 1,
12563
12573
  'subtitledescription' => 1,
12574
+ 'subtitletrack' => 1,
12564
12575
  'suffix' => 1,
12565
12576
  'suggestedpalette' => 1,
12566
12577
  'summary' => 1,
@@ -12591,6 +12602,7 @@ my %tagExists = (
12591
12602
  'synchronizedlyricstext' => 1,
12592
12603
  'synchronizedlyricstype' => 1,
12593
12604
  'synconly' => 1,
12605
+ 'syncronizedtrack' => 1,
12594
12606
  'syncsampletable' => 1,
12595
12607
  'syncstate' => 1,
12596
12608
  'synlyrics' => 1,
@@ -12761,6 +12773,7 @@ my %tagExists = (
12761
12773
  'timecode' => 1,
12762
12774
  'timecodeindex' => 1,
12763
12775
  'timecodeindexparms' => 1,
12776
+ 'timecodetrack' => 1,
12764
12777
  'timeinfo' => 1,
12765
12778
  'timelapse' => 1,
12766
12779
  'timelineinfo' => 1,
@@ -12859,6 +12872,7 @@ my %tagExists = (
12859
12872
  'trackvolume' => 1,
12860
12873
  'trademark' => 1,
12861
12874
  'transactionid' => 1,
12875
+ 'transcripttrack' => 1,
12862
12876
  'transfercharacteristic' => 1,
12863
12877
  'transfercharacteristics' => 1,
12864
12878
  'transferrange' => 1,
@@ -12,7 +12,7 @@ meta information extracted from or written to a file.
12
12
  =head1 TAG TABLES
13
13
 
14
14
  The tables listed below give the names of all tags recognized by ExifTool.
15
- They contain a total of 28422 tags, with 17656 unique tag names.
15
+ They contain a total of 28440 tags, with 17667 unique tag names.
16
16
 
17
17
  B<Tag ID>, B<Index#> or B<Sequence> is given in the first column of each
18
18
  table. A B<Tag ID> is the computer-readable equivalent of a tag name, and
@@ -6366,7 +6366,9 @@ These tags belong to the ExifTool XMP-xmpBJ family 1 group.
6366
6366
 
6367
6367
  =head3 XMP xmpDM Tags
6368
6368
 
6369
- XMP Dynamic Media namespace tags.
6369
+ XMP Dynamic Media namespace tags. See
6370
+ L<https://developer.adobe.com/xmp/docs/XMPNamespaces/xmpDM/> for the
6371
+ specification.
6370
6372
 
6371
6373
  These tags belong to the ExifTool XMP-xmpDM family 1 group.
6372
6374
 
@@ -20664,6 +20666,9 @@ Flash information tags for the K10D, K20D and K200D.
20664
20666
  6 AFDefocus int8u
20665
20667
  7 AFIntegrationTime int8u
20666
20668
  11 AFPointsInFocus int8u
20669
+ 20 AFPointValues? no
20670
+ 298 AFPoints int8u[41]~
20671
+ 399 AFPointsUnknown? int8u[41]~
20667
20672
  506 LiveView int8u
20668
20673
  509 AFHold int8u
20669
20674
 
@@ -20900,6 +20905,7 @@ sensors are located in the camera.
20900
20905
  14 SensorTemperature2 int16s
20901
20906
  20 CameraTemperature4 int16s
20902
20907
  22 CameraTemperature5 int16s
20908
+ 42 SensorTemperature int16s
20903
20909
 
20904
20910
  =head3 Pentax UnknownInfo Tags
20905
20911
 
@@ -30316,7 +30322,7 @@ for the official QuickTime specification.
30316
30322
  'meta' Meta QuickTime Meta
30317
30323
  'moof' MovieFragment QuickTime MovieFragment
30318
30324
  'moov' Movie QuickTime Movie
30319
- 'mpvd' MotionPhotoVideo yes
30325
+ 'mpvd' MotionPhotoVideo undef
30320
30326
  'nbmt' NextbaseMeta QuickTime Stream
30321
30327
  'pict' PreviewPICT no
30322
30328
  'pnot' Preview QuickTime Preview
@@ -30351,81 +30357,83 @@ for the official QuickTime specification.
30351
30357
  The tags below are extracted from timed metadata in QuickTime and other
30352
30358
  formats of video files when the ExtractEmbedded option is used. Although
30353
30359
  most of these tags are combined into the single table below, ExifTool
30354
- currently reads 103 different types of timed GPS metadata from video files.
30360
+ currently reads 104 different types of timed GPS metadata from video files.
30355
30361
 
30356
- Tag Name Writable
30357
- -------- --------
30358
- Accelerometer no
30359
- AccelerometerData no
30360
- AngularVelocity no
30361
- CTMD Canon CTMD
30362
- CameraDateTime no
30363
- CameraModel no
30364
- Car no
30365
- DJIDebug? DJI Protobuf
30366
- DJIMetadata DJI Protobuf
30367
- DateTimeOriginal no
30368
- DateTimeStamp no
30369
- Distance no
30370
- ExposureCompensation no
30371
- ExposureTime no
30372
- FNumber no
30373
- FrameNumber no
30374
- GPSAltitude no
30375
- GPSDOP no
30376
- GPSDateTime no
30377
- GPSLatitude no
30378
- GPSLatitude2 no
30379
- GPSLongitude no
30380
- GPSLongitude2 no
30381
- GPSSatellites no
30382
- GPSSpeed no
30383
- GPSSpeedRef no
30384
- GPSTimeStamp no
30385
- GPSTrack no
30386
- GPSTrackRef no
30387
- GSensor no
30388
- INSV QuickTime INSV_MakerNotes
30389
- ISO no
30390
- JpgFromRaw no
30391
- KiloCalories no
30392
- MagneticVariation no
30393
- PreviewImage no
30394
- PreviewInfo QuickTime PreviewInfo
30395
- RVMI_gReV QuickTime RVMI_gReV
30396
- RVMI_sReV QuickTime RVMI_sReV
30397
- RawGSensor no
30398
- SampleDateTime no
30399
- SampleDuration no
30400
- SampleTime no
30401
- Text no
30402
- TimeCode no
30403
- Unknown00? no
30404
- Unknown01? no
30405
- Unknown02? no
30406
- Unknown03? no
30407
- UserLabel no
30408
- VerticalSpeed no
30409
- VideoTimeStamp no
30410
- camm0 QuickTime camm0
30411
- camm1 QuickTime camm1
30412
- camm2 QuickTime camm2
30413
- camm3 QuickTime camm3
30414
- camm4 QuickTime camm4
30415
- camm5 QuickTime camm5
30416
- camm6 QuickTime camm6
30417
- camm7 QuickTime camm7
30418
- fdsc GoPro fdsc
30419
- gpmd_Kingslim QuickTime Stream
30420
- gpmd_Rove QuickTime Stream
30421
- gpmd_FMAS QuickTime Stream
30422
- gpmd_Wolfbox QuickTime Stream
30423
- gpmd_GoPro GoPro GPMF
30424
- marl GM marl
30425
- mebx QuickTime Keys
30426
- mett Parrot mett
30427
- rtmd Sony rtmd
30428
- tx3g QuickTime tx3g
30362
+ Tag ID Tag Name Writable
30363
+ ------ -------- --------
30364
+ 'Accelerometer' Accelerometer no
30365
+ 'AccelerometerData' AccelerometerData no
30366
+ 'AngularVelocity' AngularVelocity no
30367
+ 'CTMD' CTMD Canon CTMD
30368
+ 'CameraDateTime' CameraDateTime no
30369
+ 'CameraModel' CameraModel no
30370
+ 'Car' Car no
30371
+ 'DateTimeOriginal' DateTimeOriginal no
30372
+ 'DateTimeStamp' DateTimeStamp no
30373
+ 'Distance' Distance no
30374
+ 'ExposureCompensation' ExposureCompensation no
30375
+ 'ExposureTime' ExposureTime no
30376
+ 'FNumber' FNumber no
30377
+ 'FrameNumber' FrameNumber no
30378
+ 'GPSAltitude' GPSAltitude no
30379
+ 'GPSDOP' GPSDOP no
30380
+ 'GPSDateTime' GPSDateTime no
30381
+ 'GPSLatitude' GPSLatitude no
30382
+ 'GPSLatitude2' GPSLatitude2 no
30383
+ 'GPSLongitude' GPSLongitude no
30384
+ 'GPSLongitude2' GPSLongitude2 no
30385
+ 'GPSSatellites' GPSSatellites no
30386
+ 'GPSSpeed' GPSSpeed no
30387
+ 'GPSSpeedRef' GPSSpeedRef no
30388
+ 'GPSTimeStamp' GPSTimeStamp no
30389
+ 'GPSTrack' GPSTrack no
30390
+ 'GPSTrackRef' GPSTrackRef no
30391
+ 'GSensor' GSensor no
30392
+ 'INSV' INSV QuickTime INSV_MakerNotes
30393
+ 'ISO' ISO no
30394
+ 'JPEG' JpgFromRaw no
30395
+ 'KiloCalories' KiloCalories no
30396
+ 'MagneticVariation' MagneticVariation no
30397
+ 'RVMI' RVMI_gReV QuickTime RVMI_gReV
30398
+ RVMI_sReV QuickTime RVMI_sReV
30399
+ 'RawGSensor' RawGSensor no
30400
+ 'SampleDateTime' SampleDateTime no
30401
+ 'SampleDuration' SampleDuration no
30402
+ 'SampleTime' SampleTime no
30403
+ 'Text' Text no
30404
+ 'TimeCode' TimeCode no
30405
+ 'Unknown00' Unknown00? no
30406
+ 'Unknown01' Unknown01? no
30407
+ 'Unknown02' Unknown02? no
30408
+ 'Unknown03' Unknown03? no
30409
+ 'UserLabel' UserLabel no
30410
+ 'VerticalSpeed' VerticalSpeed no
30411
+ 'VideoTimeStamp' VideoTimeStamp no
30412
+ 'camm' camm0 QuickTime camm0
30413
+ camm1 QuickTime camm1
30414
+ camm2 QuickTime camm2
30415
+ camm3 QuickTime camm3
30416
+ camm4 QuickTime camm4
30417
+ camm5 QuickTime camm5
30418
+ camm6 QuickTime camm6
30419
+ camm7 QuickTime camm7
30420
+ 'dbgi' DJIDebug? DJI Protobuf
30421
+ 'djmd' DJIMetadata DJI Protobuf
30422
+ 'fdsc' fdsc GoPro fdsc
30423
+ 'gpmd' gpmd_Kingslim QuickTime Stream
30424
+ gpmd_Rove QuickTime Stream
30425
+ gpmd_FMAS QuickTime Stream
30426
+ gpmd_Wolfbox QuickTime Stream
30427
+ gpmd_GoPro GoPro GPMF
30428
+ 'marl' marl GM marl
30429
+ 'mebx' mebx QuickTime Keys
30430
+ 'mett' mett Parrot mett
30431
+ 'rtmd' rtmd Sony rtmd
30432
+ 'ssmd' RoveGPS QuickTime RoveGPS
30433
+ Accelerometer no
30434
+ PreviewImage no
30435
+ 'text' PreviewInfo QuickTime PreviewInfo
30436
+ 'tx3g' tx3g QuickTime tx3g
30429
30437
 
30430
30438
  =head3 QuickTime INSV_MakerNotes Tags
30431
30439
 
@@ -30436,14 +30444,6 @@ currently reads 103 different types of timed GPS metadata from video files.
30436
30444
  0x001a Firmware no
30437
30445
  0x002a Parameters no
30438
30446
 
30439
- =head3 QuickTime PreviewInfo Tags
30440
-
30441
- Preview stored by TomTom Bandit ActionCam.
30442
-
30443
- Index1 Tag Name Writable
30444
- ------ -------- --------
30445
- 8 PreviewImage no
30446
-
30447
30447
  =head3 QuickTime RVMI_gReV Tags
30448
30448
 
30449
30449
  GPS information extracted from the RVMI box of MOV videos.
@@ -30668,6 +30668,23 @@ VideoKeys family 1 gorup.
30668
30668
  ------ -------- --------
30669
30669
  'cits' FaceItem QuickTime Keys
30670
30670
 
30671
+ =head3 QuickTime RoveGPS Tags
30672
+
30673
+ Index1 Tag Name Writable
30674
+ ------ -------- --------
30675
+ 0 GPSLatitude no
30676
+ 8 GPSLongitude no
30677
+ 20 GPSSpeed no
30678
+ 22 GPSDateTime no
30679
+
30680
+ =head3 QuickTime PreviewInfo Tags
30681
+
30682
+ Preview stored by TomTom Bandit ActionCam.
30683
+
30684
+ Index1 Tag Name Writable
30685
+ ------ -------- --------
30686
+ 8 PreviewImage no
30687
+
30671
30688
  =head3 QuickTime tx3g Tags
30672
30689
 
30673
30690
  Tags extracted from the tx3g sbtl timed metadata of Yuneec and Autel drones,
@@ -31157,6 +31174,7 @@ MP4 media box.
31157
31174
 
31158
31175
  Tag ID Tag Name Writable
31159
31176
  ------ -------- --------
31177
+ 'elng' ExtendedLanguageTag no
31160
31178
  'hdlr' Handler QuickTime Handler
31161
31179
  'mdhd' MediaHeader QuickTime MediaHeader
31162
31180
  'minf' MediaInfo QuickTime MediaInfo
@@ -31556,8 +31574,15 @@ MP4 video media header.
31556
31574
  ------ -------- --------
31557
31575
  'cdsc' ContentDescribes no
31558
31576
  'chap' ChapterListTrackID no
31577
+ 'clcp' ClosedCaptionTrack no
31578
+ 'fall' AlternateFormatTrack no
31579
+ 'folw' SubtitleTrack no
31580
+ 'forc' ForcedSubtitleTrack no
31559
31581
  'mpod' ElementaryStreamTrack no
31560
- 'tmcd' TimeCode no
31582
+ 'scpt' TranscriptTrack no
31583
+ 'ssrc' Non-primarySourceTrack no
31584
+ 'sync' SyncronizedTrack no
31585
+ 'tmcd' TimecodeTrack no
31561
31586
 
31562
31587
  =head3 QuickTime UserData Tags
31563
31588
 
@@ -31705,6 +31730,7 @@ the config file.
31705
31730
  UnknownThumbnail string
31706
31731
  'time' TimeStamp no
31707
31732
  'titl' Title string/
31733
+ 'tnam' TrackName string
31708
31734
  'urat' UserRating undef/
31709
31735
  'uuid' GarminSoftware string
31710
31736
  GarminModel no
@@ -32120,6 +32146,7 @@ metadata to WEBP images, but can't yet write to other RIFF-based formats.
32120
32146
  'EXIF' EXIF EXIF
32121
32147
  UnknownEXIF no
32122
32148
  'ICCP' ICC_Profile ICC_Profile
32149
+ 'ID3 ' ID3-2 ID3
32123
32150
  'IDIT' DateTimeOriginal no
32124
32151
  'JUNK' OlympusJunk Olympus AVI
32125
32152
  CasioJunk EXIF
@@ -40185,7 +40212,7 @@ Tags extracted from CAP, PCAP and PCAPNG Packet Capture files.
40185
40212
  0x0bac CustomOption1 no
40186
40213
  0x0bad CustomOption2 no
40187
40214
  0x4bac CustomOption3 no
40188
- 0x4bad CustomOption3 no
40215
+ 0x4bad CustomOption4 no
40189
40216
  'ByteOrder' ByteOrder no
40190
40217
  'IDB-2' DeviceName no
40191
40218
  'IDB-3' Description no
@@ -40197,8 +40224,8 @@ Tags extracted from CAP, PCAP and PCAPNG Packet Capture files.
40197
40224
  'IDB-9' TimeStampResolution no
40198
40225
  'IDB-10' TimeZone no
40199
40226
  'IDB-11' Filter no
40200
- 'IDB-12' OperatingSytem no
40201
- 'IDB-13' FCSLen no
40227
+ 'IDB-12' OperatingSystem no
40228
+ 'IDB-13' FrameCheckSequenceLength no
40202
40229
  'IDB-14' TimeStampOffset no
40203
40230
  'IDB-15' Hardware no
40204
40231
  'IDB-16' TXSpeed no
@@ -40207,7 +40234,7 @@ Tags extracted from CAP, PCAP and PCAPNG Packet Capture files.
40207
40234
  'LinkType' LinkType no
40208
40235
  'PCAPVersion' PCAPVersion no
40209
40236
  'SHB-2' Hardware no
40210
- 'SHB-3' OperatingSytem no
40237
+ 'SHB-3' OperatingSystem no
40211
40238
  'SHB-4' UserApplication no
40212
40239
  'TimeStamp' TimeStamp no
40213
40240
 
@@ -1729,6 +1729,7 @@ ItemID2: foreach $id (reverse sort { $a <=> $b } keys %$items) {
1729
1729
  # (note that $tag may be a binary Keys index here)
1730
1730
  foreach $tag (@addTags) {
1731
1731
  my $tagInfo = $$dirs{$tag} || $$newTags{$tag};
1732
+ next unless ref $tagInfo eq 'HASH'; # (shouldn't happen, but somehow there is forum17260)
1732
1733
  next if defined $$tagInfo{CanCreate} and not $$tagInfo{CanCreate};
1733
1734
  next if defined $$tagInfo{MediaType} and $$et{MediaType} ne $$tagInfo{MediaType};
1734
1735
  my $subdir = $$tagInfo{SubDirectory};
@@ -50,7 +50,7 @@ use Image::ExifTool::Exif;
50
50
  use Image::ExifTool::GPS;
51
51
  require Exporter;
52
52
 
53
- $VERSION = '3.72';
53
+ $VERSION = '3.73';
54
54
  @ISA = qw(Exporter);
55
55
  @EXPORT_OK = qw(EscapeXML UnescapeXML);
56
56
 
@@ -3539,14 +3539,19 @@ NoLoop:
3539
3539
  }
3540
3540
  last unless $sti;
3541
3541
  }
3542
- # generate new tagInfo hash based on existing top-level tag
3543
- $tagInfo = { %$sti, Name => $flat . $$sti{Name} };
3544
- # be careful not to copy elements we shouldn't...
3545
- delete $$tagInfo{Description}; # Description will be different
3546
- # can't copy group hash because group 1 will be different and
3547
- # we need to check this when writing tag to a specific group
3548
- delete $$tagInfo{Groups};
3549
- $$tagInfo{Groups}{2} = $$sti{Groups}{2} if $$sti{Groups};
3542
+ # use existing definition if we already added this tag
3543
+ if ($$tagTablePtr{$tagID}) {
3544
+ $tagInfo = $$tagTablePtr{$tagID};
3545
+ } else {
3546
+ # generate new tagInfo hash based on existing top-level tag
3547
+ $tagInfo = { %$sti, Name => $flat . $$sti{Name} };
3548
+ # be careful not to copy elements we shouldn't...
3549
+ delete $$tagInfo{Description}; # Description will be different
3550
+ # can't copy group hash because group 1 will be different and
3551
+ # we need to check this when writing tag to a specific group
3552
+ delete $$tagInfo{Groups};
3553
+ $$tagInfo{Groups}{2} = $$sti{Groups}{2} if $$sti{Groups};
3554
+ }
3550
3555
  last;
3551
3556
  }
3552
3557
  }
@@ -3592,13 +3597,15 @@ NoLoop:
3592
3597
  #} elsif (grep / /, @$props) {
3593
3598
  # $$tagInfo{List} = 1;
3594
3599
  }
3595
- # save property list for verbose "adding" message unless this tag already exists
3596
- $added = \@tagList unless $$tagTablePtr{$tagID};
3597
- # if this is an empty structure, we must add a Struct field
3598
- if (not length $val and $$attrs{'rdf:parseType'} and $$attrs{'rdf:parseType'} eq 'Resource') {
3599
- $$tagInfo{Struct} = { STRUCT_NAME => 'XMP Unknown' };
3600
+ unless ($$tagTablePtr{$tagID} and $$tagTablePtr{$tagID} eq $tagInfo) {
3601
+ # save property list for verbose "adding" message unless this tag already exists
3602
+ $added = \@tagList unless $$tagTablePtr{$tagID};
3603
+ # if this is an empty structure, we must add a Struct field
3604
+ if (not length $val and $$attrs{'rdf:parseType'} and $$attrs{'rdf:parseType'} eq 'Resource') {
3605
+ $$tagInfo{Struct} = { STRUCT_NAME => 'XMP Unknown' } unless $$tagInfo{Struct};
3606
+ }
3607
+ AddTagToTable($tagTablePtr, $tagID, $tagInfo);
3600
3608
  }
3601
- AddTagToTable($tagTablePtr, $tagID, $tagInfo);
3602
3609
  last;
3603
3610
  }
3604
3611
  # decode value if necessary (et:encoding was used before exiftool 7.71)
@@ -170,7 +170,11 @@ my %sAppInfo = (
170
170
  %xmpTableDefaults,
171
171
  GROUPS => { 1 => 'XMP-xmpDM', 2 => 'Image' },
172
172
  NAMESPACE => 'xmpDM',
173
- NOTES => 'XMP Dynamic Media namespace tags.',
173
+ NOTES => q{
174
+ XMP Dynamic Media namespace tags. See
175
+ L<https://developer.adobe.com/xmp/docs/XMPNamespaces/xmpDM/> for the
176
+ specification.
177
+ },
174
178
  absPeakAudioFilePath=> { },
175
179
  album => { },
176
180
  altTapeName => { },
@@ -29,7 +29,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
29
29
  %jpegMarker %specialTags %fileTypeLookup $testLen $exeDir
30
30
  %static_vars $advFmtSelf);
31
31
 
32
- $VERSION = '13.25';
32
+ $VERSION = '13.27';
33
33
  $RELEASE = '';
34
34
  @ISA = qw(Exporter);
35
35
  %EXPORT_TAGS = (
@@ -9213,10 +9213,14 @@ sub HandleTag($$$$;%)
9213
9213
  if ($start >= 0 and $start + $size <= $dLen) {
9214
9214
  $format = $$tagInfo{Format} || $$tagTablePtr{FORMAT};
9215
9215
  $format = $pfmt if not $format and $pfmt and $formatSize{$pfmt};
9216
- if ($format) {
9216
+ if (not $format) {
9217
+ $val = substr($$dataPt, $start, $size);
9218
+ } elsif (not $$tagInfo{ByteOrder}) {
9217
9219
  $val = ReadValue($dataPt, $start, $format, $$tagInfo{Count}, $size, \$rational);
9218
9220
  } else {
9219
- $val = substr($$dataPt, $start, $size);
9221
+ my $oldOrder = GetByteOrder(), SetByteOrder($$tagInfo{ByteOrder});
9222
+ $val = ReadValue($dataPt, $start, $format, $$tagInfo{Count}, $size, \$rational);
9223
+ SetByteOrder($oldOrder);
9220
9224
  }
9221
9225
  $binVal = substr($$dataPt, $start, $size) if $$self{OPTIONS}{SaveBin};
9222
9226
  } else {
@@ -895,7 +895,8 @@ Supported options are 'MD5', 'SHA256', and 'SHA512'. Default is 'MD5'.
895
895
  =item KeepUTCTime
896
896
 
897
897
  Flag to keep UTC times in Zulu time zone instead of converting to local
898
- time. Default is undef.
898
+ time. Affects only times which are stored as seconds since the UTC epoch.
899
+ Default is undef.
899
900
 
900
901
  =item Lang
901
902
 
@@ -1,6 +1,6 @@
1
1
  Summary: perl module for image data extraction
2
2
  Name: perl-Image-ExifTool
3
- Version: 13.25
3
+ Version: 13.27
4
4
  Release: 1
5
5
  License: Artistic/GPL
6
6
  Group: Development/Libraries/Perl
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ExiftoolVendored
4
- VERSION = Gem::Version.new('13.25.0')
4
+ VERSION = Gem::Version.new('13.27.0')
5
5
  end