exiftool_vendored 11.86.0 → 11.88.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 (62) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +38 -16
  3. data/bin/MANIFEST +3 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +34 -33
  7. data/bin/config_files/acdsee.config +1 -3
  8. data/bin/config_files/depthmap.config +56 -0
  9. data/bin/config_files/example.config +2 -0
  10. data/bin/config_files/gps2utm.config +1 -1
  11. data/bin/config_files/tiff_version.config +1 -1
  12. data/bin/exiftool +56 -39
  13. data/bin/fmt_files/gpx_wpt.fmt +1 -1
  14. data/bin/lib/Image/ExifTool.pm +32 -7
  15. data/bin/lib/Image/ExifTool.pod +53 -52
  16. data/bin/lib/Image/ExifTool/AIFF.pm +1 -1
  17. data/bin/lib/Image/ExifTool/Apple.pm +1 -1
  18. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +3 -3
  19. data/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
  20. data/bin/lib/Image/ExifTool/DNG.pm +1 -1
  21. data/bin/lib/Image/ExifTool/Exif.pm +3 -3
  22. data/bin/lib/Image/ExifTool/FITS.pm +1 -1
  23. data/bin/lib/Image/ExifTool/FLIR.pm +5 -5
  24. data/bin/lib/Image/ExifTool/Flash.pm +1 -1
  25. data/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
  26. data/bin/lib/Image/ExifTool/Font.pm +2 -2
  27. data/bin/lib/Image/ExifTool/FujiFilm.pm +23 -7
  28. data/bin/lib/Image/ExifTool/GIF.pm +1 -1
  29. data/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
  30. data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  31. data/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  32. data/bin/lib/Image/ExifTool/MIE.pm +1 -1
  33. data/bin/lib/Image/ExifTool/Minolta.pm +1 -1
  34. data/bin/lib/Image/ExifTool/Nikon.pm +1 -1
  35. data/bin/lib/Image/ExifTool/NikonCustom.pm +2 -2
  36. data/bin/lib/Image/ExifTool/Olympus.pm +4 -2
  37. data/bin/lib/Image/ExifTool/PDF.pm +2 -2
  38. data/bin/lib/Image/ExifTool/PNG.pm +10 -5
  39. data/bin/lib/Image/ExifTool/Panasonic.pm +1 -1
  40. data/bin/lib/Image/ExifTool/Pentax.pm +3 -3
  41. data/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
  42. data/bin/lib/Image/ExifTool/QuickTime.pm +9 -4
  43. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +1 -1
  44. data/bin/lib/Image/ExifTool/README +51 -51
  45. data/bin/lib/Image/ExifTool/RIFF.pm +2 -2
  46. data/bin/lib/Image/ExifTool/RTF.pm +1 -1
  47. data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
  48. data/bin/lib/Image/ExifTool/Sony.pm +1 -1
  49. data/bin/lib/Image/ExifTool/TagLookup.pm +1725 -1617
  50. data/bin/lib/Image/ExifTool/TagNames.pod +307 -9
  51. data/bin/lib/Image/ExifTool/Text.pm +59 -10
  52. data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
  53. data/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
  54. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +27 -12
  55. data/bin/lib/Image/ExifTool/WriteXMP.pl +1 -1
  56. data/bin/lib/Image/ExifTool/Writer.pl +25 -7
  57. data/bin/lib/Image/ExifTool/XMP.pm +6 -1
  58. data/bin/lib/Image/ExifTool/XMP2.pl +213 -1
  59. data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
  60. data/bin/perl-Image-ExifTool.spec +30 -30
  61. data/lib/exiftool_vendored/version.rb +1 -1
  62. metadata +3 -2
@@ -466,7 +466,7 @@ Block:
466
466
  } elsif ($a == 0xf9 and $length == 4) { # graphic control extension
467
467
 
468
468
  last unless $raf->Read($buff, $length) == $length;
469
- # sum the indivual delay times
469
+ # sum the individual delay times
470
470
  my $delay = Get16u(\$buff, 1);
471
471
  $delayTime += $delay;
472
472
  $verbose and printf $out "Graphic Control: delay=%.2f\n", $delay / 100;
@@ -603,7 +603,7 @@ my %epsg_vertcs = (
603
603
  20499 => 'Ain el Abd Bahrain Grid',
604
604
  20538 => 'Afgooye UTM zone 38N',
605
605
  20539 => 'Afgooye UTM zone 39N',
606
- 20700 => 'Lisbon Portugese Grid',
606
+ 20700 => 'Lisbon Portuguese Grid',
607
607
  20822 => 'Aratu UTM zone 22S',
608
608
  20823 => 'Aratu UTM zone 23S',
609
609
  20824 => 'Aratu UTM zone 24S',
@@ -61,7 +61,7 @@ my %manuSig = ( #6
61
61
  'AAMA' => 'Aamazing Technologies, Inc.',
62
62
  'ACER' => 'Acer Peripherals',
63
63
  'ACLT' => 'Acolyte Color Research',
64
- 'ACTI' => 'Actix Sytems, Inc.',
64
+ 'ACTI' => 'Actix Systems, Inc.',
65
65
  'ADAR' => 'Adara Technology, Inc.',
66
66
  'ADBE' => 'Adobe Systems Inc.',
67
67
  'ADI ' => 'ADI Systems, Inc.',
@@ -283,7 +283,7 @@ my %PrintConv = ( #JD
283
283
  '42bfe52476bf07f1ed0e6451903cc9ee:111111' => 'Adobe Lightroom, Quality 85% - 92%',
284
284
  '4c3c425b4024b68c0de03904a825bc35:111111' => 'Adobe Lightroom, Quality 93% - 100%',
285
285
 
286
- # Tested with Adobe Photoshop CS2 Version 9.0.2 (Win) - "Save as..." (RGB/CYMK)
286
+ # Tested with Adobe Photoshop CS2 Version 9.0.2 (Win) - "Save as..." (RGB/CMYK)
287
287
  '683506a889c78d9bc230a0c7ee5f62f3:221111' => 'Adobe Photoshop, Quality 0',
288
288
  'bc490651af6592cd1dbbbc4fa2cfa1fb:221111' => 'Adobe Photoshop, Quality 1',
289
289
  'ce4286d9f07999524c3c7472b065c5ab:221111' => 'Adobe Photoshop, Quality 2',
@@ -1339,7 +1339,7 @@ sub WriteMIEGroup($$$)
1339
1339
  $extLen = Set32u($len);
1340
1340
  $len = 254;
1341
1341
  } else {
1342
- $et->Warn("Can't write $newTag (DataLength > 2GB not yet suppported)");
1342
+ $et->Warn("Can't write $newTag (DataLength > 2GB not yet supported)");
1343
1343
  last; # don't write this tag
1344
1344
  }
1345
1345
  # write this element (with leading MIE group element if not done already)
@@ -1838,7 +1838,7 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
1838
1838
  },
1839
1839
  );
1840
1840
 
1841
- # Image stabilization inforamtion used by the Sony DSLR-A100 (ref 20)
1841
+ # Image stabilization information used by the Sony DSLR-A100 (ref 20)
1842
1842
  %Image::ExifTool::Minolta::ISInfoA100 = (
1843
1843
  PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
1844
1844
  WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
@@ -3524,7 +3524,7 @@ my %binaryDataAttrs = (
3524
3524
  Name => 'AFPointsUsed',
3525
3525
  Condition => '$$self{PhaseDetectAF} == 5',
3526
3526
  Notes => q{
3527
- newer models with 135-point AF -- 9 rows (B-J) and 15 colums (1-15). Center
3527
+ newer models with 135-point AF -- 9 rows (B-J) and 15 columns (1-15). Center
3528
3528
  point is F8
3529
3529
  },
3530
3530
  Format => 'undef[21]',
@@ -6950,8 +6950,8 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
6950
6950
  },
6951
6951
  },
6952
6952
  49.1 => { # CSa9
6953
- Name => 'LimitAFAreaModeSelection', #note that 'Dynamic area (9 points)' can be selected from the camera menu but the setting is not writen to the EXIF data.
6954
- Mask => 0x7e, #...This AF Mode was addded to the D5 firmware several months after the camera's initial release which may help explain the inconsistency.
6953
+ Name => 'LimitAFAreaModeSelection', #note that 'Dynamic area (9 points)' can be selected from the camera menu but the setting is not written to the EXIF data.
6954
+ Mask => 0x7e, #...This AF Mode was added to the D5 firmware several months after the camera's initial release which may help explain the inconsistency.
6955
6955
  PrintConv => {
6956
6956
  0 => 'No Restrictions',
6957
6957
  BITMASK => {
@@ -21,7 +21,7 @@
21
21
  # 13) Chris Shaw private communication (E-3)
22
22
  # 14) Viktor Lushnikov private communication (E-400)
23
23
  # 15) Yrjo Rauste private communication (E-30)
24
- # 16) Godfrey DiGiorgi private communcation (E-P1) + http://forums.dpreview.com/forums/read.asp?message=33187567
24
+ # 16) Godfrey DiGiorgi private communication (E-P1) + http://forums.dpreview.com/forums/read.asp?message=33187567
25
25
  # 17) Martin Hibers private communication
26
26
  # 18) Tomasz Kawecki private communication
27
27
  # 19) Brad Grier private communication
@@ -39,7 +39,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
39
39
  use Image::ExifTool::Exif;
40
40
  use Image::ExifTool::APP12;
41
41
 
42
- $VERSION = '2.63';
42
+ $VERSION = '2.64';
43
43
 
44
44
  sub PrintLensInfo($$$);
45
45
 
@@ -109,6 +109,7 @@ my %olympusLensTypes = (
109
109
  '0 32 10' => 'Olympus M.Zuiko Digital ED 12-200mm F3.5-6.3', #IB
110
110
  '0 33 00' => 'Olympus Zuiko Digital 25mm F2.8', #PH
111
111
  '0 34 00' => 'Olympus Zuiko Digital ED 9-18mm F4.0-5.6', #7
112
+ '0 34 10' => 'Olympus M.Zuiko Digital ED 12-45mm F4.0 Pro', #IB
112
113
  '0 35 00' => 'Olympus Zuiko Digital 14-54mm F2.8-3.5 II', #PH
113
114
  # Sigma lenses
114
115
  '1 01 00' => 'Sigma 18-50mm F3.5-5.6 DC', #8
@@ -418,6 +419,7 @@ my %olympusCameraTypes = (
418
419
  S0080 => 'E-M1X', #IB
419
420
  S0085 => 'E-PL10', #IB
420
421
  S0089 => 'E-M5MarkIII',
422
+ S0092 => 'E-M1MarkIII', #IB
421
423
  SR45 => 'D220',
422
424
  SR55 => 'D320L',
423
425
  SR83 => 'D340L',
@@ -95,7 +95,7 @@ my %supportedFilter = (
95
95
  WRITABLE => 'string',
96
96
  # set PRIORITY to 0 so most recent Info dictionary takes precedence
97
97
  # (Acrobat Pro bug? doesn't use same object/generation number for
98
- # new Info dictionary when doing incrmental update)
98
+ # new Info dictionary when doing incremental update)
99
99
  PRIORITY => 0,
100
100
  NOTES => q{
101
101
  As well as the tags listed below, the PDF specification allows for
@@ -779,7 +779,7 @@ sub FetchObject($$$$)
779
779
  return undef;
780
780
  }
781
781
  # extract the object at the specified index in the stream
782
- # (offsets in table are in sequential order, so we can subract from
782
+ # (offsets in table are in sequential order, so we can subtract from
783
783
  # the next offset to get the object length)
784
784
  $offset = $$table[$i + 1];
785
785
  my $len = ($$table[$i + 3] || length($$obj{_stream})) - $offset;
@@ -36,7 +36,7 @@ use strict;
36
36
  use vars qw($VERSION $AUTOLOAD %stdCase);
37
37
  use Image::ExifTool qw(:DataAccess :Utils);
38
38
 
39
- $VERSION = '1.53';
39
+ $VERSION = '1.54';
40
40
 
41
41
  sub ProcessPNG_tEXt($$$);
42
42
  sub ProcessPNG_iTXt($$$);
@@ -118,6 +118,11 @@ my %noLeapFrog = ( SAVE => 1, SEEK => 1, IHDR => 1, JHDR => 1, IEND => 1, MEND =
118
118
  other text chunks here. For this reason, when writing, ExifTool 11.63 and
119
119
  later create new text chunks (including XMP) before IDAT, and move existing
120
120
  text chunks to before IDAT.
121
+
122
+ The PNG format contains CRC checksums that are validated when reading with
123
+ either the L<Verbose|../ExifTool.html#Verbose> or L<Validate|../ExifTool.html#Validate> option. When writing, these checksums are
124
+ validated by default, but the L<FastScan|../ExifTool.html#FastScan> option may be used to bypass this
125
+ check if speed is more of a concern.
121
126
  },
122
127
  bKGD => {
123
128
  Name => 'BackgroundColor',
@@ -614,7 +619,7 @@ my %unreg = ( Notes => 'unregistered' );
614
619
  GROUPS => { 2 => 'Image' },
615
620
  FORMAT => 'int32u',
616
621
  NOTES => q{
617
- Tags found in the Animation Conrol chunk. See
622
+ Tags found in the Animation Control chunk. See
618
623
  L<https://wiki.mozilla.org/APNG_Specification> for details.
619
624
  },
620
625
  0 => {
@@ -1248,7 +1253,8 @@ sub ProcessPNG($$)
1248
1253
  my $datChunk = '';
1249
1254
  my $datCount = 0;
1250
1255
  my $datBytes = 0;
1251
- my ($n, $sig, $err, $hbuf, $dbuf, $cbuf, $fastScan);
1256
+ my $fastScan = $et->Options('FastScan');
1257
+ my ($n, $sig, $err, $hbuf, $dbuf, $cbuf);
1252
1258
  my ($wasHdr, $wasEnd, $wasDat, $doTxt, @txtOffset);
1253
1259
 
1254
1260
  # check to be sure this is a valid PNG/MNG/JNG image
@@ -1264,7 +1270,6 @@ sub ProcessPNG($$)
1264
1270
  # initialize with same directories, with PNG tags taking priority
1265
1271
  $et->InitWriteDirs(\%pngMap,'PNG');
1266
1272
  } else {
1267
- $fastScan = $et->Options('FastScan');
1268
1273
  # disable buffering in FastScan mode
1269
1274
  $$raf{NoBuffer} = 1 if $fastScan;
1270
1275
  }
@@ -1427,7 +1432,7 @@ sub ProcessPNG($$)
1427
1432
  $et->Warn("Corrupted $fileType image") unless $wasEnd;
1428
1433
  last;
1429
1434
  }
1430
- if ($verbose or $validate or $outfile) {
1435
+ if ($verbose or $validate or ($outfile and not $fastScan)) {
1431
1436
  # check CRC when in verbose mode (since we don't care about speed)
1432
1437
  my $crc = CalculateCRC(\$hbuf, undef, 4);
1433
1438
  $crc = CalculateCRC(\$dbuf, $crc);
@@ -2449,7 +2449,7 @@ sub ProcessLeicaLEIC($$$)
2449
2449
  #------------------------------------------------------------------------------
2450
2450
  # Process MakerNote trailer written by Leica S2
2451
2451
  # Inputs: 0) ExifTool object ref, 1) new absolute position of Leica trailer when writing
2452
- # Returns: On success: 1 when reading, directory data when writing; othewise undef
2452
+ # Returns: On success: 1 when reading, directory data when writing; otherwise undef
2453
2453
  # Notes:
2454
2454
  # - may be called twice for a file if the first call doesn't succeed
2455
2455
  # - must leave RAF position unchanged
@@ -4309,15 +4309,15 @@ my %binaryDataAttrs = (
4309
4309
  Name => 'LC3',
4310
4310
  %lensCode,
4311
4311
  },
4312
- 5 => { # LC4 = abberation correction, near distance data
4312
+ 5 => { # LC4 = aberation correction, near distance data
4313
4313
  Name => 'LC4',
4314
4314
  %lensCode,
4315
4315
  },
4316
- 6 => { # LC5 = light color abberation correction data
4316
+ 6 => { # LC5 = light color aberation correction data
4317
4317
  Name => 'LC5',
4318
4318
  %lensCode,
4319
4319
  },
4320
- 7 => { # LC6 = open abberation data
4320
+ 7 => { # LC6 = open aberation data
4321
4321
  Name => 'LC6',
4322
4322
  %lensCode,
4323
4323
  },
@@ -545,7 +545,7 @@ my %unicodeString = (
545
545
  PrintConv => 'sprintf("%d%%",$val)',
546
546
  },
547
547
  # tags extracted from additional layer information (tag ID's are real)
548
- # - must be able to accomodate a blank entry to preserve the list ordering
548
+ # - must be able to accommodate a blank entry to preserve the list ordering
549
549
  luni => {
550
550
  Name => 'LayerUnicodeNames',
551
551
  List => 1,
@@ -6295,7 +6295,7 @@ my %eeBox = (
6295
6295
  # tsas - temporal sublayer sample
6296
6296
  # stsa - step-wise temporal layer access
6297
6297
  # avss - AVC sample
6298
- # tscl - temporal layer scaleability
6298
+ # tscl - temporal layer scalability
6299
6299
  # sync - sync sample
6300
6300
  },
6301
6301
  subs => {
@@ -7391,7 +7391,7 @@ sub FixWrongFormat($)
7391
7391
  #------------------------------------------------------------------------------
7392
7392
  # Convert ISO 6709 string to standard lag/lon format
7393
7393
  # Inputs: 0) ISO 6709 string (lat, lon, and optional alt)
7394
- # Returns: position in decimal degress with altitude if available
7394
+ # Returns: position in decimal degrees with altitude if available
7395
7395
  # Notes: Wikipedia indicates altitude may be in feet -- how is this specified?
7396
7396
  sub ConvertISO6709($)
7397
7397
  {
@@ -7610,7 +7610,12 @@ sub PrintableTagID($;$)
7610
7610
  # ConstructionMethod - offset type: 0=file, 1=idat, 2=item
7611
7611
  # DataReferenceIndex - 0 for "this file", otherwise index in dref box
7612
7612
  # BaseOffset - base for file offsets
7613
- # Extents - list of index,offset,length,nlen,lenPt details for data in file
7613
+ # Extents - list of details for data in file:
7614
+ # 0) index (extent_index)
7615
+ # 1) offset (extent_offset)
7616
+ # 2) length (extent_length)
7617
+ # 3) nlen (length_size)
7618
+ # 4) lenPt (pointer to length word)
7614
7619
  # infe:
7615
7620
  # ProtectionIndex - index if item is protected (0 for unprotected)
7616
7621
  # Name - item name
@@ -8514,7 +8519,7 @@ ItemID: foreach $id (keys %$items) {
8514
8519
  last ItemID;
8515
8520
  } elsif ($$item{DocNum}) {
8516
8521
  # this property is already associated with an item that has
8517
- # an ExifTool document number, so use the lowest assocated DocNum
8522
+ # an ExifTool document number, so use the lowest associated DocNum
8518
8523
  $docNum = $$item{DocNum} if not defined $docNum or $docNum > $$item{DocNum};
8519
8524
  } elsif (not defined $lowest or $lowest > $id) {
8520
8525
  # keep track of the lowest associated item ID
@@ -560,7 +560,7 @@ sub SaveMetaKeys($$$)
560
560
  my ($tagID, $format, $pid);
561
561
  if ($verbose) {
562
562
  $pid = PrintableTagID($id,1);
563
- $et->VPrint(0, "$oldIndent+ [Metdata Key entry, Local ID=$pid, $size bytes]\n");
563
+ $et->VPrint(0, "$oldIndent+ [Metadata Key entry, Local ID=$pid, $size bytes]\n");
564
564
  $$et{INDENT} .= '| ';
565
565
  }
566
566
 
@@ -174,7 +174,7 @@ key:
174
174
 
175
175
  PREFERRED : Set to true if the tags in this table should always be added when
176
176
  writing information. Overrides the order specified by SetNewGroups(). When
177
- this feature is used, it may also be desireable to specify a preferred group
177
+ this feature is used, it may also be desirable to specify a preferred group
178
178
  when calling InitWriteDirs() to write these tags; this avoids creating other
179
179
  directories for tags which are already being creating in the preferred group.
180
180
 
@@ -573,53 +573,53 @@ numerical, and generated automatically otherwise.
573
573
  split at whitespace into a list of items and each item is
574
574
  converted by the associated entry in the ValueConv list. A
575
575
  special value of 'REPEAT' may be used to repeat the previous
576
- conversion for all remaning elements). If a hash reference is
577
- used and the Raw value doesn't appear as one of the keys, then
578
- the converted value is set to "Unknown (X)", where X is the
579
- Raw value (unless either of the special keys exist: 'BITMASK',
580
- a reference to a hash used to decode individual value bits; or
581
- 'OTHER', a reference to a subroutine used to convert unknown
582
- values. The OTHER subroutine takes 3 arguments: the value, a
583
- flag which is set for the inverse conversion, and a reference
584
- to the PrintConv hash, and returns the converted value or
585
- undef on error -- it may call warn() to return an error
586
- message. The lookup hash may also contain a 'Notes' entry
587
- which is used for documentation if the SeparateTable flag is
588
- set). In an expression, $self is a reference to the current
589
- ExifTool object, $val is the Raw value, and $tag is the tag
590
- key. The subroutine takes 2 arguments: the Raw value and a
591
- reference to the current ExifTool object. The advanced
592
- formatting expression (if any) may be accessed via the
593
- ExifTool "FMT_EXPR" member variable. The expression or
594
- subroutine is evaluated if and when the tag value is requested
595
- (ie. only after all extraction is complete), so if necessary
596
- at this time the values of all other tags are available via
597
- calls to $self->GetValue("Tag","Raw"). (Note: In theory,
598
- types other than "Raw" may be accessed, but they are slower
599
- and may lead to cyclical dependencies so they should be
600
- avoided). When evaluated, the expression or subroutine
601
- returns a scalar for the converted value, a SCALAR reference
602
- to a binary data value (see the 'Binary' flag), or an ARRAY
603
- reference for a list of values. The return value should
604
- always be defined -- use RawConv instead to return undef if it
605
- is necessary to test the value for validity, otherwise an
606
- undef tag may hide a previously defined value when the
607
- Duplicates option is not enabled. If this isn't possible (as
608
- with Composite tags where the converted values of the source
609
- tags are needed), set the Priority to 0 to avoid taking
610
- priority over a valid tag. If ValueConv is not specified, the
611
- Raw value is not converted. Composite tags which Require or
612
- Desire other tags may access the ValueConv, PrintConv and Raw
613
- values of these tags through the elements of the @val, @prt
614
- and @raw lists respectively (only if there was no RawConv or
615
- it returned a hash reference). For these tags, $val may be
616
- used in an expression to represent $val[0], and the first
617
- argument passed for a code reference is a reference to @val.
618
- Note: Warnings issued by these conversions are intercepted by
619
- ExifTool and saved as Warning tags, but since ValueConv and
620
- PrintConv conversions are done on demand, the warnings may be
621
- generated after the list of extracted tags is returned, so may
622
- easily be missed.
576
+ conversion for all remaining elements). If a hash reference
577
+ is used and the Raw value doesn't appear as one of the keys,
578
+ then the converted value is set to "Unknown (X)", where X is
579
+ the Raw value (unless either of the special keys exist:
580
+ 'BITMASK', a reference to a hash used to decode individual
581
+ value bits; or 'OTHER', a reference to a subroutine used to
582
+ convert unknown values. The OTHER subroutine takes 3
583
+ arguments: the value, a flag which is set for the inverse
584
+ conversion, and a reference to the PrintConv hash, and returns
585
+ the converted value or undef on error -- it may call warn() to
586
+ return an error message. The lookup hash may also contain a
587
+ 'Notes' entry which is used for documentation if the
588
+ SeparateTable flag is set). In an expression, $self is a
589
+ reference to the current ExifTool object, $val is the Raw
590
+ value, and $tag is the tag key. The subroutine takes 2
591
+ arguments: the Raw value and a reference to the current
592
+ ExifTool object. The advanced formatting expression (if any)
593
+ may be accessed via the ExifTool "FMT_EXPR" member variable.
594
+ The expression or subroutine is evaluated if and when the tag
595
+ value is requested (ie. only after all extraction is
596
+ complete), so if necessary at this time the values of all
597
+ other tags are available via calls to
598
+ $self->GetValue("Tag","Raw"). (Note: In theory, types other
599
+ than "Raw" may be accessed, but they are slower and may lead
600
+ to cyclical dependencies so they should be avoided). When
601
+ evaluated, the expression or subroutine returns a scalar for
602
+ the converted value, a SCALAR reference to a binary data value
603
+ (see the 'Binary' flag), or an ARRAY reference for a list of
604
+ values. The return value should always be defined -- use
605
+ RawConv instead to return undef if it is necessary to test the
606
+ value for validity, otherwise an undef tag may hide a
607
+ previously defined value when the Duplicates option is not
608
+ enabled. If this isn't possible (as with Composite tags where
609
+ the converted values of the source tags are needed), set the
610
+ Priority to 0 to avoid taking priority over a valid tag. If
611
+ ValueConv is not specified, the Raw value is not converted.
612
+ Composite tags which Require or Desire other tags may access
613
+ the ValueConv, PrintConv and Raw values of these tags through
614
+ the elements of the @val, @prt and @raw lists respectively
615
+ (only if there was no RawConv or it returned a hash
616
+ reference). For these tags, $val may be used in an expression
617
+ to represent $val[0], and the first argument passed for a code
618
+ reference is a reference to @val. Note: Warnings issued by
619
+ these conversions are intercepted by ExifTool and saved as
620
+ Warning tags, but since ValueConv and PrintConv conversions
621
+ are done on demand, the warnings may be generated after the
622
+ list of extracted tags is returned, so may easily be missed.
623
623
 
624
624
  PrintConv : This entry is similar to ValueConv above, except that it is
625
625
  used to further convert the tag value to a human readable
@@ -766,7 +766,7 @@ numerical, and generated automatically otherwise.
766
766
  is set to zero), and for EXIF-type tables gives format for
767
767
  writing. Writable may be set to 1 for MakerNotes information
768
768
  because the existing format is always used, however providing
769
- a format is desireable because it is used in validating the
769
+ a format is desirable because it is used in validating the
770
770
  value. Set to 2 for tag to show "yes" in the Writable column
771
771
  of the tag name documentation even when there is no WRITE_PROC
772
772
  defined (eg. if it is written via an Extra tag). For EXIF
@@ -1016,7 +1016,7 @@ numerical, and generated automatically otherwise.
1016
1016
  The following variables may be used in the expression: $val
1017
1017
  (value of the tag), $dirData (reference to directory data),
1018
1018
  $subdirStart (offset to subdirectory start) and $size (size of
1019
- subdirectory). Returns true if subirectory is valid.
1019
+ subdirectory). Returns true if subdirectory is valid.
1020
1020
 
1021
1021
  ProcessProc: If given, specifies processing procedure used to decode this
1022
1022
  subdirectory data. This overrides the default procedure
@@ -1095,7 +1095,7 @@ flattened tags are allowed, and are used when it is necessary to change the Name
1095
1095
  or Description of a flattened tag. The flattened tag information hash entries
1096
1096
  are copied from the corresponding structure field definitions, even for
1097
1097
  pre-defined flattened tags. The exception is that the List property is
1098
- generated automatically unless explicity set to 0 in a pre-defined flattened
1098
+ generated automatically unless explicitly set to 0 in a pre-defined flattened
1099
1099
  tag.
1100
1100
 
1101
1101
  --------------------------------------------------------------------------------
@@ -142,7 +142,7 @@ my %code2charset = (
142
142
  0x64 => 'APICOM G.726 ADPCM',
143
143
  0x65 => 'APICOM G.722 ADPCM',
144
144
  0x66 => 'Microsoft DSAT', #6
145
- 0x67 => 'Micorsoft DSAT DISPLAY', #6
145
+ 0x67 => 'Microsoft DSAT DISPLAY', #6
146
146
  0x69 => 'Voxware Byte Aligned', #7
147
147
  0x70 => 'Voxware AC8', #7
148
148
  0x71 => 'Voxware AC10', #7
@@ -339,7 +339,7 @@ my %code2charset = (
339
339
  these files, information is extracted from subsequent RIFF chunks as
340
340
  sub-documents, but the Duration is calculated for the full video.
341
341
  },
342
- # (not 100% sure that the concatination technique mentioned above is valid - PH)
342
+ # (not 100% sure that the concatenation technique mentioned above is valid - PH)
343
343
  'fmt ' => {
344
344
  Name => 'AudioFormat',
345
345
  SubDirectory => { TagTable => 'Image::ExifTool::RIFF::AudioFormat' },
@@ -153,7 +153,7 @@ sub UnescapeRTF($$$)
153
153
  $val =~ tr/\n\r//d; # ignore CR's and LF's
154
154
  return $val;
155
155
  }
156
- # CR/LF is signficant if it terminates a control sequence (so change these to a space)
156
+ # CR/LF is significant if it terminates a control sequence (so change these to a space)
157
157
  # (was $val =~ s/(^|[^\\])((?:\\\\)*)(\\[a-zA-Z]+(?:-?\d+)?)[\n\r]/$1$2$3 /g;)
158
158
  $val =~ s/\\(?:([a-zA-Z]+(?:-?\d+)?)[\n\r]|(.))/'\\'.($1 ? "$1 " : $2)/sge;
159
159
  # protect the newline control sequence by converting to a \par command
@@ -11,7 +11,7 @@
11
11
  # 4) Jaroslav Stepanek via rt.cpan.org
12
12
  # 5) Nick Livchits private communication
13
13
  # 6) Sreerag Raghavan private communication (SM-C200)
14
- # IB) Iliah Borg private communcation (LibRaw)
14
+ # IB) Iliah Borg private communication (LibRaw)
15
15
  # NJ) Niels Kristian Bech Jensen private communication
16
16
  #------------------------------------------------------------------------------
17
17