exiftool_vendored 10.56.0 → 10.58.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: c9bbeec52de7180ba7164158cbd9bcc52768f56e
4
- data.tar.gz: a9bb84204d3e36b430a336964f5171ab99ab3585
3
+ metadata.gz: 72daef9a11b65e07249202a45cd992a51acb07b6
4
+ data.tar.gz: 62cdaa5125babfc3efcc8e8813a0392fcc373074
5
5
  SHA512:
6
- metadata.gz: 3406356b68a7a6ad9bdd2164a2a6661d08e24438c353b9abe220e2abda673ccd6ff536c4ca6e5f2ec99aea8bf2e65c16d5f56399741ed5277d3206c9ee02df13
7
- data.tar.gz: 1b76b463ad708a4f21466e0445caccc33a0411275c0520b23bfd0ab5092ffba1ac9f563228016c90ff55418674f65d8acd67fddbe7506049b04fcb3b62742537
6
+ metadata.gz: e69f4f592268effb10cd7b4b9ca7c75307806cc3605836861a3ac6bf8d7781707939b64d05b7e11d99521add8ef5c7b9bac02ca24cee205aabfe7f8a3b2cf6a4
7
+ data.tar.gz: 4d8198e2a6fbd32b0fa85e76bf4261c8984aabb549ceba9c7a2a6ed1af0a38084d6d8fafe96f3afbc73acd48b97b0d94ae20a2b2cc2641e0a1d02513730ef4bc
data/bin/Changes CHANGED
@@ -7,6 +7,37 @@ RSS feed: http://owl.phy.queensu.ca/~phil/exiftool/rss.xml
7
7
  Note: The most recent production release is Version 10.55. (Other versions are
8
8
  considered development releases, and are not uploaded to CPAN.)
9
9
 
10
+ June 29, 2017 - Version 10.58
11
+
12
+ - Added read support for RIFF-format MBWF/RF64 files
13
+ - Added write support for dji-drone XMP tags
14
+ - Added a new Canon LensType (thanks Steve Bates)
15
+ - Added a few new Sony/Minolta LensType values (thanks Jos Roost)
16
+ - Added a new Canon LensType
17
+ - Added a couple of new CanonModelID values (thanks LibRaw and Norbert Wasser)
18
+ - Decode some new FujiFilm tags (thanks Chris Schucker)
19
+ - Enhanced FileSize print conversion to show in "GB" for large files
20
+ - Fixed "outside of string in unpack" errors when reading some corrupted
21
+ EXE/ICC files
22
+ - Fixed problem extracting GIF MIDISong metadata
23
+
24
+ June 20, 2017 - Version 10.57
25
+
26
+ - Added a new Canon LensType (thanks Norbert Wasser)
27
+ - Added write support for PNG Collection tag
28
+ - Added a few new CanonModelID values
29
+ - Added some new Pentax ShakeReduction values
30
+ - Removed ability to create PNG zxIf chunks
31
+ - Documented -progress:%b feature (added in 10.26)
32
+ - No longer report FileType, FileTypeExtension or MIMEType for JPEG/TIFF
33
+ images with an unknown header
34
+ - Relaxed case requirement for "SourceFile" header in CSV and JSON import
35
+ - Fixed decoding of Pentax ExposureCompensation for newer Ricoh models
36
+ - Fixed some incorrect "Wrong IFD" messages with experimental -validate
37
+ feature
38
+ - Fixed a couple of Sony/Minolta lens names (thanks Jos Roost)
39
+ - Fixed "Error reading PreviewImage" warning for some Sony models
40
+
10
41
  June 6, 2017 - Version 10.56
11
42
 
12
43
  - Removed ordering constraints between Geotag/Geosync and Geotime assignments
@@ -201,6 +232,7 @@ Jan. 13, 2017 - Version 10.39
201
232
 
202
233
  - Added Perl version and Unicode settings to -ver -v output
203
234
  - Added a new Sony LensType2 value
235
+ - Added a new Canon LensType (thanks Norbert Wasser)
204
236
  - More improvements to sample time_zone.config file (thanks Hayo Baan)
205
237
  - Fixed problem with MWG date/time tags introduced in version 10.34
206
238
  - Fixed problem setting the value of a tag from a binary file when the
data/bin/META.json CHANGED
@@ -47,5 +47,5 @@
47
47
  }
48
48
  },
49
49
  "release_status" : "stable",
50
- "version" : "10.56"
50
+ "version" : "10.58"
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: 10.56
31
+ version: 10.58
data/bin/README CHANGED
@@ -101,8 +101,8 @@ your home directory, then you would type the following commands in a
101
101
  terminal window to extract and run ExifTool:
102
102
 
103
103
  cd ~/Desktop
104
- gzip -dc Image-ExifTool-10.56.tar.gz | tar -xf -
105
- cd Image-ExifTool-10.56
104
+ gzip -dc Image-ExifTool-10.58.tar.gz | tar -xf -
105
+ cd Image-ExifTool-10.58
106
106
  ./exiftool t/images/ExifTool.jpg
107
107
 
108
108
  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 = '10.56';
15
+ my $version = '10.58';
16
16
 
17
17
  # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
18
18
  my $exeDir;
@@ -4779,17 +4779,18 @@ group names to each tag. List-type tags with multiple items are output as
4779
4779
  JSON arrays unless B<-sep> is used. By default XMP structures are flattened
4780
4780
  into individual tags in the JSON output, but the original structure may be
4781
4781
  preserved with the B<-struct> option (this also causes all list-type XMP
4782
- tags to be output as JSON arrays, otherwise single-item lists are output as
4783
- simple strings). The B<-a> option is implied if the B<-g> or B<-G> options
4784
- are used, otherwise it is ignored and duplicate tags are suppressed. Adding
4785
- the B<-D> or B<-H> option changes tag values to JSON objects with "val" and
4786
- "id" fields, and adding B<-l> adds a "desc" field, and a "num" field if the
4787
- numerical value is different from the converted "val". The B<-b> option may
4788
- be added to output binary data, encoded in base64 if necessary (indicated by
4789
- "base64:" as the first 7 bytes of the value), and B<-t> may be added to
4790
- include tag table information (see B<-t> for details). The JSON output is
4791
- UTF-8 regardless of any B<-L> or B<-charset> option setting, but the UTF-8
4792
- validation is disabled if a character set other than UTF-8 is specified.
4782
+ tags to be output as JSON arrays, otherwise single-item lists would be
4783
+ output as simple strings). The B<-a> option is implied if the B<-g> or
4784
+ B<-G> options are used, otherwise it is ignored and duplicate tags are
4785
+ suppressed. Adding the B<-D> or B<-H> option changes tag values to JSON
4786
+ objects with "val" and "id" fields, and adding B<-l> adds a "desc" field,
4787
+ and a "num" field if the numerical value is different from the converted
4788
+ "val". The B<-b> option may be added to output binary data, encoded in
4789
+ base64 if necessary (indicated by "base64:" as the first 7 bytes of the
4790
+ value), and B<-t> may be added to include tag table information (see B<-t>
4791
+ for details). The JSON output is UTF-8 regardless of any B<-L> or
4792
+ B<-charset> option setting, but the UTF-8 validation is disabled if a
4793
+ character set other than UTF-8 is specified.
4793
4794
 
4794
4795
  If I<JSONFILE> is specified, the file is imported and the tag definitions
4795
4796
  from the file are used to set tag values on a per-file basis. The special
@@ -4799,7 +4800,7 @@ of "*" defines default tags for all target files which are combined with any
4799
4800
  tags specified for the specific SourceFile processed. The imported JSON
4800
4801
  file must have the same format as the exported JSON files with the exception
4801
4802
  that the B<-g> option is not compatible with the import file format (use
4802
- B<-G> instead). Additionally, tag names in the input JSON file may be
4803
+ B<-G> instead). Additionally, tag names in the input JSON file may be
4803
4804
  suffixed with a C<#> to disable print conversion.
4804
4805
 
4805
4806
  Unlike CSV import, empty values are not ignored, and will cause an empty
@@ -4908,7 +4909,7 @@ with this command:
4908
4909
 
4909
4910
  produces output like this:
4910
4911
 
4911
- -- Generated by ExifTool 10.56 --
4912
+ -- Generated by ExifTool 10.58 --
4912
4913
  File: a.jpg - 2003:10:31 15:44:19
4913
4914
  (f/5.6, 1/60s, ISO 100)
4914
4915
  File: b.jpg - 2006:05:23 11:57:38
@@ -4988,8 +4989,8 @@ with B<--sort>.
4988
4989
 
4989
4990
  Output structured XMP information instead of flattening to individual tags.
4990
4991
  This option works well when combined with the XML (B<-X>) and JSON (B<-j>)
4991
- output formats. For other output formats, the structures are serialized
4992
- into the same format as when writing structured information (see
4992
+ output formats. For other output formats, XMP structures and lists are
4993
+ serialized into the same format as when writing structured information (see
4993
4994
  L<http://owl.phy.queensu.ca/~phil/exiftool/struct.html> for details). When
4994
4995
  copying, structured tags are copied by default unless B<--struct> is used to
4995
4996
  disable this feature (although flattened tags may still be copied by
@@ -5284,7 +5285,8 @@ small when reading images directly from disk, but can be substantial if
5284
5285
  piping images through a network connection. For more substantial speed
5285
5286
  benefits, B<-fast2> also causes exiftool to avoid extracting any EXIF
5286
5287
  MakerNote information. B<-fast3> avoids processing the file entirely, and
5287
- returns only an initial guess at FileType and the pseudo System tags.
5288
+ returns only an initial guess at FileType and the pseudo System tags. Has
5289
+ no effect when writing.
5288
5290
 
5289
5291
  =item B<-fileOrder> [-]I<TAG>
5290
5292
 
@@ -5464,10 +5466,10 @@ If followed by a colon (ie. B<-progress:>), the console window title is set
5464
5466
  according to the specified I<TITLE> string. If no I<TITLE> is given, a
5465
5467
  default I<TITLE> string of "ExifTool %p%%" is assumed. In the string, %f
5466
5468
  represents the file name, %p is the progress as a percent, %r is the
5467
- progress as a ratio, and %% is a % character. May be combined with the
5468
- normal B<-progress> option to also show the progress count in console
5469
- messages. (Note: For this feature to function correctly on Mac/Linux,
5470
- stderr must go to the console.)
5469
+ progress as a ratio, %[##]b is a progress bar of width ## (default 20), and
5470
+ %% is a % character. May be combined with the normal B<-progress> option to
5471
+ also show the progress count in console messages. (Note: For this feature
5472
+ to function correctly on Mac/Linux, stderr must go to the console.)
5471
5473
 
5472
5474
  =item B<-q> (B<-quiet>)
5473
5475
 
@@ -5926,10 +5928,11 @@ Note that function names are case sensitive.
5926
5928
 
5927
5929
  =head1 WINDOWS UNICODE FILE NAMES
5928
5930
 
5929
- In Windows, by default, file and directory names are specified on the
5930
- command line (or in arg files) using the system code page, which varies with
5931
- the system settings. Unfortunately, these code pages are not complete
5932
- character sets, so not all file names may be represented.
5931
+ In Windows, command-line arguments are specified using the current code page
5932
+ and are recoded automatically to the system code page. This recoding is not
5933
+ done for arguments in ExifTool arg files, so by default filenames in arg
5934
+ files use the system code page. Unfortunately, these code pages are not
5935
+ complete character sets, so not all file names may be represented.
5933
5936
 
5934
5937
  ExifTool 9.79 and later allow the file name encoding to be specified with
5935
5938
  C<-charset filename=CHARSET>, where C<CHARSET> is the name of a valid
@@ -5938,8 +5941,8 @@ complete list). Setting this triggers the use of Windows wide-character i/o
5938
5941
  routines, thus providing support for all Unicode file names. But note that
5939
5942
  it is not trivial to pass properly encoded file names on the Windows command
5940
5943
  line (see L<http://owl.phy.queensu.ca/~phil/exiftool/faq.html#Q18> for
5941
- details), so placing them in a UTF-8 encoded B<-@> argfile is recommended if
5942
- possible.
5944
+ details), so placing them in a UTF-8 encoded B<-@> argfile and using
5945
+ C<-charset filename=utf8> is recommended if possible.
5943
5946
 
5944
5947
  A warning is issued if a specified filename contains special characters and
5945
5948
  the filename character set was not provided. However, the warning may be
@@ -6542,7 +6545,7 @@ flexibility of ExifTool.)
6542
6545
 
6543
6546
  =back
6544
6547
 
6545
- =head1 DIAGNOSTICS
6548
+ =head1 EXIT STATUS
6546
6549
 
6547
6550
  The exiftool application exits with a status of 0 on success, or 1 if an
6548
6551
  error occurred or if all files failed the B<-if> condition (for any of the
@@ -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);
29
29
 
30
- $VERSION = '10.56';
30
+ $VERSION = '10.58';
31
31
  $RELEASE = '';
32
32
  @ISA = qw(Exporter);
33
33
  %EXPORT_TAGS = (
@@ -509,7 +509,6 @@ my %fileTypeExt = (
509
509
  my %fileDescription = (
510
510
  DICOM => 'Digital Imaging and Communications in Medicine',
511
511
  XML => 'Extensible Markup Language',
512
- 'DJVU (multi-page)' => 'DjVu multi-page image',
513
512
  'Win32 EXE' => 'Windows 32-bit Executable',
514
513
  'Win32 DLL' => 'Windows 32-bit Dynamic Link Library',
515
514
  'Win64 EXE' => 'Windows 64-bit Executable',
@@ -834,7 +833,7 @@ my %moduleName = (
834
833
  RAR => 'Rar!\x1a\x07\0',
835
834
  RAW => '(.{25}ARECOYK|II|MM)',
836
835
  Real => '(\.RMF|\.ra\xfd|pnm://|rtsp://|http://)',
837
- RIFF => '(RIFF|LA0[234]|OFR |LPAC|wvpk)', # RIFF plus other variants
836
+ RIFF => '(RIFF|LA0[234]|OFR |LPAC|wvpk|RF64)', # RIFF plus other variants
838
837
  RSRC => '(....)?\0\0\x01\0',
839
838
  RTF => '[\n\r]*\\{[\n\r]*\\\\rtf',
840
839
  RWZ => 'rawzor',
@@ -1097,9 +1096,10 @@ my %systemTagsNotes = (
1097
1096
  FileCreateDate => {
1098
1097
  Description => 'File Creation Date/Time',
1099
1098
  Notes => q{
1100
- the filesystem creation date/time. Windows only. Requires Win32API::File
1101
- and Win32::API for writing. See L<MDItemFSCreationDate|MacOS.html#MDItem>
1102
- for the Mac OS X equivalent
1099
+ the filesystem creation date/time. Windows only. This tag is writable and
1100
+ is preserved by default when writing if Win32API::File and Win32::API are
1101
+ available. See L<MDItemFSCreationDate|MacOS.html#MDItem> for the Mac OS X
1102
+ equivalent
1103
1103
  },
1104
1104
  Groups => { 1 => 'System', 2 => 'Time' },
1105
1105
  Writable => 1,
@@ -1452,6 +1452,7 @@ my %systemTagsNotes = (
1452
1452
  higher
1453
1453
  },
1454
1454
  },
1455
+ # Validate (added from Validate.pm)
1455
1456
  Now => {
1456
1457
  Groups => { 0 => 'ExifTool', 1 => 'ExifTool', 2 => 'Time' },
1457
1458
  Notes => q{
@@ -2215,6 +2216,7 @@ sub ExtractInfo($;@)
2215
2216
  $raf->Read($buff, 1024) or $buff = '';
2216
2217
  $raf->Seek($pos, 0) or $seekErr = 1;
2217
2218
  until ($seekErr) {
2219
+ my $unkHeader;
2218
2220
  $type = shift @fileTypeList;
2219
2221
  if ($type) {
2220
2222
  # do quick test for this file type to avoid loading module unnecessarily
@@ -2232,7 +2234,8 @@ sub ExtractInfo($;@)
2232
2234
  my $skip = pos($buff) - length($1);
2233
2235
  $dirInfo{Base} = $pos + $skip;
2234
2236
  $raf->Seek($pos + $skip, 0) or $seekErr = 1, last;
2235
- $self->Warn("Skipped unknown $skip byte header");
2237
+ $self->Warn("Processing $type-like data after unknown $skip-byte header");
2238
+ $unkHeader = 1 unless $$self{DOC_NUM};
2236
2239
  }
2237
2240
  # save file type in member variable
2238
2241
  $$self{FILE_TYPE} = $type;
@@ -2266,8 +2269,15 @@ sub ExtractInfo($;@)
2266
2269
 
2267
2270
  pop @{$$self{PATH}};
2268
2271
 
2269
- last if $result; # all done if successful
2270
-
2272
+ if ($result) { # all done if successful
2273
+ if ($unkHeader) {
2274
+ $self->DeleteTag('FileType');
2275
+ $self->DeleteTag('FileTypeExtension');
2276
+ $self->DeleteTag('MIMEType');
2277
+ $self->VPrint(0,"Reset file type due to unknown header\n");
2278
+ }
2279
+ last;
2280
+ }
2271
2281
  # seek back to try again from the same position in the file
2272
2282
  $raf->Seek($pos, 0) or $seekErr = 1, last;
2273
2283
  }
@@ -2787,7 +2797,14 @@ sub GetValue($$;$)
2787
2797
  last;
2788
2798
  }
2789
2799
  $val = $$vals[$i];
2790
- $conv = $$convList[$i] if $convList;
2800
+ if ($convList) {
2801
+ my $nextConv = $$convList[$i];
2802
+ if ($nextConv and $nextConv eq 'REPEAT') {
2803
+ undef $convList;
2804
+ } else {
2805
+ $conv = $nextConv;
2806
+ }
2807
+ }
2791
2808
  }
2792
2809
  # return undefined now if no value
2793
2810
  return () unless defined $value;
@@ -3222,15 +3239,23 @@ sub GetFileType(;$$)
3222
3239
  }
3223
3240
  return @types;
3224
3241
  }
3225
- my $fileType;
3242
+ my ($fileType, $subType);
3226
3243
  my $fileExt = GetFileExtension($file);
3227
- $fileExt = uc($file) unless $fileExt;
3244
+ unless ($fileExt) {
3245
+ if ($file =~ s/ \((.*)\)$//) {
3246
+ $subType = $1;
3247
+ $fileExt = GetFileExtension($file);
3248
+ }
3249
+ $fileExt = uc($file) unless $fileExt;
3250
+ }
3228
3251
  $fileExt and $fileType = $fileTypeLookup{$fileExt}; # look up the file type
3229
3252
  $fileType = $fileTypeLookup{$fileType} while $fileType and not ref $fileType;
3230
3253
  # return description if specified
3231
3254
  # (allow input $file to be a FileType for this purpose)
3232
3255
  if ($desc) {
3233
- return $fileType ? $$fileType[1] : $fileDescription{$file};
3256
+ $desc = $fileType ? $$fileType[1] : $fileDescription{$file};
3257
+ $desc .= ", $subType" if $subType;
3258
+ return $desc;
3234
3259
  } elsif ($fileType and (not defined $desc or $desc ne '0')) {
3235
3260
  # return only supported file types
3236
3261
  my $mod = $moduleName{$$fileType[0]};
@@ -5119,7 +5144,9 @@ sub ConvertFileSize($)
5119
5144
  $val < 10240 and return sprintf('%.1f kB', $val / 1024);
5120
5145
  $val < 2097152 and return sprintf('%.0f kB', $val / 1024);
5121
5146
  $val < 10485760 and return sprintf('%.1f MB', $val / 1048576);
5122
- return sprintf('%.0f MB', $val / 1048576);
5147
+ $val < 2147483648 and return sprintf('%.0f MB', $val / 1048576);
5148
+ $val < 10737418240 and return sprintf('%.1f GB', $val / 1073741824);
5149
+ return sprintf('%.0f GB', $val / 1073741824);
5123
5150
  }
5124
5151
 
5125
5152
  #------------------------------------------------------------------------------
@@ -2180,9 +2180,10 @@ RMETA, RSRC, RTF, Radiance, Rawzor, Real, Real-CONT, Real-MDPR, Real-PROP,
2180
2180
  Real-RA3, Real-RA4, Real-RA5, Real-RJMD, Reconyx, Ricoh, SPIFF, SR2,
2181
2181
  SR2DataIFD, SR2SubIFD, SRF#, SVG, Samsung, Sanyo, Scalado, Sigma, SigmaRaw,
2182
2182
  Sony, SonyIDC, Stim, SubIFD, System, Theora, Torrent, Track#, VCalendar,
2183
- VCard, Version0, Vorbis, XML, XMP, XMP-DICOM, XMP-GPano, XMP-MP, XMP-MP1,
2184
- XMP-PixelLive, XMP-aas, XMP-acdsee, XMP-album, XMP-apple-fi, XMP-aux,
2185
- XMP-cc, XMP-cell, XMP-creatorAtom, XMP-crs, XMP-dc, XMP-dex, XMP-digiKam,
2183
+ VCard, Version0, Vorbis, XML, XMP, XMP-DICOM, XMP-GAudio, XMP-GImage,
2184
+ XMP-GPano, XMP-GSpherical, XMP-MP, XMP-MP1, XMP-PixelLive, XMP-aas,
2185
+ XMP-acdsee, XMP-album, XMP-apple-fi, XMP-aux, XMP-cc, XMP-cell,
2186
+ XMP-creatorAtom, XMP-crs, XMP-dc, XMP-dex, XMP-digiKam, XMP-drone-dji,
2186
2187
  XMP-dwc, XMP-exif, XMP-exifEX, XMP-expressionmedia, XMP-extensis, XMP-fpv,
2187
2188
  XMP-getty, XMP-ics, XMP-iptcCore, XMP-iptcExt, XMP-lr, XMP-mediapro,
2188
2189
  XMP-microsoft, XMP-mwg-coll, XMP-mwg-kw, XMP-mwg-rs, XMP-pdf, XMP-pdfx,
@@ -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.08';
37
+ $VERSION = '3.09';
38
38
  @ISA = qw(Exporter);
39
39
 
40
40
  sub NumbersFirst($$);
@@ -501,7 +501,9 @@ must be subsequently re-linearized if this is required.
501
501
 
502
502
  2) All metadata edits are reversible. While this would normally be
503
503
  considered an advantage, it is a potential security problem because old
504
- information is never actually deleted from the file.
504
+ information is never actually deleted from the file. (However, after
505
+ running ExifTool the old information may be removed permanently using the
506
+ "qpdf" utility with this command: "qpdf --linearize in.pdf out.pdf".)
505
507
  },
506
508
  DNG => q{
507
509
  The main DNG tags are found in the EXIF table. The tables below define only
@@ -1004,10 +1006,16 @@ TagID: foreach $tagID (@keys) {
1004
1006
  my (@printConvList, @indexList, $index, $valueConvHash);
1005
1007
  if (ref $printConv eq 'ARRAY') {
1006
1008
  for ($index=0; $index<@$printConv; ++$index) {
1007
- next if ref $$printConv[$index] ne 'HASH';
1008
- next unless %{$$printConv[$index]};
1009
- push @printConvList, $$printConv[$index];
1010
- push @indexList, $index;
1009
+ if (ref $$printConv[$index] eq 'HASH') {
1010
+ next unless %{$$printConv[$index]};
1011
+ push @printConvList, $$printConv[$index];
1012
+ push @indexList, $index;
1013
+ } elsif ($$printConv[$index] and $$printConv[$index] eq 'REPEAT' and $index) {
1014
+ push @printConvList, $$printConv[$index-1];
1015
+ push @indexList, 'N';
1016
+ } else {
1017
+ next;
1018
+ }
1011
1019
  # collapse values with identical PrintConv's
1012
1020
  if (@printConvList >= 2 and $printConvList[-1] eq $printConvList[-2]) {
1013
1021
  if (ref $indexList[-2]) {
@@ -1034,11 +1042,11 @@ TagID: foreach $tagID (@keys) {
1034
1042
  # collapse consecutive number ranges
1035
1043
  my ($i, @i, $rngStart);
1036
1044
  for ($i=0; $i<@$idx; ++$i) {
1037
- if ($i < @$idx - 1 and $$idx[$i+1] == $$idx[$i] + 1) {
1038
- $rngStart = $i unless defined $rngStart;
1045
+ if ($i < @$idx - 1 and ($$idx[$i+1] eq 'N' or $$idx[$i+1] == $$idx[$i] + 1)) {
1046
+ $rngStart = $$idx[$i] unless defined $rngStart;
1039
1047
  next;
1040
1048
  }
1041
- push @i, defined($rngStart) ? "$rngStart-$i" : $i;
1049
+ push @i, (defined($rngStart) ? "$rngStart-" : '') . $$idx[$i];
1042
1050
  }
1043
1051
  ($idx = join ', ', @i) =~ s/(.*),/$1 and/;
1044
1052
  } elsif (not $$tagInfo{Relist}) {
@@ -85,7 +85,7 @@ sub ProcessSerialData($$$);
85
85
  sub ProcessFilters($$$);
86
86
  sub SwapWords($);
87
87
 
88
- $VERSION = '3.75';
88
+ $VERSION = '3.77';
89
89
 
90
90
  # Note: Removed 'USM' from 'L' lenses since it is redundant - PH
91
91
  # (or is it? Ref 32 shows 5 non-USM L-type lenses)
@@ -335,6 +335,7 @@ $VERSION = '3.75';
335
335
  183.3 => 'Sigma 180mm f/2.8 EX DG OS HSM APO Macro', #IB
336
336
  183.4 => 'Sigma 150-600mm f/5-6.3 DG OS HSM | C', #47
337
337
  183.5 => 'Sigma 150-600mm f/5-6.3 DG OS HSM | S', #forum7109 (Sports 014)
338
+ 183.6 => 'Sigma 100-400mm f/5-6.3 DG OS HSM', #PH ("| C" ?)
338
339
  184 => 'Canon EF 400mm f/2.8L + 2x', #15
339
340
  185 => 'Canon EF 600mm f/4L IS', #32
340
341
  186 => 'Canon EF 70-200mm f/4L', #9
@@ -347,7 +348,8 @@ $VERSION = '3.75';
347
348
  194 => 'Canon EF 80-200mm f/4.5-5.6 USM', #32
348
349
  195 => 'Canon EF 35-105mm f/4.5-5.6 USM', #32
349
350
  196 => 'Canon EF 75-300mm f/4-5.6 USM', #15/32
350
- 197 => 'Canon EF 75-300mm f/4-5.6 IS USM',
351
+ 197 => 'Canon EF 75-300mm f/4-5.6 IS USM or Sigma Lens',
352
+ 197.1 => 'Sigma 18-300mm f/3.5-6.3 DC Macro OS HS', #50
351
353
  198 => 'Canon EF 50mm f/1.4 USM or Zeiss Lens',
352
354
  198.1 => 'Zeiss Otus 55mm f/1.4 ZE', #JR (seen only on Sony camera)
353
355
  198.2 => 'Zeiss Otus 85mm f/1.4 ZE', #JR (NC)
@@ -423,14 +425,15 @@ $VERSION = '3.75';
423
425
  505 => 'Canon EF 35mm f/2 IS USM', #PH
424
426
  506 => 'Canon EF 400mm f/4 DO IS II USM', #42
425
427
  507 => 'Canon EF 16-35mm f/4L IS USM', #42
426
- 508 => 'Canon EF 11-24mm f/4L USM', #PH
428
+ 508 => 'Canon EF 11-24mm f/4L USM or Tamron Lens', #PH
429
+ 508.1 => 'Tamron 10-24mm f/3.5-4.5 Di II VC HLD', #PH (B023)
427
430
  747 => 'Canon EF 100-400mm f/4.5-5.6L IS II USM or Tamron Lens', #JR
428
431
  747.1 => 'Tamron SP 150-600mm F5-6.3 Di VC USD G2', #50
429
432
  748 => 'Canon EF 100-400mm f/4.5-5.6L IS II USM + 1.4x', #JR (1.4x Mk III)
430
433
  750 => 'Canon EF 35mm f/1.4L II USM', #42
431
434
  751 => 'Canon EF 16-35mm f/2.8L III USM', #42
432
435
  752 => 'Canon EF 24-105mm f/4L IS II USM', #42
433
- # (STM lenses seem to start with 0x10xx)
436
+ # (STM lenses - 0x10xx)
434
437
  4142 => 'Canon EF-S 18-135mm f/3.5-5.6 IS STM',
435
438
  4143 => 'Canon EF-M 18-55mm f/3.5-5.6 IS STM or Tamron Lens',
436
439
  4143.1 => 'Tamron 18-200mm F/3.5-6.3 Di III VC', #42
@@ -448,8 +451,11 @@ $VERSION = '3.75';
448
451
  4156 => 'Canon EF 50mm f/1.8 STM', #42
449
452
  4157 => 'Canon EF-M 18-150mm 1:3.5-6.3 IS STM', #42
450
453
  4158 => 'Canon EF-S 18-55mm f/4-5.6 IS STM', #PH
454
+ 4160 => 'Canon EF-S 35mm f/2.8 Macro IS STM', #42
455
+ # (Nano USM lenses - 0x90xx)
451
456
  36910 => 'Canon EF 70-300mm f/4-5.6 IS II USM', #42
452
457
  36912 => 'Canon EF-S 18-135mm f/3.5-5.6 IS USM', #42
458
+ # (CN-E lenses - 0xf0xx)
453
459
  61494 => 'Canon CN-E 85mm T1.3 L F', #PH
454
460
  65535 => 'n/a',
455
461
  );
@@ -686,6 +692,9 @@ $VERSION = '3.75';
686
692
  0x4060000 => 'PowerShot SX620 HS',
687
693
  0x4070000 => 'EOS M6',
688
694
  0x4100000 => 'PowerShot G9 X Mark II',
695
+ 0x4150000 => 'PowerShot ELPH 185 / IXUS 185 / IXY 200',
696
+ 0x4160000 => 'PowerShot SX430 IS',
697
+ 0x4170000 => 'PowerShot SX730 HS',
689
698
  0x6040000 => 'PowerShot S100 / Digital IXUS / IXY Digital',
690
699
 
691
700
  # (see http://cweb.canon.jp/e-support/faq/answer/digitalcamera/10447-1.html for PowerShot/IXUS/IXY names)
@@ -778,7 +787,9 @@ $VERSION = '3.75';
778
787
  0x80000401 => 'EOS 5DS R',
779
788
  0x80000404 => 'EOS Rebel T6 / 1300D / Kiss X80',
780
789
  0x80000405 => 'EOS Rebel T7i / 800D / Kiss X9i',
790
+ 0x80000406 => 'EOS 6D Mark II', #IB/42
781
791
  0x80000408 => 'EOS 77D / 9000D',
792
+ 0x80000417 => 'EOS Rebel SL2 / 200D / Kiss X9', #IB/42
782
793
  );
783
794
 
784
795
  my %canonQuality = (
@@ -7438,7 +7449,7 @@ my %ciMaxFocal = (
7438
7449
  12 => '12 (5DS/5DSR)',
7439
7450
  13 => '13 (80D)', #PH
7440
7451
  14 => '14 (1300D)', #IB
7441
- 15 => '15 (77D/800D)', #IB
7452
+ 15 => '15 (6DmkII/77D/200D/800D)', #IB
7442
7453
  },
7443
7454
  },
7444
7455
  0x3f => { Name => 'WB_RGGBLevelsAsShot', Format => 'int16s[4]' },
@@ -7628,6 +7639,7 @@ my %ciMaxFocal = (
7628
7639
  0 => 'Disable',
7629
7640
  1 => 'Adjust all by the same amount',
7630
7641
  2 => 'Adjust by lens',
7642
+ # 3 - seen this for EOS 77D, which doesn't have an AF Micro Adjust feature - PH
7631
7643
  },
7632
7644
  },
7633
7645
  2 => {