exiftool_vendored 12.14.0 → 12.18.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
  SHA256:
3
- metadata.gz: 1529a49f0175445c31e6d5a6607546d958e2b08ce2c044d43232ac07f51a6fb5
4
- data.tar.gz: bc6637fc0ef323192aa5e6c7e8553520f2d0acd9039e870ae1f9340fa00445c8
3
+ metadata.gz: 94a7d3e31a469a8fc6a58b020168e7076b56172144d98ffeda12f7b49d65a0a0
4
+ data.tar.gz: 18000853a1b6ae5728074fa49602ff41851844abbde34022ddc8971218607cf0
5
5
  SHA512:
6
- metadata.gz: 03fa438994202e58a6c85ae0715018f89ca76c3f0fbfa87a9a8438b5c73637ed53d92491759f63926e3c57cefb2ec5f22dadd8b67c04d20a8e06aaa33f0328c0
7
- data.tar.gz: 5e2cd8a33c4d66057bf115cd6f3bf3adaab426a44d8988747581d21478c81325e3cc88410b783cb6da7a55efbc04f7bc448291d509baf248995d10cfdcdeea0f
6
+ metadata.gz: c1283d44ee24b5b60c13795ad8868359b616522db3b191060a81df0b8bde2f3f31d5dd57e7bebd05de9e2ac7a0ba1d4eba041d024824fbb077084930484ba49f
7
+ data.tar.gz: 79356beb3ffe088861e355a00c66439c6a4d28c6dfe7efc4591902da5d5d32649fbf110283507c5259ac77bc73f66d5504b64478b0570dfd5df3fb2eb7805221
data/bin/Changes CHANGED
@@ -4,9 +4,59 @@ ExifTool Version History
4
4
 
5
5
  RSS feed: https://exiftool.org/rss.xml
6
6
 
7
- Note: The most recent production release is Version 12.00. (Other versions are
7
+ Note: The most recent production release is Version 12.16. (Other versions are
8
8
  considered development releases, and are not uploaded to MetaCPAN.)
9
9
 
10
+ Feb. 9, 2021 - Version 12.18
11
+
12
+ - Added a new SonyModelID
13
+ - Decode a number of Sony tags for the ILCE-1 (thanks Jos Roost)
14
+ - Decode a couple of new Canon tags (thanks LibRaw)
15
+ - Patched to read differently formatted UserData:Keywords as written by iPhone
16
+ - Patched to tolerate out-of-order Nikon MakerNote IFD entries when obtaining
17
+ tags necessary for decryption
18
+ - Fixed a few possible Condition warnings for some NikonSettings tags
19
+
20
+ Feb. 3, 2021 - Version 12.17
21
+
22
+ - Added a new Canon FocusMode value
23
+ - Added a new FujiFilm FilmMode value
24
+ - Added a number of new XMP-crs tags (thanks Herb)
25
+ - Decode a new H264 MDPM tag
26
+ - Allow non-conforming lower-case XMP boolean "true" and "false" values to be
27
+ written, but only when print conversion is disabled
28
+ - Improved Validate option to warn about non-capitalized boolean XMP values
29
+ - Improved logic for setting GPSLatitude/LongitudeRef values when writing
30
+ - Changed -json and -php options so the -a option is implied even without the
31
+ -g option
32
+ - Avoid extracting audio/video data from AVI videos when -ee -u is used
33
+ - Patched decoding of Canon ContinuousShootingSpeed for newer firmware
34
+ versions of the EOS-1DXmkIII
35
+ - Re-worked LensID patch of version 12.00 (github issue #51)
36
+ - Fixed a few typos in newly-added NikonSettings tags (thanks Herb)
37
+ - Fixed problem where group could not be specified for PNG-pHYs tags when
38
+ writing
39
+
40
+ Jan. 21, 2021 - Version 12.16 (production release)
41
+
42
+ - Extract another form of video subtitle text
43
+ - Enhanced -ee option with -ee2 and -ee3 to allow parsing of the H264 video
44
+ stream in MP4 files
45
+ - Changed a Nikon FlashMode value
46
+ - Fixed problem that caused a failed DPX test on Strawberry Perl
47
+ - API Changes:
48
+ - Enhanced ExtractEmbedded option
49
+
50
+ Jan. 18, 2021 - Version 12.15 (production release)
51
+
52
+ - Added a couple of new Sony LensType values (thanks LibRaw and Jos Roost)
53
+ - Added a new Nikon FlashMode value (thanks Mike)
54
+ - Decode NikonSettings (thanks Warren Hatch)
55
+ - Decode thermal information from DJI RJPEG images
56
+ - Fixed extra newline in -echo3 and -echo4 outputs added in version 12.10
57
+ - Fixed out-of-memory problem when writing some very large PNG files under
58
+ Windows
59
+
10
60
  Jan. 6, 2021 - Version 12.14
11
61
 
12
62
  - Added support for 2 more types of timed GPS in video files (that makes 49
@@ -202,7 +252,7 @@ July 27, 2020 - Version 12.02
202
252
  - Improved decoding of some Canon EOS 1DXmkIII custom functions
203
253
  - Allow integer QuickTime TrackNumber and DiskNumber values
204
254
  - Relax validity check of QuickTime:ContentCreateDate when writing with -n
205
- - Removed "Com" from the start of some unknown ItemList tag names
255
+ - Removed "Com" from the start of some unknown QuickTime ItemList tag names
206
256
  - Patched CanonCustom decoding for bug in Canon EOS-1DX firmware
207
257
  - Changed QuickTime CleanAperture tags decode as signed rationals
208
258
 
data/bin/MANIFEST CHANGED
@@ -115,6 +115,7 @@ html/TagNames/Motorola.html
115
115
  html/TagNames/Nikon.html
116
116
  html/TagNames/NikonCapture.html
117
117
  html/TagNames/NikonCustom.html
118
+ html/TagNames/NikonSettings.html
118
119
  html/TagNames/Nintendo.html
119
120
  html/TagNames/OOXML.html
120
121
  html/TagNames/Ogg.html
@@ -337,6 +338,7 @@ lib/Image/ExifTool/Motorola.pm
337
338
  lib/Image/ExifTool/Nikon.pm
338
339
  lib/Image/ExifTool/NikonCapture.pm
339
340
  lib/Image/ExifTool/NikonCustom.pm
341
+ lib/Image/ExifTool/NikonSettings.pm
340
342
  lib/Image/ExifTool/Nintendo.pm
341
343
  lib/Image/ExifTool/OOXML.pm
342
344
  lib/Image/ExifTool/Ogg.pm
data/bin/META.json CHANGED
@@ -47,5 +47,5 @@
47
47
  }
48
48
  },
49
49
  "release_status" : "stable",
50
- "version" : "12.14"
50
+ "version" : "12.18"
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: 12.14
31
+ version: 12.18
data/bin/README CHANGED
@@ -106,8 +106,8 @@ your home directory, then you would type the following commands in a
106
106
  terminal window to extract and run ExifTool:
107
107
 
108
108
  cd ~/Desktop
109
- gzip -dc Image-ExifTool-12.14.tar.gz | tar -xf -
110
- cd Image-ExifTool-12.14
109
+ gzip -dc Image-ExifTool-12.18.tar.gz | tar -xf -
110
+ cd Image-ExifTool-12.18
111
111
  ./exiftool t/images/ExifTool.jpg
112
112
 
113
113
  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 = '12.14';
13
+ my $version = '12.18';
14
14
 
15
15
  # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
16
16
  my $exeDir;
@@ -371,12 +371,12 @@ if (grep /^-common_args$/i, @ARGV) {
371
371
  Command: for (;;) {
372
372
 
373
373
  if (@echo3) {
374
- my $str = join "\n", @echo3, "\n";
374
+ my $str = join("\n", @echo3) . "\n";
375
375
  $str =~ s/\$\{status\}/$rtnVal/ig;
376
376
  print STDOUT $str;
377
377
  }
378
378
  if (@echo4) {
379
- my $str = join "\n", @echo4, "\n";
379
+ my $str = join("\n", @echo4) . "\n";
380
380
  $str =~ s/\$\{status\}/$rtnVal/ig;
381
381
  print STDERR $str;
382
382
  }
@@ -894,8 +894,8 @@ for (;;) {
894
894
  $helped = 1;
895
895
  next;
896
896
  }
897
- if (/^(ee|extractembedded)$/i) {
898
- $mt->Options(ExtractEmbedded => 1);
897
+ if (/^(ee|extractembedded)(\d*)$/i) {
898
+ $mt->Options(ExtractEmbedded => $2 || 1);
899
899
  $mt->Options(Duplicates => 1);
900
900
  next;
901
901
  }
@@ -1264,7 +1264,7 @@ for (;;) {
1264
1264
  if (/^php$/i) {
1265
1265
  $json = 2;
1266
1266
  $html = $xml = 0;
1267
- $mt->Options(Duplicates=>1);
1267
+ $mt->Options(Duplicates => 1);
1268
1268
  next;
1269
1269
  }
1270
1270
  if (/^z(ip)?$/i) {
@@ -1505,7 +1505,6 @@ if ($xml) {
1505
1505
  require Image::ExifTool::XMP if $json == 1; # (for EncodeBase64)
1506
1506
  }
1507
1507
  $mt->Options(List => 1) unless $joinLists;
1508
- $mt->Options(Duplicates => 0) unless defined $showGroup;
1509
1508
  $showTagID = 'D' if $tabFormat and not $showTagID;
1510
1509
  } elsif ($structOpt) {
1511
1510
  $mt->Options(List => 1);
@@ -2304,7 +2303,7 @@ TAG: foreach $tag (@foundTags) {
2304
2303
  $group = $et->GetGroup($tag, $showGroup);
2305
2304
  # look ahead to see if this tag may suppress a priority tag in
2306
2305
  # the same group, and if so suppress this tag instead
2307
- next if $noDups and $tag =~ /^(.*?) ?\(/ and defined $$info{$1} and
2306
+ next if $noDups and $tag =~ /^(.*?) \(/ and defined $$info{$1} and
2308
2307
  $group eq $et->GetGroup($1, $showGroup);
2309
2308
  $group = 'Unknown' if not $group and ($xml or $json or $csv);
2310
2309
  if ($fp and not ($allGroup or $csv)) {
@@ -2327,6 +2326,9 @@ TAG: foreach $tag (@foundTags) {
2327
2326
  }
2328
2327
  undef $group; # undefine so we don't print it below
2329
2328
  }
2329
+ } elsif ($noDups) {
2330
+ # don't allow duplicates, but avoid suppressing the priority tag
2331
+ next if $tag =~ /^(.*?) \(/ and defined $$info{$1};
2330
2332
  }
2331
2333
 
2332
2334
  ++$lineCount; # we are printing something meaningful
@@ -4573,7 +4575,7 @@ L<Processing control|/Processing control>
4573
4575
 
4574
4576
  -a (-duplicates) Allow duplicate tags to be extracted
4575
4577
  -e (--composite) Do not generate composite tags
4576
- -ee (-extractEmbedded) Extract information from embedded files
4578
+ -ee[NUM] (-extractEmbedded) Extract information from embedded files
4577
4579
  -ext[+] EXT (-extension) Process files with specified extension
4578
4580
  -F[OFFSET] (-fixBase) Fix the base for maker notes offsets
4579
4581
  -fast[NUM] Increase speed when extracting metadata
@@ -4917,7 +4919,7 @@ and the value is written to all possible groups/tags. For example, the
4917
4919
  string form must be used in the following command since the intent is to set
4918
4920
  the value of all existing date/time tags from C<CreateDate>:
4919
4921
 
4920
- exiftool "-time:all<$createdate" -wm w FILE
4922
+ exiftool '-time:all<$createdate' -wm w FILE
4921
4923
 
4922
4924
  =item B<-x> I<TAG> (B<-exclude>)
4923
4925
 
@@ -4943,7 +4945,7 @@ between images, but allows the metadata to be altered by editing the
4943
4945
  intermediate file (C<out.args> in this example):
4944
4946
 
4945
4947
  exiftool -args -G1 --filename --directory src.jpg > out.args
4946
- exiftool -@ out.args -sep ", " dst.jpg
4948
+ exiftool -@ out.args -sep ', ' dst.jpg
4947
4949
 
4948
4950
  Note: Be careful when copying information with this technique since it is
4949
4951
  easy to write tags which are normally considered "unsafe". For instance,
@@ -5207,18 +5209,18 @@ JSON arrays unless B<-sep> is used. By default XMP structures are flattened
5207
5209
  into individual tags in the JSON output, but the original structure may be
5208
5210
  preserved with the B<-struct> option (this also causes all list-type XMP
5209
5211
  tags to be output as JSON arrays, otherwise single-item lists would be
5210
- output as simple strings). The B<-a> option is implied if the B<-g> or
5211
- B<-G> options are used, otherwise it is ignored and tags with identical
5212
- JSON names are suppressed. (B<-g4> may be used to ensure that all tags have
5213
- unique JSON names.) Adding the B<-D> or B<-H> option changes tag values to
5214
- JSON objects with "val" and "id" fields, and adding B<-l> adds a "desc"
5215
- field, and a "num" field if the numerical value is different from the
5216
- converted "val". The B<-b> option may be added to output binary data,
5217
- encoded in base64 if necessary (indicated by ASCII "base64:" as the first 7
5218
- bytes of the value), and B<-t> may be added to include tag table information
5219
- (see B<-t> for details). The JSON output is UTF-8 regardless of any B<-L>
5220
- or B<-charset> option setting, but the UTF-8 validation is disabled if a
5221
- character set other than UTF-8 is specified.
5212
+ output as simple strings). The B<-a> option is implied when B<-json> is
5213
+ used, but entries with identical JSON names are suppressed in the output.
5214
+ (B<-G4> may be used to ensure that all tags have unique JSON names.) Adding
5215
+ the B<-D> or B<-H> option changes tag values to JSON objects with "val" and
5216
+ "id" fields, and adding B<-l> adds a "desc" field, and a "num" field if the
5217
+ numerical value is different from the converted "val". The B<-b> option may
5218
+ be added to output binary data, encoded in base64 if necessary (indicated by
5219
+ ASCII "base64:" as the first 7 bytes of the value), and B<-t> may be added
5220
+ to include tag table information (see B<-t> for details). The JSON output
5221
+ is UTF-8 regardless of any B<-L> or B<-charset> option setting, but the
5222
+ UTF-8 validation is disabled if a character set other than UTF-8 is
5223
+ specified.
5222
5224
 
5223
5225
  If I<JSONFILE> is specified, the file is imported and the tag definitions
5224
5226
  from the file are used to set tag values on a per-file basis. The special
@@ -5367,7 +5369,7 @@ with this command:
5367
5369
 
5368
5370
  produces output like this:
5369
5371
 
5370
- -- Generated by ExifTool 12.14 --
5372
+ -- Generated by ExifTool 12.18 --
5371
5373
  File: a.jpg - 2003:10:31 15:44:19
5372
5374
  (f/5.6, 1/60s, ISO 100)
5373
5375
  File: b.jpg - 2006:05:23 11:57:38
@@ -5527,18 +5529,18 @@ Notes:
5527
5529
  argument like C<%d%f.txt> is written as C<%%d%%f.txt>.
5528
5530
 
5529
5531
  2) If the argument for B<-w> does not contain a valid format code (eg. %f),
5530
- then it is interpreted as a file extension. It is not possible to specify a
5531
- simple filename as an argument -- creating a single output file from
5532
- multiple source files is typically done by shell redirection, ie)
5532
+ then it is interpreted as a file extension, but there are three different
5533
+ ways to create a single output file from multiple source files:
5533
5534
 
5535
+ # 1. Shell redirection
5534
5536
  exiftool FILE1 FILE2 ... > out.txt
5535
5537
 
5536
- But if necessary, an empty format code may be used to force the argument to
5537
- be interpreted as a format string, and the same result may be obtained
5538
- without the use of shell redirection:
5539
-
5538
+ # 2. With the -w option and a zero-width format code
5540
5539
  exiftool -w+! %0fout.txt FILE1 FILE2 ...
5541
5540
 
5541
+ # 3. With the -W option (see the -W option below)
5542
+ exiftool -W+! out.txt FILE1 FILE2 ...
5543
+
5542
5544
  Advanced features:
5543
5545
 
5544
5546
  A substring of the original file name, directory or extension may be taken
@@ -5706,7 +5708,7 @@ when copying.
5706
5708
 
5707
5709
  Extract existing tags only -- don't generate composite tags.
5708
5710
 
5709
- =item B<-ee> (B<-extractEmbedded>)
5711
+ =item B<-ee>[I<NUM>] (B<-extractEmbedded>)
5710
5712
 
5711
5713
  Extract information from embedded documents in EPS files, embedded EPS
5712
5714
  information and JPEG and Jpeg2000 images in PDF files, embedded MPF images
@@ -5724,6 +5726,11 @@ document as if it were a separate input file. This allows, for example,
5724
5726
  generation of GPS track logs from timed metadata in videos. See
5725
5727
  L<https://exiftool.org/geotag.html#Inverse> for examples.
5726
5728
 
5729
+ Setting I<NUM> to 2 causes the H264 video stream in MP4 videos to be parsed
5730
+ until the first Supplemental Enhancement Information (SEI) message is
5731
+ decoded, or 3 to parse the entire H624 stream and decode all SEI
5732
+ information.
5733
+
5727
5734
  =item B<-ext>[+] I<EXT>, B<--ext> I<EXT> (B<-extension>)
5728
5735
 
5729
5736
  Process only files with (B<-ext>) or without (B<--ext>) a specified
@@ -28,7 +28,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
28
28
  %mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
29
29
  %jpegMarker %specialTags %fileTypeLookup $testLen $exePath);
30
30
 
31
- $VERSION = '12.14';
31
+ $VERSION = '12.18';
32
32
  $RELEASE = '';
33
33
  @ISA = qw(Exporter);
34
34
  %EXPORT_TAGS = (
@@ -6695,6 +6695,22 @@ sub ProcessJPEG($$)
6695
6695
  # extract the Stim information (it is in standard TIFF format)
6696
6696
  my $tagTablePtr = GetTagTable('Image::ExifTool::Stim::Main');
6697
6697
  $self->ProcessTIFF(\%dirInfo, $tagTablePtr);
6698
+ } elsif ($$self{Make} eq 'DJI') {
6699
+ $dumpType = 'DJI ThermalData';
6700
+ # add this data to the combined data if it exists
6701
+ my $dataPt = $segDataPt;
6702
+ if (defined $combinedSegData) {
6703
+ $combinedSegData .= $$segDataPt;
6704
+ $dataPt = \$combinedSegData;
6705
+ }
6706
+ if ($nextMarker == $marker) {
6707
+ $combinedSegData = $$segDataPt unless defined $combinedSegData;
6708
+ } else {
6709
+ # process DJI FLIR thermal data
6710
+ my $tagTablePtr = GetTagTable('Image::ExifTool::JPEG::Main');
6711
+ $self->HandleTag($tagTablePtr, 'APP3', $$dataPt);
6712
+ undef $combinedSegData;
6713
+ }
6698
6714
  } elsif ($$segDataPt =~ /^\xff\xd8\xff\xdb/) {
6699
6715
  $dumpType = 'PreviewImage'; # (Samsung, HP, BenQ)
6700
6716
  $preview = $$segDataPt;
@@ -6729,6 +6745,11 @@ sub ProcessJPEG($$)
6729
6745
  # set flag if this is the last FPXR segment
6730
6746
  $dirInfo{LastFPXR} = not ($nextMarker==$marker and $$nextSegDataPt=~/^FPXR\0/),
6731
6747
  $self->ProcessDirectory(\%dirInfo, $tagTablePtr);
6748
+ } elsif ($$self{Make} eq 'DJI' and $$segDataPt =~ /^\xaa\x55\x12\x06/) {
6749
+ $dumpType = 'DJI ThermalParams';
6750
+ DirStart(\%dirInfo, 0, 0);
6751
+ my $tagTablePtr = GetTagTable('Image::ExifTool::DJI::ThermalParams');
6752
+ $self->ProcessDirectory(\%dirInfo, $tagTablePtr);
6732
6753
  } elsif ($preview) {
6733
6754
  # continued Samsung S1060 preview from APP3
6734
6755
  $dumpType = 'PreviewImage';
@@ -6751,6 +6772,10 @@ sub ProcessJPEG($$)
6751
6772
  } elsif ($$segDataPt =~ /^ssuniqueid\0/) {
6752
6773
  my $tagTablePtr = GetTagTable('Image::ExifTool::Samsung::APP5');
6753
6774
  $self->HandleTag($tagTablePtr, 'ssuniqueid', substr($$segDataPt, 11));
6775
+ } elsif ($$self{Make} eq 'DJI') {
6776
+ $dumpType = 'DJI ThermalCal';
6777
+ my $tagTablePtr = GetTagTable('Image::ExifTool::JPEG::Main');
6778
+ $self->HandleTag($tagTablePtr, 'APP5', $$segDataPt);
6754
6779
  } elsif ($preview) {
6755
6780
  $dumpType = 'PreviewImage';
6756
6781
  $preview .= $$segDataPt;
@@ -6786,6 +6811,10 @@ sub ProcessJPEG($$)
6786
6811
  my $tagTablePtr = GetTagTable('Image::ExifTool::GoPro::GPMF');
6787
6812
  DirStart(\%dirInfo, 6);
6788
6813
  $self->ProcessDirectory(\%dirInfo, $tagTablePtr);
6814
+ } elsif ($$segDataPt =~ /^DTAT\0\0.\{/s) {
6815
+ $dumpType = 'DJI_DTAT';
6816
+ my $tagTablePtr = GetTagTable('Image::ExifTool::JPEG::Main');
6817
+ $self->HandleTag($tagTablePtr, 'APP6', $$segDataPt);
6789
6818
  }
6790
6819
  } elsif ($marker == 0xe7) { # APP7 (Pentax, Huawei, Qualcomm)
6791
6820
  if ($$segDataPt =~ /^PENTAX \0(II|MM)/) {
@@ -626,7 +626,9 @@ XMP to be extracted.
626
626
  Flag to extract information from embedded documents in EPS files, embedded
627
627
  EPS information and JPEG and Jpeg2000 images in PDF files, embedded MPF
628
628
  images in JPEG and MPO files, timed metadata in videos, and the resource
629
- fork of Mac OS files. Default is undef.
629
+ fork of Mac OS files. A setting of 2 also causes the H264 video stream in
630
+ MP4 files to be parsed until the first SEI message is decoded, or 3 to
631
+ parse the entire stream. Default is undef.
630
632
 
631
633
  =item FastScan
632
634
 
@@ -2298,10 +2300,10 @@ MIE-Orient, MIE-Preview, MIE-Thumbnail, MIE-UTM, MIE-Unknown, MIE-Video,
2298
2300
  MIFF, MNG, MOBI, MOI, MPC, MPEG, MPF0, MPImage, MS-DOC, MXF, MacOS,
2299
2301
  MakerNotes, MakerUnknown, Matroska, MediaJukebox, Meta, MetaIFD, Microsoft,
2300
2302
  Minolta, MinoltaRaw, Motorola, NITF, Nikon, NikonCapture, NikonCustom,
2301
- NikonScan, Nintendo, Ocad, Ogg, Olympus, OpenEXR, Opus, PDF, PICT, PNG,
2302
- PNG-pHYs, PSP, Palm, Panasonic, PanasonicRaw, Pentax, PhaseOne, PhotoCD,
2303
- PhotoMechanic, Photoshop, PictureInfo, PostScript, PreviewIFD, PrintIM,
2304
- ProfileIFD, Qualcomm, QuickTime, RAF, RAF2, RIFF, RMETA, RSRC, RTF,
2303
+ NikonScan, NikonSettings, Nintendo, Ocad, Ogg, Olympus, OpenEXR, Opus, PDF,
2304
+ PICT, PNG, PNG-pHYs, PSP, Palm, Panasonic, PanasonicRaw, Pentax, PhaseOne,
2305
+ PhotoCD, PhotoMechanic, Photoshop, PictureInfo, PostScript, PreviewIFD,
2306
+ PrintIM, ProfileIFD, Qualcomm, QuickTime, RAF, RAF2, RIFF, RMETA, RSRC, RTF,
2305
2307
  Radiance, Rawzor, Real, Real-CONT, Real-MDPR, Real-PROP, Real-RA3, Real-RA4,
2306
2308
  Real-RA5, Real-RJMD, Reconyx, Red, Ricoh, SPIFF, SR2, SR2DataIFD, SR2SubIFD,
2307
2309
  SRF#, SVG, Samsung, Sanyo, Scalado, Sigma, SigmaRaw, Sony, SonyIDC, Stim,
@@ -310,9 +310,10 @@ C<integer> is a string of digits (possibly beginning with a '+' or '-'),
310
310
  C<real> is a floating point number, C<rational> is entered as a floating
311
311
  point number but stored as two C<integer> strings separated by a '/'
312
312
  character, C<date> is a date/time string entered in the format "YYYY:mm:dd
313
- HH:MM:SS[.ss][+/-HH:MM]", C<boolean> is either "True" or "False", C<struct>
314
- indicates a structured tag, and C<lang-alt> is a tag that supports alternate
315
- languages.
313
+ HH:MM:SS[.ss][+/-HH:MM]", C<boolean> is either "True" or "False" (but "true"
314
+ and "false" may be written as a ValueConv value for compatibility with
315
+ non-conforming applications), C<struct> indicates a structured tag, and
316
+ C<lang-alt> is a tag that supports alternate languages.
316
317
 
317
318
  When reading, C<struct> tags are extracted only if the L<Struct|../ExifTool.html#Struct> (-struct)
318
319
  option is used. Otherwise the corresponding I<Flattened> tags, indicated by
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
88
88
  sub ProcessExifInfo($$$);
89
89
  sub SwapWords($);
90
90
 
91
- $VERSION = '4.42';
91
+ $VERSION = '4.44';
92
92
 
93
93
  # Note: Removed 'USM' from 'L' lenses since it is redundant - PH
94
94
  # (or is it? Ref 32 shows 5 non-USM L-type lenses)
@@ -2128,6 +2128,7 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
2128
2128
  16 => 'Pan Focus', #PH
2129
2129
  # 137 - Single?
2130
2130
  256 => 'AF + MF', #PH (NC, EOS M)
2131
+ 257 => 'Live View', #forum12082
2131
2132
  512 => 'Movie Snap Focus', #48
2132
2133
  519 => 'Movie Servo AF', #PH (NC, EOS M)
2133
2134
  },
@@ -4538,6 +4539,16 @@ my %ciMaxFocal = (
4538
4539
  2 => 'Rotate 270 CW',
4539
4540
  },
4540
4541
  },
4542
+ 0x3a => { #IB
4543
+ Name => 'CameraOrientation',
4544
+ Condition => '$$self{Model} =~ /\b(1200D|REBEL T5|Kiss X70)\b/',
4545
+ Notes => '1200D only',
4546
+ PrintConv => {
4547
+ 0 => 'Horizontal (normal)',
4548
+ 1 => 'Rotate 90 CW',
4549
+ 2 => 'Rotate 270 CW',
4550
+ },
4551
+ },
4541
4552
  0x55 => {
4542
4553
  Name => 'FocusDistanceUpper',
4543
4554
  Condition => '$$self{Model} =~ /EOS 60D$/',
@@ -4678,7 +4689,7 @@ my %ciMaxFocal = (
4678
4689
  FIRST_ENTRY => 0,
4679
4690
  PRIORITY => 0,
4680
4691
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
4681
- NOTES => 'CameraInfo tags for the EOS 70D.',
4692
+ NOTES => 'CameraInfo tags for the EOS 80D.',
4682
4693
  0x03 => { %ciFNumber },
4683
4694
  0x04 => { %ciExposureTime },
4684
4695
  0x06 => { %ciISO },
@@ -5254,6 +5265,14 @@ my %ciMaxFocal = (
5254
5265
  0x06 => { %ciISO },
5255
5266
  0x1b => { %ciCameraTemperature }, # (700D + 0)
5256
5267
  0x23 => { %ciFocalLength }, # (700D + 0)
5268
+ 0x96 => { #IB (700D + 0x19)
5269
+ Name => 'CameraOrientation',
5270
+ PrintConv => {
5271
+ 0 => 'Horizontal (normal)',
5272
+ 1 => 'Rotate 90 CW',
5273
+ 2 => 'Rotate 270 CW',
5274
+ },
5275
+ },
5257
5276
  0xa5 => { # (700D + 0x19)
5258
5277
  Name => 'FocusDistanceUpper',
5259
5278
  %focusDistanceByteSwap,