exiftool_vendored 11.75.1 → 11.76.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: 43ace89db692e80f3c215b7633cb3e045dcd43f9
4
- data.tar.gz: e0dc521509a06a4bf77f72480ed565ab673070b4
3
+ metadata.gz: 8b04c571479edb1316d1d8d923fa142283732130
4
+ data.tar.gz: 6a4d5eab35d349d6200b0bc39f144e868cb080f8
5
5
  SHA512:
6
- metadata.gz: a5ea9638bd176d465eb09594de99cdae1189471e6ebef974f81ece49d4aa63e7dbcde21e58df369815bd219f9ca380248434881e612295deef6bb27b8a72bc8f
7
- data.tar.gz: f0dad2f2d8bc58471431b84b3edabe9db0c1fbf1852ecb8668b5c9f17a7f0654e8681814694cee8cc23f250f5fb2589546cd28bce10966bec5ad59203e139298
6
+ metadata.gz: 307444f4d8506d8dbb03e577df08f8e1ebfe57abe1f8cd2d75dd1a70bc8585b5175d65020b85e0081e2e9091ec16caa1b37f8a1f2bcf5ee1dafa96881a7ff318
7
+ data.tar.gz: 98cfd97808f11aedb2bf961a24c001a97401ff348fea9e5c06b17d1acff3c1cf0fe4a5ed64b0732bd523805d9c912791ebb7e5c182c1300d55071249fe567239
data/bin/Changes CHANGED
@@ -7,6 +7,15 @@ RSS feed: http://owl.phy.queensu.ca/~phil/exiftool/rss.xml
7
7
  Note: The most recent production release is Version 11.70. (Other versions are
8
8
  considered development releases, and are not uploaded to CPAN.)
9
9
 
10
+ Nov. 12, 2019 - Version 11.76
11
+
12
+ - Added support for the Sony ILCE-9M2 (thanks Jos Roost)
13
+ - Added a couple of new XMP-GCamera tags
14
+ - Added MIMEType values for some formats that previously reported
15
+ "application/unknown"
16
+ - Enhanced -geotag feature to write pitch to CameraElevationAngle if available
17
+ - Improved determination of MIMEEncoding for TXT files
18
+
10
19
  Nov. 4, 2019 - Version 11.75
11
20
 
12
21
  - Added ability to read some basic characteristics of TXT files
data/bin/META.json CHANGED
@@ -47,6 +47,6 @@
47
47
  }
48
48
  },
49
49
  "release_status" : "stable",
50
- "version" : "11.75",
50
+ "version" : "11.76",
51
51
  "x_serialization_backend" : "JSON::PP version 4.02"
52
52
  }
data/bin/META.yml CHANGED
@@ -28,5 +28,5 @@ recommends:
28
28
  Time::HiRes: '0'
29
29
  requires:
30
30
  perl: '5.004'
31
- version: '11.75'
31
+ version: '11.76'
32
32
  x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
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.75.tar.gz | tar -xf -
108
- cd Image-ExifTool-11.75
107
+ gzip -dc Image-ExifTool-11.76.tar.gz | tar -xf -
108
+ cd Image-ExifTool-11.76
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
@@ -10,7 +10,7 @@
10
10
  use strict;
11
11
  require 5.004;
12
12
 
13
- my $version = '11.75';
13
+ my $version = '11.76';
14
14
 
15
15
  # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
16
16
  my $exeDir;
@@ -4191,18 +4191,18 @@ sub PrintTagList($@)
4191
4191
  }
4192
4192
  return;
4193
4193
  }
4194
- print ' ';
4195
- my $len = 1;
4194
+ my ($len, $pad) = (0, $quiet ? '' : ' ');
4196
4195
  foreach $tag (@_) {
4197
4196
  my $taglen = length($tag);
4198
- if ($len + $taglen > 78) {
4199
- print "\n ";
4200
- $len = 1;
4197
+ if ($len + $taglen > 77) {
4198
+ print "\n";
4199
+ ($len, $pad) = (0, $quiet ? '' : ' ');
4201
4200
  }
4202
- print " $tag";
4201
+ print $pad, $tag;
4203
4202
  $len += $taglen + 1;
4203
+ $pad = ' ';
4204
4204
  }
4205
- @_ or print ' [empty list]';
4205
+ @_ or print $pad, '[empty list]';
4206
4206
  print "\n";
4207
4207
  }
4208
4208
 
@@ -4409,7 +4409,7 @@ L<Processing control|/Processing control>
4409
4409
  -ee (-extractEmbedded) Extract information from embedded files
4410
4410
  -ext[+] EXT (-extension) Process files with specified extension
4411
4411
  -F[OFFSET] (-fixBase) Fix the base for maker notes offsets
4412
- -fast[NUM] Increase speed for slow devices
4412
+ -fast[NUM] Increase speed when extracting metadata
4413
4413
  -fileOrder [-]TAG Set file processing order
4414
4414
  -i DIR (-ignore) Ignore specified directory name
4415
4415
  -if[NUM] EXPR Conditionally process files
@@ -4720,7 +4720,8 @@ Other than these differences, the B<-tagsFromFile> and B<-addTagsFromFile>
4720
4720
  options are equivalent.
4721
4721
 
4722
4722
  6) The B<-a> option (allow duplicate tags) is always in effect when copying
4723
- tags from I<SRCFILE>.
4723
+ tags from I<SRCFILE>, but the highest priority tag is always copied last so
4724
+ it takes precedence.
4724
4725
 
4725
4726
  7) Structured tags are copied by default when copying tags. See the
4726
4727
  B<-struct> option for details.
@@ -4735,7 +4736,9 @@ destination tag (as if they were separate assignments). However, when
4735
4736
  interpolated inside a string, list items and the values of shortcut tags are
4736
4737
  concatenated (with a separator set by the B<-sep> option), and wildcards are
4737
4738
  not allowed. Also, UserParam variables are available only when interpolated
4738
- in a string.
4739
+ in a string. Another difference is that a minor warning is generated if a
4740
+ tag doesn't exist when interpolating its value in a string (with C<$>), but
4741
+ isn't when copying the tag directly.
4739
4742
 
4740
4743
  =item B<-x> I<TAG> (B<-exclude>)
4741
4744
 
@@ -5173,7 +5176,7 @@ with this command:
5173
5176
 
5174
5177
  produces output like this:
5175
5178
 
5176
- -- Generated by ExifTool 11.75 --
5179
+ -- Generated by ExifTool 11.76 --
5177
5180
  File: a.jpg - 2003:10:31 15:44:19
5178
5181
  (f/5.6, 1/60s, ISO 100)
5179
5182
  File: b.jpg - 2006:05:23 11:57:38
@@ -5571,8 +5574,8 @@ permanently if B<-F> is used when writing EXIF to an image. eg)
5571
5574
 
5572
5575
  =item B<-fast>[I<NUM>]
5573
5576
 
5574
- Increase speed of extracting information. With this option, ExifTool will
5575
- not scan to the end of a JPEG image to check for an AFCP or PreviewImage
5577
+ Increase speed of extracting information. With B<-fast>, ExifTool will not
5578
+ scan to the end of a JPEG image to check for an AFCP or PreviewImage
5576
5579
  trailer, or past the first comment in GIF images or the audio/video data in
5577
5580
  WAV/AVI files to search for additional metadata. These speed benefits are
5578
5581
  small when reading images directly from disk, but can be substantial if
@@ -5584,6 +5587,9 @@ obtain an educated guess at FileType. B<-fast4> doesn't even read the file
5584
5587
  header, and determines FileType based only on the file extension. Has no
5585
5588
  effect when writing.
5586
5589
 
5590
+ Note that a separate B<-fast> setting may be used for evaluation of a B<-if>
5591
+ condition. See the B<-if> option documentation for details.
5592
+
5587
5593
  =item B<-fileOrder> [-]I<TAG>
5588
5594
 
5589
5595
  Set file processing order according to the sorted value of the specified
@@ -25,9 +25,9 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
25
25
  $psAPP13hdr $psAPP13old @loadAllTables %UserDefined $evalWarning
26
26
  %noWriteFile %magicNumber @langs $defaultLang %langName %charsetName
27
27
  %mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
28
- %jpegMarker %specialTags %fileTypeLookup);
28
+ %jpegMarker %specialTags %fileTypeLookup $testLen);
29
29
 
30
- $VERSION = '11.75';
30
+ $VERSION = '11.76';
31
31
  $RELEASE = '';
32
32
  @ISA = qw(Exporter);
33
33
  %EXPORT_TAGS = (
@@ -569,10 +569,12 @@ my %fileDescription = (
569
569
  BZ2 => 'application/bzip2',
570
570
  'Canon 1D RAW' => 'image/x-raw', # (uses .TIF file extension)
571
571
  CHM => 'application/x-chm',
572
+ COS => 'application/octet-stream', #PH (NC)
572
573
  CR2 => 'image/x-canon-cr2',
573
574
  CR3 => 'image/x-canon-cr3',
574
575
  CRM => 'video/x-canon-crm',
575
576
  CRW => 'image/x-canon-crw',
577
+ DCP => 'application/octet-stream', #PH (NC)
576
578
  DCR => 'image/x-kodak-dcr',
577
579
  DCX => 'image/dcx',
578
580
  DEX => 'application/octet-stream',
@@ -588,6 +590,7 @@ my %fileDescription = (
588
590
  DOTM => 'application/vnd.ms-word.template.macroEnabledTemplate',
589
591
  DOTX => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
590
592
  DPX => 'image/x-dpx',
593
+ DR4 => 'application/octet-stream', #PH (NC)
591
594
  DS2 => 'audio/x-ds2',
592
595
  DSS => 'audio/x-dss',
593
596
  DV => 'video/x-dv',
@@ -605,8 +608,10 @@ my %fileDescription = (
605
608
  FLA => 'application/vnd.adobe.fla',
606
609
  FLAC => 'audio/flac',
607
610
  FLIF => 'image/flif',
611
+ FLIR => 'image/x-flir-fff', #PH (NC)
608
612
  FLV => 'video/x-flv',
609
613
  Font => 'application/x-font-type1', # covers PFA, PFB and PFM (not sure about PFM)
614
+ FPF => 'image/x-flir-fpf', #PH (NC)
610
615
  FPX => 'image/vnd.fpx',
611
616
  GIF => 'image/gif',
612
617
  GPR => 'image/x-gopro-gpr',
@@ -629,6 +634,7 @@ my %fileDescription = (
629
634
  JPM => 'image/jpm',
630
635
  JPX => 'image/jpx',
631
636
  JSON => 'application/json',
637
+ JXR => 'image/jxr',
632
638
  K25 => 'image/x-kodak-k25',
633
639
  KDC => 'image/x-kodak-kdc',
634
640
  KEY => 'application/x-iwork-keynote-sffkey',
@@ -646,6 +652,7 @@ my %fileDescription = (
646
652
  MKV => 'video/x-matroska',
647
653
  MNG => 'video/mng',
648
654
  MOBI => 'application/x-mobipocket-ebook',
655
+ MOI => 'application/octet-stream', #PH (NC)
649
656
  MOS => 'image/x-raw',
650
657
  MOV => 'video/quicktime',
651
658
  MP3 => 'audio/mpeg',
@@ -682,6 +689,7 @@ my %fileDescription = (
682
689
  PHP => 'application/x-httpd-php',
683
690
  PICT => 'image/pict',
684
691
  PLIST=> 'application/xml', # (binary PLIST format is 'application/x-plist', recognized at run time)
692
+ PMP => 'image/x-sony-pmp', #PH (NC)
685
693
  PNG => 'image/png',
686
694
  POT => 'application/vnd.ms-powerpoint',
687
695
  POTM => 'application/vnd.ms-powerpoint.template.macroEnabled',
@@ -714,6 +722,7 @@ my %fileDescription = (
714
722
  RW2 => 'image/x-panasonic-rw2',
715
723
  RWL => 'image/x-leica-rwl',
716
724
  RWZ => 'image/x-rawzor', #(duplicated in Rawzor.pm)
725
+ SEQ => 'image/x-flir-seq', #PH (NC)
717
726
  SKETCH => 'application/sketch',
718
727
  SR2 => 'image/x-sony-sr2',
719
728
  SRF => 'image/x-sony-srf',
@@ -728,6 +737,7 @@ my %fileDescription = (
728
737
  TTF => 'application/x-font-ttf',
729
738
  TXT => 'text/plain',
730
739
  VCard=> 'text/vcard',
740
+ VRD => 'application/octet-stream', #PH (NC)
731
741
  VSD => 'application/x-visio',
732
742
  WDP => 'image/vnd.ms-photo',
733
743
  WEBM => 'video/webm',
@@ -814,8 +824,10 @@ my %moduleName = (
814
824
  XCF => 'GIMP',
815
825
  );
816
826
 
827
+ $testLen = 1024; # number of bytes to read when testing for magic number
828
+
817
829
  # quick "magic number" file test used to avoid loading module unnecessarily:
818
- # - regular expression evaluated on first 1024 bytes of file
830
+ # - regular expression evaluated on first $testLen bytes of file
819
831
  # - must match beginning at first byte in file
820
832
  # - this test must not be more stringent than module logic
821
833
  %magicNumber = (
@@ -2470,7 +2482,6 @@ sub ExtractInfo($;@)
2470
2482
  my ($buff, $seekErr);
2471
2483
  my %dirInfo = ( RAF => $raf, Base => $pos, TestBuff => \$buff );
2472
2484
  # read start of file for testing
2473
- my $testLen = 1024;
2474
2485
  $raf->Read($buff, $testLen) or $buff = '';
2475
2486
  $raf->Seek($pos, 0) or $seekErr = 1;
2476
2487
  until ($seekErr) {
@@ -12,6 +12,7 @@
12
12
  # 2015/05/30 - PH Read Bramor gEO log files
13
13
  # 2016/07/13 - PH Added ability to geotag date/time only
14
14
  # 2019/07/02 - PH Added ability to read IMU CSV files
15
+ # 2019/11/10 - PH Also write pitch to CameraElevationAngle
15
16
  #
16
17
  # References: 1) http://www.topografix.com/GPX/1/1/
17
18
  # 2) http://www.gpsinformation.org/dale/nmea.htm#GSA
@@ -25,7 +26,7 @@ use strict;
25
26
  use vars qw($VERSION);
26
27
  use Image::ExifTool qw(:Public);
27
28
 
28
- $VERSION = '1.60';
29
+ $VERSION = '1.61';
29
30
 
30
31
  sub JITTER() { return 2 } # maximum time jitter
31
32
 
@@ -1106,6 +1107,7 @@ Category: foreach $category (qw{pos track alt orient atemp}) {
1106
1107
  }
1107
1108
  @r = $et->SetNewValue(GPSImgDirection => $$tFix{dir}, %opts);
1108
1109
  @r = $et->SetNewValue(GPSImgDirectionRef => (defined $$tFix{dir} ? 'T' : undef), %opts);
1110
+ @r = $et->SetNewValue(CameraElevationAngle => $$tFix{pitch}, %opts);
1109
1111
  # Note: GPSPitch and GPSRoll are non-standard, and must be user-defined
1110
1112
  @r = $et->SetNewValue(GPSPitch => $$tFix{pitch}, %opts);
1111
1113
  @r = $et->SetNewValue(GPSRoll => $$tFix{roll}, %opts);
@@ -1143,7 +1145,8 @@ Category: foreach $category (qw{pos track alt orient atemp}) {
1143
1145
  foreach (qw(GPSLatitude GPSLatitudeRef GPSLongitude GPSLongitudeRef
1144
1146
  GPSAltitude GPSAltitudeRef GPSDateStamp GPSTimeStamp GPSDateTime
1145
1147
  GPSTrack GPSTrackRef GPSSpeed GPSSpeedRef GPSImgDirection
1146
- GPSImgDirectionRef GPSPitch GPSRoll AmbientTemperature))
1148
+ GPSImgDirectionRef GPSPitch GPSRoll CameraElevationAngle
1149
+ AmbientTemperature))
1147
1150
  {
1148
1151
  my @r = $et->SetNewValue($_, undef, %opts);
1149
1152
  }
@@ -1337,8 +1340,8 @@ in the tag name documentation).
1337
1340
 
1338
1341
  =head1 NOTES
1339
1342
 
1340
- To take advantage of attitude information in the PTNTHPR NMEA sentence, two
1341
- user-defined tags, GPSPitch and GPSRoll, must be active.
1343
+ To take advantage of attitude information in the PTNTHPR NMEA sentence, the
1344
+ user-defined tag GPSRoll, must be active.
1342
1345
 
1343
1346
  =head1 AUTHOR
1344
1347
 
@@ -65,12 +65,12 @@ my %addUnits = (
65
65
  PROCESS_PROC => \&ProcessGoPro,
66
66
  GROUPS => { 2 => 'Camera' },
67
67
  NOTES => q{
68
- Tags extracted from the GPMF box of GoPro MP4 videos, the APP6 "GoPro" segment
69
- of JPEG files, and from the "gpmd" timed metadata if the L<ExtractEmbedded|../ExifTool.html#ExtractEmbedded> option
70
- is enabled. Many more tags exist, but are currently unknown and extracted only
71
- with the L<Unknown|../ExifTool.html#Unknown> (-u) option. Please let me know if you discover the meaning of any of
72
- these unknown tags. See L<https://github.com/gopro/gpmf-parser> for details
73
- about this format.
68
+ Tags extracted from the GPMF box of GoPro MP4 videos, the APP6 "GoPro"
69
+ segment of JPEG files, and from the "gpmd" timed metadata if the
70
+ L<ExtractEmbedded|../ExifTool.html#ExtractEmbedded> (-ee) option is enabled. Many more tags exist, but are
71
+ currently unknown and extracted only with the L<Unknown|../ExifTool.html#Unknown> (-u) option. Please
72
+ let me know if you discover the meaning of any of these unknown tags. See
73
+ L<https://github.com/gopro/gpmf-parser> for details about this format.
74
74
  },
75
75
  ACCL => { #2 (gpmd)
76
76
  Name => 'Accelerometer',
@@ -471,7 +471,7 @@ my %addUnits = (
471
471
  PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
472
472
  NOTES => q{
473
473
  Tags extracted from the MP4 "fdsc" timed metadata when the L<ExtractEmbedded|../ExifTool.html#ExtractEmbedded>
474
- option is used.
474
+ (-ee) option is used.
475
475
  },
476
476
  0x08 => { Name => 'FirmwareVersion', Format => 'string[15]' },
477
477
  0x17 => { Name => 'SerialNumber', Format => 'string[16]' },
@@ -115,9 +115,9 @@ my %noLeapFrog = ( SAVE => 1, SEEK => 1, IHDR => 1, JHDR => 1, IEND => 1, MEND =
115
115
  location of text-type chunks (tEXt, zTXt and iTXt). However, certain
116
116
  utilities (including some Apple and Adobe utilities) won't read the XMP iTXt
117
117
  chunk if it comes after the IDAT chunk, and at least one utility won't read
118
- other text chunks like this. For this reason, ExifTool 11.63 and later
119
- create new text chunks (including XMP) before IDAT, and will move existing
120
- text chunks up from after IDAT.
118
+ other text chunks here. For this reason, when writing, ExifTool 11.63 and
119
+ later create new text chunks (including XMP) before IDAT, and move existing
120
+ text chunks to before IDAT.
121
121
  },
122
122
  bKGD => {
123
123
  Name => 'BackgroundColor',
@@ -34,7 +34,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
34
34
  use Image::ExifTool::Exif;
35
35
  use Image::ExifTool::Minolta;
36
36
 
37
- $VERSION = '3.17';
37
+ $VERSION = '3.18';
38
38
 
39
39
  sub ProcessSRF($$$);
40
40
  sub ProcessSR2($$$);
@@ -943,7 +943,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
943
943
  # unknown offsets or values for DSC-HX60V/HX350/HX400V/QX10/QX30/QX100/RX10/RX100M2/RX100M3/WX220/WX350,
944
944
  # ILCA-68/77M2, ILCE-5000/5100/6000/7/7M2/7R/7S/QX1, Stellar2, Lusso
945
945
  # unknown offsets or values for DSC-HX80/HX90V/RX0/RX1RM2/RX10M2/RX10M3/RX100M4/RX100M5/WX500, ILCE-6300/6500/7RM2/7SM2, ILCA-99M2
946
- # unknown offsets or values for ILCE-6100/6400/6600/7M3/7RM3/7RM4/9, DSC-RX0M2/RX10M4/RX100M6/RX100M5A/RX100M7/HX99
946
+ # unknown offsets or values for ILCE-6100/6400/6600/7M3/7RM3/7RM4/9/9M2, DSC-RX0M2/RX10M4/RX100M6/RX100M5A/RX100M7/HX99
947
947
  {
948
948
  Name => 'Tag2010a', # ad
949
949
  Condition => '$$self{Model} =~ /^NEX-5N$/',
@@ -984,7 +984,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
984
984
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag2010h' },
985
985
  },{
986
986
  Name => 'Tag2010i', # ?
987
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7M3|7RM3|7RM4|9)|DSC-(RX10M4|RX100M6|RX100M5A|RX100M7|HX99|RX0M2))\b/',
987
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7M3|7RM3|7RM4|9|9M2)|DSC-(RX10M4|RX100M6|RX100M5A|RX100M7|HX99|RX0M2))\b/',
988
988
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag2010i' },
989
989
  },{
990
990
  Name => 'Tag_0x2010',
@@ -1503,14 +1503,14 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1503
1503
  # from mid-2015: ILCE-7RM2/7SM2/6300 and newer models use different offsets
1504
1504
  {
1505
1505
  Name => 'Tag9050a',
1506
- Condition => '$$self{Model} !~ /^(DSC-|Stellar|ILCE-(6100|6300|6400|6500|6600|7M3|7RM2|7RM3|7RM4|7SM2|9)|ILCA-99M2)/',
1506
+ Condition => '$$self{Model} !~ /^(DSC-|Stellar|ILCE-(6100|6300|6400|6500|6600|7M3|7RM2|7RM3|7RM4|7SM2|9|9M2)|ILCA-99M2)/',
1507
1507
  SubDirectory => {
1508
1508
  TagTable => 'Image::ExifTool::Sony::Tag9050a',
1509
1509
  ByteOrder => 'LittleEndian',
1510
1510
  },
1511
1511
  },{
1512
1512
  Name => 'Tag9050b',
1513
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6300|6400|6500|6600|7M3|7RM2|7RM3|7RM4|7SM2|9)|ILCA-99M2)/',
1513
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6300|6400|6500|6600|7M3|7RM2|7RM3|7RM4|7SM2|9|9M2)|ILCA-99M2)/',
1514
1514
  SubDirectory => {
1515
1515
  TagTable => 'Image::ExifTool::Sony::Tag9050b',
1516
1516
  ByteOrder => 'LittleEndian',
@@ -1529,7 +1529,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1529
1529
  # 0x23 (e) for DSC-RX10/HX60V/HX350/HX400V/WX220/WX350, ILCE-7/7R/5000/6000, ILCA-68/77M2
1530
1530
  # 0x24 (e) for ILCA-99M2,ILCE-5100/6300/6500/7M2/7RM2/7S/7SM2/QX1, DSC-HX80/HX90V/QX30/RX0/RX100M3/RX100M4/RX100M5/RX10M2/RX10M3/RX1RM2/WX500
1531
1531
  # 0x26 (e) for ILCE-6100/6400/6600/7M3/7RM3/9, DSC-RX0M2/RX10M4/RX100M5A/RX100M6/HX99
1532
- # 0x28 (e) for ILCE-7RM4, DSC-RX100M7
1532
+ # 0x28 (e) for ILCE-7RM4/9M2, DSC-RX100M7
1533
1533
  # first byte decoded: 40, 204, 202, 27, 58, 62, 48, 215, 28 respectively
1534
1534
  {
1535
1535
  Name => 'Tag9400a',
@@ -1603,9 +1603,9 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1603
1603
  # 82 00 fc 0f 0x0ad9 (y) DSC-RX100M5A v1.00, DSC-RX100M6 v1.00
1604
1604
  # 90 00 fe 0f 0x098f? (z) DSC-HX99 v1.00
1605
1605
  # 92 10 ff 0f 0x0990 (za) ILCE-6100/6400/6600 v1.00
1606
- # 94 00 ce 0b 0x0879 (zb) ILCE-9 v5.0x, DSC-RX0M2
1606
+ # 94 00 ce 0b 0x0879 (zb) ILCE-9 v5.00-v6.00, DSC-RX0M2
1607
1607
  # 98 00 db 0c 0x088a (zc) ILCE-7RM4 v1.00
1608
- # 9a 00 e3 0c 0x088a (zc) DSC-RX100M7 v1.00
1608
+ # 9a 00 e3 0c 0x088a (zc) DSC-RX100M7 v1.00, ILCE-9M2 v1.00
1609
1609
  #
1610
1610
  # 0x0004 - (RX100: 0 or 1. subsequent data valid only if 1 - PH)
1611
1611
  # 0x0007 => {
@@ -1644,7 +1644,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1644
1644
  # 0x1d 0x01 DSC-RX10M4
1645
1645
  # 0x1e 0x01 ILCE-7M3/7RM3, DSC-RX100M5A/RX100M6
1646
1646
  # 0x1f 0x01 DSC-HX99
1647
- # 0x20 0x01 ILCE-6100/6400/6600/7RM4, ILCE-9 v5.0x, DSC-RX0M2/RX100M7
1647
+ # 0x20 0x01 ILCE-6100/6400/6600/7RM4/9M2, ILCE-9 v5.00-v6.00, DSC-RX0M2/RX100M7
1648
1648
  # var var SLT-A58/A99V, HV, ILCA-68/77M2/99M2
1649
1649
  # only valid when first byte 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x17, 0x19, 0x1a, 0x1c (enciphered 0x8a, 0x70, 0xb6, 0x69, 0x88, 0x20, 0x30, 0xd7, 0xbb, 0x92, 0x28)
1650
1650
  # Condition => '$$self{DoubleCipher} ? $$valPt =~ /^[\x7e\x46\x1d\x18\x3a\x95\x24\x26\xd6]\x01/ : $$valPt =~ /^[\x8a\x70\xb6\x69\x88\x20\x30\xd7\xbb\x92\x28]\x01/',
@@ -1668,7 +1668,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1668
1668
  # 13 0 9 2 2 DSC-QX10/QX100/RX100M2
1669
1669
  # 15 0 35 2 2 ILCA-68/77M2, ILCE-5000/5100/6000/7/7R/7S/7M2/QX1, DSC-HX60V/HX350/HX400V/QX30/RX10/RX100M3/WX220/WX350
1670
1670
  # 16 0 85 2 2 DSC-HX80/HX90V/WX500
1671
- # 17 0 232 1 2 DSC-RX0/RX0M2/RX1RM2/RX10M2/RX10M3/RX10M4/RX100M4/RX100M5/RX100M5A/RX100M6/RX100M7/HX99, ILCE-6100/6300/6400/6500/6600/7M3/7RM2/7RM3/7RM4/7SM2/9, ILCA-99M2
1671
+ # 17 0 232 1 2 DSC-RX0/RX0M2/RX1RM2/RX10M2/RX10M3/RX10M4/RX100M4/RX100M5/RX100M5A/RX100M6/RX100M7/HX99, ILCE-6100/6300/6400/6500/6600/7M3/7RM2/7RM3/7RM4/7SM2/9/9M2, ILCA-99M2
1672
1672
  # other values for Panorama images and several other models
1673
1673
  0x9404 => [{
1674
1674
  Name => 'Tag9404a',
@@ -1702,7 +1702,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1702
1702
  # 142 var (0x25 = 37 var enc.) DSC-HX80/HX90V/RX1RM2/RX10M2/RX10M3/RX100M4/WX500, ILCE-6300/7RM2/7SM2
1703
1703
  # 144 var (0xe1 = 225 var enc.) DSC-RX100M5
1704
1704
  # 145 var (0x76 = 118 var enc.) ILCA-99M2, ILCE-6500, DSC-RX0
1705
- # 163 var (0x8b = 139 var enc.) ILCE-6100/6400/6600/7M3/7RM3/7RM4/9, DSC-RX0M2/RX10M4/RX100M5A/RX100M6/RX100M7/HX99
1705
+ # 163 var (0x8b = 139 var enc.) ILCE-6100/6400/6600/7M3/7RM3/7RM4/9/9M2, DSC-RX0M2/RX10M4/RX100M5A/RX100M6/RX100M7/HX99
1706
1706
  0x9405 => [{
1707
1707
  Name => 'Tag9405a',
1708
1708
  # first byte must be 0x1b or 0x40 or 0x7d
@@ -1720,7 +1720,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1720
1720
  0x9406 => [{
1721
1721
  Name => 'Tag9406',
1722
1722
  # - first byte must be 0x01 or 0x02 (enciphered 0x01 or 0x08),
1723
- # or 0x03 (enc. 0x1b) for ILCE-6100/6300/6400/6500/6600/7M3/7RM2/7RM3/7RM4/7SM2/9, and ILCA-99M2
1723
+ # or 0x03 (enc. 0x1b) for ILCE-6100/6300/6400/6500/6600/7M3/7RM2/7RM3/7RM4/7SM2/9/9M2, and ILCA-99M2
1724
1724
  # third byte must be 0x02 or 0x03 (enciphered 0x08 or 0x1b) - ref JR
1725
1725
  # (applies to most SLT/ILCA and NEX/ILCE models, but no DSC models)
1726
1726
  Condition => '$$valPt =~ /^[\x01\x08\x1b].[\x08\x1b]/s',
@@ -1901,6 +1901,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1901
1901
  372 => 'DSC-RX0M2', #JR
1902
1902
  374 => 'DSC-RX100M7', #IB
1903
1903
  375 => 'ILCE-7RM4', #IB
1904
+ 376 => 'ILCE-9M2', #JR
1904
1905
  378 => 'ILCE-6600', #IB/JR
1905
1906
  379 => 'ILCE-6100', #IB/JR
1906
1907
  },
@@ -5812,7 +5813,7 @@ my %releaseMode2 = ( #JR
5812
5813
  15 => 'Continuous - High Resolution Sweep Panorama', #JR (HX50V)
5813
5814
  16 => 'Continuous - 3D Image', # (HX9V)
5814
5815
  17 => 'Continuous - Burst 2', # (WX7 - PH) (#JR 9400-SequenceLength=10 shots)
5815
- # 18 - seen for several ILCE-7S v2.00 iAuto+ single-shot images ...
5816
+ 18 => 'Normal - iAuto+', # seen for several ILCE-3500/6000/6500/7S iAuto+ single-shot images ...
5816
5817
  19 => 'Continuous - Speed/Advance Priority', #PH/JR (RX100)
5817
5818
  20 => 'Continuous - Multi Frame NR',
5818
5819
  23 => 'Single-frame - Exposure Bracketing', # (seen for ILCE-7 series)
@@ -6287,9 +6288,9 @@ my %isoSetting2010 = (
6287
6288
  CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
6288
6289
  FORMAT => 'int8u',
6289
6290
  NOTES => q{
6290
- Valid for SLT-A58/A99, ILCE-3000/3500, NEX-3N/5R/5T/6/VG30E/VG900, DSC-RX100,
6291
- DSC-RX1/RX1R. Also valid for DSC-HX300/HX50V/TX30/WX60/WX200/WX300, but not
6292
- for panorama images.
6291
+ Valid for SLT-A58/A99, ILCE-3000/3500, NEX-3N/5R/5T/6/VG30E/VG900,
6292
+ DSC-RX100, DSC-RX1/RX1R. Also valid for DSC-HX300/HX50V/TX30/WX60/WX200/
6293
+ WX300, but not for panorama images.
6293
6294
  },
6294
6295
  WRITABLE => 1,
6295
6296
  FIRST_ENTRY => 0,
@@ -6802,7 +6803,8 @@ my %isoSetting2010 = (
6802
6803
  CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
6803
6804
  FORMAT => 'int8u',
6804
6805
  NOTES => q{
6805
- Valid for ILCE-6100/6400/6600/7M3/7RM3/7RM4/9, DSC-RX0M2/RX10M4/RX100M6/RX100M5A/RX100M7/HX99.
6806
+ Valid for ILCE-6100/6400/6600/7M3/7RM3/7RM4/9/9M2, DSC-RX0M2/RX10M4/RX100M6/
6807
+ RX100M5A/RX100M7/HX99.
6806
6808
  },
6807
6809
  WRITABLE => 1,
6808
6810
  FIRST_ENTRY => 0,
@@ -7278,6 +7280,14 @@ my %isoSetting2010 = (
7278
7280
  Name => 'DistortionCorrParamsPresent',
7279
7281
  PrintConv => { 0 => 'No', 1 => 'Yes'},
7280
7282
  },
7283
+ 0x0114 => {
7284
+ Name => 'APS-CSizeCapture',
7285
+ Condition => '$$self{Model} =~ /^(SLT-A99|HV|ILCE-7)/',
7286
+ PrintConv => {
7287
+ 0 => 'Off',
7288
+ 1 => 'On',
7289
+ },
7290
+ },
7281
7291
  # 0x0115 and 0x0116, or 0x0116 and 0x0117:
7282
7292
  # give the same info as the first and last bytes of LensSpec,
7283
7293
  # but also for older Sony and Minolta lenses where all LensSpec bytes are 0.
@@ -7374,8 +7384,8 @@ my %isoSetting2010 = (
7374
7384
  CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
7375
7385
  FORMAT => 'int8u',
7376
7386
  NOTES => q{
7377
- Valid from July 2015 for ILCE-6100/6300/6400/6500/6600/7M3/7RM2/7RM3/7RM4/7SM2/9,
7378
- ILCA-99M2.
7387
+ Valid from July 2015 for ILCE-6100/6300/6400/6500/6600/7M3/7RM2/7RM3/7RM4/
7388
+ 7SM2/9/9M2, ILCA-99M2.
7379
7389
  },
7380
7390
  WRITABLE => 1,
7381
7391
  FIRST_ENTRY => 0,
@@ -7463,7 +7473,7 @@ my %isoSetting2010 = (
7463
7473
  # March 2019: ILCE-9 with v5.0x firmware follows ILCE-6400 in many tags ...
7464
7474
  0x0050 => {
7465
7475
  Name => 'ShutterCount2',
7466
- Condition => '(($$self{FlashFired} & 0x01) != 1) and ($$self{Model} =~ /^(ILCE-(6100|6400|6600|7RM4))/ or $$self{Software} =~ /^ILCE-9 v5.0/)',
7476
+ Condition => '(($$self{FlashFired} & 0x01) != 1) and ($$self{Model} =~ /^(ILCE-(6100|6400|6600|7RM4|9M2))/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/)',
7467
7477
  Format => 'int32u',
7468
7478
  RawConv => '$val & 0x00ffffff',
7469
7479
  },
@@ -7480,13 +7490,13 @@ my %isoSetting2010 = (
7480
7490
  # 0x0058, 0x0061: E-Mount: ShutterCount and dateTime
7481
7491
  0x0058 => { # appears not valid when flash is used ... not for ILCA-99M2
7482
7492
  Name => 'ShutterCount2',
7483
- Condition => '(($$self{FlashFired} & 0x01) != 1) and ($$self{Model} !~ /^(ILCA-99M2|ILCE-(6100|6400|6600|7M3|7RM3|7RM4))/) and $$self{Software} !~ /^ILCE-9 v5.0/',
7493
+ Condition => '(($$self{FlashFired} & 0x01) != 1) and ($$self{Model} !~ /^(ILCA-99M2|ILCE-(6100|6400|6600|7M3|7RM3|7RM4|9M2))/) and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
7484
7494
  Format => 'int32u',
7485
7495
  RawConv => '$val & 0x00ffffff',
7486
7496
  },
7487
7497
  0x0061 => { # only minutes-seconds, not for ILCA-99M2, ILCE-9
7488
7498
  Name => 'SonyTimeMinSec',
7489
- Condition => '$$self{Model} !~ /^(ILCA-99M2|ILCE-(6100|6400|6600|7M3|7RM3|7RM4|9))/',
7499
+ Condition => '$$self{Model} !~ /^(ILCA-99M2|ILCE-(6100|6400|6600|7M3|7RM3|7RM4|9|9M2))/',
7490
7500
  Format => 'undef[2]',
7491
7501
  ValueConv => q{
7492
7502
  my @v = unpack('C*', $val);
@@ -7495,7 +7505,7 @@ my %isoSetting2010 = (
7495
7505
  },
7496
7506
  0x006b => {
7497
7507
  Name => 'ReleaseMode2',
7498
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7RM4))/ or $$self{Software} =~ /^ILCE-9 v5.0/',
7508
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7RM4|9M2))/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
7499
7509
  %releaseMode2,
7500
7510
  },
7501
7511
  0x006d => {
@@ -7505,7 +7515,7 @@ my %isoSetting2010 = (
7505
7515
  },
7506
7516
  0x0073 => {
7507
7517
  Name => 'ReleaseMode2',
7508
- Condition => '$$self{Model} !~ /^(ILCE-(6100|6400|6600|7M3|7RM3|7RM4))/ and $$self{Software} !~ /^ILCE-9 v5.0/',
7518
+ Condition => '$$self{Model} !~ /^(ILCE-(6100|6400|6600|7M3|7RM3|7RM4|9M2))/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
7509
7519
  %releaseMode2,
7510
7520
  },
7511
7521
  0x0088 => {
@@ -7557,6 +7567,14 @@ my %isoSetting2010 = (
7557
7567
  Name => 'DistortionCorrParamsPresent',
7558
7568
  PrintConv => { 0 => 'No', 1 => 'Yes'},
7559
7569
  },
7570
+ 0x0114 => {
7571
+ Name => 'APS-CSizeCapture',
7572
+ Condition => '$$self{Model} =~ /^(ILCE-7|ILCE-9|ILCA-99)/',
7573
+ PrintConv => {
7574
+ 0 => 'Off',
7575
+ 1 => 'On',
7576
+ },
7577
+ },
7560
7578
  # 0x0116 and 0x0117:
7561
7579
  # give the same info as the first and last bytes of LensSpec,
7562
7580
  # but also for older Sony and Minolta lenses where all LensSpec bytes are 0.
@@ -7576,7 +7594,7 @@ my %isoSetting2010 = (
7576
7594
  #
7577
7595
  0x019f => {
7578
7596
  Name => 'ShutterCount3',
7579
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7M3|7RM3|7RM4|9))/',
7597
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7M3|7RM3|7RM4|9|9M2))\b/',
7580
7598
  Format => 'int32u',
7581
7599
  RawConv => '$val == 0 ? undef : $val',
7582
7600
  },
@@ -7592,30 +7610,17 @@ my %isoSetting2010 = (
7592
7610
  Format => 'int32u',
7593
7611
  RawConv => '$val == 0 ? undef : $val',
7594
7612
  },
7595
- # the following tags are commented out because they can cause problems for the
7596
- # Composite LensID of non-electronic lenses (even if Priority is set to 0)
7597
- # 0x020d => {
7598
- # Name=>'LensType2',
7599
- # Condition => '$$self{Model} =~ /^(ILCE-(7RM2|7SM2))/',
7600
- # Format=>'int16u',
7601
- # },
7602
- # 0x020f => [{
7603
- # Name=>'LensType',
7604
- # Condition => '$$self{Model} =~ /^(ILCE-(7RM2|7SM2))/',
7605
- # Format=>'int16u',
7606
- # },{
7607
- # Name=>'LensType2',
7608
- # Condition => '$$self{Model} =~ /^(ILCE-(6300|6500)|ILCA-99M2)/',
7609
- # Format=>'int16u',
7610
- # }],
7611
- # 0x0211 => {
7612
- # Name=>'LensType',
7613
- # Condition => '$$self{Model} =~ /^(ILCE-(6300|6500)|ILCA-99M2)/',
7614
- # Format=>'int16u',
7615
- # },
7613
+ 0x01eb => {
7614
+ Name => 'APS-CSizeCapture',
7615
+ Condition => '$$self{Model} =~ /^ILCE-(7RM4|9M2)/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
7616
+ PrintConv => {
7617
+ 0 => 'Off',
7618
+ 1 => 'On',
7619
+ },
7620
+ },
7616
7621
  0x01ed => {
7617
7622
  Name => 'LensSpecFeatures',
7618
- Condition => '$$self{Model} =~ /^(ILCE-7RM4)/ or $$self{Software} =~ /^ILCE-9 v5.0/',
7623
+ Condition => '$$self{Model} =~ /^ILCE-(7RM4|9M2)/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
7619
7624
  Priority => 0,
7620
7625
  Format => 'undef[2]',
7621
7626
  ValueConv => 'join " ", unpack "H2H2", $val',
@@ -7626,9 +7631,17 @@ my %isoSetting2010 = (
7626
7631
  PrintConv => \&PrintLensSpec,
7627
7632
  PrintConvInv => 'Image::ExifTool::Sony::PrintInvLensSpec($val, $self, 1)',
7628
7633
  },
7634
+ 0x01ee => {
7635
+ Name => 'APS-CSizeCapture',
7636
+ Condition => '$$self{Model} =~ /^(ILCE-(7M3|7RM3|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
7637
+ PrintConv => {
7638
+ 0 => 'Off',
7639
+ 1 => 'On',
7640
+ },
7641
+ },
7629
7642
  0x01f0 => {
7630
7643
  Name => 'LensSpecFeatures',
7631
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7M3|7RM3|9))/ and $$self{Software} !~ /^ILCE-9 v5.0/',
7644
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7M3|7RM3|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
7632
7645
  Priority => 0,
7633
7646
  Format => 'undef[2]',
7634
7647
  ValueConv => 'join " ", unpack "H2H2", $val',
@@ -7639,7 +7652,36 @@ my %isoSetting2010 = (
7639
7652
  PrintConv => \&PrintLensSpec,
7640
7653
  PrintConvInv => 'Image::ExifTool::Sony::PrintInvLensSpec($val, $self, 1)',
7641
7654
  },
7642
- 0x021c => {
7655
+ # the following tags are commented out because they can cause problems for the
7656
+ # Composite LensID of non-electronic lenses (even if Priority is set to 0)
7657
+ # 0x020d => {
7658
+ # Name=>'LensType2',
7659
+ # Condition => '$$self{Model} =~ /^(ILCE-(7RM2|7SM2))/',
7660
+ # Format=>'int16u',
7661
+ # },
7662
+ # 0x020f => [{
7663
+ # Name=>'LensType',
7664
+ # Condition => '$$self{Model} =~ /^(ILCE-(7RM2|7SM2))/',
7665
+ # Format=>'int16u',
7666
+ # },{
7667
+ # Name=>'LensType2',
7668
+ # Condition => '$$self{Model} =~ /^(ILCE-(6300|6500)|ILCA-99M2)/',
7669
+ # Format=>'int16u',
7670
+ # }],
7671
+ # 0x0211 => {
7672
+ # Name=>'LensType',
7673
+ # Condition => '$$self{Model} =~ /^(ILCE-(6300|6500)|ILCA-99M2)/',
7674
+ # Format=>'int16u',
7675
+ # },
7676
+ 0x021a => {
7677
+ Name => 'APS-CSizeCapture',
7678
+ Condition => '$$self{Model} =~ /^(ILCE-(7RM2|7SM2))/',
7679
+ PrintConv => {
7680
+ 0 => 'Off',
7681
+ 1 => 'On',
7682
+ },
7683
+ },
7684
+ 0x021c => [{
7643
7685
  Name => 'LensSpecFeatures',
7644
7686
  Condition => '$$self{Model} =~ /^(ILCE-(7RM2|7SM2))/',
7645
7687
  Priority => 0,
@@ -7651,7 +7693,14 @@ my %isoSetting2010 = (
7651
7693
  },
7652
7694
  PrintConv => \&PrintLensSpec,
7653
7695
  PrintConvInv => 'Image::ExifTool::Sony::PrintInvLensSpec($val, $self, 1)',
7654
- },
7696
+ },{
7697
+ Name => 'APS-CSizeCapture',
7698
+ Condition => '$$self{Model} =~ /^(ILCA-99M2)/',
7699
+ PrintConv => {
7700
+ 0 => 'Off',
7701
+ 1 => 'On',
7702
+ },
7703
+ }],
7655
7704
  0x021e => {
7656
7705
  Name => 'LensSpecFeatures',
7657
7706
  Condition => '$$self{Model} =~ /^(ILCE-(6300|6500)|ILCA-99M2)/',
@@ -7835,15 +7884,15 @@ my %isoSetting2010 = (
7835
7884
  WRITABLE => 1,
7836
7885
  NOTES => q{
7837
7886
  Valid for DSC-HX60V/HX80/HX90V/HX99/HX350/HX400V/QX30/RX0/RX1RM2/RX10/
7838
- RX10M2/RX10M3/RX10M4/RX100M3/RX100M4/RX100M5/RX100M5A/RX100M6/RX100M7/
7839
- WX220/WX350/WX500, ILCE-7/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/9/5000/5100/
7840
- 6000/6100/6300/6400/6500/6600/QX1, ILCA-68/77M2/99M2.
7887
+ RX10M2/RX10M3/RX10M4/RX100M3/RX100M4/RX100M5/RX100M5A/RX100M6/RX100M7/WX220/
7888
+ WX350/WX500, ILCE-7/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/9/9M2/5000/5100/6000/
7889
+ 6100/6300/6400/6500/6600/QX1, ILCA-68/77M2/99M2.
7841
7890
  },
7842
7891
  FIRST_ENTRY => 0,
7843
7892
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
7844
7893
  0x0009 => { %releaseMode2 },
7845
7894
  0x000a => [{
7846
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7M3|7RM3|7RM4|9)|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX99|RX0M2))\b/',
7895
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7M3|7RM3|7RM4|9|9M2)|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX99|RX0M2))\b/',
7847
7896
  Name => 'ShotNumberSincePowerUp',
7848
7897
  Format => 'int8u',
7849
7898
  },{
@@ -8231,8 +8280,8 @@ my %isoSetting2010 = (
8231
8280
  NOTES => q{
8232
8281
  Valid for DSC-HX60V/HX80/HX90V/HX99/HX350/HX400V/QX30/RX0/RX10/RX10M2/
8233
8282
  RX10M3/RX10M4/RX100M3/RX100M4/RX100M5/RX100M5A/RX100M6/RX100M7/WX220/WX350,
8234
- ILCE-7/7M2/7M3/7R/7RM2/7RM3/7RM4/7S/7SM2/9/5000/5100/6000/6100/6300/6400/
8235
- 6500/6600/QX1, ILCA-68/77M2/99M2.
8283
+ ILCE-7/7M2/7M3/7R/7RM2/7RM3/7RM4/7S/7SM2/9/9M2/5000/5100/6000/6100/6300/
8284
+ 6400/6500/6600/QX1, ILCA-68/77M2/99M2.
8236
8285
  },
8237
8286
  0x0004 => {
8238
8287
  Name => 'SonyISO',
@@ -8385,7 +8434,7 @@ my %isoSetting2010 = (
8385
8434
  },
8386
8435
  0x0342 => {
8387
8436
  Name => 'LensZoomPosition',
8388
- Condition => '$$self{Model} !~ /^(ILCA-|ILCE-(7RM2|7M3|7RM3|7RM4|7SM2|6100|6300|6400|6500|6600|9)|DSC-(HX80|HX90V|HX99|RX0|RX10M2|RX10M3|RX10M4|RX100M4|RX100M5|RX100M5A|RX100M6|RX100M7|WX500))/',
8437
+ Condition => '$$self{Model} !~ /^(ILCA-|ILCE-(7RM2|7M3|7RM3|7RM4|7SM2|6100|6300|6400|6500|6600|9|9M2)|DSC-(HX80|HX90V|HX99|RX0|RX10M2|RX10M3|RX10M4|RX100M4|RX100M5|RX100M5A|RX100M6|RX100M7|WX500))/',
8389
8438
  Format => 'int16u',
8390
8439
  PrintConv => 'sprintf("%.0f%%",$val/10.24)',
8391
8440
  PrintConvInv => '$val=~s/ ?%$//; $val * 10.24',
@@ -8397,7 +8446,7 @@ my %isoSetting2010 = (
8397
8446
  },
8398
8447
  0x034e => {
8399
8448
  Name => 'LensZoomPosition',
8400
- Condition => '$$self{Model} =~ /^(DSC-(RX100M5|RX100M5A|RX100M6|RX100M7|RX10M4|HX99)|ILCE-(6100|6400|6600|7M3|7RM3|7RM4))/',
8449
+ Condition => '$$self{Model} =~ /^(DSC-(RX100M5|RX100M5A|RX100M6|RX100M7|RX10M4|HX99)|ILCE-(6100|6400|6600|7M3|7RM3|7RM4|9M2))/',
8401
8450
  Format => 'int16u',
8402
8451
  PrintConv => 'sprintf("%.0f%%",$val/10.24)',
8403
8452
  PrintConvInv => '$val=~s/ ?%$//; $val * 10.24',
@@ -8409,7 +8458,7 @@ my %isoSetting2010 = (
8409
8458
  },
8410
8459
  0x035c => {
8411
8460
  Name => 'VignettingCorrParams',
8412
- Condition => '$$self{Model} =~ /^(ILCA-99M2|ILCE-(6100|6400|6500|6600|7M3|7RM3|7RM4|9))/',
8461
+ Condition => '$$self{Model} =~ /^(ILCA-99M2|ILCE-(6100|6400|6500|6600|7M3|7RM3|7RM4|9|9M2))/',
8413
8462
  Format => 'int16s[16]',
8414
8463
  },
8415
8464
  0x035a => {
@@ -8446,7 +8495,7 @@ my %isoSetting2010 = (
8446
8495
  },
8447
8496
  0x03b8 => {
8448
8497
  Name => 'ChromaticAberrationCorrParams',
8449
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7M3|7RM3|7RM4|9))/',
8498
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7M3|7RM3|7RM4|9|9M2))/',
8450
8499
  Format => 'int16s[32]',
8451
8500
  },
8452
8501
  );
@@ -8462,7 +8511,7 @@ my %isoSetting2010 = (
8462
8511
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
8463
8512
  # 0x0000: 1 for SLT-A37/A57/A65/A77, NEX-5N/7/F3/VG20
8464
8513
  # 2 for SLT-A58/99V, NEX-3N/5R/5T/6/VG30/VG900, ILCA-68/77M2, ILCE-3000/3500/7/7M2/7R/7S/5000/6000
8465
- # 3 for ILCA-99M2, ILCE-6100/6300/6400/6500/6600/7M3/7RM2/7RM3/7RM4/7SM2/9
8514
+ # 3 for ILCA-99M2, ILCE-6100/6300/6400/6500/6600/7M3/7RM2/7RM3/7RM4/7SM2/9/9M2
8466
8515
  # 0x0001+0x0002: Int16u, seen 580 - 770: similar to "BatteryUnknown" ??
8467
8516
  # 0x0005: int8u, seen 73 - 117: maybe Fahrenheit? Higher than "AmbientTemperature", but same trend.
8468
8517
  0x0005 => {
@@ -8610,7 +8659,7 @@ my %isoSetting2010 = (
8610
8659
  # ILCE-6000 v1.20-v3.20
8611
8660
  # 1.60: ILCE-6300/6500, ILCE-7RM2 v3.05-v4.00
8612
8661
  # 1.70: ILCE-7M3/7RM3, ILCE-9 v1.00-v4.10
8613
- # 1.80: ILCE-6100/6400/6600/7RM4, ILCE-9 v5.0x
8662
+ # 1.80: ILCE-6100/6400/6600/7RM4/9M2, ILCE-9 v5.00-v6.00
8614
8663
  },
8615
8664
  0x000d => {
8616
8665
  Name => 'LensE-mountVersion',
@@ -8681,7 +8730,7 @@ my %isoSetting2010 = (
8681
8730
  # 1 1 3 0 for ILCA-68/77M2/99M2
8682
8731
  # 0 0 0 0 for NEX and ILCE-3000/3500, also seen for SLT/ILCA with non-AF lens
8683
8732
  # 1 0 0 0 for ILCE-5000/5100/6000/7/7M2/7R/7S/QX1
8684
- # 6 0 0 0 for ILCE-6100/6300/6400/6500/6600/7M3/7RM2/7RM3/7RM4/7SM2/9
8733
+ # 6 0 0 0 for ILCE-6100/6300/6400/6500/6600/7M3/7RM2/7RM3/7RM4/7SM2/9/9M2
8685
8734
  # 0 2 0 0 for NEX/ILCE with LA-EA2/EA4 Phase-AF adapter
8686
8735
  # 2 0 0 0 seen for a few NEX-5N images
8687
8736
  # 2 2 0 0 seen for a few NEX-5N/7 images with LA-EA2 adapter
@@ -8975,11 +9024,11 @@ my %isoSetting2010 = (
8975
9024
 
8976
9025
  # 0x1a06 onwards - first seen for ILCE-7RM2: appears to be some kind of metering image
8977
9026
  # but not valid anymore for ILCE-6400, ILCE-9 v5.0x
8978
- 0x1a06 => { Name => 'TiffMeteringImageWidth', Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 v5.0/' },
8979
- 0x1a07 => { Name => 'TiffMeteringImageHeight', Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 v5.0/' },
9027
+ 0x1a06 => { Name => 'TiffMeteringImageWidth', Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/' },
9028
+ 0x1a07 => { Name => 'TiffMeteringImageHeight', Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/' },
8980
9029
  0x1a08 => { # (2640 bytes: 1 set of 44x30 int16u values)
8981
9030
  Name => 'TiffMeteringImage',
8982
- Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 v5.0/',
9031
+ Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
8983
9032
  Format => 'undef[2640]',
8984
9033
  Notes => q{
8985
9034
  13(?)-bit intensity data from 1320 (1200) metering segments, extracted as a
@@ -912,6 +912,7 @@ my %tagLookup = (
912
912
  'approximatefnumber' => { 298 => 0x313, 305 => 0x3406 },
913
913
  'approximatefocusdistance' => { 453 => 'ApproximateFocusDistance' },
914
914
  'appversion' => { 466 => 'AppVersion' },
915
+ 'aps-csizecapture' => { 419 => 0x114, 420 => [0x114,0x1eb,0x1ee,0x21a,0x21c] },
915
916
  'aquahsl' => { 99 => 0x20914 },
916
917
  'armidentifier' => { 128 => 0x78 },
917
918
  'armversion' => { 128 => 0x7a },
@@ -2017,6 +2018,7 @@ my %tagLookup = (
2017
2018
  'directoryindex' => { 7 => 0x137, 9 => 0x2dc, 11 => 0x17e, 13 => 0x238, 14 => 0x13f, 15 => 0x133, 16 => 0x1df, 17 => 0x1a7, 18 => 0x1f0, 19 => 0xcc, 20 => 0x1c7, 21 => 0x298, 22 => 0x1e7, 23 => 0x1e5, 24 => [0x27c,0x280], 25 => 0x2b6, 26 => 0x2bf, 28 => 0x1f7, 29 => 0x4ba },
2018
2019
  'directoryindex2' => { 21 => 0x29c },
2019
2020
  'directorynumber' => { 199 => 0x3, 366 => 0x12 },
2021
+ 'disableautocreation' => { 439 => 'DisableAutoCreation' },
2020
2022
  'disclaimer' => { 293 => 'Disclaimer' },
2021
2023
  'discnumber' => { 482 => 'discNumber' },
2022
2024
  'dishtype' => { 474 => 'dishType' },
@@ -2853,6 +2855,7 @@ my %tagLookup = (
2853
2855
  'hdrinfoversion' => { 206 => 0x0 },
2854
2856
  'hdrlevel' => { 206 => 0x5, 390 => 0x2e, 406 => 0x17 },
2855
2857
  'hdrlevel2' => { 206 => 0x7 },
2858
+ 'hdrpmakernote' => { 439 => 'hdrp_makernote' },
2856
2859
  'hdrsetting' => { 390 => 0x2d, 406 => 0x16, 409 => 0x1148, 410 => 0x1148, 411 => 0x1124, 412 => 0x11a0, 413 => 0x117c, 414 => 0x1034, 415 => 0x22c, 416 => 0x22c, 417 => 0x21f },
2857
2860
  'hdrshot' => { 303 => 0x76 },
2858
2861
  'hdrsmoothing' => { 206 => 0x6 },
@@ -12,7 +12,7 @@ meta information extracted from or written to a file.
12
12
  =head1 TAG TABLES
13
13
 
14
14
  The tables listed below give the names of all tags recognized by ExifTool.
15
- They contain a total of 23164 tags, with 15143 unique tag names.
15
+ They contain a total of 23172 tags, with 15146 unique tag names.
16
16
 
17
17
  B<Tag ID>, B<Index#> or B<Sequence> is given in the first column of each
18
18
  table. A B<Tag ID> is the computer-readable equivalent of a tag name, and
@@ -2671,6 +2671,8 @@ These tags belong to the ExifTool XMP-GCamera family 1 group.
2671
2671
  -------- --------
2672
2672
  BurstID string
2673
2673
  BurstPrimary string
2674
+ DisableAutoCreation string+
2675
+ HDRPMakerNote string
2674
2676
  PortraitNote string
2675
2677
  PortraitRequest string
2676
2678
  PortraitVersion string
@@ -3257,10 +3259,10 @@ These tags belong to the ExifTool XMP-iptcExt family 1 group.
3257
3259
 
3258
3260
  =head3 XMP ImageRegion Struct
3259
3261
 
3260
- As well as the fields defined below, this structure may contain any
3261
- top-level XMP tags, but since they aren't pre-defined the only way to add
3262
- these tags is to write ImageRegion as a structure with these tags as new
3263
- fields.
3262
+ This structure is new in the IPTC Extension version 1.5 specification. As
3263
+ well as the fields defined below, this structure may contain any top-level
3264
+ XMP tags, but since they aren't pre-defined the only way to add these tags
3265
+ is to write ImageRegion as a structure with these tags as new fields.
3264
3266
 
3265
3267
  Field Name Writable
3266
3268
  ---------- --------
@@ -4389,7 +4391,7 @@ These tags belong to the ExifTool XMP-xmpMM family 1 group.
4389
4391
  ManifestReferenceVersionID string_+
4390
4392
  OriginalDocumentID string
4391
4393
  Pantry PantryItem Struct+
4392
- PantryInstanceID string_+
4394
+ PantryInstanceID string_
4393
4395
  PreservedFileName string
4394
4396
  RenditionClass string
4395
4397
  RenditionOf ResourceRef Struct
@@ -17228,9 +17230,9 @@ not valid for panorama images.
17228
17230
 
17229
17231
  =head3 Sony Tag2010e Tags
17230
17232
 
17231
- Valid for SLT-A58/A99, ILCE-3000/3500, NEX-3N/5R/5T/6/VG30E/VG900, DSC-RX100,
17232
- DSC-RX1/RX1R. Also valid for DSC-HX300/HX50V/TX30/WX60/WX200/WX300, but not
17233
- for panorama images.
17233
+ Valid for SLT-A58/A99, ILCE-3000/3500, NEX-3N/5R/5T/6/VG30E/VG900,
17234
+ DSC-RX100, DSC-RX1/RX1R. Also valid for DSC-HX300/HX50V/TX30/WX60/WX200/
17235
+ WX300, but not for panorama images.
17234
17236
 
17235
17237
  Index1 Tag Name Writable
17236
17238
  ------ -------- --------
@@ -17380,7 +17382,8 @@ ILCE-6300/6500/7RM2/7SM2, ILCA-99M2.
17380
17382
 
17381
17383
  =head3 Sony Tag2010i Tags
17382
17384
 
17383
- Valid for ILCE-6100/6400/6600/7M3/7RM3/7RM4/9, DSC-RX0M2/RX10M4/RX100M6/RX100M5A/RX100M7/HX99.
17385
+ Valid for ILCE-6100/6400/6600/7M3/7RM3/7RM4/9/9M2, DSC-RX0M2/RX10M4/RX100M6/
17386
+ RX100M5A/RX100M7/HX99.
17384
17387
 
17385
17388
  Index1 Tag Name Writable
17386
17389
  ------ -------- --------
@@ -17533,6 +17536,7 @@ substitution cipher, but the deciphered values are listed below.
17533
17536
  263 LensType2 int16u
17534
17537
  265 LensType int16u
17535
17538
  267 DistortionCorrParamsPresent int8u
17539
+ 276 APS-CSizeCapture int8u
17536
17540
  277 LensSpecFeatures undef[2]
17537
17541
  278 LensSpecFeatures undef[2]
17538
17542
  416 ShutterCount3 int32u
@@ -17541,8 +17545,8 @@ substitution cipher, but the deciphered values are listed below.
17541
17545
 
17542
17546
  =head3 Sony Tag9050b Tags
17543
17547
 
17544
- Valid from July 2015 for ILCE-6100/6300/6400/6500/6600/7M3/7RM2/7RM3/7RM4/7SM2/9,
17545
- ILCA-99M2.
17548
+ Valid from July 2015 for ILCE-6100/6300/6400/6500/6600/7M3/7RM2/7RM3/7RM4/
17549
+ 7SM2/9/9M2, ILCA-99M2.
17546
17550
 
17547
17551
  Index1 Tag Name Writable
17548
17552
  ------ -------- --------
@@ -17567,13 +17571,18 @@ ILCA-99M2.
17567
17571
  263 LensType2 int16u
17568
17572
  265 LensType int16u
17569
17573
  267 DistortionCorrParamsPresent int8u
17574
+ 276 APS-CSizeCapture int8u
17570
17575
  278 LensSpecFeatures undef[2]
17571
17576
  415 ShutterCount3 int32u
17572
17577
  459 ShutterCount3 int32u
17573
17578
  461 ShutterCount3 int32u
17579
+ 491 APS-CSizeCapture int8u
17574
17580
  493 LensSpecFeatures undef[2]
17581
+ 494 APS-CSizeCapture int8u
17575
17582
  496 LensSpecFeatures undef[2]
17583
+ 538 APS-CSizeCapture int8u
17576
17584
  540 LensSpecFeatures undef[2]
17585
+ APS-CSizeCapture int8u
17577
17586
  542 LensSpecFeatures undef[2]
17578
17587
 
17579
17588
  =head3 Sony Tag9400a Tags
@@ -17614,9 +17623,9 @@ DSC-HX50V, DSC-QX10/QX100.
17614
17623
  =head3 Sony Tag9400c Tags
17615
17624
 
17616
17625
  Valid for DSC-HX60V/HX80/HX90V/HX99/HX350/HX400V/QX30/RX0/RX1RM2/RX10/
17617
- RX10M2/RX10M3/RX10M4/RX100M3/RX100M4/RX100M5/RX100M5A/RX100M6/RX100M7/
17618
- WX220/WX350/WX500, ILCE-7/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/9/5000/5100/
17619
- 6000/6100/6300/6400/6500/6600/QX1, ILCA-68/77M2/99M2.
17626
+ RX10M2/RX10M3/RX10M4/RX100M3/RX100M4/RX100M5/RX100M5A/RX100M6/RX100M7/WX220/
17627
+ WX350/WX500, ILCE-7/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/9/9M2/5000/5100/6000/
17628
+ 6100/6300/6400/6500/6600/QX1, ILCA-68/77M2/99M2.
17620
17629
 
17621
17630
  Index1 Tag Name Writable
17622
17631
  ------ -------- --------
@@ -17715,8 +17724,8 @@ Valid for SLT, NEX, ILCE-3000/3500 and several DSC models.
17715
17724
 
17716
17725
  Valid for DSC-HX60V/HX80/HX90V/HX99/HX350/HX400V/QX30/RX0/RX10/RX10M2/
17717
17726
  RX10M3/RX10M4/RX100M3/RX100M4/RX100M5/RX100M5A/RX100M6/RX100M7/WX220/WX350,
17718
- ILCE-7/7M2/7M3/7R/7RM2/7RM3/7RM4/7S/7SM2/9/5000/5100/6000/6100/6300/6400/
17719
- 6500/6600/QX1, ILCA-68/77M2/99M2.
17727
+ ILCE-7/7M2/7M3/7R/7RM2/7RM3/7RM4/7S/7SM2/9/9M2/5000/5100/6000/6100/6300/
17728
+ 6400/6500/6600/QX1, ILCA-68/77M2/99M2.
17720
17729
 
17721
17730
  Index1 Tag Name Writable
17722
17731
  ------ -------- --------
@@ -19349,12 +19358,12 @@ L<http://www.scalado.com/>.)
19349
19358
 
19350
19359
  =head3 GoPro GPMF Tags
19351
19360
 
19352
- Tags extracted from the GPMF box of GoPro MP4 videos, the APP6 "GoPro" segment
19353
- of JPEG files, and from the "gpmd" timed metadata if the ExtractEmbedded option
19354
- is enabled. Many more tags exist, but are currently unknown and extracted only
19355
- with the Unknown (-u) option. Please let me know if you discover the meaning of any of
19356
- these unknown tags. See L<https://github.com/gopro/gpmf-parser> for details
19357
- about this format.
19361
+ Tags extracted from the GPMF box of GoPro MP4 videos, the APP6 "GoPro"
19362
+ segment of JPEG files, and from the "gpmd" timed metadata if the
19363
+ ExtractEmbedded (-ee) option is enabled. Many more tags exist, but are
19364
+ currently unknown and extracted only with the Unknown (-u) option. Please
19365
+ let me know if you discover the meaning of any of these unknown tags. See
19366
+ L<https://github.com/gopro/gpmf-parser> for details about this format.
19358
19367
 
19359
19368
  Tag ID Tag Name Writable
19360
19369
  ------ -------- --------
@@ -19474,7 +19483,7 @@ Battery status information found in GoPro Karma videos.
19474
19483
  =head3 GoPro fdsc Tags
19475
19484
 
19476
19485
  Tags extracted from the MP4 "fdsc" timed metadata when the ExtractEmbedded
19477
- option is used.
19486
+ (-ee) option is used.
19478
19487
 
19479
19488
  Index1 Tag Name Writable
19480
19489
  ------ -------- --------
@@ -22653,9 +22662,9 @@ Also according to the PNG specification, there is no restriction on the
22653
22662
  location of text-type chunks (tEXt, zTXt and iTXt). However, certain
22654
22663
  utilities (including some Apple and Adobe utilities) won't read the XMP iTXt
22655
22664
  chunk if it comes after the IDAT chunk, and at least one utility won't read
22656
- other text chunks like this. For this reason, ExifTool 11.63 and later
22657
- create new text chunks (including XMP) before IDAT, and will move existing
22658
- text chunks up from after IDAT.
22665
+ other text chunks here. For this reason, when writing, ExifTool 11.63 and
22666
+ later create new text chunks (including XMP) before IDAT, and move existing
22667
+ text chunks to before IDAT.
22659
22668
 
22660
22669
  Tag ID Tag Name Writable
22661
22670
  ------ -------- --------
@@ -33230,8 +33239,11 @@ name. See L<http://tools.ietf.org/html/rfc5545> for the official iCalendar
33230
33239
 
33231
33240
  Although basic text files contain no metadata, the following tags are
33232
33241
  determined from a simple analysis of the text data. LineCount and WordCount
33233
- are generated only for 8-bit character sets if the FastScan option is not
33234
- used.
33242
+ are generated only for 8-bit encodings, but the FastScan (-fast) option may
33243
+ be used to limit processing to the first 64 kB, in which case these two tags
33244
+ are not produced. To avoid long processing delays, ExifTool will issue a
33245
+ minor warning and process only the first 64 kB of any file larger than 20 MB
33246
+ unless the IgnoreMinorErrors (-m) option is used.
33235
33247
 
33236
33248
  Tag Name Writable
33237
33249
  -------- --------
@@ -15,7 +15,7 @@ use vars qw($VERSION);
15
15
  use Image::ExifTool qw(:DataAccess :Utils);
16
16
  use Image::ExifTool::XMP;
17
17
 
18
- $VERSION = '1.00';
18
+ $VERSION = '1.01';
19
19
 
20
20
  # Text tags
21
21
  %Image::ExifTool::Text::Main = (
@@ -24,8 +24,11 @@ $VERSION = '1.00';
24
24
  NOTES => q{
25
25
  Although basic text files contain no metadata, the following tags are
26
26
  determined from a simple analysis of the text data. LineCount and WordCount
27
- are generated only for 8-bit character sets if the FastScan option is not
28
- used.
27
+ are generated only for 8-bit encodings, but the L<FastScan|../ExifTool.html#FastScan> (-fast) option may
28
+ be used to limit processing to the first 64 kB, in which case these two tags
29
+ are not produced. To avoid long processing delays, ExifTool will issue a
30
+ minor warning and process only the first 64 kB of any file larger than 20 MB
31
+ unless the L<IgnoreMinorErrors|../ExifTool.html#IgnoreMinorErrors> (-m) option is used.
29
32
  },
30
33
  MIMEEncoding => { Groups => { 2 => 'Other' } },
31
34
  Newlines => {
@@ -49,13 +52,22 @@ sub ProcessTXT($$)
49
52
  {
50
53
  my ($et, $dirInfo) = @_;
51
54
  my $dataPt = $$dirInfo{TestBuff};
55
+ my $raf = $$dirInfo{RAF};
52
56
  my $fast = $et->Options('FastScan') || 0;
53
- my ($buff, $enc, $isBOM);
57
+ my ($buff, $enc, $isBOM, $isUTF8);
54
58
  my $nl = '';
55
59
 
56
60
  return 0 unless length $$dataPt; # can't call it a text file if it has no text
57
61
 
58
- if ($$dataPt =~ /[\0-\x06\x0e-\x1f\x7f\xff]/) {
62
+ # read more from the file if necessary
63
+ if ($fast < 3 and length($$dataPt) == $Image::ExifTool::testLen) {
64
+ $raf->Read($buff, 65536) or return 0;
65
+ $dataPt = \$buff;
66
+ }
67
+ #
68
+ # make our best guess at the character encoding (EBCDIC is not supported)
69
+ #
70
+ if ($$dataPt =~ /([\0-\x06\x0e-\x1a\x1c-\x1f\x7f])/) {
59
71
  # file contains weird control characters, could be multi-byte Unicode
60
72
  if ($$dataPt =~ /^(\xff\xfe\0\0|\0\0\xfe\xff)/) {
61
73
  if ($1 eq "\xff\xfe\0\0") {
@@ -79,9 +91,10 @@ sub ProcessTXT($$)
79
91
  $nl =~ tr/\0//d; # remove nulls from newline sequence
80
92
  $isBOM = 1; # (we don't recognize UTF-16/UTF-32 without one)
81
93
  } else {
82
- if ($$dataPt !~ /[\x80-\xff]/) {
94
+ $isUTF8 = Image::ExifTool::XMP::IsUTF8($dataPt, 1);
95
+ if ($isUTF8 == 0) {
83
96
  $enc = 'us-ascii';
84
- } elsif (Image::ExifTool::XMP::IsUTF8($dataPt,1) > 0) {
97
+ } elsif ($isUTF8 > 0) {
85
98
  $enc = 'utf-8';
86
99
  $isBOM = ($$dataPt =~ /^\xef\xbb\xbf/ ? 1 : 0);
87
100
  } elsif ($$dataPt !~ /[\x80-\x9f]/) {
@@ -93,28 +106,51 @@ sub ProcessTXT($$)
93
106
  }
94
107
 
95
108
  my $tagTablePtr = GetTagTable('Image::ExifTool::Text::Main');
109
+
96
110
  $et->SetFileType();
97
111
  $et->HandleTag($tagTablePtr, MIMEEncoding => $enc);
98
- return 1 if $fast == 3;
112
+
113
+ return 1 if $fast == 3 or not $raf->Seek(0,0);
114
+
99
115
  $et->HandleTag($tagTablePtr, ByteOrderMark => $isBOM) if defined $isBOM;
100
116
  $et->HandleTag($tagTablePtr, Newlines => $nl);
101
- unless ($enc =~ /^utf-(16|32)/ or $fast) {
102
- my $raf = $$dirInfo{RAF};
103
- my ($lines, $words) = (0, 0);
104
- my $oldNL = $/;
105
- $/ = $nl if $nl;
106
- while ($raf->ReadLine($buff)) {
107
- if (not $nl and $buff =~ /(\r\n|\r|\n)$/) {
108
- # (the first line must have been longer than 1024 characters)
109
- $$et{VALUE}{Newlines} = $nl = $1;
117
+
118
+ return 1 if $fast or not defined $isUTF8;
119
+ return 1 if $$et{VALUE}{FileSize} and $$et{VALUE}{FileSize} > 20000000 and
120
+ $et->Warn('Not counting lines/words in text file larger than 20 MB', 2);
121
+ #
122
+ # count lines/words and check encoding of the rest of the file
123
+ #
124
+ my ($lines, $words) = (0, 0);
125
+ my $oldNL = $/;
126
+ $/ = $nl if $nl;
127
+ while ($raf->ReadLine($buff)) {
128
+ ++$lines;
129
+ ++$words while $buff =~ /\S+/g;
130
+ if (not $nl and $buff =~ /(\r\n|\r|\n)$/) {
131
+ # (the first line must have been longer than 1024 characters)
132
+ $$et{VALUE}{Newlines} = $nl = $1;
133
+ }
134
+ next if $raf->Tell() < 65536;
135
+ # continue to check encoding after the first 64 kB
136
+ if ($isUTF8 >= 0) { # (if ascii or utf8)
137
+ $isUTF8 = Image::ExifTool::XMP::IsUTF8(\$buff);
138
+ if ($isUTF8 > 0) {
139
+ $enc = 'utf-8';
140
+ } elsif ($isUTF8 < 0) {
141
+ $enc = $buff =~ /[\x80-\x9f]/ ? 'unknown-8bit' : 'iso-8859-1';
110
142
  }
111
- ++$lines;
112
- ++$words while $buff =~ /\S+/g;
143
+ } elsif ($enc eq 'iso-8859-1' and $buff =~ /[\x80-\x9f]/) {
144
+ $enc = 'unknown-8bit';
113
145
  }
114
- $/ = $oldNL;
115
- $et->HandleTag($tagTablePtr, LineCount => $lines);
116
- $et->HandleTag($tagTablePtr, WordCount => $words);
117
146
  }
147
+ if ($$et{VALUE}{MIMEEncoding} ne $enc) {
148
+ $$et{VALUE}{MIMEEncoding} = $enc;
149
+ $et->VPrint(0," MIMEEncoding [override] = $enc\n");
150
+ }
151
+ $/ = $oldNL;
152
+ $et->HandleTag($tagTablePtr, LineCount => $lines);
153
+ $et->HandleTag($tagTablePtr, WordCount => $words);
118
154
  return 1;
119
155
  }
120
156
 
@@ -2927,14 +2927,16 @@ Conv: for (;;) {
2927
2927
  }
2928
2928
 
2929
2929
  #------------------------------------------------------------------------------
2930
- # convert tag names to values in a string (eg. '${EXIF:ISO}x $$' --> '100x $')
2930
+ # Convert tag names to values or variables in a string
2931
+ # (eg. '${EXIF:ISO}x $$' --> '100x $' without hash ref, or "$info{'EXIF:ISO'}x $" with)
2931
2932
  # Inputs: 0) ExifTool object ref, 1) reference to list of found tags
2932
2933
  # 2) string with embedded tag names, 3) Options:
2933
2934
  # undef - set missing tags to ''
2934
2935
  # 'Error' - issue minor error on missing tag (and return undef)
2935
2936
  # 'Warn' - issue minor warning on missing tag (and return undef)
2936
2937
  # 'Silent' - just return undef on missing tag (no errors/warnings)
2937
- # Hash ref - hash for return of tag/value pairs
2938
+ # Hash ref - defined to interpolate as variables in string instead of values
2939
+ # --> receives tag/value pairs for interpolation of the variables
2938
2940
  # 4) document group name if extracting from a specific document
2939
2941
  # 5) hash ref to cache tag keys for subsequent calls in document loop
2940
2942
  # Returns: string with embedded tag values (or '$info{TAGNAME}' entries with Hash ref option)
@@ -49,7 +49,7 @@ use Image::ExifTool::Exif;
49
49
  use Image::ExifTool::GPS;
50
50
  require Exporter;
51
51
 
52
- $VERSION = '3.28';
52
+ $VERSION = '3.29';
53
53
  @ISA = qw(Exporter);
54
54
  @EXPORT_OK = qw(EscapeXML UnescapeXML);
55
55
 
@@ -951,7 +951,7 @@ my %sPantryItem = (
951
951
  This structure must have an InstanceID field, but may also contain any other
952
952
  XMP properties.
953
953
  },
954
- InstanceID => { Namespace => 'xmpMM' },
954
+ InstanceID => { Namespace => 'xmpMM', List => 0 },
955
955
  );
956
956
 
957
957
  # XMP Media Management namespace properties (xmpMM, xapMM)
@@ -458,10 +458,10 @@ my %sImageRegion = ( # new in 1.5
458
458
  STRUCT_NAME => 'ImageRegion',
459
459
  NAMESPACE => undef, # undefined to allow variable-namespace extensions
460
460
  NOTES => q{
461
- As well as the fields defined below, this structure may contain any
462
- top-level XMP tags, but since they aren't pre-defined the only way to add
463
- these tags is to write ImageRegion as a structure with these tags as new
464
- fields.
461
+ This structure is new in the IPTC Extension version 1.5 specification. As
462
+ well as the fields defined below, this structure may contain any top-level
463
+ XMP tags, but since they aren't pre-defined the only way to add these tags
464
+ is to write ImageRegion as a structure with these tags as new fields.
465
465
  },
466
466
  RegionBoundary => { Namespace => 'Iptc4xmpExt', FlatName => 'Boundary', Struct => \%sRegionBoundary },
467
467
  rId => { Namespace => 'Iptc4xmpExt', FlatName => 'ID' },
@@ -1770,6 +1770,14 @@ my %sSubVersion = (
1770
1770
  PortraitVersion => { },
1771
1771
  SpecialTypeID => { List => 'Bag' },
1772
1772
  PortraitNote => { },
1773
+ DisableAutoCreation => { List => 'Bag' },
1774
+ hdrp_makernote => {
1775
+ Name => 'HDRPMakerNote',
1776
+ # decoded data starts with the following bytes, but nothing yet is known about its contents:
1777
+ # 48 44 52 50 02 ef 64 35 6d 5e 70 1e 2c ea e3 4c [HDRP..d5m^p.,..L]
1778
+ ValueConv => 'Image::ExifTool::XMP::DecodeBase64($val)',
1779
+ ValueConvInv => 'Image::ExifTool::XMP::EncodeBase64($val)',
1780
+ },
1773
1781
  );
1774
1782
 
1775
1783
  # Google creations namespace (ref PH)
@@ -1,6 +1,6 @@
1
1
  Summary: perl module for image data extraction
2
2
  Name: perl-Image-ExifTool
3
- Version: 11.75
3
+ Version: 11.76
4
4
  Release: 1
5
5
  License: Artistic/GPL
6
6
  Group: Development/Libraries/Perl
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ExiftoolVendored
4
- VERSION = Gem::Version.new('11.75.1')
4
+ VERSION = Gem::Version.new('11.76.0')
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exiftool_vendored
3
3
  version: !ruby/object:Gem::Version
4
- version: 11.75.1
4
+ version: 11.76.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew McEachen
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-11-04 00:00:00.000000000 Z
12
+ date: 2019-11-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: exiftool