exiftool_vendored 12.65.0 → 12.68.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 043102c6d2f82c4799b2885cbd9fdd7e9dfac5f1fe0450dea8bc2392a995dca3
4
- data.tar.gz: f188b33293746a02b5b8814a5b566cfefebb9311146d75a383522686424dc547
3
+ metadata.gz: 8775a6c495517ead6255debf3b1c804d3e5648d563bea48171176632cfb5043b
4
+ data.tar.gz: 305d08e52e2ef9b75538fe0305093dad86581448d56a21d66503863b11321a6f
5
5
  SHA512:
6
- metadata.gz: af7e7099dbf145f6ad9000691f208cd15bac17f74b5051e5e3273837f3d6d09b121171d3b593029bca036b6b58b23dddc55b962ddf9b2d7e0638a9d926de5400
7
- data.tar.gz: f92aae3415a5d73e8c449c466584798d66941ec0c28d97ebe1e88c0d917cecfce642c7bf2b20608fd425ddd412ff2b2a3659da97519a413903524fc99d98da73
6
+ metadata.gz: aa79d6fa82ae949030c90fc5e07c0271eb837336e9ee8675a1bb468b1f4f5b430b0ce78678a75e5025520a1118b7defd21a8f06242ad019d2001e10d1f270e54
7
+ data.tar.gz: ac7c7da4ef3ba52118a9bea9c0ccdc6a85f4d247e622e75c4e40567d582f0ca062eb68ad796a1a3745c5631c9800e243f45599a52cc8a2bfc99daf00af9cd928
data/bin/Changes CHANGED
@@ -7,6 +7,47 @@ RSS feed: https://exiftool.org/rss.xml
7
7
  Note: The most recent production release is Version 12.60. (Other versions are
8
8
  considered development releases, and are not uploaded to MetaCPAN.)
9
9
 
10
+ Oct. 16, 2023 - Version 12.68
11
+
12
+ - Added preliminary read support for XISF images
13
+ - Added the ability to delete JUMBF metadata from PNG images
14
+ - Added support for writing Canon burst-roll CR3 images
15
+ - Added a new Nikon Z9 SubjectDetection value, and improved Zf support
16
+ - Added a couple of new PentaxModelID values
17
+ - Added a few couple of new tag values for the Pentax K-3 Mark III Monochrome (github #226)
18
+ - Added a support for a new XMP-photomech tag
19
+ - Added a new Nikon LensID
20
+ - Added a new Canon LensType
21
+ - Added a new QuickTime ItemList tag
22
+ - Support decimal values for FujiFilm ShadowTone and HighlightTone tags
23
+ - Decode some new Sony tags (thanks Jos Roost)
24
+ - Decode ShutterCount for Canon EOS R6 (thanks gamin)
25
+ - Decode QuickTime VideoFullRangeFlag
26
+ - Decode JPGCompression for the Nikon D3S
27
+ - Enhanced -geotag feature to allow writing QuickTime:GPSCoordinates
28
+ - Renamed Panasonic HDRShot tag to MergedImages (forum 15298)
29
+ - Fixed problem where some NEF files were misidentified as NRW
30
+
31
+ Sept. 19, 2023 - Version 12.67
32
+
33
+ - Added a new Pentax LensType (thanks dmont)
34
+ - Added a new FujiFilm FilmMode and FaceElementTypes values (thanks Greybeard)
35
+ - Fixed error writing new DataMining tag where URI prefix wasn't being
36
+ properly added to the value
37
+
38
+ Sept. 19, 2023 - Version 12.66
39
+
40
+ - Added a few new Canon LensType values (thanks Norbert Wasser)
41
+ - Added conversions for a few Apple:ImageCaptureType values
42
+ - Added new XMP tag for PLUS version 2.0.1
43
+ - Added a new CanonModelID (thanks Laurent Clevy)
44
+ - Decode another tag from Canon 1DS raw images (Hubert Figuiere, github #219)
45
+ - Decode JPGCompression for newer Nikon models (thanks Warren Hatch)
46
+ - Fixed bug introduced in 12.65 where duplicate tags were not returned even
47
+ when the groups where specified explicitly
48
+ - API Changes:
49
+ - Added WindowsWideFile option
50
+
10
51
  Aug. 10, 2023 - Version 12.65
11
52
 
12
53
  - Added a new QuickTime Keys tag
@@ -135,6 +176,8 @@ Apr. 5, 2023 - Version 12.60 (production release)
135
176
  - Fixed problem where setting the Geotime value didn't work when using an
136
177
  advanced-formatting expression containing a greater-than symbol (>)
137
178
 
179
+ History of older versions (back to Nov. 19, 2003 - Version 1.00) -->
180
+
138
181
  Mar. 28, 2023 - Version 12.59
139
182
 
140
183
  - COMPATIBILITY WARNING: Changed the calculated ImageDataMD5 for JPEG images
@@ -323,8 +366,6 @@ Nov. 8, 2022 - Version 12.50 (production release)
323
366
  - Fixed inconsistent year and time zone for Kenwood dashcam timed GPS in MP4
324
367
  videos
325
368
 
326
- History of older versions (back to Nov. 19, 2003 - Version 1.00) -->
327
-
328
369
  Oct. 19, 2022 - Version 12.49
329
370
 
330
371
  - Added read support for Windows ICO and CUR files
data/bin/MANIFEST CHANGED
@@ -179,6 +179,7 @@ html/TagNames/VCard.html
179
179
  html/TagNames/Vorbis.html
180
180
  html/TagNames/WPG.html
181
181
  html/TagNames/WTV.html
182
+ html/TagNames/XISF.html
182
183
  html/TagNames/XMP.html
183
184
  html/TagNames/ZIP.html
184
185
  html/TagNames/ZISRAW.html
@@ -432,6 +433,7 @@ lib/Image/ExifTool/WriteQuickTime.pl
432
433
  lib/Image/ExifTool/WriteRIFF.pl
433
434
  lib/Image/ExifTool/WriteXMP.pl
434
435
  lib/Image/ExifTool/Writer.pl
436
+ lib/Image/ExifTool/XISF.pm
435
437
  lib/Image/ExifTool/XMP.pm
436
438
  lib/Image/ExifTool/XMP2.pl
437
439
  lib/Image/ExifTool/XMPStruct.pl
@@ -916,6 +918,8 @@ t/Writer_6.out
916
918
  t/Writer_60.out
917
919
  t/Writer_7.out
918
920
  t/Writer_9.out
921
+ t/XISF.t
922
+ t/XISF_2.out
919
923
  t/XMP.t
920
924
  t/XMP_10.out
921
925
  t/XMP_11.out
@@ -1144,6 +1148,7 @@ t/images/Vorbis.ogg
1144
1148
  t/images/WPG.wpg
1145
1149
  t/images/WTV.wtv
1146
1150
  t/images/Writer.jpg
1151
+ t/images/XISF.xisf
1147
1152
  t/images/XMP.inx
1148
1153
  t/images/XMP.jpg
1149
1154
  t/images/XMP.svg
data/bin/META.json CHANGED
@@ -50,5 +50,5 @@
50
50
  }
51
51
  },
52
52
  "release_status" : "stable",
53
- "version" : "12.65"
53
+ "version" : "12.68"
54
54
  }
data/bin/META.yml CHANGED
@@ -31,4 +31,4 @@ recommends:
31
31
  Time::HiRes: 0
32
32
  requires:
33
33
  perl: 5.004
34
- version: 12.65
34
+ version: 12.68
data/bin/README CHANGED
@@ -51,11 +51,11 @@ supported by ExifTool (r = read, w = write, c = create):
51
51
  DCP r/w | ICO r | MPG r | PSB r/w | WV r
52
52
  DCR r | ICS r | MPO r/w | PSD r/w | X3F r/w
53
53
  DFONT r | IDML r | MQV r/w | PSP r | XCF r
54
- DIVX r | IIQ r/w | MRC r | QTIF r/w | XLS r
55
- DJVU r | IND r/w | MRW r/w | R3D r | XLSX r
56
- DLL r | INSP r/w | MXF r | RA r | XMP r/w/c
57
- DNG r/w | INSV r | NEF r/w | RAF r/w | ZIP r
58
- DOC r | INX r | NKSC r/w | RAM r |
54
+ DIVX r | IIQ r/w | MRC r | QTIF r/w | XISF r
55
+ DJVU r | IND r/w | MRW r/w | R3D r | XLS r
56
+ DLL r | INSP r/w | MXF r | RA r | XLSX r
57
+ DNG r/w | INSV r | NEF r/w | RAF r/w | XMP r/w/c
58
+ DOC r | INX r | NKSC r/w | RAM r | ZIP r
59
59
  DOCX r | ISO r | NRW r/w | RAR r |
60
60
 
61
61
  Meta Information
@@ -108,8 +108,8 @@ your home directory, then you would type the following commands in a
108
108
  terminal window to extract and run ExifTool:
109
109
 
110
110
  cd ~/Desktop
111
- gzip -dc Image-ExifTool-12.65.tar.gz | tar -xf -
112
- cd Image-ExifTool-12.65
111
+ gzip -dc Image-ExifTool-12.68.tar.gz | tar -xf -
112
+ cd Image-ExifTool-12.68
113
113
  ./exiftool t/images/ExifTool.jpg
114
114
 
115
115
  Note: These commands extract meta information from one of the test images.
data/bin/exiftool CHANGED
@@ -11,7 +11,7 @@ use strict;
11
11
  use warnings;
12
12
  require 5.004;
13
13
 
14
- my $version = '12.65';
14
+ my $version = '12.68';
15
15
 
16
16
  # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
17
17
  my $exePath;
@@ -4665,11 +4665,11 @@ supported by ExifTool (r = read, w = write, c = create):
4665
4665
  DCP r/w | ICO r | MPG r | PSB r/w | WV r
4666
4666
  DCR r | ICS r | MPO r/w | PSD r/w | X3F r/w
4667
4667
  DFONT r | IDML r | MQV r/w | PSP r | XCF r
4668
- DIVX r | IIQ r/w | MRC r | QTIF r/w | XLS r
4669
- DJVU r | IND r/w | MRW r/w | R3D r | XLSX r
4670
- DLL r | INSP r/w | MXF r | RA r | XMP r/w/c
4671
- DNG r/w | INSV r | NEF r/w | RAF r/w | ZIP r
4672
- DOC r | INX r | NKSC r/w | RAM r |
4668
+ DIVX r | IIQ r/w | MRC r | QTIF r/w | XISF r
4669
+ DJVU r | IND r/w | MRW r/w | R3D r | XLS r
4670
+ DLL r | INSP r/w | MXF r | RA r | XLSX r
4671
+ DNG r/w | INSV r | NEF r/w | RAF r/w | XMP r/w/c
4672
+ DOC r | INX r | NKSC r/w | RAM r | ZIP r
4673
4673
  DOCX r | ISO r | NRW r/w | RAR r |
4674
4674
 
4675
4675
  Meta Information
@@ -5582,7 +5582,7 @@ with this command:
5582
5582
 
5583
5583
  produces output like this:
5584
5584
 
5585
- -- Generated by ExifTool 12.65 --
5585
+ -- Generated by ExifTool 12.68 --
5586
5586
  File: a.jpg - 2003:10:31 15:44:19
5587
5587
  (f/5.6, 1/60s, ISO 100)
5588
5588
  File: b.jpg - 2006:05:23 11:57:38
@@ -6418,10 +6418,14 @@ from the track log, and they are supported by the destination metadata
6418
6418
  format): GPSLatitude, GPSLatitudeRef, GPSLongitude, GPSLongitudeRef,
6419
6419
  GPSAltitude, GPSAltitudeRef, GPSDateStamp, GPSTimeStamp, GPSDateTime,
6420
6420
  GPSTrack, GPSTrackRef, GPSSpeed, GPSSpeedRef, GPSImgDirection,
6421
- GPSImgDirectionRef, GPSPitch, GPSRoll, AmbientTemperature and
6422
- CameraElevationAngle. By default, tags are created in EXIF, and updated in
6423
- XMP only if they already exist. However, C<EXIF:Geotime> or C<XMP:Geotime>
6424
- may be specified to write only EXIF or XMP tags respectively. Note that
6421
+ GPSImgDirectionRef, GPSPitch, GPSRoll, GPSCoordinates, AmbientTemperature
6422
+ and CameraElevationAngle. By default, in image files tags are created in
6423
+ EXIF, and updated in XMP only if they already exist. In QuickTime-format
6424
+ files GPSCoordinates is created in the preferred location (ItemList by
6425
+ default) as well as in XMP. However, C<EXIF:Geotime>, C<XMP:Geotime> or
6426
+ C<QuickTime:Geotime> may be specified to write to write only to one group.
6427
+ Also, C<ItemList:Geotime>, C<Keys:Geotime> or C<UserData:Geotime> may be
6428
+ used to write to a specific location in QuickTime-format files. Note that
6425
6429
  GPSPitch and GPSRoll are non-standard, and require user-defined tags in
6426
6430
  order to be written.
6427
6431
 
@@ -6527,7 +6531,8 @@ load exiftool for each invocation.
6527
6531
  Set ExifTool API option. I<OPT> is an API option name. The option value is
6528
6532
  set to 1 if I<=VAL> is omitted. If I<VAL> is omitted, the option value is
6529
6533
  set to undef if C<=> is used, or an empty string with C<^=>. If I<OPT> is
6530
- not specified a list of available options is returned. See
6534
+ not specified a list of available options is returned. The option name is
6535
+ not case senstive, but the option values are. See
6531
6536
  L<Image::ExifTool Options|Image::ExifTool/Options> for option details. This
6532
6537
  overrides API options set via the config file.
6533
6538
 
@@ -6543,11 +6548,12 @@ options on the command line.
6543
6548
 
6544
6549
  Load specified configuration file instead of the default ".ExifTool_config".
6545
6550
  If used, this option must come before all other arguments on the command
6546
- line and applies to all B<-execute>'d commands. The I<CFGFILE> must exist
6547
- relative to the current working directory or the exiftool application
6548
- directory unless an absolute path is specified. Loading of the default
6549
- config file may be disabled by setting I<CFGFILE> to an empty string (ie.
6550
- ""). See L<https://exiftool.org/config.html> and
6551
+ line and applies to all B<-execute>'d commands. This file is used to create
6552
+ user-defined tags as well as set default ExifTool options. The I<CFGFILE>
6553
+ must exist relative to the current working directory or the exiftool
6554
+ application directory unless an absolute path is specified. Loading of the
6555
+ default config file may be disabled by setting I<CFGFILE> to an empty string
6556
+ (ie. ""). See L<https://exiftool.org/config.html> and
6551
6557
  config_files/example.config in the full ExifTool distribution for details
6552
6558
  about the configuration file syntax.
6553
6559
 
@@ -7323,10 +7329,13 @@ CreateDate and FileNumber tags, in the form "20060507_118-1861.jpg".
7323
7329
 
7324
7330
  =head1 GEOTAGGING EXAMPLES
7325
7331
 
7326
- ExifTool implements geotagging via 3 special tags: Geotag (which for
7327
- convenience is also implemented as an exiftool option), Geosync and Geotime.
7328
- The examples below highlight some geotagging features. See
7329
- L<https://exiftool.org/geotag.html> for additional documentation.
7332
+ ExifTool implements geotagging from GPS log files via 3 special tags: Geotag
7333
+ (which for convenience is also implemented as an exiftool option), Geosync
7334
+ and Geotime. The examples below highlight some geotagging features. See
7335
+ L<https://exiftool.org/geotag.html> for additional documentation. (Note
7336
+ that geotagging from known GPS coordinates is done by writing the
7337
+ L<GPS tags|Image::ExifTool::TagNames/GPS Tags> directly rather than using
7338
+ the B<-geotag> option.)
7330
7339
 
7331
7340
  =over 5
7332
7341
 
@@ -16,7 +16,7 @@ use vars qw($VERSION);
16
16
  use Image::ExifTool::Exif;
17
17
  use Image::ExifTool::PLIST;
18
18
 
19
- $VERSION = '1.10';
19
+ $VERSION = '1.11';
20
20
 
21
21
  sub ConvertPLIST($$);
22
22
 
@@ -123,8 +123,12 @@ sub ConvertPLIST($$);
123
123
  0x0014 => { # (StillImageCaptureType, ref 2)
124
124
  Name => 'ImageCaptureType',
125
125
  Writable => 'int32s',
126
- Unknown => 1, # (don't know what the values mean)
127
126
  # seen: 1,2,3,4,5,10,12
127
+ PrintConv => { #forum15096
128
+ 1 => 'ProRAW',
129
+ 2 => 'Portrait',
130
+ 10 => 'Photo',
131
+ },
128
132
  },
129
133
  0x0015 => { # (ImageGroupIdentifier, ref 2)
130
134
  Name => 'ImageUniqueID',
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
88
88
  sub ProcessExifInfo($$$);
89
89
  sub SwapWords($);
90
90
 
91
- $VERSION = '4.67';
91
+ $VERSION = '4.69';
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)
@@ -476,7 +476,6 @@ $VERSION = '4.67';
476
476
  255.1 => 'Sigma 180mm f/2.8 EX DG OS HSM APO Macro', #50
477
477
  255.2 => 'Tamron SP 70-200mm f/2.8 Di VC USD', #exiv issue 1202 (A009)
478
478
  255.3 => 'Yongnuo YN 50mm f/1.8', #50
479
- 313 => 'Canon RF 28mm F2.8 STM', #42
480
479
  368 => 'Sigma 14-24mm f/2.8 DG HSM | A or other Sigma Lens', #IB (A018)
481
480
  368.1 => 'Sigma 20mm f/1.4 DG HSM | A', #50 (newer firmware)
482
481
  368.2 => 'Sigma 50mm f/1.4 DG HSM | A', #50
@@ -491,6 +490,7 @@ $VERSION = '4.67';
491
490
  '368.11' => 'Sigma 70mm f/2.8 DG Macro', #IB (A018)
492
491
  '368.12' => 'Sigma 18-35mm f/1.8 DC HSM | A', #50
493
492
  '368.13' => 'Sigma 24-105mm f/4 DG OS HSM | A', #forum3833
493
+ '368.14' => 'Sigma 18-300mm f/3.5-6.3 DC Macro OS HSM | C', #forum15280 (014)
494
494
  # Note: LensType 488 (0x1e8) is reported as 232 (0xe8) in 7D CameraSettings
495
495
  488 => 'Canon EF-S 15-85mm f/3.5-5.6 IS USM', #PH
496
496
  489 => 'Canon EF 70-300mm f/4-5.6L IS USM', #Gerald Kapounek
@@ -609,18 +609,24 @@ $VERSION = '4.67';
609
609
  '61182.33' => 'Canon RF 400mm F2.8L IS USM + RF1.4x', #IB
610
610
  '61182.34' => 'Canon RF 400mm F2.8L IS USM + RF2x', #IB
611
611
  '61182.35' => 'Canon RF 600mm F4L IS USM', #GiaZopatti
612
- '61182.36' => 'Canon RF 15-30mm F4.5-6.3 IS STM', #42
613
- '61182.37' => 'Canon RF 800mm F5.6L IS USM', #42
614
- '61182.38' => 'Canon RF 800mm F5.6L IS USM + RF1.4x', #42
615
- '61182.39' => 'Canon RF 800mm F5.6L IS USM + RF2x', #42
616
- '61182.40' => 'Canon RF 1200mm F8L IS USM', #42
617
- '61182.41' => 'Canon RF 1200mm F8L IS USM + RF1.4x', #42
618
- '61182.42' => 'Canon RF 1200mm F8L IS USM + RF2x', #42
619
- '61182.43' => 'Canon RF 135mm F1.8 L IS USM', #42
620
- '61182.44' => 'Canon RF 24-50mm F4.5-6.3 IS STM', #42
621
- '61182.45' => 'Canon RF-S 55-210mm F5-7.1 IS STM', #42
612
+ '61182.36' => 'Canon RF 600mm F4L IS USM + RF1.4x', #42
613
+ '61182.37' => 'Canon RF 600mm F4L IS USM + RF2x', #42
614
+ '61182.38' => 'Canon RF 15-30mm F4.5-6.3 IS STM', #42
615
+ '61182.39' => 'Canon RF 800mm F5.6L IS USM', #42
616
+ '61182.40' => 'Canon RF 800mm F5.6L IS USM + RF1.4x', #42
617
+ '61182.41' => 'Canon RF 800mm F5.6L IS USM + RF2x', #42
618
+ '61182.42' => 'Canon RF 1200mm F8L IS USM', #42
619
+ '61182.43' => 'Canon RF 1200mm F8L IS USM + RF1.4x', #42
620
+ '61182.44' => 'Canon RF 1200mm F8L IS USM + RF2x', #42
621
+ '61182.45' => 'Canon RF 135mm F1.8 L IS USM', #42
622
+ '61182.46' => 'Canon RF 24-50mm F4.5-6.3 IS STM', #42
623
+ '61182.47' => 'Canon RF-S 55-210mm F5-7.1 IS STM', #42
624
+ '61182.48' => 'Canon RF 100-300mm F2.8L IS USM', #42
625
+ '61182.49' => 'Canon RF 100-300mm F2.8L IS USM + RF1.4x', #42
626
+ '61182.50' => 'Canon RF 100-300mm F2.8L IS USM + RF2x', #42
627
+ '61182.51' => 'Canon RF 28mm F2.8 STM', #42
622
628
  # we need the RFLensType values for the following...
623
- '61182.46' => 'Canon RF 5.2mm F2.8L Dual Fisheye 3D VR', #PH (NC)
629
+ '61182.52' => 'Canon RF 5.2mm F2.8L Dual Fisheye 3D VR', #PH (NC)
624
630
  65535 => 'n/a',
625
631
  );
626
632
 
@@ -985,6 +991,7 @@ $VERSION = '4.67';
985
991
  0x80000481 => 'EOS R6 Mark II', #42
986
992
  0x80000487 => 'EOS R8', #42
987
993
  0x80000491 => 'PowerShot V10', #25
994
+ 0x80000498 => 'EOS R100', #25
988
995
  0x80000520 => 'EOS D2000C', #IB
989
996
  0x80000560 => 'EOS D6000C', #PH (guess)
990
997
  );
@@ -1383,6 +1390,11 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
1383
1390
  Condition => '$$self{Model} =~ /\b(1200D|REBEL T5|Kiss X70)\b/',
1384
1391
  SubDirectory => { TagTable => 'Image::ExifTool::Canon::CameraInfo60D' },
1385
1392
  },
1393
+ {
1394
+ Name => 'CanonCameraInfoR6',
1395
+ Condition => '$$self{Model} =~ /\bEOS R6$/',
1396
+ SubDirectory => { TagTable => 'Image::ExifTool::Canon::CameraInfoR6' },
1397
+ },
1386
1398
  {
1387
1399
  Name => 'CanonCameraInfoPowerShot',
1388
1400
  # valid if format is int32u[138] or int32u[148]
@@ -1698,6 +1710,12 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
1698
1710
  # Writable => 'int32u',
1699
1711
  # Protected => 2,
1700
1712
  },
1713
+ 0x82 => { #github219 (found on 1DS)
1714
+ Name => 'RawDataLength',
1715
+ # (can't yet write 1DS raw files)
1716
+ # Writable => 'int32u',
1717
+ # Protected => 2,
1718
+ },
1701
1719
  0x83 => { #PH
1702
1720
  Name => 'OriginalDecisionDataOffset',
1703
1721
  Writable => 'int32u',
@@ -4683,6 +4701,19 @@ my %ciMaxFocal = (
4683
4701
  },
4684
4702
  );
4685
4703
 
4704
+ %Image::ExifTool::Canon::CameraInfoR6 = (
4705
+ %binaryDataAttrs,
4706
+ FIRST_ENTRY => 0,
4707
+ PRIORITY => 0,
4708
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
4709
+ NOTES => 'CameraInfo tags for the EOS R6.',
4710
+ 0x0af1 => { #forum15210
4711
+ Name => 'ShutterCount',
4712
+ Format => 'int32u',
4713
+ Notes => 'includes electronic + mechanical shutter',
4714
+ },
4715
+ );
4716
+
4686
4717
  # Canon camera information for 70D (MakerNotes tag 0x0d) (ref PH)
4687
4718
  %Image::ExifTool::Canon::CameraInfo70D = (
4688
4719
  %binaryDataAttrs,
@@ -6859,6 +6890,8 @@ my %ciMaxFocal = (
6859
6890
  290 => 'Canon RF 400mm F2.8L IS USM + RF1.4x', #IB
6860
6891
  291 => 'Canon RF 400mm F2.8L IS USM + RF2x', #IB
6861
6892
  292 => 'Canon RF 600mm F4L IS USM', #GiaZopatti
6893
+ 293 => 'Canon RF 600mm F4L IS USM + RF1.4x', #42
6894
+ 294 => 'Canon RF 600mm F4L IS USM + RF2x', #42
6862
6895
  295 => 'Canon RF 800mm F5.6L IS USM', #42
6863
6896
  296 => 'Canon RF 800mm F5.6L IS USM + RF1.4x', #42
6864
6897
  297 => 'Canon RF 800mm F5.6L IS USM + RF2x', #42
@@ -6869,6 +6902,10 @@ my %ciMaxFocal = (
6869
6902
  303 => 'Canon RF 135mm F1.8 L IS USM', #42
6870
6903
  304 => 'Canon RF 24-50mm F4.5-6.3 IS STM', #42
6871
6904
  305 => 'Canon RF-S 55-210mm F5-7.1 IS STM', #42
6905
+ 306 => 'Canon RF 100-300mm F2.8L IS USM', #42
6906
+ 307 => 'Canon RF 100-300mm F2.8L IS USM + RF1.4x', #42
6907
+ 308 => 'Canon RF 100-300mm F2.8L IS USM + RF2x', #42
6908
+ 313 => 'Canon RF 28mm F2.8 STM', #42
6872
6909
  # Note: add new RF lenses to %canonLensTypes with ID 61182
6873
6910
  },
6874
6911
  },
@@ -31,7 +31,7 @@ use vars qw($VERSION);
31
31
  use Image::ExifTool qw(:DataAccess :Utils);
32
32
  use Image::ExifTool::Exif;
33
33
 
34
- $VERSION = '1.88';
34
+ $VERSION = '1.90';
35
35
 
36
36
  sub ProcessFujiDir($$$);
37
37
  sub ProcessFaceRec($$$);
@@ -428,6 +428,14 @@ my %faceCategories = (
428
428
  Name => 'ShadowTone',
429
429
  Writable => 'int32s',
430
430
  PrintConv => {
431
+ OTHER => sub {
432
+ my ($val, $inv) = @_;
433
+ if ($inv) {
434
+ return int(-$val * 16);
435
+ } else {
436
+ return -$val / 16;
437
+ }
438
+ },
431
439
  -64 => '+4 (hardest)',
432
440
  -48 => '+3 (very hard)',
433
441
  -32 => '+2 (hard)',
@@ -441,6 +449,14 @@ my %faceCategories = (
441
449
  Name => 'HighlightTone',
442
450
  Writable => 'int32s',
443
451
  PrintConv => {
452
+ OTHER => sub {
453
+ my ($val, $inv) = @_;
454
+ if ($inv) {
455
+ return int(-$val * 16);
456
+ } else {
457
+ return -$val / 16;
458
+ }
459
+ },
444
460
  -64 => '+4 (hardest)',
445
461
  -48 => '+3 (very hard)',
446
462
  -32 => '+2 (hard)',
@@ -670,6 +686,7 @@ my %faceCategories = (
670
686
  0x800 => 'Classic Negative', #forum10536
671
687
  0x900 => 'Bleach Bypass', #forum10890
672
688
  0xa00 => 'Nostalgic Neg', #forum12085
689
+ 0xb00 => 'Reala ACE', #forum15190
673
690
  },
674
691
  },
675
692
  0x1402 => { #2
@@ -897,6 +914,8 @@ my %faceCategories = (
897
914
  25 => 'Aircraft Cockpit',
898
915
  26 => 'Train Front',
899
916
  27 => 'Train Cockpit',
917
+ 28 => 'Animal Head (28)', #forum15192
918
+ 29 => 'Animal Body (29)', #forum15192
900
919
  },'REPEAT'],
901
920
  },
902
921
  # 0x4202 int8u[-1] - number of cooredinates in each rectangle? (ref 11)
@@ -29,7 +29,7 @@ use vars qw($VERSION);
29
29
  use Image::ExifTool qw(:Public);
30
30
  use Image::ExifTool::GPS;
31
31
 
32
- $VERSION = '1.72';
32
+ $VERSION = '1.73';
33
33
 
34
34
  sub JITTER() { return 2 } # maximum time jitter
35
35
 
@@ -1109,7 +1109,7 @@ sub SetGeoValues($$;$)
1109
1109
  $iExt = $i1;
1110
1110
  }
1111
1111
  if (abs($time - $tn) > $geoMaxExtSecs) {
1112
- $err or $err = 'Time is too far from nearest GPS fix';
1112
+ $err or $err = 'Time is too far from nearest GPS fix'.' '.abs($time-$tn).' '.$geoMaxExtSecs;
1113
1113
  $et->VPrint(2, ' Nearest fix: ', PrintFixTime($tn), "\n") if $verbose > 2;
1114
1114
  $fix = { } if $$geotag{DateTimeOnly};
1115
1115
  } else {
@@ -1196,24 +1196,29 @@ Category: foreach $category (qw{pos track alt orient atemp}) {
1196
1196
  # write GPSDateStamp if date included in track log, otherwise delete it
1197
1197
  $gpsDate = sprintf('%.2d:%.2d:%.2d', $t[5]+1900, $t[4]+1, $t[3]) unless $noDate;
1198
1198
  # write GPSAltitude tags if altitude included in track log, otherwise delete them
1199
- if (defined $$fix{alt}) {
1200
- $gpsAlt = abs $$fix{alt};
1201
- $gpsAltRef = ($$fix{alt} < 0 ? 1 : 0);
1202
- } elsif ($$has{alt} and defined $iExt) {
1199
+ my $alt = $$fix{alt};
1200
+ if (not defined $alt and $$has{alt} and defined $iExt) {
1203
1201
  my $tFix = FindFix($et,'alt',$times,$points,$iExt,$iDir,$geoMaxExtSecs);
1204
- if ($tFix) {
1205
- $gpsAlt = abs $$tFix{alt};
1206
- $gpsAltRef = ($$tFix{alt} < 0 ? 1 : 0);
1207
- }
1202
+ $alt = $$tFix{alt} if $tFix;
1208
1203
  }
1209
1204
  # set new GPS tag values (EXIF, or XMP if write group is 'xmp')
1210
- my ($xmp, $exif, @r);
1205
+ my ($xmp, $exif, $qt, @r);
1211
1206
  my %opts = ( Type => 'ValueConv' ); # write ValueConv values
1212
1207
  if ($writeGroup) {
1213
1208
  $opts{Group} = $writeGroup;
1214
1209
  $xmp = ($writeGroup =~ /xmp/i);
1215
1210
  $exif = ($writeGroup =~ /^(exif|gps)$/i);
1211
+ $qt = $writeGroup =~ /^(quicktime|keys|itemlist|userdata)$/i;
1212
+ }
1213
+ # set QuickTime GPSCoordinates
1214
+ my $coords = "$$fix{lat} $$fix{lon}";
1215
+ if (defined $alt) {
1216
+ $gpsAlt = abs $alt;
1217
+ $gpsAltRef = ($alt < 0 ? 1 : 0);
1218
+ $coords .= " $alt";
1216
1219
  }
1220
+ @r = $et->SetNewValue(GPSCoordinates => $coords, %opts);
1221
+ return $err if $qt; # all done if writing to QuickTime only
1217
1222
  # (capture error messages by calling SetNewValue in list context)
1218
1223
  @r = $et->SetNewValue(GPSLatitude => $$fix{lat}, %opts);
1219
1224
  @r = $et->SetNewValue(GPSLongitude => $$fix{lon}, %opts);
@@ -1288,7 +1293,7 @@ Category: foreach $category (qw{pos track alt orient atemp}) {
1288
1293
  GPSAltitude GPSAltitudeRef GPSDateStamp GPSTimeStamp GPSDateTime
1289
1294
  GPSTrack GPSTrackRef GPSSpeed GPSSpeedRef GPSImgDirection
1290
1295
  GPSImgDirectionRef GPSPitch GPSRoll CameraElevationAngle
1291
- AmbientTemperature))
1296
+ AmbientTemperature GPSCoordinates))
1292
1297
  {
1293
1298
  my @r = $et->SetNewValue($_, undef, %opts);
1294
1299
  }
@@ -65,7 +65,7 @@ use Image::ExifTool::Exif;
65
65
  use Image::ExifTool::GPS;
66
66
  use Image::ExifTool::XMP;
67
67
 
68
- $VERSION = '4.24';
68
+ $VERSION = '4.26';
69
69
 
70
70
  sub LensIDConv($$$);
71
71
  sub ProcessNikonAVI($$$);
@@ -676,6 +676,7 @@ sub GetAFPointGrid($$;$);
676
676
  '07 40 30 45 2D 35 03 02.2' => 'Voigtlander Ultragon 19-35mm F3.5-4.5 VMV', #NJ
677
677
  '71 48 64 64 24 24 00 00' => 'Voigtlander APO-Skopar 90mm F2.8 SL IIs', #30
678
678
  'FD 00 50 50 18 18 DF 00' => 'Voigtlander APO-Lanthar 50mm F2 Aspherical', #35
679
+ 'FD 00 44 44 18 18 DF 00' => 'Voigtlander APO-Lanthar 35mm F2', #30
679
680
  #
680
681
  '00 40 2D 2D 2C 2C 00 00' => 'Carl Zeiss Distagon T* 3.5/18 ZF.2',
681
682
  '00 48 27 27 24 24 00 00' => 'Carl Zeiss Distagon T* 2.8/15 ZF.2', #MykytaKozlov
@@ -1188,6 +1189,7 @@ my %subjectDetectionZ9 = (
1188
1189
  2 => 'People',
1189
1190
  3 => 'Animals',
1190
1191
  4 => 'Vehicles',
1192
+ 5 => 'Birds',
1191
1193
  6 => 'Airplanes',
1192
1194
  );
1193
1195
 
@@ -1983,6 +1985,14 @@ my %base64coord = (
1983
1985
  Writable => 'rational64s',
1984
1986
  Count => 2,
1985
1987
  },
1988
+ 0x0044 => { #28
1989
+ Name => 'JPGCompression',
1990
+ RawConv => '($val) ? $val : undef', # undef for raw files
1991
+ PrintConv => {
1992
+ 1 => 'Size Priority',
1993
+ 3 => 'Optimal Quality',
1994
+ },
1995
+ },
1986
1996
  0x0045 => { #IB
1987
1997
  Name => 'CropArea',
1988
1998
  Notes => 'left, top, width, height',
@@ -2413,8 +2423,8 @@ my %base64coord = (
2413
2423
  },
2414
2424
  },
2415
2425
  { # (Z6_2 firmware version 1.00 and Z7II firmware versions 1.00 & 1.01, ref 28)
2416
- # 0800=Z6/Z7 0801=Z50 0802=Z5 0803=Z6II/Z7II 0804=Zfc 0807=Z30
2417
- Condition => '$$valPt =~ /^080[012347]/',
2426
+ # 0800=Z6/Z7 0801=Z50 0802=Z5 0803=Z6II/Z7II 0804=Zfc 0807=Z30 0808=Zf
2427
+ Condition => '$$valPt =~ /^080[0123478]/',
2418
2428
  Name => 'ShotInfoZ7II',
2419
2429
  SubDirectory => {
2420
2430
  TagTable => 'Image::ExifTool::Nikon::ShotInfoZ7II',
@@ -2473,7 +2483,7 @@ my %base64coord = (
2473
2483
  },
2474
2484
  0x0094 => { Name => 'SaturationAdj', Writable => 'int16s' },
2475
2485
  0x0095 => { Name => 'NoiseReduction', Writable => 'string' }, # ("Off" or "FPNR"=long exposure NR)
2476
- 0x0096 => {
2486
+ 0x0096 => { # (not found in NRW files, but also not in all NEF's)
2477
2487
  Name => 'NEFLinearizationTable', # same table as DNG LinearizationTable (ref JD)
2478
2488
  Writable => 'undef',
2479
2489
  Flags => [ 'Binary', 'Protected' ],
@@ -6048,6 +6058,24 @@ my %nikonFocalConversions = (
6048
6058
  Format => 'int32u',
6049
6059
  Priority => 0,
6050
6060
  },
6061
+ 671.1 => { # 0x29f
6062
+ Name => 'JPGCompression',
6063
+ Mask => 0x40,
6064
+ PrintConv => {
6065
+ 0 => 'Size Priority',
6066
+ 1 => 'Optimal Quality',
6067
+ },
6068
+ },
6069
+ # this works for one set of D3S samples, but is 0 in some others
6070
+ #671.2 => { # 0x29f
6071
+ # Name => 'Quality',
6072
+ # Mask => 0x03,
6073
+ # PrintConv => {
6074
+ # 1 => 'Fine',
6075
+ # 2 => 'Normal',
6076
+ # 3 => 'Basic',
6077
+ # },
6078
+ #},
6051
6079
  0x2ce => { #(NC)
6052
6080
  Name => 'CustomSettingsD3S',
6053
6081
  Format => 'undef[27]',
@@ -8840,7 +8868,7 @@ my %nikonFocalConversions = (
8840
8868
  %binaryDataAttrs,
8841
8869
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
8842
8870
  DATAMEMBER => [ 90, 176, 180, 328, 352, 858 ],
8843
- NOTES => 'These tags are used by the Z5, Z6, Z7, Z6II, Z7II, Z50 and Zfc.',
8871
+ NOTES => 'These tags are used by the Z5, Z6, Z7, Z6II, Z7II, Z50, Zfc and Zf.',
8844
8872
  #48 SelfTimer' #0=> no 1=> yes works for Z7II firmware 1.40, but not 1.30. Follow-up required.
8845
8873
  90 => {
8846
8874
  Name => 'SingleFrame', #0=> Single Frame 1=> one of the continuous modes
@@ -9808,6 +9836,7 @@ my %nikonFocalConversions = (
9808
9836
  290 => { Name => 'PhotoShootingMenuBank', PrintConv => \%banksZ9 },
9809
9837
  292 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn }, # single tag from both Photo & Video menus
9810
9838
  328 => { Name => 'PhotoShootingMenuBankImageArea', PrintConv => \%imageAreaZ9 },
9839
+ #334 JPGCompression 0 => 'Size Priority', 1 => 'Optimal Quality',
9811
9840
  342 => { Name => 'AutoISO', PrintConv => \%offOn },
9812
9841
  344 => {
9813
9842
  Name => 'ISOAutoHiLimit',