exiftool_vendored 10.58.0 → 10.65.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.

Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +100 -1
  3. data/bin/MANIFEST +2 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +39 -38
  7. data/bin/arg_files/exif2iptc.args +3 -0
  8. data/bin/arg_files/iptc2exif.args +3 -0
  9. data/bin/config_files/example.config +16 -14
  10. data/bin/config_files/photoshop_paths.config +10 -0
  11. data/bin/exiftool +71 -65
  12. data/bin/lib/Image/ExifTool/APE.pm +5 -0
  13. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +31 -15
  14. data/bin/lib/Image/ExifTool/Canon.pm +18 -4
  15. data/bin/lib/Image/ExifTool/CanonCustom.pm +3 -0
  16. data/bin/lib/Image/ExifTool/Charset/DOSLatin1.pm +49 -0
  17. data/bin/lib/Image/ExifTool/Charset/DOSLatinUS.pm +49 -0
  18. data/bin/lib/Image/ExifTool/Charset.pm +8 -5
  19. data/bin/lib/Image/ExifTool/Exif.pm +37 -18
  20. data/bin/lib/Image/ExifTool/FLAC.pm +47 -37
  21. data/bin/lib/Image/ExifTool/FLIR.pm +3 -3
  22. data/bin/lib/Image/ExifTool/FujiFilm.pm +5 -2
  23. data/bin/lib/Image/ExifTool/GPS.pm +6 -6
  24. data/bin/lib/Image/ExifTool/Geotag.pm +1 -1
  25. data/bin/lib/Image/ExifTool/H264.pm +2 -0
  26. data/bin/lib/Image/ExifTool/ID3.pm +8 -3
  27. data/bin/lib/Image/ExifTool/IPTC.pm +1 -1
  28. data/bin/lib/Image/ExifTool/Import.pm +4 -1
  29. data/bin/lib/Image/ExifTool/InDesign.pm +11 -7
  30. data/bin/lib/Image/ExifTool/Kodak.pm +4 -1
  31. data/bin/lib/Image/ExifTool/Lang/de.pm +31 -31
  32. data/bin/lib/Image/ExifTool/MWG.pm +12 -4
  33. data/bin/lib/Image/ExifTool/MakerNotes.pm +3 -3
  34. data/bin/lib/Image/ExifTool/Matroska.pm +2 -1
  35. data/bin/lib/Image/ExifTool/Microsoft.pm +3 -3
  36. data/bin/lib/Image/ExifTool/Minolta.pm +71 -61
  37. data/bin/lib/Image/ExifTool/Nikon.pm +286 -43
  38. data/bin/lib/Image/ExifTool/NikonCustom.pm +1049 -0
  39. data/bin/lib/Image/ExifTool/Olympus.pm +4 -1
  40. data/bin/lib/Image/ExifTool/PNG.pm +4 -7
  41. data/bin/lib/Image/ExifTool/PanasonicRaw.pm +24 -1
  42. data/bin/lib/Image/ExifTool/Pentax.pm +20 -6
  43. data/bin/lib/Image/ExifTool/Photoshop.pm +24 -3
  44. data/bin/lib/Image/ExifTool/QuickTime.pm +545 -14
  45. data/bin/lib/Image/ExifTool/README +16 -9
  46. data/bin/lib/Image/ExifTool/RIFF.pm +8 -1
  47. data/bin/lib/Image/ExifTool/Samsung.pm +5 -4
  48. data/bin/lib/Image/ExifTool/Sigma.pm +9 -1
  49. data/bin/lib/Image/ExifTool/Sony.pm +327 -153
  50. data/bin/lib/Image/ExifTool/TagLookup.pm +3273 -3220
  51. data/bin/lib/Image/ExifTool/TagNames.pod +317 -38
  52. data/bin/lib/Image/ExifTool/Validate.pm +15 -1
  53. data/bin/lib/Image/ExifTool/WriteExif.pl +5 -0
  54. data/bin/lib/Image/ExifTool/WriteIPTC.pl +23 -1
  55. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +8 -2
  56. data/bin/lib/Image/ExifTool/WriteXMP.pl +7 -0
  57. data/bin/lib/Image/ExifTool/Writer.pl +96 -18
  58. data/bin/lib/Image/ExifTool/XMP.pm +20 -11
  59. data/bin/lib/Image/ExifTool/XMP2.pl +634 -583
  60. data/bin/lib/Image/ExifTool.pm +124 -17
  61. data/bin/lib/Image/ExifTool.pod +86 -82
  62. data/bin/perl-Image-ExifTool.spec +38 -37
  63. data/lib/exiftool_vendored/version.rb +1 -1
  64. metadata +4 -2
@@ -12,7 +12,7 @@ use strict;
12
12
  use vars qw($VERSION);
13
13
  use Image::ExifTool::Exif;
14
14
 
15
- $VERSION = '1.46';
15
+ $VERSION = '1.47';
16
16
 
17
17
  my %coordConv = (
18
18
  ValueConv => 'Image::ExifTool::GPS::ToDegrees($val)',
@@ -40,8 +40,8 @@ my %coordConv = (
40
40
  Writable => 'string',
41
41
  Notes => q{
42
42
  tags 0x0001-0x0006 used for camera location according to MWG 2.0. ExifTool
43
- will also accept a number when writing GPSLatitude -- positive for north
44
- latitudes, or negative for south
43
+ will also accept a number when writing GPSLatitudeRef, positive for north
44
+ latitudes or negative for south, or a string ending in N or S
45
45
  },
46
46
  Count => 2,
47
47
  PrintConv => {
@@ -69,8 +69,8 @@ my %coordConv = (
69
69
  Writable => 'string',
70
70
  Count => 2,
71
71
  Notes => q{
72
- ExifTool will also accept a number when writing this tag -- positive for
73
- east longitudes or negative for west
72
+ ExifTool will also accept a number when writing this tag, positive for east
73
+ longitudes or negative for west, or a string ending in E or W
74
74
  },
75
75
  PrintConv => {
76
76
  # extract E/W if written from Composite:GPSLongitude
@@ -386,7 +386,7 @@ my %coordConv = (
386
386
  ValueConv => q{
387
387
  my $alt = $val[0];
388
388
  $alt = $val[2] unless defined $alt;
389
- return undef unless defined $alt;
389
+ return undef unless defined $alt and IsFloat($alt);
390
390
  return ($val[1] || $val[3]) ? -$alt : $alt;
391
391
  },
392
392
  PrintConv => q{
@@ -1076,7 +1076,7 @@ Category: foreach $category (qw{pos track alt orient}) {
1076
1076
  # Returns: geosync hash:
1077
1077
  # Offset = Offset in seconds for latest synchronization (GPS - image time)
1078
1078
  # Points = hash of all sync offsets keyed by image times in seconds
1079
- # Times = sorted list of image synchronization times (keys in Points hash)
1079
+ # Times = sorted list of image synchronization times (keys in Points hash)
1080
1080
  # Notes: calling this routine with more than one geosync'd file causes time drift
1081
1081
  # correction to be implemented
1082
1082
  sub ConvertGeosync($$)
@@ -521,6 +521,8 @@ my $parsePictureTiming; # flag to enable parsing of picture timing information (
521
521
  # 0x0345 - Panasonic HC-V7272
522
522
  # 0x0414 - Panasonic AG-AF100
523
523
  # 0x0591 - various Panasonic DMC models
524
+ # 0x0802 - Panasonic DMC-TZ60 with GPS information off
525
+ # 0x0803 - Panasonic DMC-TZ60 with GPS information on
524
526
  # 0x3001 - various Sony DSC, HDR, NEX and SLT models
525
527
  # 0x3003 - various Sony DSC models
526
528
  # 0x3100 - various Sony DSC, ILCE, NEX and SLT models
@@ -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.47';
19
+ $VERSION = '1.48';
20
20
 
21
21
  sub ProcessID3v2($$$);
22
22
  sub ProcessPrivate($$$);
@@ -1093,7 +1093,7 @@ sub ProcessID3v2($$$)
1093
1093
  }
1094
1094
  }
1095
1095
  # decode v2.3 and v2.4 flags
1096
- my %flags;
1096
+ my (%flags, %extra);
1097
1097
  if ($flags) {
1098
1098
  if ($vers < 0x0400) {
1099
1099
  # version 2.3 flags
@@ -1155,13 +1155,16 @@ sub ProcessID3v2($$$)
1155
1155
  $dataLen == length($val) or $et->Warn("Wrong length for $id frame"), next;
1156
1156
  }
1157
1157
  unless ($tagInfo) {
1158
- $verbose and $et->VerboseInfo($id, $tagInfo,
1158
+ next unless $verbose;
1159
+ %flags and $extra{Extra} = ', Flags=' . join(',', sort keys %flags);
1160
+ $et->VerboseInfo($id, $tagInfo,
1159
1161
  Table => $tagTablePtr,
1160
1162
  Value => $val,
1161
1163
  DataPt => $dataPt,
1162
1164
  DataPos => $$dirInfo{DataPos},
1163
1165
  Size => $len,
1164
1166
  Start => $offset,
1167
+ %extra
1165
1168
  );
1166
1169
  next;
1167
1170
  }
@@ -1308,12 +1311,14 @@ sub ProcessID3v2($$$)
1308
1311
  if ($lang and $lang =~ /^[a-z]{3}$/i and $lang ne 'eng') {
1309
1312
  $tagInfo = Image::ExifTool::GetLangInfo($tagInfo, lc $lang);
1310
1313
  }
1314
+ %flags and $extra{Extra} = ', Flags=' . join(',', sort keys %flags);
1311
1315
  $et->HandleTag($tagTablePtr, $id, $val,
1312
1316
  TagInfo => $tagInfo,
1313
1317
  DataPt => $dataPt,
1314
1318
  DataPos => $$dirInfo{DataPos},
1315
1319
  Size => $len,
1316
1320
  Start => $offset,
1321
+ %extra
1317
1322
  );
1318
1323
  }
1319
1324
  }
@@ -1074,7 +1074,7 @@ sub ProcessIPTC($$$)
1074
1074
  $et->FoundTag('CurrentIPTCDigest', $md5);
1075
1075
  }
1076
1076
  } else {
1077
- if (($Image::ExifTool::MWG::strict or $et->Options('Validate')) and
1077
+ if (($Image::ExifTool::MWG::strict or $et->Options('Validate')) and
1078
1078
  $$et{FILE_TYPE} =~ /^(JPEG|TIFF|PSD)$/)
1079
1079
  {
1080
1080
  if ($Image::ExifTool::MWG::strict) {
@@ -12,7 +12,7 @@ require Exporter;
12
12
 
13
13
  use vars qw($VERSION @ISA @EXPORT_OK);
14
14
 
15
- $VERSION = '1.07';
15
+ $VERSION = '1.08';
16
16
  @ISA = qw(Exporter);
17
17
  @EXPORT_OK = qw(ReadCSV ReadJSON);
18
18
 
@@ -139,6 +139,9 @@ sub ReadJSONObject($;$)
139
139
  $pos = 0;
140
140
  }
141
141
  Tok: for (;;) {
142
+ # (didn't spend the time to understand how $pos could be undef, but
143
+ # put a test here to be safe because one user reported this problem)
144
+ last unless defined $pos;
142
145
  if ($pos >= length $$buffPt or $readMore) {
143
146
  # read another 64kB and add to unparsed data
144
147
  my $offset = length($$buffPt) - $pos;
@@ -14,7 +14,7 @@ use strict;
14
14
  use vars qw($VERSION);
15
15
  use Image::ExifTool qw(:DataAccess :Utils);
16
16
 
17
- $VERSION = '1.04';
17
+ $VERSION = '1.05';
18
18
 
19
19
  # map for writing metadata to InDesign files (currently only write XMP)
20
20
  my %indMap = (
@@ -145,14 +145,18 @@ sub ProcessIND($$)
145
145
  Parent => 'IND',
146
146
  NoDelete => 1, # do not allow this to be deleted when writing
147
147
  );
148
+ # validate xmp data length (should be same as length in header - 4)
149
+ my $xmpLen = unpack($streamInt32u, $lenWord);
150
+ unless ($xmpLen == $len) {
151
+ if ($xmpLen < $len) {
152
+ $dirInfo{DirLen} = $xmpLen;
153
+ } else {
154
+ $err = 'Truncated XMP stream (missing ' . ($xmpLen - $len) . ' bytes)';
155
+ }
156
+ }
148
157
  my $tagTablePtr = GetTagTable('Image::ExifTool::XMP::Main');
149
158
  if ($outfile) {
150
- # validate xmp data length (should be same as length in header - 4)
151
- my $xmpLen = unpack($streamInt32u, $lenWord);
152
- unless ($xmpLen == $len) {
153
- $err = "Incorrect XMP stream length ($xmpLen should be $len)";
154
- last;
155
- }
159
+ last if $err;
156
160
  # make sure that XMP is writable
157
161
  my $classID = Get32u(\$hdr, 20);
158
162
  $classID & 0x40000000 or $err = 'XMP stream is not writable', last;
@@ -24,7 +24,7 @@ use vars qw($VERSION);
24
24
  use Image::ExifTool qw(:DataAccess :Utils);
25
25
  use Image::ExifTool::Exif;
26
26
 
27
- $VERSION = '1.41';
27
+ $VERSION = '1.42';
28
28
 
29
29
  sub ProcessKodakIFD($$$);
30
30
  sub ProcessKodakText($$$);
@@ -189,6 +189,7 @@ sub WriteKodakIFD($$$);
189
189
  1 => 'Flash?',
190
190
  2 => 'Tungsten',
191
191
  3 => 'Daylight',
192
+ # 5 - seen this for "Auto" with a ProBack 645M
192
193
  },
193
194
  },
194
195
  0x5c => {
@@ -1527,12 +1528,14 @@ my %sceneModeUsed = (
1527
1528
  'Exposure Mode' => {
1528
1529
  Name => 'ExposureMode',
1529
1530
  PrintConv => {
1531
+ OTHER => sub { shift }, # pass other values straight through
1530
1532
  'M' => 'Manual',
1531
1533
  'A' => 'Aperture Priority', #(NC -- I suppose this could be "Auto" too)
1532
1534
  'S' => 'Shutter Priority', #(NC)
1533
1535
  'P' => 'Program', #(NC)
1534
1536
  'B' => 'Bulb', #(NC)
1535
1537
  # have seen "Manual (M)" written by DCS760C - PH
1538
+ # and "Aperture priority AE (Av)" written by a ProBack 645M
1536
1539
  },
1537
1540
  },
1538
1541
  'Firmware Version' => 'FirmwareVersion',
@@ -11,7 +11,7 @@ package Image::ExifTool::Lang::de;
11
11
  use strict;
12
12
  use vars qw($VERSION);
13
13
 
14
- $VERSION = '1.32';
14
+ $VERSION = '1.33';
15
15
 
16
16
  %Image::ExifTool::Lang::de::Translate = (
17
17
  'AEAperture' => 'AE-Blende',
@@ -1094,7 +1094,7 @@ $VERSION = '1.32';
1094
1094
  },
1095
1095
  'Artist' => 'Künstler',
1096
1096
  'ArtworkCreator' => 'Artwork Ersteller',
1097
- 'AsShotICCProfile' => 'Aufnahme ICC-Profil',
1097
+ 'AsShotICCProfile' => 'Aufnahme Farbprofil',
1098
1098
  'AsShotNeutral' => 'Aufnahme Neutral',
1099
1099
  'AsShotPreProfileMatrix' => 'Aufnahme Pre Profil Matrix',
1100
1100
  'AsShotProfileName' => 'Aufnahme Pre Profilname',
@@ -2334,7 +2334,7 @@ $VERSION = '1.32';
2334
2334
  'Country' => 'Land',
2335
2335
  'Country-PrimaryLocationCode' => 'ISO-Ländercode',
2336
2336
  'Country-PrimaryLocationName' => 'Land',
2337
- 'CountryCode' => 'Länderkennzeichen',
2337
+ 'CountryCode' => 'ISO-Ländercode',
2338
2338
  'Coverage' => 'Anwendungsbereich',
2339
2339
  'CreateDate' => 'Digitalisierungsdatum/-uhrzeit',
2340
2340
  'CreationDate' => 'Aufnahmedatum',
@@ -2376,8 +2376,8 @@ $VERSION = '1.32';
2376
2376
  'CreatorContactInfo' => 'Ersteller Kontaktinfo',
2377
2377
  'CreatorCountry' => 'Ersteller - Land',
2378
2378
  'CreatorPostalCode' => 'Ersteller - PLZ',
2379
- 'CreatorRegion' => 'Ersteller - Staat/Provinz',
2380
- 'CreatorTool' => 'Erzeugertool',
2379
+ 'CreatorRegion' => 'Ersteller - Bundesland/Kanton',
2380
+ 'CreatorTool' => 'Erstellertool',
2381
2381
  'CreatorWorkEmail' => 'Ersteller - E-Mail',
2382
2382
  'CreatorWorkTelephone' => 'Ersteller - Telefon',
2383
2383
  'CreatorWorkURL' => 'Ersteller - Webseite(n)',
@@ -3651,7 +3651,7 @@ $VERSION = '1.32';
3651
3651
  'FirmwareVersion' => 'Firmware-Version',
3652
3652
  'FixtureIdentifier' => 'Kennzeichnung',
3653
3653
  'Flash' => {
3654
- Description => 'Blitz',
3654
+ Description => 'Blitzmodus',
3655
3655
  PrintConv => {
3656
3656
  'Auto, Did not fire' => 'Blitz wurde nicht ausgelöst, Automodus',
3657
3657
  'Auto, Did not fire, Red-eye reduction' => 'Blitz wurde nicht ausgelöst, Rote-Augen-Reduzierung',
@@ -4277,9 +4277,9 @@ $VERSION = '1.32';
4277
4277
  },
4278
4278
  'GEImageSize' => 'GE Bildgröße',
4279
4279
  'GIFVersion' => 'GIF-Version',
4280
- 'GPSAltitude' => 'Höhe',
4280
+ 'GPSAltitude' => 'GPS Höhe',
4281
4281
  'GPSAltitudeRef' => {
4282
- Description => 'Bezugshöhe',
4282
+ Description => 'GPS-Höhe Bezug',
4283
4283
  PrintConv => {
4284
4284
  'Above Sea Level' => 'Höhe über Normal-Null (Meeresspiegel)',
4285
4285
  'Below Sea Level' => 'Höhe unter Normal-Null (Meeresspiegel)',
@@ -4288,7 +4288,7 @@ $VERSION = '1.32';
4288
4288
  'GPSAreaInformation' => 'Name des GPS-Gebietes',
4289
4289
  'GPSDOP' => 'Messgenauigkeit',
4290
4290
  'GPSDateStamp' => 'GPS Datum',
4291
- 'GPSDateTime' => 'GPS-Zeit (Atomuhr)',
4291
+ 'GPSDateTime' => 'GPS Zeitstempel',
4292
4292
  'GPSDestBearing' => 'Motivrichtung',
4293
4293
  'GPSDestBearingRef' => {
4294
4294
  Description => 'Referenz für Motivrichtung',
@@ -4297,9 +4297,9 @@ $VERSION = '1.32';
4297
4297
  'True North' => 'Geographische Ausrichtung',
4298
4298
  },
4299
4299
  },
4300
- 'GPSDestDistance' => 'Distanz zum Ziel',
4300
+ 'GPSDestDistance' => 'GPS Zielentfernung',
4301
4301
  'GPSDestDistanceRef' => {
4302
- Description => 'Reference for distance to destination',
4302
+ Description => 'GPS-Zielentfernung Maßeinheit',
4303
4303
  PrintConv => {
4304
4304
  'Kilometers' => 'Kilometer',
4305
4305
  'Miles' => 'Meilen',
@@ -4323,7 +4323,7 @@ $VERSION = '1.32';
4323
4323
  },
4324
4324
  },
4325
4325
  'GPSDifferential' => {
4326
- Description => 'GPS-Differentialkorrektur',
4326
+ Description => 'GPS Differentialkorrektur',
4327
4327
  PrintConv => {
4328
4328
  'Differential Corrected' => 'Differentialkorrektur angewandt',
4329
4329
  'No Correction' => 'Messung ohne Differentialkorrektur',
@@ -4356,7 +4356,7 @@ $VERSION = '1.32';
4356
4356
  },
4357
4357
  'GPSMapDatum' => 'Geodätisches Datum',
4358
4358
  'GPSMeasureMode' => {
4359
- Description => 'GPS-Messverfahren',
4359
+ Description => 'GPS Messverfahren',
4360
4360
  PrintConv => {
4361
4361
  '2-D' => '2-Dimensionale Messung',
4362
4362
  '2-Dimensional' => '2-Dimensionale Messung',
@@ -4378,13 +4378,13 @@ $VERSION = '1.32';
4378
4378
  },
4379
4379
  },
4380
4380
  'GPSStatus' => {
4381
- Description => 'GPS-Empfänger-Status',
4381
+ Description => 'GPS-Empfänger Status',
4382
4382
  PrintConv => {
4383
4383
  'Measurement Active' => 'Messung aktiv',
4384
4384
  'Measurement Void' => 'Messung ungültig',
4385
4385
  },
4386
4386
  },
4387
- 'GPSTimeStamp' => 'GPS-Zeit (Atomuhr)',
4387
+ 'GPSTimeStamp' => 'GPS-Zeit UTC',
4388
4388
  'GPSTrack' => 'Bewegungsrichtung',
4389
4389
  'GPSTrackRef' => {
4390
4390
  Description => 'Referenz für Bewegungsrichtung',
@@ -4468,7 +4468,7 @@ $VERSION = '1.32';
4468
4468
  },
4469
4469
  'Headline' => 'Überschrift',
4470
4470
  'HeightResolution' => 'Vertikale Bildauflösung',
4471
- 'HierarchicalSubject' => 'Hierarchische Schlüsselworte',
4471
+ 'HierarchicalSubject' => 'Hierarchische Schlüsselwörter',
4472
4472
  'HighISONoiseReduction' => {
4473
4473
  Description => 'Rauschunterdrückung bei hoher Empfindlichkeit',
4474
4474
  PrintConv => {
@@ -4536,7 +4536,7 @@ $VERSION = '1.32';
4536
4536
  'HuffmanTable' => 'Huffman Tabelle',
4537
4537
  'HyperfocalDistance' => 'Hyperfokale Entfernung',
4538
4538
  'ICCProfile' => 'ICC-Profil',
4539
- 'ICCProfileName' => 'Name des ICC-Profils',
4539
+ 'ICCProfileName' => 'ICC-Profil Name',
4540
4540
  'ICC_Profile' => 'ICC-Profil',
4541
4541
  'ID3Size' => 'ID3 Datenlänge',
4542
4542
  'IDCCreativeStyle' => {
@@ -4862,7 +4862,7 @@ $VERSION = '1.32';
4862
4862
  },
4863
4863
  },
4864
4864
  'Instructions' => 'Anweisungen',
4865
- 'IntellectualGenre' => 'Genre',
4865
+ 'IntellectualGenre' => 'Intellektuelles Genre',
4866
4866
  'IntelligentAuto' => {
4867
4867
  PrintConv => {
4868
4868
  'Advanced' => 'Erweitert',
@@ -4954,7 +4954,7 @@ $VERSION = '1.32';
4954
4954
  'InternalName' => 'Interner Name',
4955
4955
  'InternalSerialNumber' => 'Interne Seriennummer',
4956
4956
  'InteropIndex' => {
4957
- Description => 'Interoperabilitäts-Identifikation',
4957
+ Description => 'Interoperabilität Identifikation',
4958
4958
  PrintConv => {
4959
4959
  'R03 - DCF option file (Adobe RGB)' => 'R03: DCF Option-Format (Adobe RGB)',
4960
4960
  'R98 - DCF basic file (sRGB)' => 'R98: DCF Basic-Format (sRGB)',
@@ -4998,14 +4998,14 @@ $VERSION = '1.32';
4998
4998
  },
4999
4999
  'JPEGSize' => 'JPEG Größe',
5000
5000
  'JPEGTables' => 'JPEG Tabellen',
5001
- 'JobID' => 'Job-ID',
5001
+ 'JobID' => 'Job-Kennung',
5002
5002
  'JpgFromRaw' => 'Jpg From Raw Bild',
5003
5003
  'JpgFromRawLength' => 'Jpg From Raw Datenlänge',
5004
5004
  'JpgFromRawStart' => 'Jpg From Raw Datenposition',
5005
5005
  'JpgRecordedPixels' => 'JPEG-Auflösung',
5006
5006
  'Key' => 'Schlüssel',
5007
5007
  'Keyword' => 'Schlüsselwort',
5008
- 'Keywords' => 'Schlüsselwort',
5008
+ 'Keywords' => 'Schlüsselwörter',
5009
5009
  'KodakImageHeight' => 'Kodak-Bildhöhe',
5010
5010
  'KodakImageWidth' => 'Kodak-Bildbreite',
5011
5011
  'LC1' => 'Objektiv-Wert',
@@ -5054,7 +5054,7 @@ $VERSION = '1.32';
5054
5054
  'On' => 'Ein',
5055
5055
  },
5056
5056
  },
5057
- 'Label' => 'Bezeichnung',
5057
+ 'Label' => 'Beschriftung',
5058
5058
  'Landmark' => 'Sehenswürdigkeit',
5059
5059
  'Language' => 'Sprache',
5060
5060
  'LanguageCode' => {
@@ -6051,7 +6051,7 @@ $VERSION = '1.32';
6051
6051
  'OriginalTHMFileType' => 'Original THM Dateityp',
6052
6052
  'OriginalTHMImage' => 'Original THM Bild',
6053
6053
  'OriginalTHMResource' => 'Original THM Basisdaten',
6054
- 'OriginalTransmissionReference' => 'Jobkennung',
6054
+ 'OriginalTransmissionReference' => 'Anbietervermerk Verweis',
6055
6055
  'OriginatingProgram' => 'Erstellungsprogramm',
6056
6056
  'OtherImage' => 'Other Image Vorschaubild',
6057
6057
  'OtherImageLength' => 'OtherImage Datenlänge',
@@ -6511,7 +6511,7 @@ $VERSION = '1.32';
6511
6511
  'ProcessingInfo' => 'Verarbeitungsinformationen',
6512
6512
  'ProcessingSoftware' => 'Verarbeitungssoftware',
6513
6513
  'Producer' => 'Produzent',
6514
- 'ProducerKeywords' => 'Hersteller Schlüsselwort',
6514
+ 'ProducerKeywords' => 'Hersteller Schlüsselwörter',
6515
6515
  'Producers' => 'Produzent',
6516
6516
  'ProductID' => 'Produkt-ID',
6517
6517
  'ProductionCode' => 'Herstellungskennzeichen',
@@ -6533,8 +6533,8 @@ $VERSION = '1.32';
6533
6533
  'ProfileCopyright' => 'Urheberrechtsvermerk',
6534
6534
  'ProfileCreator' => 'Profilersteller',
6535
6535
  'ProfileDateTime' => 'Profil-Erstellungszeit',
6536
- 'ProfileDescription' => 'Profil-Beschreibung',
6537
- 'ProfileDescriptionML' => 'Profil-Beschreibung ML',
6536
+ 'ProfileDescription' => 'Farbprofil Name',
6537
+ 'ProfileDescriptionML' => 'Farbprofil Name mehrsprachig',
6538
6538
  'ProfileFileSignature' => 'Profil-Datei-Signatur',
6539
6539
  'ProfileID' => 'Profile-ID',
6540
6540
  'ProfileSequenceDesc' => 'Profilsequenz-Beschreibung',
@@ -7722,9 +7722,9 @@ $VERSION = '1.32';
7722
7722
  'Monochrome' => 'Monochrom',
7723
7723
  },
7724
7724
  },
7725
- 'Subject' => 'Thema',
7725
+ 'Subject' => 'Themen/Schlüsselwörter',
7726
7726
  'SubjectArea' => 'Hauptobjektposition',
7727
- 'SubjectCode' => 'Themencode',
7727
+ 'SubjectCode' => 'IPTC Themencode',
7728
7728
  'SubjectDistance' => 'Objektentfernung',
7729
7729
  'SubjectDistanceRange' => {
7730
7730
  Description => 'Objektdistanzbereich',
@@ -8092,7 +8092,7 @@ $VERSION = '1.32';
8092
8092
  'Rotate 90 CW' => '90° im Uhrzeigersinn',
8093
8093
  },
8094
8094
  },
8095
- 'TransmissionReference' => 'Übertragungsbezug',
8095
+ 'TransmissionReference' => 'Anbietervermerk',
8096
8096
  'Trapped' => {
8097
8097
  PrintConv => {
8098
8098
  'Unknown' => 'Unbekannt',
@@ -8198,7 +8198,7 @@ $VERSION = '1.32';
8198
8198
  'Enable' => 'Möglich',
8199
8199
  },
8200
8200
  },
8201
- 'UsageTerms' => 'Verwendungsvorschriften',
8201
+ 'UsageTerms' => 'Nutzungsbedingungen',
8202
8202
  'UserComment' => 'Benutzerkommentar',
8203
8203
  'UserDef1PictureStyle' => {
8204
8204
  Description => 'Bildstil Benutzerdefiniert 1',
@@ -8632,7 +8632,7 @@ $VERSION = '1.32';
8632
8632
  'XMP' => 'XMP Metadaten',
8633
8633
  'XPAuthor' => 'XP Autor',
8634
8634
  'XPComment' => 'XP Kommentar',
8635
- 'XPKeywords' => 'XP Schlüsselwort',
8635
+ 'XPKeywords' => 'XP Schlüsselwörter',
8636
8636
  'XPSubject' => 'XP Thema',
8637
8637
  'XPTitle' => 'XP Titel',
8638
8638
  'XResolution' => 'Horizontale Bildauflösung',
@@ -16,7 +16,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
16
16
  use Image::ExifTool::Exif;
17
17
  use Image::ExifTool::XMP;
18
18
 
19
- $VERSION = '1.19';
19
+ $VERSION = '1.21';
20
20
 
21
21
  sub RecoverTruncatedIPTC($$$);
22
22
  sub ListToString($);
@@ -130,7 +130,11 @@ my $mwgLoaded; # flag set if we alreaded Load()ed the MWG tags
130
130
  },
131
131
  # must check for validity in RawConv to avoid hiding a same-named tag,
132
132
  # but IPTC dates use a ValueConv so we need to derive the value there
133
- RawConv => '(defined $val[0] or defined $val[1] or defined $val[3]) ? $val : undef',
133
+ RawConv => q{
134
+ (defined $val[0] or defined $val[1] or defined $val[3] or
135
+ (defined $val[4] and (not defined $val[5] or not defined $val[6]
136
+ or $val[5] eq $val[6]))) ? $val : undef
137
+ },
134
138
  ValueConv => q{
135
139
  return $val[0] if defined $val[0] and $val[0] !~ /^[: ]*$/;
136
140
  return $val[1] if defined $val[1] and $val[1] !~ /^[: ]*$/;
@@ -166,7 +170,11 @@ my $mwgLoaded; # flag set if we alreaded Load()ed the MWG tags
166
170
  5 => 'CurrentIPTCDigest',
167
171
  6 => 'IPTCDigest',
168
172
  },
169
- RawConv => '(defined $val[0] or defined $val[1] or defined $val[3]) ? $val : undef',
173
+ RawConv => q{
174
+ (defined $val[0] or defined $val[1] or defined $val[3] or
175
+ (defined $val[4] and (not defined $val[5] or not defined $val[6]
176
+ or $val[5] eq $val[6]))) ? $val : undef
177
+ },
170
178
  ValueConv => q{
171
179
  return $val[0] if defined $val[0] and $val[0] !~ /^[: ]*$/;
172
180
  return $val[1] if defined $val[1] and $val[1] !~ /^[: ]*$/;
@@ -430,7 +438,7 @@ my %sRegionStruct = (
430
438
  Extensions => { Struct => \%sExtensions },
431
439
  Rotation => { # (observed in LR6 XMP)
432
440
  Writable => 'real',
433
- Notes => 'RegionsRegionListRotation, not part of MWG 2.0 spec',
441
+ Notes => 'not part of MWG 2.0 spec',
434
442
  },
435
443
  seeAlso => { Namespace => 'rdfs', Resource => 1 },
436
444
  );
@@ -21,7 +21,7 @@ sub ProcessKodakPatch($$$);
21
21
  sub WriteUnknownOrPreview($$$);
22
22
  sub FixLeicaBase($$;$);
23
23
 
24
- $VERSION = '1.99';
24
+ $VERSION = '2.00';
25
25
 
26
26
  my $debug; # set to 1 to enable debugging code
27
27
 
@@ -608,7 +608,7 @@ my $debug; # set to 1 to enable debugging code
608
608
  # (T (Typ 701) starts with "LEICA\0\0x6", Make is "LEICA CAMERA AG")
609
609
  # (X (Typ 113) starts with "LEICA\0\0x7", Make is "LEICA CAMERA AG")
610
610
  # (X-U (Typ 113) starts with "LEICA\0\x10\0", Make is "LEICA CAMERA AG")
611
- Condition => '$$valPt =~ /^LEICA\0[\x01\x04\x05\x06\x07\x10]\0/',
611
+ Condition => '$$valPt =~ /^LEICA\0[\x01\x04\x05\x06\x07\x10\x1a]\0/',
612
612
  SubDirectory => {
613
613
  TagTable => 'Image::ExifTool::Panasonic::Leica5',
614
614
  Start => '$valuePtr + 8',
@@ -752,7 +752,7 @@ my $debug; # set to 1 to enable debugging code
752
752
  {
753
753
  Name => 'MakerNotePentax5',
754
754
  # (starts with "PENTAX \0")
755
- # used by cameras such as the Q, Optio S1, RS1500 and WG-1
755
+ # used by cameras such as the Q, Optio S1, RS1500 and WG-1
756
756
  Condition => '$$valPt=~/^PENTAX \0/',
757
757
  SubDirectory => {
758
758
  TagTable => 'Image::ExifTool::Pentax::Main',
@@ -14,7 +14,7 @@ use strict;
14
14
  use vars qw($VERSION);
15
15
  use Image::ExifTool qw(:DataAccess :Utils);
16
16
 
17
- $VERSION = '1.08';
17
+ $VERSION = '1.09';
18
18
 
19
19
  my %noYes = ( 0 => 'No', 1 => 'Yes' );
20
20
 
@@ -659,6 +659,7 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
659
659
  0 => 'Rectangular',
660
660
  1 => 'Equirectangular',
661
661
  2 => 'Cubemap',
662
+ 3 => 'Mesh',
662
663
  },
663
664
  },
664
665
  0x7672 => [{
@@ -16,7 +16,7 @@ use vars qw($VERSION);
16
16
  use Image::ExifTool qw(:DataAccess :Utils);
17
17
  use Image::ExifTool::XMP;
18
18
 
19
- $VERSION = '1.18';
19
+ $VERSION = '1.19';
20
20
 
21
21
  sub ProcessXtra($$$);
22
22
 
@@ -88,8 +88,8 @@ sub ProcessXtra($$$);
88
88
  Rating => {
89
89
  Name => 'RatingPercent',
90
90
  Notes => q{
91
- called Rating by the spec. XMP-xmp:Rating values of 1,2,3,4 and 5 stars
92
- correspond to RatingPercent values of 1,25,50,75 and 99 respectively
91
+ XMP-xmp:Rating values of 1,2,3,4 and 5 stars correspond to RatingPercent
92
+ values of 1,25,50,75 and 99 respectively
93
93
  },
94
94
  },
95
95
  CreatorAppId => { Name => 'CreatorAppID' },