exiftool_vendored 12.16.0 → 12.25.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +137 -1
  3. data/bin/MANIFEST +12 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +44 -43
  7. data/bin/config_files/acdsee.config +193 -6
  8. data/bin/config_files/cuepointlist.config +70 -0
  9. data/bin/config_files/example.config +1 -8
  10. data/bin/exiftool +139 -98
  11. data/bin/fmt_files/gpx.fmt +1 -1
  12. data/bin/fmt_files/gpx_wpt.fmt +1 -1
  13. data/bin/fmt_files/kml.fmt +1 -1
  14. data/bin/fmt_files/kml_track.fmt +1 -1
  15. data/bin/lib/Image/ExifTool.pm +158 -49
  16. data/bin/lib/Image/ExifTool.pod +94 -75
  17. data/bin/lib/Image/ExifTool/Apple.pm +3 -2
  18. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +25 -14
  19. data/bin/lib/Image/ExifTool/Canon.pm +28 -3
  20. data/bin/lib/Image/ExifTool/CanonCustom.pm +19 -1
  21. data/bin/lib/Image/ExifTool/DJI.pm +6 -6
  22. data/bin/lib/Image/ExifTool/DjVu.pm +6 -5
  23. data/bin/lib/Image/ExifTool/Exif.pm +50 -22
  24. data/bin/lib/Image/ExifTool/FITS.pm +13 -2
  25. data/bin/lib/Image/ExifTool/FujiFilm.pm +19 -8
  26. data/bin/lib/Image/ExifTool/GPS.pm +24 -13
  27. data/bin/lib/Image/ExifTool/H264.pm +20 -5
  28. data/bin/lib/Image/ExifTool/ICC_Profile.pm +2 -2
  29. data/bin/lib/Image/ExifTool/JPEG.pm +6 -2
  30. data/bin/lib/Image/ExifTool/JSON.pm +24 -3
  31. data/bin/lib/Image/ExifTool/Jpeg2000.pm +361 -16
  32. data/bin/lib/Image/ExifTool/M2TS.pm +40 -4
  33. data/bin/lib/Image/ExifTool/MIE.pm +2 -2
  34. data/bin/lib/Image/ExifTool/MRC.pm +341 -0
  35. data/bin/lib/Image/ExifTool/MWG.pm +3 -3
  36. data/bin/lib/Image/ExifTool/MXF.pm +1 -1
  37. data/bin/lib/Image/ExifTool/MacOS.pm +1 -1
  38. data/bin/lib/Image/ExifTool/Microsoft.pm +298 -82
  39. data/bin/lib/Image/ExifTool/Nikon.pm +5 -5
  40. data/bin/lib/Image/ExifTool/NikonSettings.pm +25 -16
  41. data/bin/lib/Image/ExifTool/Olympus.pm +2 -2
  42. data/bin/lib/Image/ExifTool/PNG.pm +2 -2
  43. data/bin/lib/Image/ExifTool/Panasonic.pm +14 -1
  44. data/bin/lib/Image/ExifTool/PhaseOne.pm +4 -3
  45. data/bin/lib/Image/ExifTool/QuickTime.pm +148 -68
  46. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +94 -34
  47. data/bin/lib/Image/ExifTool/README +5 -4
  48. data/bin/lib/Image/ExifTool/RIFF.pm +84 -12
  49. data/bin/lib/Image/ExifTool/Samsung.pm +2 -1
  50. data/bin/lib/Image/ExifTool/Shortcuts.pm +9 -0
  51. data/bin/lib/Image/ExifTool/Sony.pm +157 -49
  52. data/bin/lib/Image/ExifTool/TagInfoXML.pm +1 -0
  53. data/bin/lib/Image/ExifTool/TagLookup.pm +4079 -3987
  54. data/bin/lib/Image/ExifTool/TagNames.pod +642 -273
  55. data/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
  56. data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -0
  57. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +44 -17
  58. data/bin/lib/Image/ExifTool/WriteXMP.pl +15 -8
  59. data/bin/lib/Image/ExifTool/Writer.pl +50 -14
  60. data/bin/lib/Image/ExifTool/XMP.pm +50 -11
  61. data/bin/perl-Image-ExifTool.spec +42 -42
  62. data/lib/exiftool_vendored/version.rb +1 -1
  63. metadata +52 -12
@@ -65,47 +65,47 @@ supported by ExifTool (r = read, w = write, c = create):
65
65
 
66
66
  File Types
67
67
  ------------+-------------+-------------+-------------+------------
68
- 360 r/w | DPX r | ITC r | ODP r | RIFF r
69
- 3FR r | DR4 r/w/c | J2C r | ODS r | RSRC r
70
- 3G2 r/w | DSS r | JNG r/w | ODT r | RTF r
71
- 3GP r/w | DV r | JP2 r/w | OFR r | RW2 r/w
72
- A r | DVB r/w | JPEG r/w | OGG r | RWL r/w
73
- AA r | DVR-MS r | JSON r | OGV r | RWZ r
74
- AAE r | DYLIB r | K25 r | ONP r | RM r
75
- AAX r/w | EIP r | KDC r | OPUS r | SEQ r
76
- ACR r | EPS r/w | KEY r | ORF r/w | SKETCH r
77
- AFM r | EPUB r | LA r | OTF r | SO r
78
- AI r/w | ERF r/w | LFP r | PAC r | SR2 r/w
79
- AIFF r | EXE r | LNK r | PAGES r | SRF r
80
- APE r | EXIF r/w/c | LRV r/w | PBM r/w | SRW r/w
81
- ARQ r/w | EXR r | M2TS r | PCD r | SVG r
82
- ARW r/w | EXV r/w/c | M4A/V r/w | PCX r | SWF r
83
- ASF r | F4A/V r/w | MACOS r | PDB r | THM r/w
84
- AVI r | FFF r/w | MAX r | PDF r/w | TIFF r/w
85
- AVIF r/w | FITS r | MEF r/w | PEF r/w | TORRENT r
86
- AZW r | FLA r | MIE r/w/c | PFA r | TTC r
87
- BMP r | FLAC r | MIFF r | PFB r | TTF r
88
- BPG r | FLIF r/w | MKA r | PFM r | TXT r
89
- BTF r | FLV r | MKS r | PGF r | VCF r
90
- CHM r | FPF r | MKV r | PGM r/w | VRD r/w/c
91
- COS r | FPX r | MNG r/w | PLIST r | VSD r
92
- CR2 r/w | GIF r/w | MOBI r | PICT r | WAV r
93
- CR3 r/w | GPR r/w | MODD r | PMP r | WDP r/w
94
- CRM r/w | GZ r | MOI r | PNG r/w | WEBP r
95
- CRW r/w | HDP r/w | MOS r/w | PPM r/w | WEBM r
96
- CS1 r/w | HDR r | MOV r/w | PPT r | WMA r
97
- CSV r | HEIC r/w | MP3 r | PPTX r | WMV r
98
- CZI r | HEIF r/w | MP4 r/w | PS r/w | WTV r
99
- DCM r | HTML r | MPC r | PSB r/w | WV r
100
- DCP r/w | ICC r/w/c | MPG r | PSD r/w | X3F r/w
101
- DCR r | ICS r | MPO r/w | PSP r | XCF r
102
- DFONT r | IDML r | MQV r/w | QTIF r/w | XLS r
103
- DIVX r | IIQ r/w | MRW r/w | R3D r | XLSX r
104
- DJVU r | IND r/w | MXF r | RA r | XMP r/w/c
105
- DLL r | INSP r/w | NEF r/w | RAF r/w | ZIP r
106
- DNG r/w | INSV r | NRW r/w | RAM r |
107
- DOC r | INX r | NUMBERS r | RAR r |
108
- DOCX r | ISO r | O r | RAW r/w |
68
+ 360 r/w | DPX r | ITC r | NUMBERS r | RAM r
69
+ 3FR r | DR4 r/w/c | J2C r | O r | RAR r
70
+ 3G2 r/w | DSS r | JNG r/w | ODP r | RAW r/w
71
+ 3GP r/w | DV r | JP2 r/w | ODS r | RIFF r
72
+ A r | DVB r/w | JPEG r/w | ODT r | RSRC r
73
+ AA r | DVR-MS r | JSON r | OFR r | RTF r
74
+ AAE r | DYLIB r | JXL r | OGG r | RW2 r/w
75
+ AAX r/w | EIP r | K25 r | OGV r | RWL r/w
76
+ ACR r | EPS r/w | KDC r | ONP r | RWZ r
77
+ AFM r | EPUB r | KEY r | OPUS r | RM r
78
+ AI r/w | ERF r/w | LA r | ORF r/w | SEQ r
79
+ AIFF r | EXE r | LFP r | ORI r/w | SKETCH r
80
+ APE r | EXIF r/w/c | LNK r | OTF r | SO r
81
+ ARQ r/w | EXR r | LRV r/w | PAC r | SR2 r/w
82
+ ARW r/w | EXV r/w/c | M2TS r | PAGES r | SRF r
83
+ ASF r | F4A/V r/w | M4A/V r/w | PBM r/w | SRW r/w
84
+ AVI r | FFF r/w | MACOS r | PCD r | SVG r
85
+ AVIF r/w | FITS r | MAX r | PCX r | SWF r
86
+ AZW r | FLA r | MEF r/w | PDB r | THM r/w
87
+ BMP r | FLAC r | MIE r/w/c | PDF r/w | TIFF r/w
88
+ BPG r | FLIF r/w | MIFF r | PEF r/w | TORRENT r
89
+ BTF r | FLV r | MKA r | PFA r | TTC r
90
+ CHM r | FPF r | MKS r | PFB r | TTF r
91
+ COS r | FPX r | MKV r | PFM r | TXT r
92
+ CR2 r/w | GIF r/w | MNG r/w | PGF r | VCF r
93
+ CR3 r/w | GPR r/w | MOBI r | PGM r/w | VRD r/w/c
94
+ CRM r/w | GZ r | MODD r | PLIST r | VSD r
95
+ CRW r/w | HDP r/w | MOI r | PICT r | WAV r
96
+ CS1 r/w | HDR r | MOS r/w | PMP r | WDP r/w
97
+ CSV r | HEIC r/w | MOV r/w | PNG r/w | WEBP r
98
+ CZI r | HEIF r/w | MP3 r | PPM r/w | WEBM r
99
+ DCM r | HTML r | MP4 r/w | PPT r | WMA r
100
+ DCP r/w | ICC r/w/c | MPC r | PPTX r | WMV r
101
+ DCR r | ICS r | MPG r | PS r/w | WTV r
102
+ DFONT r | IDML r | MPO r/w | PSB r/w | WV r
103
+ DIVX r | IIQ r/w | MQV r/w | PSD r/w | X3F r/w
104
+ DJVU r | IND r/w | MRC r | PSP r | XCF r
105
+ DLL r | INSP r/w | MRW r/w | QTIF r/w | XLS r
106
+ DNG r/w | INSV r | MXF r | R3D r | XLSX r
107
+ DOC r | INX r | NEF r/w | RA r | XMP r/w/c
108
+ DOCX r | ISO r | NRW r/w | RAF r/w | ZIP r
109
109
 
110
110
  Meta Information
111
111
  ----------------------+----------------------+---------------------
@@ -176,6 +176,9 @@ Creates a new ExifTool object.
176
176
 
177
177
  $exifTool = new Image::ExifTool;
178
178
 
179
+ One ExifTool object may be used to process many files, so creating multiple
180
+ ExifTool objects usually is not necessary.
181
+
179
182
  Note that ExifTool uses AUTOLOAD to load non-member methods, so any class
180
183
  using Image::ExifTool as a base class must define an AUTOLOAD which calls
181
184
  Image::ExifTool::DoAutoLoad(). eg)
@@ -386,7 +389,8 @@ to some functions. Option names are not case sensitive.
386
389
 
387
390
  The default option values may be changed by defining a
388
391
  %Image::ExifTool::UserDefined::Options hash. See the ExifTool_config file
389
- in the full ExifTool distribution for examples.
392
+ in the full ExifTool distribution for examples. A default of undef has the
393
+ same behaviour as a value of 0 for numerical options.
390
394
 
391
395
  # exclude the 'OwnerName' tag from returned information
392
396
  $exifTool->Options(Exclude => 'OwnerName');
@@ -438,6 +442,13 @@ large binary data blocks (eg. ThumbnailImage) are not necessarily extracted
438
442
  unless this option is set or the tag is specifically requested by name.
439
443
  Default is undef.
440
444
 
445
+ =item BlockExtract
446
+
447
+ Flag to extract some directories (mentioned in the
448
+ L<ExifTool tag name documentation|Image::ExifTool::TagNames>) as a block.
449
+ Setting this to a value of 2 also prevents parsing the block to extract tags
450
+ contained within.
451
+
441
452
  =item ByteOrder
442
453
 
443
454
  The byte order for newly created EXIF segments when writing. Note that if
@@ -627,8 +638,9 @@ Flag to extract information from embedded documents in EPS files, embedded
627
638
  EPS information and JPEG and Jpeg2000 images in PDF files, embedded MPF
628
639
  images in JPEG and MPO files, timed metadata in videos, and the resource
629
640
  fork of Mac OS files. A setting of 2 also causes the H264 video stream in
630
- MP4 files to be parsed until the first SEI message is decoded, or 3 to
631
- parse the entire stream. Default is undef.
641
+ MP4 files to be parsed until the first SEI message is decoded, or 3 to parse
642
+ the entire H264 stream in MP4 videos and the entire M2TS file to look for
643
+ any unlisted program containing GPS metadata. Default is undef.
632
644
 
633
645
  =item FastScan
634
646
 
@@ -737,8 +749,8 @@ group names.
737
749
 
738
750
  =item HexTagIDs
739
751
 
740
- Use hexadecimal instead of decimal for the family 7 group names of tags with
741
- numerical ID's.
752
+ Return hexadecimal instead of decimal for the family 7 group names of tags
753
+ with numerical ID's.
742
754
 
743
755
  =item HtmlDump
744
756
 
@@ -843,8 +855,9 @@ print conversion for writing. Default is 1.
843
855
 
844
856
  Flag set to add an 'mdir' Handler to a newly created Meta box when adding
845
857
  QuickTime ItemList tags. Adobe Bridge does not add this Handler, but it is
846
- commonly found in samples from other software, so it is possible that this
847
- could affect the interoperability of ItemList tags. Default is undef.
858
+ commonly found in samples from other software, and it has been reported that
859
+ Apple QuickTime Player and Photos.apps will ignore ItemList tags if this is
860
+ missing. Default is 1.
848
861
 
849
862
  =item QuickTimeUTC
850
863
 
@@ -2049,6 +2062,7 @@ The group family numbers are currently available:
2049
2062
  4) Instance Number (eg. Copy1, Copy2, Copy3...)
2050
2063
  5) Metadata Path (eg. JPEG-APP1-IFD0-ExifIFD)
2051
2064
  6) EXIF/TIFF Format (eg. int8u, int32u, undef, string)
2065
+ 7) Tag ID (eg. ID-271, ID-rights, ID-a9aut)
2052
2066
 
2053
2067
  Families 0 and 1 are based on the file structure, and are similar except
2054
2068
  that family 1 is more specific and sub-divides some groups to give more
@@ -2092,13 +2106,14 @@ Family 6 is currently used only for EXIF/TIFF metadata, and gives the format
2092
2106
  type of the extracted value. Generated only if the L</SaveFormat> option is
2093
2107
  used when extracting.
2094
2108
 
2095
- Family 7 is used for tag ID's. The group names are "ID-" followed by the
2096
- tag ID with characters other than [-_A-Za-z0-9] converted to hex. Numerical
2097
- tag ID's are given in hex if the L</HexTagIDs> option is set. When
2098
- specifying a family 7 group name, numerical ID's may be in hex or decimal,
2099
- and non-numercal ID's may or may not have characters other than
2100
- [-_A-Za-z0-9] converted to hex. Note that unlike other group names, family
2101
- 7 group names are case sensitive (except for the leading "ID-").
2109
+ Family 7 is used for tag ID's. The group names are the actual tag ID's,
2110
+ with a leading "ID-" string. Non-numerical ID's have characters other than
2111
+ [-_A-Za-z0-9] converted to hex. Numerical tag ID's are returned in hex if
2112
+ the L</HexTagIDs> option is set, otherwise decimal is used. When specifying
2113
+ a family 7 group name, numerical ID's may be in hex or decimal, and
2114
+ non-numerical ID's may or may not have characters other than [-_A-Za-z0-9]
2115
+ converted to hex. Note that unlike other group names, the tag ID's of
2116
+ family 7 group names are case sensitive (but the leading "ID-" is not).
2102
2117
 
2103
2118
  See L</GetAllGroups [static]> for complete lists of group names.
2104
2119
 
@@ -2255,7 +2270,7 @@ Get list of all group names in specified family.
2255
2270
 
2256
2271
  =item Inputs:
2257
2272
 
2258
- 0) Group family number (0-4)
2273
+ 0) Group family number (0-7)
2259
2274
 
2260
2275
  =item Return Values:
2261
2276
 
@@ -2273,12 +2288,12 @@ AFCP, AIFF, APE, APP0, APP1, APP11, APP12, APP13, APP14, APP15, APP4, APP5,
2273
2288
  APP6, APP8, ASF, Audible, CanonVRD, Composite, DICOM, DNG, DV, DjVu, Ducky,
2274
2289
  EXE, EXIF, ExifTool, FITS, FLAC, FLIR, File, Flash, FlashPix, Font,
2275
2290
  FotoStation, GIF, GIMP, GeoTiff, GoPro, H264, HTML, ICC_Profile, ID3, IPTC,
2276
- ISO, ITC, JFIF, JPEG, JSON, Jpeg2000, LNK, Leaf, Lytro, M2TS, MIE, MIFF,
2277
- MNG, MOI, MPC, MPEG, MPF, MXF, MakerNotes, Matroska, Meta, Ogg, OpenEXR,
2278
- Opus, PDF, PICT, PLIST, PNG, PSP, Palm, Parrot, PanasonicRaw, PhotoCD,
2279
- PhotoMechanic, Photoshop, PostScript, PrintIM, QuickTime, RAF, RIFF, RSRC,
2280
- RTF, Radiance, Rawzor, Real, Red, SVG, SigmaRaw, Stim, Theora, Torrent,
2281
- Trailer, UserParam, VCard, Vorbis, WTV, XML, XMP, ZIP
2291
+ ISO, ITC, JFIF, JPEG, JSON, JUMBF, Jpeg2000, LNK, Leaf, Lytro, M2TS, MIE,
2292
+ MIFF, MNG, MOI, MPC, MPEG, MPF, MXF, MakerNotes, Matroska, Meta, Ogg,
2293
+ OpenEXR, Opus, PDF, PICT, PLIST, PNG, PSP, Palm, Parrot, PanasonicRaw,
2294
+ PhotoCD, PhotoMechanic, Photoshop, PostScript, PrintIM, QuickTime, RAF,
2295
+ RIFF, RSRC, RTF, Radiance, Rawzor, Real, Red, SVG, SigmaRaw, Stim, Theora,
2296
+ Torrent, Trailer, UserParam, VCard, Vorbis, WTV, XML, XMP, ZIP
2282
2297
 
2283
2298
  =item Family 1 (Specific Location):
2284
2299
 
@@ -2291,8 +2306,8 @@ GoPro, GraphConv, H264, HP, HTC, HTML, HTML-dc, HTML-ncc, HTML-office,
2291
2306
  HTML-prod, HTML-vw96, HTTP-equiv, ICC-chrm, ICC-clrt, ICC-header, ICC-meas,
2292
2307
  ICC-meta, ICC-view, ICC_Profile, ICC_Profile#, ID3, ID3v1, ID3v1_Enh,
2293
2308
  ID3v2_2, ID3v2_3, ID3v2_4, IFD0, IFD1, IPTC, IPTC#, ISO, ITC, Insta360,
2294
- InteropIFD, ItemList, JFIF, JFXX, JPEG, JPEG-HDR, JSON, JVC, Jpeg2000,
2295
- KDC_IFD, Keys, Kodak, KodakBordersIFD, KodakEffectsIFD, KodakIFD,
2309
+ InteropIFD, ItemList, JFIF, JFXX, JPEG, JPEG-HDR, JSON, JUMBF, JVC,
2310
+ Jpeg2000, KDC_IFD, Keys, Kodak, KodakBordersIFD, KodakEffectsIFD, KodakIFD,
2296
2311
  KyoceraRaw, LNK, Leaf, LeafSubIFD, Leica, Lyrics3, Lytro, M2TS, MAC,
2297
2312
  MIE-Audio, MIE-Camera, MIE-Canon, MIE-Doc, MIE-Extender, MIE-Flash, MIE-GPS,
2298
2313
  MIE-Geo, MIE-Image, MIE-Lens, MIE-Main, MIE-MakerNotes, MIE-Meta,
@@ -2344,12 +2359,16 @@ rational64s, float, double, ifd, unicode, complex, int64u, int64s, ifd64
2344
2359
 
2345
2360
  =item Family 7 (Tag ID):
2346
2361
 
2347
- ID-xxx (where xxx is the tag ID. Numerical ID's are given in hex with a
2348
- leading "0x" if the HexTagIDs option is set, as are characters in
2349
- non-numerical ID's which are not valid in a group name)
2362
+ ID-xxx (Where xxx is the tag ID. Numerical ID's are returned in hex with a
2363
+ leading "0x" if the HexTagIDs option is set, or decimal otherwise.
2364
+ Characters in non-numerical ID's which are not valid in a group name are
2365
+ returned as 2 hex digits.)
2350
2366
 
2351
2367
  =back
2352
2368
 
2369
+ Note: This function may also be called as an ExifTool member function to
2370
+ allow the HexTagIDs option to be set when retrieving family 7 group names.
2371
+
2353
2372
  =head2 GetDeleteGroups [static]
2354
2373
 
2355
2374
  Get list of all deletable group names.
@@ -2367,14 +2386,14 @@ None.
2367
2386
  A list of deletable group names in alphabetical order. The current list of
2368
2387
  deletable group names is:
2369
2388
 
2370
- AFCP, APP0, APP1, APP10, APP11, APP12, APP13, APP14, APP15, APP2, APP3,
2371
- APP4, APP5, APP6, APP7, APP8, APP9, Adobe, Audio, Author, CIFF, Camera,
2372
- CanonVRD, Document, Ducky, EXIF, ExifIFD, ExifTool, File, FlashPix,
2373
- FotoStation, GPS, GlobParamIFD, ICC_Profile, IFD0, IFD1, IPTC, Image,
2374
- InteropIFD, JFIF, Jpeg2000, Location, MIE, MPF, MakerNotes, Meta, MetaIFD,
2375
- NikonCapture, Other, PDF, PDF-update, PNG, PNG-pHYs, PhotoMechanic,
2376
- Photoshop, Preview, PrintIM, Printing, RMETA, RSRC, SubIFD, Time, Trailer,
2377
- Video, XML, XML-*, XMP, XMP-*
2389
+ Adobe, AFCP, APP0, APP1, APP10, APP11, APP12, APP13, APP14, APP15, APP2,
2390
+ APP3, APP4, APP5, APP6, APP7, APP8, APP9, Audio, Author, Camera, CanonVRD,
2391
+ CIFF, Document, Ducky, EXIF, ExifIFD, ExifTool, File, FlashPix, FotoStation,
2392
+ GlobParamIFD, GPS, ICC_Profile, IFD0, IFD1, Image, Insta360, InteropIFD,
2393
+ IPTC, ItemList, JFIF, Jpeg2000, Keys, Location, MakerNotes, Meta, MetaIFD,
2394
+ Microsoft, MIE, MPF, NikonCapture, Other, PDF, PDF-update, PhotoMechanic,
2395
+ Photoshop, PNG, PNG-pHYs, Preview, PrintIM, Printing, QuickTime, RMETA,
2396
+ RSRC, SubIFD, Time, Trailer, UserData, Video, XML, XML-*, XMP, XMP-*
2378
2397
 
2379
2398
  To schedule a group for deletion, call L</SetNewValue> with a tag name like
2380
2399
  'EXIF:*' and an undefined tag value.
@@ -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.04';
18
+ $VERSION = '1.05';
19
19
 
20
20
  # Apple iPhone metadata (ref PH)
21
21
  %Image::ExifTool::Apple::Main = (
@@ -72,7 +72,8 @@ $VERSION = '1.04';
72
72
  # 0x000f - int32s: 2,3
73
73
  # 0x0010 - int32s: 1
74
74
  0x0011 => {
75
- Name => 'ContentIdentifier', #forum8750
75
+ Name => 'MediaGroupUUID', #NealKrawetz private communication
76
+ # (changed in 12.19 from Name => 'ContentIdentifier', #forum8750)
76
77
  Writable => 'string',
77
78
  },
78
79
  # 0x0014 - int32s: 1,2,3,4,5 (iPhone 6s, iOS 6.1)
@@ -35,7 +35,7 @@ use Image::ExifTool::Sony;
35
35
  use Image::ExifTool::Validate;
36
36
  use Image::ExifTool::MacOS;
37
37
 
38
- $VERSION = '3.41';
38
+ $VERSION = '3.44';
39
39
  @ISA = qw(Exporter);
40
40
 
41
41
  sub NumbersFirst($$);
@@ -141,6 +141,9 @@ my %formatOK = (
141
141
  signed => 1,
142
142
  unsigned => 1,
143
143
  utf8 => 1,
144
+ Unicode => 1, # (Microsoft Xtra)
145
+ GUID => 1, # (Microsoft Xtra)
146
+ vt_filetime => 1, # (Microsoft Xtra)
144
147
  );
145
148
 
146
149
  # Descriptions for the TagNames documentation
@@ -310,9 +313,10 @@ C<integer> is a string of digits (possibly beginning with a '+' or '-'),
310
313
  C<real> is a floating point number, C<rational> is entered as a floating
311
314
  point number but stored as two C<integer> strings separated by a '/'
312
315
  character, C<date> is a date/time string entered in the format "YYYY:mm:dd
313
- HH:MM:SS[.ss][+/-HH:MM]", C<boolean> is either "True" or "False", C<struct>
314
- indicates a structured tag, and C<lang-alt> is a tag that supports alternate
315
- languages.
316
+ HH:MM:SS[.ss][+/-HH:MM]", C<boolean> is either "True" or "False" (but "true"
317
+ and "false" may be written as a ValueConv value for compatibility with
318
+ non-conforming applications), C<struct> indicates a structured tag, and
319
+ C<lang-alt> is a tag that supports alternate languages.
316
320
 
317
321
  When reading, C<struct> tags are extracted only if the L<Struct|../ExifTool.html#Struct> (-struct)
318
322
  option is used. Otherwise the corresponding I<Flattened> tags, indicated by
@@ -430,11 +434,13 @@ L<UserData|Image::ExifTool::TagNames/QuickTime UserData Tags>, and
430
434
  finally in L<Keys|Image::ExifTool::TagNames/QuickTime Keys Tags>,
431
435
  but this order may be changed by setting the PREFERRED level of the
432
436
  appropriate table in the config file (see
433
- L<example.config|../config.html#PREF> in the full distribution for
434
- an example). ExifTool currently writes only top-level metadata in
435
- QuickTime-based files; it extracts other track-specific and timed
436
- metadata, but can not yet edit tags in these locations (with the
437
- exception of track-level date/time tags).
437
+ L<example.config|../config.html#PREF> in the full distribution for an
438
+ example). Note that some tags with the same name but different ID's may
439
+ exist in the same location, but the family 7 group names may be used to
440
+ differentiate these. ExifTool currently writes only top-level metadata in
441
+ QuickTime-based files; it extracts other track-specific and timed metadata,
442
+ but can not yet edit tags in these locations (with the exception of
443
+ track-level date/time tags).
438
444
 
439
445
  Alternate language tags may be accessed for
440
446
  L<ItemList|Image::ExifTool::TagNames/QuickTime ItemList Tags> and
@@ -459,8 +465,8 @@ local time when extracting.
459
465
 
460
466
  When writing string-based date/time tags, the system time zone is added if
461
467
  the PrintConv option is enabled and no time zone is specified. This is
462
- because Apple software may display a crazy values if the time zone is
463
- missing for some tags.
468
+ because Apple software may display crazy values if the time zone is missing
469
+ for some tags.
464
470
 
465
471
  See
466
472
  L<https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/>
@@ -633,7 +639,7 @@ overlapping EXIF, IPTC and XMP tags to be reconciled when reading, and
633
639
  synchronized when writing. The MWG Composite tags below are designed to aid
634
640
  in the implementation of these recommendations. As well, the MWG defines
635
641
  new XMP tags which are listed in the subsequent tables below. See
636
- L<https://web.archive.org/web/20181006115950/http://www.metadataworkinggroup.org/specs/>
642
+ L<https://web.archive.org/web/20180919181934/http://www.metadataworkinggroup.org/pdf/mwg_guidance.pdf>
637
643
  for the official MWG specification.
638
644
  },
639
645
  MacOS => q{
@@ -698,10 +704,14 @@ my %shortcutNotes = (
698
704
  large binary data tags which may be excluded to reduce memory usage if
699
705
  memory limitations are a problem
700
706
  },
707
+ 'ls-l' => q{
708
+ mimics columns shown by Unix "ls -l" command. Includes some tags which are
709
+ extracted only if the API L<SystemTags|../ExifTool.html#SystemTags> option
710
+ is enabled
711
+ },
701
712
  );
702
713
 
703
-
704
- # same thing for RIFF INFO tags found in the EXIF spec
714
+ # lookup for RIFF INFO tags which are found in the EXIF spec
705
715
  my %riffSpec = (
706
716
  IARL => 1, ICRD => 1, IGNR => 1, IPLT => 1, ISRC => 1,
707
717
  IART => 1, ICRP => 1, IKEY => 1, IPRD => 1, ISRF => 1,
@@ -1319,6 +1329,7 @@ TagID: foreach $tagID (@keys) {
1319
1329
  my $count = $$tagInfo{Count} || 1;
1320
1330
  # adjust count to Writable size if different than Format
1321
1331
  if ($writable and $format and $writable ne $format and
1332
+ $writable ne 'string' and $format ne 'string' and
1322
1333
  $Image::ExifTool::Exif::formatNumber{$writable} and
1323
1334
  $Image::ExifTool::Exif::formatNumber{$format})
1324
1335
  {
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
88
88
  sub ProcessExifInfo($$$);
89
89
  sub SwapWords($);
90
90
 
91
- $VERSION = '4.42';
91
+ $VERSION = '4.47';
92
92
 
93
93
  # Note: Removed 'USM' from 'L' lenses since it is redundant - PH
94
94
  # (or is it? Ref 32 shows 5 non-USM L-type lenses)
@@ -473,7 +473,8 @@ $VERSION = '4.42';
473
473
  253 => 'Canon EF 70-200mm f/2.8L IS II USM + 2x', #PH (NC)
474
474
  253.1 => 'Canon EF 70-200mm f/2.8L IS III USM + 2x', #PH (NC)
475
475
  # 253.2 => 'Tamron SP 70-200mm f/2.8 Di VC USD G2 (A025) + 2x', #forum9367
476
- 254 => 'Canon EF 100mm f/2.8L Macro IS USM', #42
476
+ 254 => 'Canon EF 100mm f/2.8L Macro IS USM or Tamron Lens', #42
477
+ 254.1 => 'Tamron SP 90mm f/2.8 Di VC USD 1:1 Macro (F017)', #PH
477
478
  255 => 'Sigma 24-105mm f/4 DG OS HSM | A or Other Lens', #50
478
479
  255.1 => 'Sigma 180mm f/2.8 EX DG OS HSM APO Macro', #50
479
480
  255.2 => 'Tamron SP 70-200mm f/2.8 Di VC USD', #exiv issue 1202 (A009)
@@ -589,6 +590,8 @@ $VERSION = '4.42';
589
590
  61182.18 => 'Canon RF 100-500mm F4.5-7.1L IS USM',
590
591
  61182.19 => 'Canon RF 100-500mm F4.5-7.1L IS USM + RF1.4x',
591
592
  61182.20 => 'Canon RF 100-500mm F4.5-7.1L IS USM + RF2x',
593
+ 61182.21 => 'Canon RF 70-200mm F4L IS USM', #42
594
+ 61182.22 => 'Canon RF 50mm F1.8 STM', #42
592
595
  65535 => 'n/a',
593
596
  );
594
597
 
@@ -945,6 +948,7 @@ $VERSION = '4.42';
945
948
  0x80000437 => 'EOS 90D', #IB
946
949
  0x80000453 => 'EOS R6', #PH
947
950
  0x80000467 => 'PowerShot ZOOM',
951
+ 0x80000468 => 'EOS M50 Mark II / Kiss M2', #IB
948
952
  0x80000520 => 'EOS D2000C', #IB
949
953
  0x80000560 => 'EOS D6000C', #PH (guess)
950
954
  );
@@ -2128,6 +2132,7 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
2128
2132
  16 => 'Pan Focus', #PH
2129
2133
  # 137 - Single?
2130
2134
  256 => 'AF + MF', #PH (NC, EOS M)
2135
+ 257 => 'Live View', #forum12082
2131
2136
  512 => 'Movie Snap Focus', #48
2132
2137
  519 => 'Movie Servo AF', #PH (NC, EOS M)
2133
2138
  },
@@ -4538,6 +4543,16 @@ my %ciMaxFocal = (
4538
4543
  2 => 'Rotate 270 CW',
4539
4544
  },
4540
4545
  },
4546
+ 0x3a => { #IB
4547
+ Name => 'CameraOrientation',
4548
+ Condition => '$$self{Model} =~ /\b(1200D|REBEL T5|Kiss X70)\b/',
4549
+ Notes => '1200D only',
4550
+ PrintConv => {
4551
+ 0 => 'Horizontal (normal)',
4552
+ 1 => 'Rotate 90 CW',
4553
+ 2 => 'Rotate 270 CW',
4554
+ },
4555
+ },
4541
4556
  0x55 => {
4542
4557
  Name => 'FocusDistanceUpper',
4543
4558
  Condition => '$$self{Model} =~ /EOS 60D$/',
@@ -4678,7 +4693,7 @@ my %ciMaxFocal = (
4678
4693
  FIRST_ENTRY => 0,
4679
4694
  PRIORITY => 0,
4680
4695
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
4681
- NOTES => 'CameraInfo tags for the EOS 70D.',
4696
+ NOTES => 'CameraInfo tags for the EOS 80D.',
4682
4697
  0x03 => { %ciFNumber },
4683
4698
  0x04 => { %ciExposureTime },
4684
4699
  0x06 => { %ciISO },
@@ -5254,6 +5269,14 @@ my %ciMaxFocal = (
5254
5269
  0x06 => { %ciISO },
5255
5270
  0x1b => { %ciCameraTemperature }, # (700D + 0)
5256
5271
  0x23 => { %ciFocalLength }, # (700D + 0)
5272
+ 0x96 => { #IB (700D + 0x19)
5273
+ Name => 'CameraOrientation',
5274
+ PrintConv => {
5275
+ 0 => 'Horizontal (normal)',
5276
+ 1 => 'Rotate 90 CW',
5277
+ 2 => 'Rotate 270 CW',
5278
+ },
5279
+ },
5257
5280
  0xa5 => { # (700D + 0x19)
5258
5281
  Name => 'FocusDistanceUpper',
5259
5282
  %focusDistanceByteSwap,
@@ -6735,6 +6758,8 @@ my %ciMaxFocal = (
6735
6758
  275 => 'Canon RF 100-500mm F4.5-7.1L IS USM',
6736
6759
  276 => 'Canon RF 100-500mm F4.5-7.1L IS USM + RF1.4x',
6737
6760
  277 => 'Canon RF 100-500mm F4.5-7.1L IS USM + RF2x',
6761
+ 278 => 'Canon RF 70-200mm F4L IS USM', #42
6762
+ 280 => 'Canon RF 50mm F1.8 STM', #42
6738
6763
  # Note: add new RF lenses to %canonLensTypes with ID 61182
6739
6764
  },
6740
6765
  },