exiftool_vendored 13.25.0 → 13.26.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b32fb55b43516b86b41460ed80654d3214bcee87257d0a90c614c40bb29fa16f
4
- data.tar.gz: 02d0ebd73cd108f256854da2ae9994f0e33fe2db0c84a3af5b76c6510d0d3e10
3
+ metadata.gz: 7ade24a22d85fc4d797e0fa157ccbcab31f7ef49a375c50849f76e075e1366ea
4
+ data.tar.gz: e4f4a5da9a42324b16bc953f1f326abf2700f57e9f15d58661f3863cf359ea01
5
5
  SHA512:
6
- metadata.gz: 44f7894cac459290dbf545321f068ae903b2212abc5cd88ef399949bfa667511e01cbc9049b6329301a268a7daf4b4a5bb05c66625655010356b9bc895d23954
7
- data.tar.gz: 74d8a93399c703661ad4ed05d7f3a4748f994950be72be4b1237cb033a8c5b494ba9ce93a0bd79f9acae788afd74c8149e4ae3250b85d66d9bff18dd6209ec99
6
+ metadata.gz: a3bd7b0e0211feb8854f98a1de7956776cb7dcfc36eb4f224a333a7bf6912e50d433af4c806ca3bde62100a3eb99dd8704862da9092e06a2bc831d5bbba41b3c
7
+ data.tar.gz: c19b405e58717505f77791c5115bc67d98651b48d4872d25270ecda79ac42a00740495ec324616650c33d3c9931763a1ddb31722318b8ab9071d3476b3033361
data/bin/Changes CHANGED
@@ -7,10 +7,23 @@ RSS feed: https://exiftool.org/rss.xml
7
7
  Note: The most recent production release is Version 13.25. (Other versions are
8
8
  considered development releases, and are not uploaded to MetaCPAN.)
9
9
 
10
+ Mar. 31, 2025 - Version 13.26
11
+
12
+ - Added a new Olympus CameraType (thanks Herb)
13
+ - Added a new PentaxModelID (github #322)
14
+ - Added a new Nikon LensID
15
+ - Improved Duration calculation for some WAV files
16
+ - Changed a PCAP tag name and fixed typos in a few others (thanks blue-j)
17
+ - Patched to avoid VignettingCorr warning for images from some Canon cameras
18
+ - Patched to avoid some unnecessary duplicate tag warnings when -validate used
19
+ with HEIC images
20
+ - Fixed issue with XMP-xmpMM:Pantry items not exhibiting proper List-type
21
+ behaviour
22
+
10
23
  Mar. 11, 2025 - Version 13.25 (production release)
11
24
 
12
25
  - IMPORTANT: Fixed issue which could corrupt HEIC images from newer iPhones
13
- when writing QuickTime:Rotation
26
+ under certain conditions when writing QuickTime:Rotation
14
27
  - Decode more PLIST information from HEIC images
15
28
  - Updated Geolocation databases from current geonames.org files
16
29
  - Updated DarwinCore for the 2023 specification (thanks Herb)
@@ -25,7 +38,7 @@ Mar. 7, 2025 - Version 13.24
25
38
 
26
39
  Mar. 7, 2025 - Version 13.23
27
40
 
28
- - Added read support for CAP, PCAP and PACPNG files (github #318)
41
+ - Added read support for CAP, PCAP and PCAPNG files (github #318)
29
42
  - Added a number of new Sony LensType2 values (thanks Jos Roost)
30
43
  - Added the 2 new GPSAltitudeRef values defined by EXIF 3.0
31
44
  - Decode APP4 "Qualcomm Dual Camera Attributes" metadata
@@ -57,7 +70,7 @@ Feb. 20, 2025 - Version 13.21
57
70
  - Patched issue that could result in runtime warning for some video files
58
71
  - Fixed a bug with the new -plot option that could generate a compiler error
59
72
 
60
- Feb. 20, 2025 - Version 13.20
73
+ Feb. 20, 2025 - Version 13.20 - "SVG Plot"
61
74
 
62
75
  - Added new -plot option for generating SVG-format plots from tag values
63
76
  - Added a new Olympus CameraType
data/bin/META.json CHANGED
@@ -50,5 +50,5 @@
50
50
  }
51
51
  },
52
52
  "release_status" : "stable",
53
- "version" : "13.25"
53
+ "version" : "13.26"
54
54
  }
data/bin/META.yml CHANGED
@@ -31,4 +31,4 @@ recommends:
31
31
  Time::HiRes: '0'
32
32
  requires:
33
33
  perl: '5.004'
34
- version: '13.25'
34
+ version: '13.26'
data/bin/README CHANGED
@@ -109,8 +109,8 @@ your home directory, then you would type the following commands in a
109
109
  terminal window to extract and run ExifTool:
110
110
 
111
111
  cd ~/Desktop
112
- gzip -dc Image-ExifTool-13.25.tar.gz | tar -xf -
113
- cd Image-ExifTool-13.25
112
+ gzip -dc Image-ExifTool-13.26.tar.gz | tar -xf -
113
+ cd Image-ExifTool-13.26
114
114
  ./exiftool t/images/ExifTool.jpg
115
115
 
116
116
  Note: These commands extract meta information from one of the test images.
@@ -170,7 +170,7 @@ COPYRIGHT AND LICENSE
170
170
  Copyright 2003-2025, Phil Harvey
171
171
 
172
172
  This is free software; you can redistribute it and/or modify it under the
173
- same terms as Perl itself.
173
+ same terms as Perl itself (either the Perl Artistic License or GPL).
174
174
 
175
175
  DISTRIBUTION FILES
176
176
 
@@ -40,7 +40,7 @@
40
40
  # 6 int8u - 0xf0 = population E exponent (in format "N.Fe+0E"), 0x0f = population N digit
41
41
  # 7 int16u - 0xf000 = population F digit, 0x0fff = index in region list (admin1)
42
42
  # 9 int16u - v1.02: 0x7fff = index in subregion (admin2), 0x8000 = high bit of time zone
43
- # 9 int16u - v1.03: index in subregion (admin2)
43
+ # 9 int16u - v1.03: index in subregion list (admin2)
44
44
  # 11 int8u - low byte of time zone index
45
45
  # 12 int8u - 0x3f = feature code index (see below), v1.03: 0x80 = high bit of time zone
46
46
  # 13 string - UTF8 City name, terminated by newline
data/bin/exiftool CHANGED
@@ -11,7 +11,7 @@ use strict;
11
11
  use warnings;
12
12
  require 5.004;
13
13
 
14
- my $version = '13.25';
14
+ my $version = '13.26';
15
15
 
16
16
  $^W = 1; # enable global warnings
17
17
 
@@ -5010,7 +5010,7 @@ B<exiftool> [I<OPTIONS>] [-I<TAG>...] [--I<TAG>...] I<FILE>...
5010
5010
 
5011
5011
  =head2 Writing
5012
5012
 
5013
- B<exiftool> [I<OPTIONS>] -I<TAG>[+-E<lt>]=[I<VALUE>]... I<FILE>...
5013
+ B<exiftool> [I<OPTIONS>] -I<TAG>[+-^E<lt>]=[I<VALUE>]... I<FILE>...
5014
5014
 
5015
5015
  =head2 Copying
5016
5016
 
@@ -6053,7 +6053,7 @@ with this command:
6053
6053
 
6054
6054
  produces output like this:
6055
6055
 
6056
- -- Generated by ExifTool 13.25 --
6056
+ -- Generated by ExifTool 13.26 --
6057
6057
  File: a.jpg - 2003:10:31 15:44:19
6058
6058
  (f/5.6, 1/60s, ISO 100)
6059
6059
  File: b.jpg - 2006:05:23 11:57:38
@@ -2053,7 +2053,7 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
2053
2053
  # 0x4014 (similar to 0x83?)
2054
2054
  0x4015 => [{
2055
2055
  Name => 'VignettingCorr', # (LensPacket)
2056
- Condition => '$$valPt =~ /^\0/ and $$valPt !~ /^\0\0\0\0/', # (data may be all zeros for 60D)
2056
+ Condition => '$$valPt =~ /^\0/ and $$valPt !~ /^(\0\0\0\0|\x00\x40\xdc\x05)/', # (data may be all zeros for 60D)
2057
2057
  SubDirectory => {
2058
2058
  # (the size word is at byte 2 in this structure)
2059
2059
  Validate => 'Image::ExifTool::Canon::Validate($dirData,$subdirStart+2,$size)',
@@ -2061,7 +2061,7 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
2061
2061
  },
2062
2062
  },{
2063
2063
  Name => 'VignettingCorrUnknown1',
2064
- Condition => '$$valPt =~ /^[\x01\x02\x10\x20]/ and $$valPt !~ /^\0\0\0\0/',
2064
+ Condition => '$$valPt =~ /^[\x01\x02\x10\x20]/ and $$valPt !~ /^(\0\0\0\0|\x02\x50\x7c\x04)/',
2065
2065
  SubDirectory => {
2066
2066
  # (the size word is at byte 2 in this structure)
2067
2067
  Validate => 'Image::ExifTool::Canon::Validate($dirData,$subdirStart+2,$size)',
@@ -4758,6 +4758,7 @@ my %ciMaxFocal = (
4758
4758
  Format => 'int32u',
4759
4759
  Notes => 'includes electronic + mechanical shutter',
4760
4760
  },
4761
+ # 0x0b5a - related to image stabilization (ref forum17239) (R5)
4761
4762
  # 0x0bb7 - counts down during focus stack (ref forum16111)
4762
4763
  );
4763
4764
 
@@ -336,6 +336,7 @@ my %manuSig = ( #6
336
336
  'Zebr' => 'Zebra Technologies Inc',
337
337
  'ZRAN' => 'Zoran Corporation',
338
338
  # also seen: " ",ACMS,KCMS,UCCM,etc2,SCTX
339
+ # registry: https://www.color.org/signatureRegistry/index.xalter
339
340
  );
340
341
 
341
342
  # ICC_Profile tag table
@@ -65,7 +65,7 @@ use Image::ExifTool::Exif;
65
65
  use Image::ExifTool::GPS;
66
66
  use Image::ExifTool::XMP;
67
67
 
68
- $VERSION = '4.45';
68
+ $VERSION = '4.46';
69
69
 
70
70
  sub LensIDConv($$$);
71
71
  sub ProcessNikonAVI($$$);
@@ -552,6 +552,7 @@ sub GetAFPointGrid($$;$);
552
552
  '21 56 8E 8E 24 24 14 00' => 'Tamron SP AF 300mm f/2.8 LD-IF (60E)',
553
553
  '27 54 8E 8E 24 24 1D 02' => 'Tamron SP AF 300mm f/2.8 LD-IF (360E)',
554
554
  'E1 40 19 36 2C 35 DF 4E' => 'Tamron 10-24mm f/3.5-4.5 Di II VC HLD (B023)',
555
+ 'E1 40 19 36 2C 35 DF 0E' => 'Tamron 10-24mm f/3.5-4.5 Di II VC HLD (B023)', #30
555
556
  'F6 3F 18 37 2C 34 84 06' => 'Tamron SP AF 10-24mm f/3.5-4.5 Di II LD Aspherical (IF) (B001)',
556
557
  'F6 3F 18 37 2C 34 DF 06' => 'Tamron SP AF 10-24mm f/3.5-4.5 Di II LD Aspherical (IF) (B001)', #30
557
558
  '00 36 1C 2D 34 3C 00 06' => 'Tamron SP AF 11-18mm f/4.5-5.6 Di II LD Aspherical (IF) (A13)',
@@ -40,7 +40,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
40
40
  use Image::ExifTool::Exif;
41
41
  use Image::ExifTool::APP12;
42
42
 
43
- $VERSION = '2.84';
43
+ $VERSION = '2.85';
44
44
 
45
45
  sub PrintLensInfo($$$);
46
46
 
@@ -446,6 +446,7 @@ my %olympusCameraTypes = (
446
446
  S0095 => 'OM-1', #IB
447
447
  S0101 => 'OM-5', #IB
448
448
  S0121 => 'OM-1MarkII', #forum15652
449
+ S0123 => 'OM-3', #forum17208
449
450
  SR45 => 'D220',
450
451
  SR55 => 'D320L',
451
452
  SR83 => 'D340L',
@@ -16,7 +16,7 @@ use strict;
16
16
  use vars qw($VERSION);
17
17
  use Image::ExifTool qw(:DataAccess :Utils);
18
18
 
19
- $VERSION = '1.00';
19
+ $VERSION = '1.01';
20
20
 
21
21
  %Image::ExifTool::PCAP::Main = (
22
22
  GROUPS => { 0 => 'File', 1 => 'File', 2 => 'Other' },
@@ -261,14 +261,14 @@ $VERSION = '1.00';
261
261
  },
262
262
  },
263
263
  19373 => {
264
- Name => 'CustomOption3',
264
+ Name => 'CustomOption4',
265
265
  Binary => 1,
266
266
  },
267
267
  #
268
268
  # "options" tags in Section Header Block
269
269
  #
270
270
  'SHB-2' => 'Hardware',
271
- 'SHB-3' => 'OperatingSytem',
271
+ 'SHB-3' => 'OperatingSystem',
272
272
  'SHB-4' => 'UserApplication',
273
273
  #
274
274
  # "options" tags in Interface Description Block
@@ -308,8 +308,8 @@ $VERSION = '1.00';
308
308
  Name => 'Filter',
309
309
  ValueConv => 'Get8u(\$val,0) . ": " . substr($val, 1)',
310
310
  },
311
- 'IDB-12' => 'OperatingSytem',
312
- 'IDB-13' => { Name => 'FCSLen', Format => 'int8u' },
311
+ 'IDB-12' => 'OperatingSystem',
312
+ 'IDB-13' => { Name => 'FrameCheckSequenceLength', Format => 'int8u' },
313
313
  'IDB-14' => {
314
314
  Name => 'TimeStampOffset',
315
315
  Format => 'int64u',
@@ -58,7 +58,7 @@ use Image::ExifTool::Exif;
58
58
  use Image::ExifTool::GPS;
59
59
  use Image::ExifTool::HP;
60
60
 
61
- $VERSION = '3.47';
61
+ $VERSION = '3.48';
62
62
 
63
63
  sub CryptShutterCount($$);
64
64
  sub PrintFilter($$$);
@@ -558,6 +558,7 @@ my %pentaxModelID = (
558
558
  0x13254 => 'K-3 Mark III', #IB (Ricoh)
559
559
  0x13290 => 'WG-70', # (Ricoh)
560
560
  0x1329a => 'GR IIIx', # (Ricoh)
561
+ 0x132b8 => 'KF', #github322 (Ricoh)
561
562
  0x132d6 => 'K-3 Mark III Monochrome', #github226 (Ricoh)
562
563
  );
563
564
 
@@ -38,6 +38,7 @@
38
38
  # 26) https://github.com/SamsungVR/android_upload_sdk/blob/master/SDKLib/src/main/java/com/samsung/msca/samsungvr/sdk/UserVideo.java
39
39
  # 27) https://exiftool.org/forum/index.php?topic=11517.0
40
40
  # 28) https://docs.mp3tag.de/mapping/
41
+ # 29) https://developer.apple.com/documentation/quicktime-file-format/media_data_reference_atom
41
42
  #------------------------------------------------------------------------------
42
43
 
43
44
  package Image::ExifTool::QuickTime;
@@ -48,7 +49,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
48
49
  use Image::ExifTool::Exif;
49
50
  use Image::ExifTool::GPS;
50
51
 
51
- $VERSION = '3.14';
52
+ $VERSION = '3.15';
52
53
 
53
54
  sub ProcessMOV($$;$);
54
55
  sub ProcessKeys($$$);
@@ -502,7 +503,7 @@ my %qtFlags = ( #12
502
503
  # (used only to avoid warnings when Validate-ing)
503
504
  my %dupTagOK = ( mdat => 1, trak => 1, free => 1, infe => 1, sgpd => 1, dimg => 1, CCDT => 1,
504
505
  sbgp => 1, csgm => 1, uuid => 1, cdsc => 1, maxr => 1, '----' => 1 );
505
- my %dupDirOK = ( ipco => 1, '----' => 1 );
506
+ my %dupDirOK = ( ipco => 1, iref => 1, '----' => 1 );
506
507
 
507
508
  # the usual atoms required to decode timed metadata with the ExtractEmbedded option
508
509
  my %eeStd = ( stco => 'stbl', co64 => 'stbl', stsz => 'stbl', stz2 => 'stbl',
@@ -1227,6 +1228,7 @@ my %userDefined = (
1227
1228
  # clip - clipping --> contains crgn (clip region) (ref 12)
1228
1229
  # mvex - movie extends --> contains mehd (movie extends header), trex (track extends) (ref 14)
1229
1230
  # ICAT - 4 bytes: "6350" (Nikon CoolPix S6900), "6500" (Panasonic FT7)
1231
+ # ctab - color table (ref 29)
1230
1232
  );
1231
1233
 
1232
1234
  # (ref CFFMediaFormat-2_1.pdf)
@@ -1426,6 +1428,7 @@ my %userDefined = (
1426
1428
  # load - track loading settings
1427
1429
  # imap - track input map --> contains ' in' --> contains ' ty', obid
1428
1430
  # prfl - Profile (ref 12)
1431
+ # txas - track exclude from autoselection (ref 29)
1429
1432
  );
1430
1433
 
1431
1434
  # track header data block
@@ -1630,6 +1633,10 @@ my %userDefined = (
1630
1633
  Start => 4, # must skip 4-byte version number header
1631
1634
  },
1632
1635
  },
1636
+ tnam => { #29 (NC)
1637
+ Name => 'TrackName',
1638
+ IText => 4,
1639
+ },
1633
1640
  'ptv '=> {
1634
1641
  Name => 'PrintToVideo',
1635
1642
  SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::Video' },
@@ -2801,6 +2808,8 @@ my %userDefined = (
2801
2808
  Name => 'Unknown_grpl',
2802
2809
  SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::grpl' },
2803
2810
  },
2811
+ # ctry - country list (ref 29)
2812
+ # lang - language list (ref 29)
2804
2813
  );
2805
2814
 
2806
2815
  # unknown grpl container
@@ -3279,21 +3288,28 @@ my %userDefined = (
3279
3288
  %Image::ExifTool::QuickTime::TrackRef = (
3280
3289
  PROCESS_PROC => \&ProcessMOV,
3281
3290
  GROUPS => { 1 => 'Track#', 2 => 'Video' },
3282
- chap => { Name => 'ChapterListTrackID', Format => 'int32u' },
3283
- tmcd => { Name => 'TimeCode', Format => 'int32u' },
3291
+ chap => { Name => 'ChapterListTrackID', Format => 'int32u' },
3292
+ tmcd => { Name => 'TimecodeTrack', Format => 'int32u' },
3284
3293
  mpod => { #PH (FLIR MP4)
3285
3294
  Name => 'ElementaryStreamTrack',
3286
3295
  Format => 'int32u',
3287
3296
  ValueConv => '$val =~ s/^1 //; $val', # (why 2 numbers? -- ignore the first if "1")
3288
3297
  },
3289
- # also: sync, scpt, ssrc, iTunesInfo
3298
+ # also: iTunesInfo
3290
3299
  cdsc => {
3291
3300
  Name => 'ContentDescribes',
3292
3301
  Format => 'int32u',
3293
3302
  PrintConv => '"Track $val"',
3294
3303
  },
3295
- # cdep (Structural Dependency QT tag?)
3296
- # fall - ? int32u, seen: 2
3304
+ clcp => { Name => 'ClosedCaptionTrack', Format => 'int32u' }, #29
3305
+ fall => { Name => 'AlternateFormatTrack', Format => 'int32u' }, #29
3306
+ folw => { Name => 'SubtitleTrack', Format => 'int32u' }, #29
3307
+ forc => { Name => 'ForcedSubtitleTrack', Format => 'int32u' }, #29
3308
+ scpt => { Name => 'TranscriptTrack', Format => 'int32u' }, #29
3309
+ ssrc => { Name => 'Non-primarySourceTrack', Format => 'int32u' }, #29
3310
+ sync => { Name => 'SyncronizedTrack', Format => 'int32u' }, #29
3311
+ # hint - Original media for hint track (ref 29)
3312
+ # cdep (Structural Dependency QT tag?)
3297
3313
  );
3298
3314
 
3299
3315
  # track aperture mode dimensions atoms
@@ -6582,7 +6598,6 @@ my %userDefined = (
6582
6598
  'apple.photos.variation-identifier' => { Name => 'ApplePhotosVariationIdentifier', Writable => 'int64s' },
6583
6599
  'direction.facing' => { Name => 'CameraDirection', Groups => { 2 => 'Location' } },
6584
6600
  'direction.motion' => { Name => 'CameraMotion', Groups => { 2 => 'Location' } },
6585
- 'location.body' => { Name => 'LocationBody', Groups => { 2 => 'Location' } },
6586
6601
  'player.version' => 'PlayerVersion',
6587
6602
  'player.movie.visual.brightness'=> 'Brightness',
6588
6603
  'player.movie.visual.color' => 'Color',
@@ -7046,6 +7061,7 @@ my %userDefined = (
7046
7061
  Name => 'MediaInfo',
7047
7062
  SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::MediaInfo' },
7048
7063
  },
7064
+ elng => 'ExtendedLanguageTag', #29 (NC) eg. "zh-CN"
7049
7065
  );
7050
7066
 
7051
7067
  # MP4 media header box (ref 5)
@@ -7637,6 +7653,8 @@ my %userDefined = (
7637
7653
  mrlh => { Name => 'MarlinHeader', SubDirectory => { TagTable => 'Image::ExifTool::GM::mrlh' } },
7638
7654
  mrlv => { Name => 'MarlinValues', SubDirectory => { TagTable => 'Image::ExifTool::GM::mrlv' } },
7639
7655
  mrld => { Name => 'MarlinDictionary',SubDirectory => { TagTable => 'Image::ExifTool::GM::mrld' } },
7656
+ # tbox - text box (ref 29)
7657
+ # styl - subtitle style (ref 29)
7640
7658
  );
7641
7659
 
7642
7660
  # AMR decode config box (ref 3)
@@ -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) {
@@ -7042,6 +7042,7 @@ my %tagLookup = (
7042
7042
  'track' => { 412 => "\xa9trk", 420 => "\xa9trk" },
7043
7043
  'trackcreatedate' => { 419 => 0x1 },
7044
7044
  'trackmodifydate' => { 419 => 0x2 },
7045
+ 'trackname' => { 420 => 'tnam' },
7045
7046
  'tracknumber' => { 412 => 'trkn', 557 => 'trackNumber' },
7046
7047
  'tracks' => { 557 => 'Tracks' },
7047
7048
  'tracksframerate' => { 557 => [\'Tracks','TracksFrameRate'] },
@@ -7818,6 +7819,7 @@ my %tagExists = (
7818
7819
  'alternateduotonecolors' => 1,
7819
7820
  'alternateellipsoidheight' => 1,
7820
7821
  'alternateellipsoidheightextended' => 1,
7822
+ 'alternateformattrack' => 1,
7821
7823
  'alternateheading' => 1,
7822
7824
  'alternatelatitude' => 1,
7823
7825
  'alternatelongitude' => 1,
@@ -8573,6 +8575,7 @@ my %tagExists = (
8573
8575
  'cloneobject' => 1,
8574
8576
  'clonetype' => 1,
8575
8577
  'closedcaptioning' => 1,
8578
+ 'closedcaptiontrack' => 1,
8576
8579
  'cmddialsaperturesetting' => 1,
8577
8580
  'cmddialschangemainsub' => 1,
8578
8581
  'cmddialschangemainsubexposure' => 1,
@@ -9388,6 +9391,7 @@ my %tagExists = (
9388
9391
  'extendedcontentdescr' => 1,
9389
9392
  'extendedcontentencryption' => 1,
9390
9393
  'extendedinfo' => 1,
9394
+ 'extendedlanguagetag' => 1,
9391
9395
  'extendedstreamprops' => 1,
9392
9396
  'extendedtracktitle' => 1,
9393
9397
  'extendedxmp' => 1,
@@ -9632,6 +9636,7 @@ my %tagExists = (
9632
9636
  'fontweight' => 1,
9633
9637
  'footerposition' => 1,
9634
9638
  'footnotes' => 1,
9639
+ 'forcedsubtitletrack' => 1,
9635
9640
  'form' => 1,
9636
9641
  'formatsdcard' => 1,
9637
9642
  'formattag' => 1,
@@ -10022,6 +10027,7 @@ my %tagExists = (
10022
10027
  'ics' => 1,
10023
10028
  'id' => 1,
10024
10029
  'id3' => 1,
10030
+ 'id3-2' => 1,
10025
10031
  'id3size' => 1,
10026
10032
  'id3v1' => 1,
10027
10033
  'id3v1_enh' => 1,
@@ -11116,6 +11122,7 @@ my %tagExists = (
11116
11122
  'nominalplaytime' => 1,
11117
11123
  'nominalvideobitrate' => 1,
11118
11124
  'nomssmarttags' => 1,
11125
+ 'non-primarysourcetrack' => 1,
11119
11126
  'normallinetransfertiming' => 1,
11120
11127
  'noseslimming' => 1,
11121
11128
  'note' => 1,
@@ -12561,6 +12568,7 @@ my %tagExists = (
12561
12568
  'subsystemversion' => 1,
12562
12569
  'subtileblocksize' => 1,
12563
12570
  'subtitledescription' => 1,
12571
+ 'subtitletrack' => 1,
12564
12572
  'suffix' => 1,
12565
12573
  'suggestedpalette' => 1,
12566
12574
  'summary' => 1,
@@ -12591,6 +12599,7 @@ my %tagExists = (
12591
12599
  'synchronizedlyricstext' => 1,
12592
12600
  'synchronizedlyricstype' => 1,
12593
12601
  'synconly' => 1,
12602
+ 'syncronizedtrack' => 1,
12594
12603
  'syncsampletable' => 1,
12595
12604
  'syncstate' => 1,
12596
12605
  'synlyrics' => 1,
@@ -12761,6 +12770,7 @@ my %tagExists = (
12761
12770
  'timecode' => 1,
12762
12771
  'timecodeindex' => 1,
12763
12772
  'timecodeindexparms' => 1,
12773
+ 'timecodetrack' => 1,
12764
12774
  'timeinfo' => 1,
12765
12775
  'timelapse' => 1,
12766
12776
  'timelineinfo' => 1,
@@ -12859,6 +12869,7 @@ my %tagExists = (
12859
12869
  'trackvolume' => 1,
12860
12870
  'trademark' => 1,
12861
12871
  'transactionid' => 1,
12872
+ 'transcripttrack' => 1,
12862
12873
  'transfercharacteristic' => 1,
12863
12874
  'transfercharacteristics' => 1,
12864
12875
  '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 28431 tags, with 17665 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
 
@@ -31157,6 +31159,7 @@ MP4 media box.
31157
31159
 
31158
31160
  Tag ID Tag Name Writable
31159
31161
  ------ -------- --------
31162
+ 'elng' ExtendedLanguageTag no
31160
31163
  'hdlr' Handler QuickTime Handler
31161
31164
  'mdhd' MediaHeader QuickTime MediaHeader
31162
31165
  'minf' MediaInfo QuickTime MediaInfo
@@ -31556,8 +31559,15 @@ MP4 video media header.
31556
31559
  ------ -------- --------
31557
31560
  'cdsc' ContentDescribes no
31558
31561
  'chap' ChapterListTrackID no
31562
+ 'clcp' ClosedCaptionTrack no
31563
+ 'fall' AlternateFormatTrack no
31564
+ 'folw' SubtitleTrack no
31565
+ 'forc' ForcedSubtitleTrack no
31559
31566
  'mpod' ElementaryStreamTrack no
31560
- 'tmcd' TimeCode no
31567
+ 'scpt' TranscriptTrack no
31568
+ 'ssrc' Non-primarySourceTrack no
31569
+ 'sync' SyncronizedTrack no
31570
+ 'tmcd' TimecodeTrack no
31561
31571
 
31562
31572
  =head3 QuickTime UserData Tags
31563
31573
 
@@ -31705,6 +31715,7 @@ the config file.
31705
31715
  UnknownThumbnail string
31706
31716
  'time' TimeStamp no
31707
31717
  'titl' Title string/
31718
+ 'tnam' TrackName string
31708
31719
  'urat' UserRating undef/
31709
31720
  'uuid' GarminSoftware string
31710
31721
  GarminModel no
@@ -32120,6 +32131,7 @@ metadata to WEBP images, but can't yet write to other RIFF-based formats.
32120
32131
  'EXIF' EXIF EXIF
32121
32132
  UnknownEXIF no
32122
32133
  'ICCP' ICC_Profile ICC_Profile
32134
+ 'ID3 ' ID3-2 ID3
32123
32135
  'IDIT' DateTimeOriginal no
32124
32136
  'JUNK' OlympusJunk Olympus AVI
32125
32137
  CasioJunk EXIF
@@ -40185,7 +40197,7 @@ Tags extracted from CAP, PCAP and PCAPNG Packet Capture files.
40185
40197
  0x0bac CustomOption1 no
40186
40198
  0x0bad CustomOption2 no
40187
40199
  0x4bac CustomOption3 no
40188
- 0x4bad CustomOption3 no
40200
+ 0x4bad CustomOption4 no
40189
40201
  'ByteOrder' ByteOrder no
40190
40202
  'IDB-2' DeviceName no
40191
40203
  'IDB-3' Description no
@@ -40197,8 +40209,8 @@ Tags extracted from CAP, PCAP and PCAPNG Packet Capture files.
40197
40209
  'IDB-9' TimeStampResolution no
40198
40210
  'IDB-10' TimeZone no
40199
40211
  'IDB-11' Filter no
40200
- 'IDB-12' OperatingSytem no
40201
- 'IDB-13' FCSLen no
40212
+ 'IDB-12' OperatingSystem no
40213
+ 'IDB-13' FrameCheckSequenceLength no
40202
40214
  'IDB-14' TimeStampOffset no
40203
40215
  'IDB-15' Hardware no
40204
40216
  'IDB-16' TXSpeed no
@@ -40207,7 +40219,7 @@ Tags extracted from CAP, PCAP and PCAPNG Packet Capture files.
40207
40219
  'LinkType' LinkType no
40208
40220
  'PCAPVersion' PCAPVersion no
40209
40221
  'SHB-2' Hardware no
40210
- 'SHB-3' OperatingSytem no
40222
+ 'SHB-3' OperatingSystem no
40211
40223
  'SHB-4' UserApplication no
40212
40224
  'TimeStamp' TimeStamp no
40213
40225
 
@@ -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.26';
33
33
  $RELEASE = '';
34
34
  @ISA = qw(Exporter);
35
35
  %EXPORT_TAGS = (
@@ -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.26
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.26.0')
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exiftool_vendored
3
3
  version: !ruby/object:Gem::Version
4
- version: 13.25.0
4
+ version: 13.26.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew McEachen
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2025-03-19 00:00:00.000000000 Z
12
+ date: 2025-04-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: exiftool