exiftool_vendored 11.48.0 → 11.49.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of exiftool_vendored might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bbff100dce1adce67cc414b14938a57b47f72195
4
- data.tar.gz: 922c1e9187441b8a108ac70af32ddc9be40f108e
3
+ metadata.gz: c69141b760c60a11aa7d4f8e3f05c79f392db21a
4
+ data.tar.gz: 12554c7e4ee7d9a5ad9fb81412fd0077040098db
5
5
  SHA512:
6
- metadata.gz: 652f39d5eddb5ca51f6a4af12656b05d63ee37b5baf90036510a7a0b698b1519278a563a93a74d8bec8a2bd63cfe3e99bcf7061ab457cd5cc0e5c6350e3e7021
7
- data.tar.gz: 502fd3fc930c56786257e1210ac74da874986a873b862918bd66984ab1d53e5d98999c0565af9ddad6a0eb77b9814b94a72f1a1afd369cfcad97b38a1bd1291b
6
+ metadata.gz: 9235968abcf4c684db6037684304e5e3607e47e43cf6afe24eab1bf16114880088015e0385998abe252938cac5023c3a5ef625ee95890c803a2ef7198a8c2b82
7
+ data.tar.gz: 9cf9cb7cada7d74bf887f41e95b97d8b64d7738ce1ac327d16f361550b15fab29a47fca45b4320b4536db95cdce542eb0bccd878f9fce6aa9825fe585a19b1e9
data/bin/Changes CHANGED
@@ -7,6 +7,21 @@ RSS feed: http://owl.phy.queensu.ca/~phil/exiftool/rss.xml
7
7
  Note: The most recent production release is Version 11.30. (Other versions are
8
8
  considered development releases, and are not uploaded to CPAN.)
9
9
 
10
+ June 5, 2019 - Version 11.49
11
+
12
+ - Added inverse print conversion for one of the QuickTime ItemList Genre tags
13
+ - Avoid creating a few obscure QuickTime UserData tags when writing
14
+ - Fixed problem where some QuickTime groups were not being created when
15
+ writing QuickTime tags without specifying a group
16
+ - Fixed problem where QuickTime Keys tags could be duplicated when writing an
17
+ existing alternate-language tag
18
+ - Fixed problem were QuickTime Keys alternate-language tags would not be
19
+ written when deleting the corresponding default-language tag in the same
20
+ command
21
+ - Fixed some inconsistencies when writing QuickTime tags using the -wm
22
+ (WriteMode) option
23
+ - Fixed an incorrect Pentax Sigma LensType value
24
+
10
25
  June 1, 2019 - Version 11.48
11
26
 
12
27
  - Added write support for Google GCamera and GCreation XMP tags
@@ -36,7 +51,7 @@ May 29, 2019 - Version 11.45
36
51
  image if the file had previously been edited by DPP then Exiftool
37
52
  (If you have edited any CR3 images with ExifTool that had been previously
38
53
  edited by DPP, then re-edit with ExifTool 11.45 or later to restructure the
39
- file so DPP doesn't destroy it if used to edit the file later)
54
+ file so DPP doesn't destroy it if used later to edit the file again)
40
55
  - Added ability to create and delete QuickTime Keys tags
41
56
  - Added sample config file (mini0806.config) to generate GPS tags from
42
57
  subtitle Text in Mini 0806 dashcam videos
data/bin/MANIFEST CHANGED
@@ -740,6 +740,8 @@ t/QuickTime_10.out
740
740
  t/QuickTime_11.out
741
741
  t/QuickTime_12.out
742
742
  t/QuickTime_13.out
743
+ t/QuickTime_14.out
744
+ t/QuickTime_15.out
743
745
  t/QuickTime_2.out
744
746
  t/QuickTime_3.out
745
747
  t/QuickTime_4.out
data/bin/META.json CHANGED
@@ -47,5 +47,5 @@
47
47
  }
48
48
  },
49
49
  "release_status" : "stable",
50
- "version" : "11.48"
50
+ "version" : "11.49"
51
51
  }
data/bin/META.yml CHANGED
@@ -28,4 +28,4 @@ recommends:
28
28
  Time::HiRes: 0
29
29
  requires:
30
30
  perl: 5.004
31
- version: 11.48
31
+ version: 11.49
data/bin/README CHANGED
@@ -104,8 +104,8 @@ your home directory, then you would type the following commands in a
104
104
  terminal window to extract and run ExifTool:
105
105
 
106
106
  cd ~/Desktop
107
- gzip -dc Image-ExifTool-11.48.tar.gz | tar -xf -
108
- cd Image-ExifTool-11.48
107
+ gzip -dc Image-ExifTool-11.49.tar.gz | tar -xf -
108
+ cd Image-ExifTool-11.49
109
109
  ./exiftool t/images/ExifTool.jpg
110
110
 
111
111
  Note: These commands extract meta information from one of the test images.
data/bin/exiftool CHANGED
@@ -12,7 +12,7 @@
12
12
  use strict;
13
13
  require 5.004;
14
14
 
15
- my $version = '11.48';
15
+ my $version = '11.49';
16
16
 
17
17
  # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
18
18
  my $exeDir;
@@ -5119,7 +5119,7 @@ with this command:
5119
5119
 
5120
5120
  produces output like this:
5121
5121
 
5122
- -- Generated by ExifTool 11.48 --
5122
+ -- Generated by ExifTool 11.49 --
5123
5123
  File: a.jpg - 2003:10:31 15:44:19
5124
5124
  (f/5.6, 1/60s, ISO 100)
5125
5125
  File: b.jpg - 2006:05:23 11:57:38
@@ -27,7 +27,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
27
27
  %mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
28
28
  %jpegMarker %specialTags %fileTypeLookup);
29
29
 
30
- $VERSION = '11.48';
30
+ $VERSION = '11.49';
31
31
  $RELEASE = '';
32
32
  @ISA = qw(Exporter);
33
33
  %EXPORT_TAGS = (
@@ -979,7 +979,9 @@ list below. Default is 'wcg'.
979
979
 
980
980
  The level of the group differs for different types of metadata. For XMP or
981
981
  IPTC this is the full XMP/IPTC block (the family 0 group), but for EXIF this
982
- is the individual IFD (the family 1 group).
982
+ is the individual IFD (the family 1 group). The 'w' and 'c' modes are
983
+ tested only when L</SetNewValue> is called, but the 'g' mode is also tested
984
+ in L</WriteInfo>.
983
985
 
984
986
  =item XAttrTags
985
987
 
@@ -1175,8 +1177,8 @@ called with a source file name.
1175
1177
  The following ExifTool options are effective in the call to L</WriteInfo>:
1176
1178
 
1177
1179
  ByteOrder, Charset, CharsetEXIF, CharsetFileName, CharsetIPTC, Compact,
1178
- Compress, FixBase, IgnoreMinorErrors, Password, PNGEarlyXMP, Verbose and
1179
- XMPShorthand.
1180
+ Compress, FixBase, IgnoreMinorErrors, Password, PNGEarlyXMP,
1181
+ QuickTimeHandler, Verbose, WriteMode and XMPShorthand.
1180
1182
 
1181
1183
  =head2 GetTagList
1182
1184
 
@@ -34,7 +34,7 @@ use Image::ExifTool::Nikon;
34
34
  use Image::ExifTool::Validate;
35
35
  use Image::ExifTool::MacOS;
36
36
 
37
- $VERSION = '3.22';
37
+ $VERSION = '3.23';
38
38
  @ISA = qw(Exporter);
39
39
 
40
40
  sub NumbersFirst($$);
@@ -193,11 +193,11 @@ of values written, or the number of characters in a fixed-length string
193
193
  A plus sign (C<+>) after an entry in the B<Writable> column indicates a
194
194
  I<List> tag which supports multiple values and allows individual values to
195
195
  be added and deleted. A slash (C</>) indicates a tag that ExifTool will
196
- I<Avoid> when writing. These tags are not created when writing if another
197
- same-named tag may be created instead. To write these tags, the group
196
+ I<Avoid> when writing. These will be edited but not created if another
197
+ same-named tag may be created instead. To create these tags, the group
198
198
  should be specified. A tilde (C<~>) indicates a tag this is writable only
199
199
  when the print conversion is disabled (by setting PrintConv to 0, using the
200
- -n option, or suffixing the tag name with a C<#> character). An exclamation
200
+ -n option, or suffixing the tag name with a C<#> character). An exclamation
201
201
  point (C<!>) indicates a tag that is considered I<Unsafe> to write under
202
202
  normal circumstances. These tags are not written unless specified
203
203
  explicitly (ie. not when wildcards or "all" are used), and care should be
@@ -404,6 +404,50 @@ number added for non-standard IPTC ("IPTC2", "IPTC3", etc), but when writing
404
404
  only "IPTC" may be specified as the group. To keep the IPTC consistent,
405
405
  ExifTool updates tags in all existing IPTC locations, but will create a new
406
406
  IPTC group only in the standard location.
407
+ },
408
+ QuickTime => q{
409
+ The QuickTime format is used for many different types of audio, video and
410
+ image files (most notably, MOV/MP4 videos and HEIC/CR3 images). Exiftool
411
+ extracts standard meta information and a variety of audio, video and image
412
+ parameters, as well as proprietary information written by many camera
413
+ models. Tags with a question mark after their name are not extracted unless
414
+ the Unknown option is set.
415
+
416
+ When writing, ExifTool creates both QuickTime and XMP tags by default, but
417
+ the group may be specified to write one or the other separately. If no
418
+ location is specified, newly created QuickTime tags are added in the
419
+ L<ItemList|Image::ExifTool::TagNames/QuickTime ItemList Tags> location if
420
+ possible, otherwise in
421
+ L<UserData|Image::ExifTool::TagNames/QuickTime UserData Tags>, and
422
+ finally in L<Keys|Image::ExifTool::TagNames/QuickTime Keys Tags>,
423
+ but this order may be changed by setting the PREFERRED level of the
424
+ appropriate table in the config file (see
425
+ L<example.config|../config.html#PREF> in the full distribution for
426
+ an example). ExifTool currently writes only top-level metadata in
427
+ QuickTime-based files; it extracts other track-specific and timed
428
+ metadata, but can not yet edit tags in these locations (with the
429
+ exception of track-level date/time tags).
430
+
431
+ Alternate language tags may be accessed for ItemList and Keys tags by adding
432
+ a 3-character ISO 639-2 language code and an optional ISO 3166-1 alpha 2
433
+ country code to the tag name (eg. "ItemList:Artist-deu" or
434
+ "ItemList::Artist-deu-DE"). Most UserData tags support a language code, but
435
+ without a country code. If no language code is specified when writing,
436
+ alternate languages for the tag are deleted. Use the "und" language code to
437
+ write the default language without deleting alternate languages. Note that
438
+ "eng" is treated as a default language when reading, but not when writing.
439
+
440
+ According to the specification, many QuickTime date/time tags should be
441
+ stored as UTC. Unfortunately, digital cameras often store local time values
442
+ instead (presumably because they don't know the time zone). For this
443
+ reason, by default ExifTool does not assume a time zone for these values.
444
+ However, if the QuickTimeUTC API option is set, then ExifTool will assume
445
+ these values are properly stored as UTC, and will convert them to local time
446
+ when extracting.
447
+
448
+ See
449
+ L<https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/>
450
+ for the official specification.
407
451
  },
408
452
  Photoshop => q{
409
453
  Photoshop tags are found in PSD and PSB files, as well as inside embedded
@@ -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.52';
19
+ $VERSION = '1.53';
20
20
 
21
21
  sub ProcessID3v2($$$);
22
22
  sub ProcessPrivate($$$);
@@ -969,6 +969,15 @@ sub PrintGenre($)
969
969
  return $val;
970
970
  }
971
971
 
972
+ #------------------------------------------------------------------------------
973
+ # Get Genre ID
974
+ # Inputs: 0) Genre name
975
+ # Returns: genre ID number, or undef
976
+ sub GetGenreID($)
977
+ {
978
+ return Image::ExifTool::ReverseLookup(shift, \%genre);
979
+ }
980
+
972
981
  #------------------------------------------------------------------------------
973
982
  # Decode ID3 string
974
983
  # Inputs: 0) ExifTool object reference
@@ -116,7 +116,7 @@ my $mwgLoaded; # flag set if we alreaded Load()ed the MWG tags
116
116
  DateTimeOriginal => {
117
117
  Description => 'Date/Time Original',
118
118
  Groups => { 2 => 'Time' },
119
- Notes => '"creation date of the intellectual content being shown" - MWG',
119
+ Notes => '"specifies when a photo was taken" - MWG',
120
120
  Writable => 1,
121
121
  Shift => 0, # don't shift this tag
122
122
  Desire => {
@@ -158,7 +158,7 @@ my $mwgLoaded; # flag set if we alreaded Load()ed the MWG tags
158
158
  },
159
159
  CreateDate => {
160
160
  Groups => { 2 => 'Time' },
161
- Notes => '"creation date of the digital representation" - MWG',
161
+ Notes => '"specifies when an image was digitized" - MWG',
162
162
  Writable => 1,
163
163
  Shift => 0, # don't shift this tag
164
164
  Desire => {
@@ -196,7 +196,7 @@ my $mwgLoaded; # flag set if we alreaded Load()ed the MWG tags
196
196
  },
197
197
  ModifyDate => {
198
198
  Groups => { 2 => 'Time' },
199
- Notes => '"modification date of the digital image file" - MWG',
199
+ Notes => '"specifies when a file was modified by the user" - MWG',
200
200
  Writable => 1,
201
201
  Shift => 0, # don't shift this tag
202
202
  Desire => {
@@ -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.27';
61
+ $VERSION = '3.28';
62
62
 
63
63
  sub CryptShutterCount($$);
64
64
  sub PrintFilter($$$);
@@ -304,7 +304,7 @@ sub DecodeAFPoints($$$$;$);
304
304
  '7 243' => 'smc PENTAX-DA 70mm F2.4 Limited', #PH
305
305
  '7 244' => 'smc PENTAX-DA 21mm F3.2 AL Limited', #16
306
306
  '8 0' => 'Sigma 50-150mm F2.8 II APO EX DC HSM', #forum2997
307
- '8 3' => 'Sigma AF 18-125mm F3.5-5.6 DC', #29 (and F3.8-5.6, ref forum10167)
307
+ '8 3' => 'Sigma 18-125mm F3.8-5.6 DC HSM', #forum10167
308
308
  '8 4' => 'Sigma 50mm F1.4 EX DG HSM', #Artur private communication
309
309
  '8 7' => 'Sigma 24-70mm F2.8 IF EX DG HSM', #Exiv2
310
310
  '8 8' => 'Sigma 18-250mm F3.5-6.3 DC OS HSM', #27
@@ -42,7 +42,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
42
42
  use Image::ExifTool::Exif;
43
43
  use Image::ExifTool::GPS;
44
44
 
45
- $VERSION = '2.31';
45
+ $VERSION = '2.32';
46
46
 
47
47
  sub ProcessMOV($$;$);
48
48
  sub ProcessKeys($$$);
@@ -241,7 +241,6 @@ my %unknownInfo = (
241
241
  my %langText = (
242
242
  Notes => 'used in 3gp videos',
243
243
  IText => 6,
244
- Preferred => 0,
245
244
  Avoid => 1,
246
245
  );
247
246
 
@@ -418,45 +417,6 @@ my %eeBox = (
418
417
  PROCESS_PROC => \&ProcessMOV,
419
418
  WRITE_PROC => \&WriteQuickTime, # (only needs to be defined for directories to process when writing)
420
419
  GROUPS => { 2 => 'Video' },
421
- NOTES => q{
422
- The QuickTime format is used for many different types of audio, video and
423
- image files (most notably, MOV/MP4 videos and HEIC/CR3 images). Exiftool
424
- extracts standard meta information and a variety of audio, video and image
425
- parameters, as well as proprietary information written by many camera
426
- models. Tags with a question mark after their name are not extracted unless
427
- the Unknown option is set.
428
-
429
- When writing, ExifTool creates both QuickTime and XMP tags by default, but
430
- the group may be specified to write one or the other separately. If no
431
- location is specified, newly created QuickTime tags are added in the
432
- ItemList location if possible, otherwise in UserData, and finally in Keys,
433
- but this order may be changed by setting the PREFERRED level of the
434
- appropriate table in the config file (see L<example.config|../config.html#PREF> in the full
435
- distribution for an example). ExifTool currently writes only top-level
436
- metadata in QuickTime-based files; it extracts other track-specific and
437
- timed metadata, but can not yet edit tags in these locations.
438
-
439
- Alternate language tags may be accessed for ItemList and Keys tags by adding
440
- a 3-character ISO 639-2 language code and an optional ISO 3166-1 alpha 2
441
- country code to the tag name (eg. "ItemList:Artist-deu" or
442
- "ItemList::Artist-deu-DE"). UserData tags support only a language code
443
- (without a country code). If no language code is specified when writing,
444
- alternate languages for the tag are deleted. Use the "und" language code to
445
- write the default language without deleting alternate languages. Note that
446
- "eng" is treated as a default language when reading, but not when writing.
447
-
448
- According to the specification, many QuickTime date/time tags should be
449
- stored as UTC. Unfortunately, digital cameras often store local time values
450
- instead (presumably because they don't know the time zone). For this
451
- reason, by default ExifTool does not assume a time zone for these values.
452
- However, if the QuickTimeUTC API option is set, then ExifTool will assume
453
- these values are properly stored as UTC, and will convert them to local time
454
- when extracting.
455
-
456
- See
457
- L<https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/>
458
- for the official specification.
459
- },
460
420
  meta => { # 'meta' is found here in my Sony ILCE-7S MP4 sample - PH
461
421
  Name => 'Meta',
462
422
  SubDirectory => {
@@ -1367,6 +1327,12 @@ my %eeBox = (
1367
1327
  text. Alternate language tags are accessed by adding a dash followed by a
1368
1328
  3-character ISO 639-2 language code to the tag name. ExifTool will extract
1369
1329
  any multi-language user data tags found, even if they aren't in this table.
1330
+ Note when creating new tags,
1331
+ L<ItemList Tags|Image::ExifTool::TagNames/QuickTime ItemList Tags> are
1332
+ preferred over these, so to create the tag when a same-named ItemList tag
1333
+ exists, either "UserData" must be specified (eg. C<-UserData:Artist=Monet>
1334
+ on the command line), or the PREFERRED level must be changed via the config
1335
+ file.
1370
1336
  },
1371
1337
  "\xa9cpy" => { Name => 'Copyright', Groups => { 2 => 'Author' } },
1372
1338
  "\xa9day" => {
@@ -1433,7 +1399,7 @@ my %eeBox = (
1433
1399
  "\xa9swr" => 'SoftwareVersion', #12
1434
1400
  "\xa9too" => 'Encoder', #PH (NC)
1435
1401
  "\xa9trk" => 'Track', #PH (NC)
1436
- "\xa9wrt" => { Name => 'Composer', Preferred => 0, Avoid => 1 }, # ("\xa9com" is preferred in UserData)
1402
+ "\xa9wrt" => { Name => 'Composer', Avoid => 1 }, # ("\xa9com" is preferred in UserData)
1437
1403
  "\xa9xyz" => { #PH (iPhone 3GS)
1438
1404
  Name => 'GPSCoordinates',
1439
1405
  Groups => { 2 => 'Location' },
@@ -1457,7 +1423,12 @@ my %eeBox = (
1457
1423
  "\xa9dji" => { Name => 'UserData_dji', Format => 'undef', Binary => 1, Unknown => 1, Hidden => 1 },
1458
1424
  "\xa9res" => { Name => 'UserData_res', Format => 'undef', Binary => 1, Unknown => 1, Hidden => 1 },
1459
1425
  "\xa9uid" => { Name => 'UserData_uid', Format => 'undef', Binary => 1, Unknown => 1, Hidden => 1 },
1460
- "\xa9mdl" => { Name => 'Model', Format => 'string', Preferred => 0, Notes => 'non-standard-format DJI tag' },
1426
+ "\xa9mdl" => {
1427
+ Name => 'Model',
1428
+ Notes => 'non-standard-format DJI tag',
1429
+ Format => 'string',
1430
+ Avoid => 1,
1431
+ },
1461
1432
  # end DJI tags
1462
1433
  name => 'Name',
1463
1434
  WLOC => {
@@ -1508,13 +1479,14 @@ my %eeBox = (
1508
1479
  # the following are 3gp tags, references:
1509
1480
  # http://atomicparsley.sourceforge.net
1510
1481
  # http://www.3gpp.org/ftp/tsg_sa/WG4_CODEC/TSGS4_25/Docs/
1511
- cprt => { Name => 'Copyright', %langText, Groups => { 2 => 'Author' }, Preferred => 0 },
1512
- auth => { Name => 'Author', %langText, Preferred => 0, Groups => { 2 => 'Author' } },
1513
- titl => { Name => 'Title', %langText, Preferred => 0 },
1482
+ # (note that all %langText tags are Avoid => 1)
1483
+ cprt => { Name => 'Copyright', %langText, Groups => { 2 => 'Author' } },
1484
+ auth => { Name => 'Author', %langText, Groups => { 2 => 'Author' } },
1485
+ titl => { Name => 'Title', %langText },
1514
1486
  dscp => { Name => 'Description',%langText },
1515
1487
  perf => { Name => 'Performer', %langText },
1516
- gnre => { Name => 'Genre', %langText, Preferred => 0 },
1517
- albm => { Name => 'Album', %langText, Preferred => 0 },
1488
+ gnre => { Name => 'Genre', %langText },
1489
+ albm => { Name => 'Album', %langText },
1518
1490
  coll => { Name => 'CollectionName', %langText }, #17
1519
1491
  rtng => {
1520
1492
  Name => 'Rating',
@@ -1629,7 +1601,7 @@ my %eeBox = (
1629
1601
  cmnm => { # (NC)
1630
1602
  Name => 'Model',
1631
1603
  Description => 'Camera Model Name',
1632
- Preferred => 0,
1604
+ Avoid => 1,
1633
1605
  Format => 'string', # (necessary to remove the trailing NULL)
1634
1606
  },
1635
1607
  date => { # (NC)
@@ -1653,14 +1625,14 @@ my %eeBox = (
1653
1625
  },
1654
1626
  manu => { # (SX280)
1655
1627
  Name => 'Make',
1656
- Preferred => 0,
1628
+ Avoid => 1,
1657
1629
  # (with Canon there are 6 unknown bytes before the model: "\0\0\0\0\x15\xc7")
1658
1630
  RawConv => '$val=~s/^\0{4}..//s; $val=~s/\0.*//; $val',
1659
1631
  },
1660
1632
  modl => { # (Samsung GT-S8530, Canon SX280)
1661
1633
  Name => 'Model',
1662
1634
  Description => 'Camera Model Name',
1663
- Preferred => 0,
1635
+ Avoid => 1,
1664
1636
  # (with Canon there are 6 unknown bytes before the model: "\0\0\0\0\x15\xc7")
1665
1637
  RawConv => '$val=~s/^\0{4}..//s; $val=~s/\0.*//; $val',
1666
1638
  },
@@ -1812,7 +1784,7 @@ my %eeBox = (
1812
1784
  CNMN => {
1813
1785
  Name => 'Model', #PH (EOS 550D)
1814
1786
  Description => 'Camera Model Name',
1815
- Preferred => 0,
1787
+ Avoid => 1,
1816
1788
  Format => 'string', # (necessary to remove the trailing NULL)
1817
1789
  },
1818
1790
  CNFV => { Name => 'FirmwareVersion', Format => 'string' }, #PH (EOS 550D)
@@ -1858,7 +1830,7 @@ my %eeBox = (
1858
1830
  },
1859
1831
  # ---- GoPro ---- (ref PH)
1860
1832
  GoPr => 'GoProType', # (Hero3+)
1861
- FIRM => 'FirmwareVersion', # (Hero4)
1833
+ FIRM => { Name => 'FirmwareVersion', Avoid => 1 }, # (Hero4)
1862
1834
  LENS => 'LensSerialNumber', # (Hero4)
1863
1835
  CAME => { # (Hero4)
1864
1836
  Name => 'SerialNumberHash',
@@ -1889,10 +1861,10 @@ my %eeBox = (
1889
1861
  Name => 'KodakDcMD',
1890
1862
  SubDirectory => { TagTable => 'Image::ExifTool::Kodak::DcMD' },
1891
1863
  },
1892
- SNum => { Name => 'SerialNumber', Groups => { 2 => 'Camera' } },
1893
- ptch => { Name => 'Pitch', Format => 'rational64s', Preferred => 0 }, # Units??
1894
- _yaw => { Name => 'Yaw', Format => 'rational64s', Preferred => 0 }, # Units??
1895
- roll => { Name => 'Roll', Format => 'rational64s', Preferred => 0 }, # Units??
1864
+ SNum => { Name => 'SerialNumber', Avoid => 1, Groups => { 2 => 'Camera' } },
1865
+ ptch => { Name => 'Pitch', Format => 'rational64s', Avoid => 1 }, # Units??
1866
+ _yaw => { Name => 'Yaw', Format => 'rational64s', Avoid => 1 }, # Units??
1867
+ roll => { Name => 'Roll', Format => 'rational64s', Avoid => 1 }, # Units??
1896
1868
  _cx_ => { Name => 'CX', Format => 'rational64s', Unknown => 1 },
1897
1869
  _cy_ => { Name => 'CY', Format => 'rational64s', Unknown => 1 },
1898
1870
  rads => { Name => 'Rads', Format => 'rational64s', Unknown => 1 },
@@ -2641,10 +2613,9 @@ my %eeBox = (
2641
2613
  WRITE_GROUP => 'ItemList',
2642
2614
  LANG_INFO => \&GetLangInfo,
2643
2615
  NOTES => q{
2644
- As well as these tags, the "mdta" handler uses numerical tag ID's which are
2645
- added dynamically to this table after processing the Meta Keys information.
2646
- Tags in this table support alternate languages which are accessed by adding
2647
- a 3-character ISO 639-2 language code and an optional ISO 3166-1 alpha 2
2616
+ This is the preferred location for creating new QuickTime tags. Tags in
2617
+ this table support alternate languages which are accessed by adding a
2618
+ 3-character ISO 639-2 language code and an optional ISO 3166-1 alpha 2
2648
2619
  country code to the tag name (eg. "ItemList:Title-fra" or
2649
2620
  "ItemList::Title-fra-FR").
2650
2621
  },
@@ -2654,9 +2625,9 @@ my %eeBox = (
2654
2625
  # from being created when a same-named tag already exists in the table)
2655
2626
  "\xa9ART" => 'Artist',
2656
2627
  "\xa9alb" => 'Album',
2657
- "\xa9aut" => { Name => 'Author', Preferred => 0, Groups => { 2 => 'Author' } }, #forum10091 ('auth' is preferred)
2628
+ "\xa9aut" => { Name => 'Author', Avoid => 1, Groups => { 2 => 'Author' } }, #forum10091 ('auth' is preferred)
2658
2629
  "\xa9cmt" => 'Comment',
2659
- "\xa9com" => { Name => 'Composer', Preferred => 0 }, # ("\xa9wrt" is preferred in ItemList)
2630
+ "\xa9com" => { Name => 'Composer', Avoid => 1, }, # ("\xa9wrt" is preferred in ItemList)
2660
2631
  "\xa9day" => {
2661
2632
  Name => 'ContentCreateDate',
2662
2633
  Groups => { 2 => 'Time' },
@@ -2731,7 +2702,7 @@ my %eeBox = (
2731
2702
  1 => 'AOL',
2732
2703
  },
2733
2704
  },
2734
- albm => { Name => 'Album', Preferred => 0 }, #(ffmpeg source)
2705
+ albm => { Name => 'Album', Avoid => 1 }, #(ffmpeg source)
2735
2706
  apID => 'AppleStoreAccount',
2736
2707
  atID => { #10 (or TV series)
2737
2708
  Name => 'AlbumTitleID',
@@ -2744,16 +2715,21 @@ my %eeBox = (
2744
2715
  Format => 'int32u',
2745
2716
  },
2746
2717
  cprt => { Name => 'Copyright', Groups => { 2 => 'Author' } },
2747
- dscp => { Name => 'Description', Preferred => 0 },
2748
- desc => { Name => 'Description', Preferred => 0 }, #7
2718
+ dscp => { Name => 'Description', Avoid => 1 },
2719
+ desc => { Name => 'Description', Avoid => 1 }, #7
2749
2720
  gnre => { #10
2750
2721
  Name => 'Genre',
2751
- Preferred => 0,
2722
+ Avoid => 1,
2752
2723
  PrintConv => q{
2753
2724
  return $val unless $val =~ /^\d+$/;
2754
2725
  require Image::ExifTool::ID3;
2755
2726
  Image::ExifTool::ID3::PrintGenre($val - 1); # note the "- 1"
2756
2727
  },
2728
+ PrintConvInv => q{
2729
+ require Image::ExifTool::ID3;
2730
+ my $id = Image::ExifTool::ID3::GetGenreID($val);
2731
+ return defined $id ? $id : $val;
2732
+ },
2757
2733
  },
2758
2734
  egid => 'EpisodeGlobalUniqueID', #7
2759
2735
  geID => { #10
@@ -5134,7 +5110,7 @@ my %eeBox = (
5134
5110
  50000092 => 'Audiobooks|Erotica',
5135
5111
  },
5136
5112
  },
5137
- grup => { Name => 'Grouping', Preferred => 0 }, #10
5113
+ grup => { Name => 'Grouping', Avoid => 1 }, #10
5138
5114
  hdvd => { #10
5139
5115
  Name => 'HDVideo',
5140
5116
  PrintConv => { 0 => 'No', 1 => 'Yes' },
@@ -5347,7 +5323,7 @@ my %eeBox = (
5347
5323
  },
5348
5324
  },
5349
5325
  rate => 'RatingPercent', #PH
5350
- titl => { Name => 'Title', Preferred => 0 },
5326
+ titl => { Name => 'Title', Avoid => 1 },
5351
5327
  tven => 'TVEpisodeID', #7
5352
5328
  tves => { #7/10
5353
5329
  Name => 'TVEpisode',
@@ -5388,7 +5364,7 @@ my %eeBox = (
5388
5364
  },
5389
5365
 
5390
5366
  # atoms observed in AAX audiobooks (ref PH)
5391
- "\xa9cpy" => { Name => 'Copyright', Preferred => 0, Groups => { 2 => 'Author' } },
5367
+ "\xa9cpy" => { Name => 'Copyright', Avoid => 1, Groups => { 2 => 'Author' } },
5392
5368
  "\xa9pub" => 'Publisher',
5393
5369
  "\xa9nrt" => 'Narrator',
5394
5370
  '@pti' => 'ParentTitle', # (guess -- same as "\xa9nam")
@@ -5443,9 +5419,18 @@ my %eeBox = (
5443
5419
  LANG_INFO => \&GetLangInfo,
5444
5420
  FORMAT => 'string',
5445
5421
  NOTES => q{
5446
- This directory contains a list of key names which are used to decode
5447
- ItemList tags written by the "mdta" handler. The prefix of
5448
- "com.apple.quicktime." has been removed from all TagID's below.
5422
+ This directory contains a list of key names which are used to decode tags
5423
+ written by the "mdta" handler. The prefix of "com.apple.quicktime." has
5424
+ been removed from all TagID's below. These tags support alternate languages
5425
+ in the same way as the
5426
+ L<ItemList Tags|Image::ExifTool::TagNames/QuickTime ItemList Tags>. Note
5427
+ that by default,
5428
+ L<ItemList|Image::ExifTool::TagNames/QuickTime ItemList Tags> and
5429
+ L<UserData|Image::ExifTool::TagNames/QuickTime UserData Tags> tags are
5430
+ preferred when writing, so to create a tag when a same-named tag exists in
5431
+ either of these tables, either the "Keys" location must be specified (eg.
5432
+ C<-Keys:Author=Phil> on the command line), or the PREFERRED level must be
5433
+ changed via the config file.
5449
5434
  },
5450
5435
  version => 'Version',
5451
5436
  album => 'Album',