exiftool-vendored.pl 12.45.0 → 12.49.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.
Files changed (51) hide show
  1. package/bin/Changes +84 -3
  2. package/bin/MANIFEST +9 -0
  3. package/bin/META.json +1 -1
  4. package/bin/META.yml +1 -1
  5. package/bin/README +45 -44
  6. package/bin/config_files/acdsee.config +2 -1
  7. package/bin/config_files/frameCount.config +56 -0
  8. package/bin/config_files/tiff_version.config +1 -1
  9. package/bin/exiftool +62 -54
  10. package/bin/lib/Image/ExifTool/Apple.pm +6 -2
  11. package/bin/lib/Image/ExifTool/BuildTagLookup.pm +11 -6
  12. package/bin/lib/Image/ExifTool/Canon.pm +20 -8
  13. package/bin/lib/Image/ExifTool/CanonRaw.pm +8 -1
  14. package/bin/lib/Image/ExifTool/Exif.pm +7 -3
  15. package/bin/lib/Image/ExifTool/FLAC.pm +17 -3
  16. package/bin/lib/Image/ExifTool/FlashPix.pm +4 -2
  17. package/bin/lib/Image/ExifTool/FujiFilm.pm +31 -5
  18. package/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  19. package/bin/lib/Image/ExifTool/ICO.pm +141 -0
  20. package/bin/lib/Image/ExifTool/ID3.pm +5 -5
  21. package/bin/lib/Image/ExifTool/M2TS.pm +55 -8
  22. package/bin/lib/Image/ExifTool/MIE.pm +9 -3
  23. package/bin/lib/Image/ExifTool/MISB.pm +494 -0
  24. package/bin/lib/Image/ExifTool/MakerNotes.pm +3 -1
  25. package/bin/lib/Image/ExifTool/Nikon.pm +34 -31
  26. package/bin/lib/Image/ExifTool/NikonSettings.pm +5 -3
  27. package/bin/lib/Image/ExifTool/Panasonic.pm +21 -4
  28. package/bin/lib/Image/ExifTool/PanasonicRaw.pm +12 -5
  29. package/bin/lib/Image/ExifTool/Photoshop.pm +29 -3
  30. package/bin/lib/Image/ExifTool/QuickTime.pm +34 -5
  31. package/bin/lib/Image/ExifTool/QuickTimeStream.pl +42 -4
  32. package/bin/lib/Image/ExifTool/README +1 -1
  33. package/bin/lib/Image/ExifTool/RIFF.pm +106 -9
  34. package/bin/lib/Image/ExifTool/Samsung.pm +2 -2
  35. package/bin/lib/Image/ExifTool/Sigma.pm +27 -1
  36. package/bin/lib/Image/ExifTool/SigmaRaw.pm +37 -13
  37. package/bin/lib/Image/ExifTool/Sony.pm +7 -3
  38. package/bin/lib/Image/ExifTool/TagLookup.pm +176 -6
  39. package/bin/lib/Image/ExifTool/TagNames.pod +4782 -4486
  40. package/bin/lib/Image/ExifTool/Text.pm +3 -4
  41. package/bin/lib/Image/ExifTool/Torrent.pm +2 -3
  42. package/bin/lib/Image/ExifTool/WriteCanonRaw.pl +7 -0
  43. package/bin/lib/Image/ExifTool/WriteExif.pl +19 -1
  44. package/bin/lib/Image/ExifTool/WriteRIFF.pl +359 -0
  45. package/bin/lib/Image/ExifTool/Writer.pl +6 -2
  46. package/bin/lib/Image/ExifTool/XMP.pm +70 -56
  47. package/bin/lib/Image/ExifTool.pm +75 -15
  48. package/bin/lib/Image/ExifTool.pod +55 -52
  49. package/bin/perl-Image-ExifTool.spec +43 -43
  50. package/bin/pp_build_exe.args +7 -4
  51. package/package.json +2 -2
package/bin/Changes CHANGED
@@ -7,6 +7,87 @@ RSS feed: https://exiftool.org/rss.xml
7
7
  Note: The most recent production release is Version 12.42. (Other versions are
8
8
  considered development releases, and are not uploaded to MetaCPAN.)
9
9
 
10
+ Oct. 19, 2022 - Version 12.49
11
+
12
+ - Added read support for Windows ICO and CUR files
13
+ - Added ability to shift EXIF OffsetTime tags (eg. "-OffsetTime+=+02:00")
14
+ - Added a few new XMP tags and print conversions
15
+ - Added a print conversion for Photoshop:PrintFlags
16
+ - Added a new SonyModelID (thanks LibRaw)
17
+ - Added a few new Canon RF LensType values (thanks Norbert Wasser)
18
+ - Added a new Canon LensType
19
+ - Added a new Nikon LensID
20
+ - Decode 'riff' metadata blocks in FLAC audio files
21
+ - Decode RIFF 'acid' chunk written by Acidizer
22
+ - Enhanced the -d option %f sub-second date/time format code to allow the
23
+ decimal point to be dropped (eg. "%-3f")
24
+ - Patched another Sigma Photo Pro incompatibility when writing X3F images
25
+ (Sigma will also fix this at their end in the next SPP release)
26
+
27
+ Oct. 13, 2022 - Version 12.48
28
+
29
+ - Added support for new XMP-photoshop:CameraProfiles structure
30
+ - Added a new SonyModelID and Sony LensType (thanks Jos Roost)
31
+ - Decode more tags for the Sony ILME-FX30 (thanks Jos Roost)
32
+ - Decode a couple of new Panasonic tags, and improved decoding of others
33
+ - Decode STANAG-4609 MISB timed metadata from M2TS videos
34
+ - Decode a new Nikon tag (thanks Warren Hatch)
35
+ - Decode a couple of new FujiFilm tags (thanks Honza Pokorny)
36
+ - Improved round-off errors when writing QuickTime:MatrixStructure via the
37
+ Composite:Rotation tag
38
+ - Increased Verbose level of "nothing changed" message added in 12.45
39
+ - Removed "Z" (Zulu) designation from some of the MS-DOC date/time tags
40
+ because they most certainly are in local time as written by Word 2011 for
41
+ Mac (while some other MS-DOC and FlashPix date/time tags extracted without a
42
+ "Z" are actually in Zulu time -- a bit of a mess really)
43
+ - Prevent dynamically-generated Unknown tags from being extracted when the
44
+ -validate option is used without -u
45
+ - Patched to better handle irregular timestamps in streaming GPS of NextBase
46
+ dashcam videos
47
+ - Fixed incompatibility with Sigma Photo Pro which could result in Sigma Photo
48
+ Pro corrupting an ExifTool-edited X3F image (the section length in the
49
+ footer needed to include the padding to a 4-byte boundary, thanks Sigma
50
+ engineer Yuki Miyahara)
51
+ - Fixed problem which could prevent ExifTool from reading all GPS points from
52
+ some INNOV M2TS videos
53
+
54
+ Oct. 3, 2022 - Version 12.47
55
+
56
+ - Added a new Nikon LensID (thanks David Puschel)
57
+ - Fixed bug introduced in 12.46 which resulted in a runtime error when -j was
58
+ combined with -b
59
+
60
+ Oct. 1, 2022 - Version 12.46 - "Write WEBP"
61
+
62
+ - Added WEBP write support
63
+ - Added the abilty to write Panasonic GH6 RW2 files
64
+ - Added a new Canon LensType
65
+ - Added a number of new Sigma LensType values (thanks LibRaw)
66
+ - Added support for BigTIFF format code 16 in Apple ProRaw maker notes
67
+ - Added config_files/frameCount.config to extract MP4 FrameCount
68
+ - Added a MIE OriginalImageSize tag
69
+ - Added some extra -validate checks for RIFF-based file formats
70
+ - Extract FrameRate from MP4 tmcd box
71
+ - Decode a new Apple tag (thanks Neal Krawetz)
72
+ - Decode more information from Nikon Z-camera videos
73
+ - Decode streaming GPS from Garmin DriveAssist 51 MP4 videos
74
+ - Changed the names of two FujiFilm FirmwareVersion tags
75
+ - Enhanced WEBP FileType identification to denote Extended WEBP
76
+ - Preserve fractional seconds when extracting Samsung TimeStamp times
77
+ - Patched to avoid reporting Photoshop:ProgressiveScans unless PhotoshopFormat
78
+ is Progressive
79
+ - Patched to test QuickTime UserData tags with default 0x0000 language code to
80
+ see if they contain UTF8 characters, and if so assume UTF8 encoding and
81
+ ignore the CharsetQuickTime setting
82
+ - Patched to avoid potential deep recursion when reading/writing malicious CRW
83
+ images
84
+ - Fixed "Invalid ID3 frame size" problem when reading ID3v2 with an extended
85
+ header (very uncommon, but Audacity uses this)
86
+ - Fixed typo in the name of a new DNG 1.6 tag
87
+ - Fixed some verbose warnings when reading Nikon Z-camera NEF files
88
+ - Fixed decoding of a couple of Nikon Z9 tags for newer firmware versions
89
+ (thanks Warren Hatch)
90
+
10
91
  Sept. 16, 2022 - Version 12.45
11
92
 
12
93
  - Added new IPTC Video Metadata version 1.3 tags
@@ -304,6 +385,8 @@ Aug. 12, 2021 - Version 12.30 (production release)
304
385
  currently can't be created)
305
386
  - Patched to remove 2 GB size limit when reading Photoshop ImageSourceData
306
387
 
388
+ History of older versions (back to Nov. 19, 2003 - Version 1.00) -->
389
+
307
390
  July 9, 2021 - Version 12.29
308
391
 
309
392
  - Added a few new Nikon and Olympus lenses (thanks LibRaw)
@@ -358,8 +441,6 @@ May 20, 2021 - Version 12.26 (production release)
358
441
  - Fixed problem which could cause a "Wide character" warning and generate a
359
442
  corrupted output file when writing some illegal values
360
443
 
361
- History of older versions (back to Nov. 19, 2003 - Version 1.00) -->
362
-
363
444
  Apr. 22, 2021 - Version 12.25
364
445
 
365
446
  - JPEG XL support is now official
@@ -675,7 +756,7 @@ Aug. 10, 2020 - Version 12.04
675
756
  - Moved new QuckTime ItemList tags added in version 12.02 to the proper group
676
757
  (they were incorrectly added to the Keys group)
677
758
  - Improved QuickTime -v3 output to show default language codes
678
- - Patched -lang option to work for the values of somet tags with coded
759
+ - Patched -lang option to work for the values of some tags with coded
679
760
  translations
680
761
  - Patched the format of a number of QuickTime tags when writing for improved
681
762
  compatibility with iTunes and AtomicParsley
package/bin/MANIFEST CHANGED
@@ -23,6 +23,7 @@ config_files/cuepointlist.config
23
23
  config_files/depthmap.config
24
24
  config_files/example.config
25
25
  config_files/fotoware.config
26
+ config_files/frameCount.config
26
27
  config_files/gps2utm.config
27
28
  config_files/nksc.config
28
29
  config_files/photoshop_paths.config
@@ -84,6 +85,7 @@ html/TagNames/H264.html
84
85
  html/TagNames/HP.html
85
86
  html/TagNames/HTML.html
86
87
  html/TagNames/ICC_Profile.html
88
+ html/TagNames/ICO.html
87
89
  html/TagNames/ID3.html
88
90
  html/TagNames/IPTC.html
89
91
  html/TagNames/ISO.html
@@ -102,6 +104,7 @@ html/TagNames/Lytro.html
102
104
  html/TagNames/M2TS.html
103
105
  html/TagNames/MIE.html
104
106
  html/TagNames/MIFF.html
107
+ html/TagNames/MISB.html
105
108
  html/TagNames/MNG.html
106
109
  html/TagNames/MOI.html
107
110
  html/TagNames/MPC.html
@@ -291,6 +294,7 @@ lib/Image/ExifTool/HP.pm
291
294
  lib/Image/ExifTool/HTML.pm
292
295
  lib/Image/ExifTool/HtmlDump.pm
293
296
  lib/Image/ExifTool/ICC_Profile.pm
297
+ lib/Image/ExifTool/ICO.pm
294
298
  lib/Image/ExifTool/ID3.pm
295
299
  lib/Image/ExifTool/IPTC.pm
296
300
  lib/Image/ExifTool/ISO.pm
@@ -329,6 +333,7 @@ lib/Image/ExifTool/M2TS.pm
329
333
  lib/Image/ExifTool/MIE.pm
330
334
  lib/Image/ExifTool/MIEUnits.pod
331
335
  lib/Image/ExifTool/MIFF.pm
336
+ lib/Image/ExifTool/MISB.pm
332
337
  lib/Image/ExifTool/MNG.pm
333
338
  lib/Image/ExifTool/MOI.pm
334
339
  lib/Image/ExifTool/MPC.pm
@@ -417,6 +422,7 @@ lib/Image/ExifTool/WritePNG.pl
417
422
  lib/Image/ExifTool/WritePhotoshop.pl
418
423
  lib/Image/ExifTool/WritePostScript.pl
419
424
  lib/Image/ExifTool/WriteQuickTime.pl
425
+ lib/Image/ExifTool/WriteRIFF.pl
420
426
  lib/Image/ExifTool/WriteXMP.pl
421
427
  lib/Image/ExifTool/Writer.pl
422
428
  lib/Image/ExifTool/XMP.pm
@@ -792,6 +798,9 @@ t/RIFF.t
792
798
  t/RIFF_2.out
793
799
  t/RIFF_3.out
794
800
  t/RIFF_4.out
801
+ t/RIFF_5.out
802
+ t/RIFF_6.out
803
+ t/RIFF_7.out
795
804
  t/RTF.t
796
805
  t/RTF_2.out
797
806
  t/Radiance.t
package/bin/META.json CHANGED
@@ -47,6 +47,6 @@
47
47
  }
48
48
  },
49
49
  "release_status" : "stable",
50
- "version" : "12.45",
50
+ "version" : "12.49",
51
51
  "x_serialization_backend" : "JSON::PP version 4.02"
52
52
  }
package/bin/META.yml CHANGED
@@ -28,5 +28,5 @@ recommends:
28
28
  Time::HiRes: 0
29
29
  requires:
30
30
  perl: 5.004
31
- version: 12.45
31
+ version: 12.49
32
32
  x_serialization_backend: 'JSON::PP version 4.02'
package/bin/README CHANGED
@@ -14,48 +14,48 @@ supported by ExifTool (r = read, w = write, c = create):
14
14
 
15
15
  File Types
16
16
  ------------+-------------+-------------+-------------+------------
17
- 360 r/w | DR4 r/w/c | JNG r/w | O r | RAW r/w
18
- 3FR r | DSS r | JP2 r/w | ODP r | RIFF r
19
- 3G2 r/w | DV r | JPEG r/w | ODS r | RSRC r
20
- 3GP r/w | DVB r/w | JSON r | ODT r | RTF r
21
- A r | DVR-MS r | JXL r | OFR r | RW2 r/w
22
- AA r | DYLIB r | K25 r | OGG r | RWL r/w
23
- AAE r | EIP r | KDC r | OGV r | RWZ r
24
- AAX r/w | EPS r/w | KEY r | ONP r | RM r
25
- ACR r | EPUB r | LA r | OPUS r | SEQ r
26
- AFM r | ERF r/w | LFP r | ORF r/w | SKETCH r
27
- AI r/w | EXE r | LIF r | ORI r/w | SO r
28
- AIFF r | EXIF r/w/c | LNK r | OTF r | SR2 r/w
29
- APE r | EXR r | LRV r/w | PAC r | SRF r
30
- ARQ r/w | EXV r/w/c | M2TS r | PAGES r | SRW r/w
31
- ARW r/w | F4A/V r/w | M4A/V r/w | PBM r/w | SVG r
32
- ASF r | FFF r/w | MACOS r | PCD r | SWF r
33
- AVI r | FITS r | MAX r | PCX r | THM r/w
34
- AVIF r/w | FLA r | MEF r/w | PDB r | TIFF r/w
35
- AZW r | FLAC r | MIE r/w/ | PDF r/w | TORRENT r
36
- BMP r | FLIF r/w | MIFF r c | PEF r/w | TTC r
37
- BPG r | FLV r | MKA r | PFA r | TTF r
38
- BTF r | FPF r | MKS r | PFB r | TXT r
39
- CHM r | FPX r | MKV r | PFM r | VCF r
40
- COS r | GIF r/w | MNG r/w | PGF r | VRD r/w/c
41
- CR2 r/w | GPR r/w | MOBI r | PGM r/w | VSD r
42
- CR3 r/w | GZ r | MODD r | PLIST r | WAV r
43
- CRM r/w | HDP r/w | MOI r | PICT r | WDP r/w
44
- CRW r/w | HDR r | MOS r/w | PMP r | WEBP r
45
- CS1 r/w | HEIC r/w | MOV r/w | PNG r/w | WEBM r
46
- CSV r | HEIF r/w | MP3 r | PPM r/w | WMA r
47
- CZI r | HTML r | MP4 r/w | PPT r | WMV r
48
- DCM r | ICC r/w/c | MPC r | PPTX r | WTV r
49
- DCP r/w | ICS r | MPG r | PS r/w | WV r
50
- DCR r | IDML r | MPO r/w | PSB r/w | X3F r/w
51
- DFONT r | IIQ r/w | MQV r/w | PSD r/w | XCF r
52
- DIVX r | IND r/w | MRC r | PSP r | XLS r
53
- DJVU r | INSP r/w | MRW r/w | QTIF r/w | XLSX r
54
- DLL r | INSV r | MXF r | R3D r | XMP r/w/c
55
- DNG r/w | INX r | NEF r/w | RA r | ZIP r
56
- DOC r | ISO r | NKSC r/w | RAF r/w |
57
- DOCX r | ITC r | NRW r/w | RAM r |
58
- DPX r | J2C r | NUMBERS r | RAR r |
17
+ 360 r/w | DPX r | ITC r | NRW r/w | RAM r
18
+ 3FR r | DR4 r/w/c | J2C r | NUMBERS r | RAR r
19
+ 3G2 r/w | DSS r | JNG r/w | O r | RAW r/w
20
+ 3GP r/w | DV r | JP2 r/w | ODP r | RIFF r
21
+ A r | DVB r/w | JPEG r/w | ODS r | RSRC r
22
+ AA r | DVR-MS r | JSON r | ODT r | RTF r
23
+ AAE r | DYLIB r | JXL r | OFR r | RW2 r/w
24
+ AAX r/w | EIP r | K25 r | OGG r | RWL r/w
25
+ ACR r | EPS r/w | KDC r | OGV r | RWZ r
26
+ AFM r | EPUB r | KEY r | ONP r | RM r
27
+ AI r/w | ERF r/w | LA r | OPUS r | SEQ r
28
+ AIFF r | EXE r | LFP r | ORF r/w | SKETCH r
29
+ APE r | EXIF r/w/c | LIF r | ORI r/w | SO r
30
+ ARQ r/w | EXR r | LNK r | OTF r | SR2 r/w
31
+ ARW r/w | EXV r/w/c | LRV r/w | PAC r | SRF r
32
+ ASF r | F4A/V r/w | M2TS r | PAGES r | SRW r/w
33
+ AVI r | FFF r/w | M4A/V r/w | PBM r/w | SVG r
34
+ AVIF r/w | FITS r | MACOS r | PCD r | SWF r
35
+ AZW r | FLA r | MAX r | PCX r | THM r/w
36
+ BMP r | FLAC r | MEF r/w | PDB r | TIFF r/w
37
+ BPG r | FLIF r/w | MIE r/w/c | PDF r/w | TORRENT r
38
+ BTF r | FLV r | MIFF r | PEF r/w | TTC r
39
+ CHM r | FPF r | MKA r | PFA r | TTF r
40
+ COS r | FPX r | MKS r | PFB r | TXT r
41
+ CR2 r/w | GIF r/w | MKV r | PFM r | VCF r
42
+ CR3 r/w | GPR r/w | MNG r/w | PGF r | VRD r/w/c
43
+ CRM r/w | GZ r | MOBI r | PGM r/w | VSD r
44
+ CRW r/w | HDP r/w | MODD r | PLIST r | WAV r
45
+ CS1 r/w | HDR r | MOI r | PICT r | WDP r/w
46
+ CSV r | HEIC r/w | MOS r/w | PMP r | WEBP r/w
47
+ CUR r | HEIF r/w | MOV r/w | PNG r/w | WEBM r
48
+ CZI r | HTML r | MP3 r | PPM r/w | WMA r
49
+ DCM r | ICC r/w/c | MP4 r/w | PPT r | WMV r
50
+ DCP r/w | ICO r | MPC r | PPTX r | WTV r
51
+ DCR r | ICS r | MPG r | PS r/w | WV r
52
+ DFONT r | IDML r | MPO r/w | PSB r/w | X3F r/w
53
+ DIVX r | IIQ r/w | MQV r/w | PSD r/w | XCF r
54
+ DJVU r | IND r/w | MRC r | PSP r | XLS r
55
+ DLL r | INSP r/w | MRW r/w | QTIF r/w | XLSX r
56
+ DNG r/w | INSV r | MXF r | R3D r | XMP r/w/c
57
+ DOC r | INX r | NEF r/w | RA r | ZIP r
58
+ DOCX r | ISO r | NKSC r/w | RAF r/w |
59
59
 
60
60
  Meta Information
61
61
  ----------------------+----------------------+---------------------
@@ -107,8 +107,8 @@ your home directory, then you would type the following commands in a
107
107
  terminal window to extract and run ExifTool:
108
108
 
109
109
  cd ~/Desktop
110
- gzip -dc Image-ExifTool-12.45.tar.gz | tar -xf -
111
- cd Image-ExifTool-12.45
110
+ gzip -dc Image-ExifTool-12.49.tar.gz | tar -xf -
111
+ cd Image-ExifTool-12.49
112
112
  ./exiftool t/images/ExifTool.jpg
113
113
 
114
114
  Note: These commands extract meta information from one of the test images.
@@ -199,6 +199,7 @@ distribution package:
199
199
  depthmap.config - Extract Google DepthMap images
200
200
  example.config - General example showing config features
201
201
  fotoware.config - Definitions for writing Fotoware XMP tags
202
+ frameCount.config - Extract FrameCount from MP4 videos
202
203
  gps2utm.config - Generate UTM coordinate tags from GPS info
203
204
  gpsdatetime.config - Make GPSDateTime from CreateDate+SampleTime
204
205
  nksc.config - Decode tags in Nikon ViewNX NKSC files
@@ -63,6 +63,7 @@
63
63
  # from original names to new names, for example
64
64
  # "RegionInfoACDSeeAppliedToDimensions*" -> "ACDSeeRegionAppliedToDimensions*"
65
65
  # "RegionInfoACDSeeRegionList* -> "ACDSeeRegion*"
66
+ # 2022/10/03 - PH Set group name properly to XMP-acdsee-rs
66
67
  #------------------------------------------------------------------------------
67
68
  use Data::Dumper;
68
69
 
@@ -211,7 +212,7 @@ my %sACDSeeRegionStruct = (
211
212
  );
212
213
 
213
214
  %Image::ExifTool::UserDefined::ACDSeeRegions = (
214
- GROUPS => { 0 => 'XMP', 1 => 'XMP-acdsee', 2 => 'Image' },
215
+ GROUPS => { 0 => 'XMP', 1 => 'XMP-acdsee-rs', 2 => 'Image' },
215
216
  NAMESPACE => { 'acdsee-rs' => 'http://ns.acdsee.com/regions/' },
216
217
  WRITABLE => 'string', # (default to string-type tags)
217
218
  Regions => {
@@ -0,0 +1,56 @@
1
+ #------------------------------------------------------------------------------
2
+ # File: frameCount.config
3
+ #
4
+ # Description: ExifTool config file to extract MP4 video FrameCount
5
+ #
6
+ # Usage: exiftool -config frameCount.config -frameCount FILE
7
+ #
8
+ # Requires: ExifTool version 7.99 or later
9
+ #
10
+ # Revisions: 2022-09-22 - P. Harvey Created
11
+ #
12
+ # Notes: Enables Unknown option to extract the required SampleSizes atom
13
+ #------------------------------------------------------------------------------
14
+
15
+ %Image::ExifTool::UserDefined = (
16
+ 'Image::ExifTool::Composite' => {
17
+ 'FrameCount' => {
18
+ Require => {
19
+ 0 => 'HandlerType',
20
+ },
21
+ Desire => {
22
+ 1 => 'SampleSizes',
23
+ 2 => 'CompactSampleSizes',
24
+ },
25
+ Groups => { 2 => 'Video' },
26
+ ValueConv => q{
27
+ my ($i, $tag, $ptr);
28
+ my $key = 'HandlerType';
29
+ # find video track number
30
+ for ($i=1; defined $val[0]; ++$i) {
31
+ last if $val[0] eq 'Video Track';
32
+ $key = "HandlerType ($i)";
33
+ $val[0] = $self->GetValue($key);
34
+ }
35
+ my $trk = $self->GetGroup($key, 1);
36
+ # search for SampleSizes or CompactSampleSizes for this track
37
+ foreach $tag ('SampleSizes', 'CompactSampleSizes') {
38
+ $key = $tag;
39
+ for ($i=1; ; ++$i) {
40
+ $ptr = $self->GetValue($key);
41
+ last unless $ptr;
42
+ last if $self->GetGroup($key, 1) eq $trk;
43
+ $key = "$tag ($i)";
44
+ }
45
+ last if $ptr;
46
+ }
47
+ return undef unless $ptr;
48
+ return unpack('x8N', $$ptr);
49
+ },
50
+ },
51
+ },
52
+ );
53
+
54
+ %Image::ExifTool::UserDefined::Options = (
55
+ Unknown => 1, # (otherwise SampleSizes won't be extracted)
56
+ );
@@ -113,7 +113,7 @@ sub has_defined {
113
113
  ],
114
114
  );
115
115
 
116
- # Must set undocumented SaveFormat option to provide access to the tag format types
116
+ # Must set SaveFormat option to provide access to the tag format types
117
117
  %Image::ExifTool::UserDefined::Options = (
118
118
  SaveFormat => 1,
119
119
  );
package/bin/exiftool CHANGED
@@ -11,7 +11,7 @@ use strict;
11
11
  use warnings;
12
12
  require 5.004;
13
13
 
14
- my $version = '12.45';
14
+ my $version = '12.49';
15
15
 
16
16
  # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
17
17
  BEGIN {
@@ -3254,7 +3254,7 @@ sub EncodeXML($)
3254
3254
  {
3255
3255
  my $strPt = shift;
3256
3256
  if ($$strPt =~ /[\0-\x08\x0b\x0c\x0e-\x1f]/ or
3257
- (not $altEnc and Image::ExifTool::XMP::IsUTF8($strPt) < 0))
3257
+ (not $altEnc and Image::ExifTool::IsUTF8($strPt) < 0))
3258
3258
  {
3259
3259
  # encode binary data and non-UTF8 with special characters as base64
3260
3260
  $$strPt = Image::ExifTool::XMP::EncodeBase64($$strPt);
@@ -3318,7 +3318,7 @@ sub EscapeJSON($;$)
3318
3318
  return $str if $str =~ /^-?(\d|[1-9]\d{1,14})(\.\d{1,16})?(e[-+]?\d{1,3})?$/i;
3319
3319
  }
3320
3320
  # encode JSON string in base64 if necessary
3321
- if ($json < 2 and defined $binaryOutput and Image::ExifTool::XMP::IsUTF8(\$str) < 0) {
3321
+ if ($json < 2 and defined $binaryOutput and Image::ExifTool::IsUTF8(\$str) < 0) {
3322
3322
  return '"base64:' . Image::ExifTool::XMP::EncodeBase64($str, 1) . '"';
3323
3323
  }
3324
3324
  # escape special characters
@@ -3394,7 +3394,7 @@ sub FormatCSV($)
3394
3394
  my $val = shift;
3395
3395
  # check for valid encoding if the Charset option was used
3396
3396
  if ($setCharset and ($val =~ /[^\x09\x0a\x0d\x20-\x7e\x80-\xff]/ or
3397
- ($setCharset eq 'UTF8' and Image::ExifTool::XMP::IsUTF8(\$val) < 0)))
3397
+ ($setCharset eq 'UTF8' and Image::ExifTool::IsUTF8(\$val) < 0)))
3398
3398
  {
3399
3399
  $val = 'base64:' . Image::ExifTool::XMP::EncodeBase64($val, 1);
3400
3400
  }
@@ -3481,7 +3481,7 @@ sub ConvertBinary($)
3481
3481
  $obj = $$obj;
3482
3482
  # encode in base64 if necessary (0xf7 allows for up to 21-bit UTF-8 code space)
3483
3483
  if ($json == 1 and ($obj =~ /[^\x09\x0a\x0d\x20-\x7e\x80-\xf7]/ or
3484
- Image::ExifTool::XMP::IsUTF8(\$obj) < 0))
3484
+ Image::ExifTool::IsUTF8(\$obj) < 0))
3485
3485
  {
3486
3486
  $obj = 'base64:' . Image::ExifTool::XMP::EncodeBase64($obj, 1);
3487
3487
  }
@@ -3615,8 +3615,7 @@ sub CheckUTF8($$)
3615
3615
  my ($file, $enc) = @_;
3616
3616
  my $isUTF8 = 0;
3617
3617
  if ($file =~ /[\x80-\xff]/) {
3618
- require Image::ExifTool::XMP;
3619
- $isUTF8 = Image::ExifTool::XMP::IsUTF8(\$file);
3618
+ $isUTF8 = Image::ExifTool::IsUTF8(\$file);
3620
3619
  if ($isUTF8 < 0) {
3621
3620
  if ($enc) {
3622
3621
  Warn("Invalid filename encoding for $file\n");
@@ -4529,48 +4528,48 @@ supported by ExifTool (r = read, w = write, c = create):
4529
4528
 
4530
4529
  File Types
4531
4530
  ------------+-------------+-------------+-------------+------------
4532
- 360 r/w | DR4 r/w/c | JNG r/w | O r | RAW r/w
4533
- 3FR r | DSS r | JP2 r/w | ODP r | RIFF r
4534
- 3G2 r/w | DV r | JPEG r/w | ODS r | RSRC r
4535
- 3GP r/w | DVB r/w | JSON r | ODT r | RTF r
4536
- A r | DVR-MS r | JXL r | OFR r | RW2 r/w
4537
- AA r | DYLIB r | K25 r | OGG r | RWL r/w
4538
- AAE r | EIP r | KDC r | OGV r | RWZ r
4539
- AAX r/w | EPS r/w | KEY r | ONP r | RM r
4540
- ACR r | EPUB r | LA r | OPUS r | SEQ r
4541
- AFM r | ERF r/w | LFP r | ORF r/w | SKETCH r
4542
- AI r/w | EXE r | LIF r | ORI r/w | SO r
4543
- AIFF r | EXIF r/w/c | LNK r | OTF r | SR2 r/w
4544
- APE r | EXR r | LRV r/w | PAC r | SRF r
4545
- ARQ r/w | EXV r/w/c | M2TS r | PAGES r | SRW r/w
4546
- ARW r/w | F4A/V r/w | M4A/V r/w | PBM r/w | SVG r
4547
- ASF r | FFF r/w | MACOS r | PCD r | SWF r
4548
- AVI r | FITS r | MAX r | PCX r | THM r/w
4549
- AVIF r/w | FLA r | MEF r/w | PDB r | TIFF r/w
4550
- AZW r | FLAC r | MIE r/w/ | PDF r/w | TORRENT r
4551
- BMP r | FLIF r/w | MIFF r c | PEF r/w | TTC r
4552
- BPG r | FLV r | MKA r | PFA r | TTF r
4553
- BTF r | FPF r | MKS r | PFB r | TXT r
4554
- CHM r | FPX r | MKV r | PFM r | VCF r
4555
- COS r | GIF r/w | MNG r/w | PGF r | VRD r/w/c
4556
- CR2 r/w | GPR r/w | MOBI r | PGM r/w | VSD r
4557
- CR3 r/w | GZ r | MODD r | PLIST r | WAV r
4558
- CRM r/w | HDP r/w | MOI r | PICT r | WDP r/w
4559
- CRW r/w | HDR r | MOS r/w | PMP r | WEBP r
4560
- CS1 r/w | HEIC r/w | MOV r/w | PNG r/w | WEBM r
4561
- CSV r | HEIF r/w | MP3 r | PPM r/w | WMA r
4562
- CZI r | HTML r | MP4 r/w | PPT r | WMV r
4563
- DCM r | ICC r/w/c | MPC r | PPTX r | WTV r
4564
- DCP r/w | ICS r | MPG r | PS r/w | WV r
4565
- DCR r | IDML r | MPO r/w | PSB r/w | X3F r/w
4566
- DFONT r | IIQ r/w | MQV r/w | PSD r/w | XCF r
4567
- DIVX r | IND r/w | MRC r | PSP r | XLS r
4568
- DJVU r | INSP r/w | MRW r/w | QTIF r/w | XLSX r
4569
- DLL r | INSV r | MXF r | R3D r | XMP r/w/c
4570
- DNG r/w | INX r | NEF r/w | RA r | ZIP r
4571
- DOC r | ISO r | NKSC r/w | RAF r/w |
4572
- DOCX r | ITC r | NRW r/w | RAM r |
4573
- DPX r | J2C r | NUMBERS r | RAR r |
4531
+ 360 r/w | DPX r | ITC r | NRW r/w | RAM r
4532
+ 3FR r | DR4 r/w/c | J2C r | NUMBERS r | RAR r
4533
+ 3G2 r/w | DSS r | JNG r/w | O r | RAW r/w
4534
+ 3GP r/w | DV r | JP2 r/w | ODP r | RIFF r
4535
+ A r | DVB r/w | JPEG r/w | ODS r | RSRC r
4536
+ AA r | DVR-MS r | JSON r | ODT r | RTF r
4537
+ AAE r | DYLIB r | JXL r | OFR r | RW2 r/w
4538
+ AAX r/w | EIP r | K25 r | OGG r | RWL r/w
4539
+ ACR r | EPS r/w | KDC r | OGV r | RWZ r
4540
+ AFM r | EPUB r | KEY r | ONP r | RM r
4541
+ AI r/w | ERF r/w | LA r | OPUS r | SEQ r
4542
+ AIFF r | EXE r | LFP r | ORF r/w | SKETCH r
4543
+ APE r | EXIF r/w/c | LIF r | ORI r/w | SO r
4544
+ ARQ r/w | EXR r | LNK r | OTF r | SR2 r/w
4545
+ ARW r/w | EXV r/w/c | LRV r/w | PAC r | SRF r
4546
+ ASF r | F4A/V r/w | M2TS r | PAGES r | SRW r/w
4547
+ AVI r | FFF r/w | M4A/V r/w | PBM r/w | SVG r
4548
+ AVIF r/w | FITS r | MACOS r | PCD r | SWF r
4549
+ AZW r | FLA r | MAX r | PCX r | THM r/w
4550
+ BMP r | FLAC r | MEF r/w | PDB r | TIFF r/w
4551
+ BPG r | FLIF r/w | MIE r/w/c | PDF r/w | TORRENT r
4552
+ BTF r | FLV r | MIFF r | PEF r/w | TTC r
4553
+ CHM r | FPF r | MKA r | PFA r | TTF r
4554
+ COS r | FPX r | MKS r | PFB r | TXT r
4555
+ CR2 r/w | GIF r/w | MKV r | PFM r | VCF r
4556
+ CR3 r/w | GPR r/w | MNG r/w | PGF r | VRD r/w/c
4557
+ CRM r/w | GZ r | MOBI r | PGM r/w | VSD r
4558
+ CRW r/w | HDP r/w | MODD r | PLIST r | WAV r
4559
+ CS1 r/w | HDR r | MOI r | PICT r | WDP r/w
4560
+ CSV r | HEIC r/w | MOS r/w | PMP r | WEBP r/w
4561
+ CUR r | HEIF r/w | MOV r/w | PNG r/w | WEBM r
4562
+ CZI r | HTML r | MP3 r | PPM r/w | WMA r
4563
+ DCM r | ICC r/w/c | MP4 r/w | PPT r | WMV r
4564
+ DCP r/w | ICO r | MPC r | PPTX r | WTV r
4565
+ DCR r | ICS r | MPG r | PS r/w | WV r
4566
+ DFONT r | IDML r | MPO r/w | PSB r/w | X3F r/w
4567
+ DIVX r | IIQ r/w | MQV r/w | PSD r/w | XCF r
4568
+ DJVU r | IND r/w | MRC r | PSP r | XLS r
4569
+ DLL r | INSP r/w | MRW r/w | QTIF r/w | XLSX r
4570
+ DNG r/w | INSV r | MXF r | R3D r | XMP r/w/c
4571
+ DOC r | INX r | NEF r/w | RA r | ZIP r
4572
+ DOCX r | ISO r | NKSC r/w | RAF r/w |
4574
4573
 
4575
4574
  Meta Information
4576
4575
  ----------------------+----------------------+---------------------
@@ -5059,8 +5058,8 @@ are in the default output. By default, list items are separated by a
5059
5058
  newline when extracted with the B<-b> option, but this may be changed (see
5060
5059
  the B<-sep> option for details). May be combined with B<-j>, B<-php> or
5061
5060
  B<-X> to extract binary data in JSON, PHP or XML format, but note that
5062
- "Unsafe" tags are not extracted as binary unless they are specified explicitly or
5063
- the API RequestAll option is set to 3 or higher.
5061
+ "Unsafe" tags are not extracted as binary unless they are specified
5062
+ explicitly or the API RequestAll option is set to 3 or higher.
5064
5063
 
5065
5064
  With a leading double dash (B<--b> or B<--binary>), tags which contain
5066
5065
  binary data are suppressed in the output when reading.
@@ -5225,7 +5224,8 @@ option has no effect on date-only or time-only tags and ignores timezone
5225
5224
  information if present. ExifTool adds a C<%f> format code to represent
5226
5225
  fractional seconds, and supports an optional width to specify the number of
5227
5226
  digits after the decimal point (eg. C<%3f> would give something like
5228
- C<.437>). Only one B<-d> option may be used per command. Requires
5227
+ C<.437>), and a minus sign to drop the decimal point (eg. C<%-3f> would give
5228
+ C<437>). Only one B<-d> option may be used per command. Requires
5229
5229
  POSIX::strptime or Time::Piece for the inversion conversion when writing.
5230
5230
 
5231
5231
  =item B<-D> (B<-decimal>)
@@ -5470,7 +5470,7 @@ with this command:
5470
5470
 
5471
5471
  produces output like this:
5472
5472
 
5473
- -- Generated by ExifTool 12.45 --
5473
+ -- Generated by ExifTool 12.49 --
5474
5474
  File: a.jpg - 2003:10:31 15:44:19
5475
5475
  (f/5.6, 1/60s, ISO 100)
5476
5476
  File: b.jpg - 2006:05:23 11:57:38
@@ -5492,7 +5492,12 @@ warnings and leave the missing values empty. Alternatively, B<-q -q> may be
5492
5492
  used to simply suppress the warning messages.
5493
5493
 
5494
5494
  The L</Advanced formatting feature> may be used to modify the values of
5495
- individual tags with the B<-p> option.
5495
+ individual tags within the B<-p> option string.
5496
+
5497
+ Note that the API RequestTags option is automatically set for all tags used
5498
+ in the I<FMTFILE> or I<STR>. This allows all other tags to be ignored using
5499
+ B<-API IgnoreTags=all>, resulting in reduced memory usage and increased
5500
+ speed.
5496
5501
 
5497
5502
  =item B<-php>
5498
5503
 
@@ -6003,6 +6008,9 @@ the values of duplicate tags are accessible only by specifying a group name
6003
6008
  command when B<-execute> was used, and may be used like any other tag in the
6004
6009
  condition (ie. "$OK").
6005
6010
 
6011
+ 7) The API RequestTags option is automatically set for all tags used in the
6012
+ B<-if> condition.
6013
+
6006
6014
  =item B<-m> (B<-ignoreMinorErrors>)
6007
6015
 
6008
6016
  Ignore minor errors and warnings. This enables writing to files with minor
@@ -15,7 +15,7 @@ use vars qw($VERSION);
15
15
  use Image::ExifTool::Exif;
16
16
  use Image::ExifTool::PLIST;
17
17
 
18
- $VERSION = '1.06';
18
+ $VERSION = '1.07';
19
19
 
20
20
  # Apple iPhone metadata (ref PH)
21
21
  %Image::ExifTool::Apple::Main = (
@@ -80,7 +80,7 @@ $VERSION = '1.06';
80
80
  # 0x000e - int32s: 0,1,4,12 (Orientation? 0=landscape? 4=portrait? ref 1)
81
81
  # 0x000f - int32s: 2,3
82
82
  # 0x0010 - int32s: 1
83
- 0x0011 => {
83
+ 0x0011 => { # (if defined, there is a live photo associated with the video, #forum13565)
84
84
  Name => 'MediaGroupUUID', #NealKrawetz private communication
85
85
  # (changed in 12.19 from Name => 'ContentIdentifier', #forum8750)
86
86
  Writable => 'string',
@@ -91,6 +91,10 @@ $VERSION = '1.06';
91
91
  Writable => 'string',
92
92
  },
93
93
  # 0x0016 - string[29]: "AXZ6pMTOh2L+acSh4Kg630XCScoO\0"
94
+ 0x0017 => { #forum13565 (only valid if MediaGroupUUID exists)
95
+ Name => 'LivePhotoVideoIndex',
96
+ Notes => 'divide by RunTimeScale to get time in seconds',
97
+ },
94
98
  # 0x0017 - int32s: 0,8192
95
99
  # 0x0019 - int32s: 0,2,128
96
100
  # 0x001a - string[6]: "q825s\0"