exiftool_vendored 12.82.0 → 12.85.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/Changes +59 -0
- data/bin/MANIFEST +2 -18
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +47 -46
- data/bin/build_geolocation +945 -0
- data/bin/config_files/example.config +2 -2
- data/bin/exiftool +75 -51
- data/bin/fmt_files/gpx.fmt +2 -1
- data/bin/fmt_files/gpx_wpt.fmt +2 -1
- data/bin/lib/Image/ExifTool/Apple.pm +52 -7
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +5 -2
- data/bin/lib/Image/ExifTool/Canon.pm +11 -2
- data/bin/lib/Image/ExifTool/CanonVRD.pm +18 -5
- data/bin/lib/Image/ExifTool/DJI.pm +29 -0
- data/bin/lib/Image/ExifTool/DPX.pm +3 -3
- data/bin/lib/Image/ExifTool/Exif.pm +19 -2
- data/bin/lib/Image/ExifTool/GM.pm +17 -8
- data/bin/lib/Image/ExifTool/Geolocation.dat +0 -0
- data/bin/lib/Image/ExifTool/Geolocation.pm +170 -104
- data/bin/lib/Image/ExifTool/Geotag.pm +18 -10
- data/bin/lib/Image/ExifTool/ID3.pm +28 -6
- data/bin/lib/Image/ExifTool/Nikon.pm +25 -6
- data/bin/lib/Image/ExifTool/Pentax.pm +64 -13
- data/bin/lib/Image/ExifTool/QuickTime.pm +26 -7
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +5 -0
- data/bin/lib/Image/ExifTool/Sony.pm +15 -6
- data/bin/lib/Image/ExifTool/TagLookup.pm +3557 -3540
- data/bin/lib/Image/ExifTool/TagNames.pod +61 -13
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +4 -2
- data/bin/lib/Image/ExifTool/Writer.pl +166 -134
- data/bin/lib/Image/ExifTool/XMP.pm +2 -0
- data/bin/lib/Image/ExifTool/XMP2.pl +3 -0
- data/bin/lib/Image/ExifTool.pm +59 -27
- data/bin/lib/Image/ExifTool.pod +88 -71
- data/bin/perl-Image-ExifTool.spec +45 -45
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +3 -20
- data/bin/lib/Image/ExifTool/GeoLang/cs.pm +0 -978
- data/bin/lib/Image/ExifTool/GeoLang/de.pm +0 -1975
- data/bin/lib/Image/ExifTool/GeoLang/en_ca.pm +0 -44
- data/bin/lib/Image/ExifTool/GeoLang/en_gb.pm +0 -124
- data/bin/lib/Image/ExifTool/GeoLang/es.pm +0 -2921
- data/bin/lib/Image/ExifTool/GeoLang/fi.pm +0 -1116
- data/bin/lib/Image/ExifTool/GeoLang/fr.pm +0 -3171
- data/bin/lib/Image/ExifTool/GeoLang/it.pm +0 -2750
- data/bin/lib/Image/ExifTool/GeoLang/ja.pm +0 -10256
- data/bin/lib/Image/ExifTool/GeoLang/ko.pm +0 -4499
- data/bin/lib/Image/ExifTool/GeoLang/nl.pm +0 -1270
- data/bin/lib/Image/ExifTool/GeoLang/pl.pm +0 -3019
- data/bin/lib/Image/ExifTool/GeoLang/ru.pm +0 -18220
- data/bin/lib/Image/ExifTool/GeoLang/sk.pm +0 -441
- data/bin/lib/Image/ExifTool/GeoLang/sv.pm +0 -714
- data/bin/lib/Image/ExifTool/GeoLang/tr.pm +0 -452
- data/bin/lib/Image/ExifTool/GeoLang/zh_cn.pm +0 -2225
- data/bin/lib/Image/ExifTool/GeoLang/zh_tw.pm +0 -72
@@ -364,8 +364,8 @@ $Image::ExifTool::QuickTime::Keys{PREFERRED} = 3;
|
|
364
364
|
|
365
365
|
# Add user-defined cities to the Geolocation lookup
|
366
366
|
@Image::ExifTool::UserDefined::Geolocation = (
|
367
|
-
# (city,region,
|
368
|
-
['Sinemorets','
|
367
|
+
# (city,region,subregion,country_code,country,timezone,feature_code,population,lat,lon)
|
368
|
+
['Sinemorets','burgas','Obshtina Tsarevo','BG','','Europe/Sofia','PPL',400,42.06115,27.97833],
|
369
369
|
);
|
370
370
|
|
371
371
|
#------------------------------------------------------------------------------
|
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.
|
14
|
+
my $version = '12.85';
|
15
15
|
|
16
16
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
17
17
|
my $exePath;
|
@@ -735,6 +735,7 @@ for (;;) {
|
|
735
735
|
push @isUTF8, 10 if $isAlt;
|
736
736
|
for ($i=0; ; ++$i) {
|
737
737
|
my @entry = Image::ExifTool::Geolocation::GetEntry($i,$langOpt,1) or last;
|
738
|
+
$#entry = 9; # remove everything after latitude (eg. feature type)
|
738
739
|
next if $minPop and $entry[7] < $minPop;
|
739
740
|
next if %fcodes and $neg ? $fcodes{lc $entry[6]} : not $fcodes{lc $entry[6]};
|
740
741
|
push @entry, Image::ExifTool::Geolocation::GetAltNames($i,1) if $isAlt;
|
@@ -1166,7 +1167,7 @@ for (;;) {
|
|
1166
1167
|
if (/^p(-?)$/ or /^printformat(-?)$/i) {
|
1167
1168
|
my $fmt = shift;
|
1168
1169
|
if ($pass) {
|
1169
|
-
LoadPrintFormat($fmt, $1);
|
1170
|
+
LoadPrintFormat($fmt, $1 || $binaryOutput);
|
1170
1171
|
# load MWG module now if necessary
|
1171
1172
|
if (not $useMWG and grep /^mwg:/i, @requestTags) {
|
1172
1173
|
$useMWG = 1;
|
@@ -2244,6 +2245,14 @@ sub GetImageInfo($$)
|
|
2244
2245
|
if (%printFmt) {
|
2245
2246
|
$et->Options(Duplicates => 1);
|
2246
2247
|
$et->Options(RequestTags => \@requestTags);
|
2248
|
+
if ($printFmt{SetTags}) {
|
2249
|
+
# initialize options so we can set any tags we want
|
2250
|
+
$$et{TAGS_FROM_FILE} = 1;
|
2251
|
+
$et->Options(MakerNotes => 1);
|
2252
|
+
$et->Options(Struct => 2);
|
2253
|
+
$et->Options(List => 1);
|
2254
|
+
$et->Options(CoordFormat => '%d %d %.8f') unless $et->Options('CoordFormat');
|
2255
|
+
}
|
2247
2256
|
} else {
|
2248
2257
|
@foundTags = @tags;
|
2249
2258
|
}
|
@@ -2296,8 +2305,8 @@ sub GetImageInfo($$)
|
|
2296
2305
|
# output using print format file (-p) option
|
2297
2306
|
my ($type, $doc, $grp, $lastDoc, $cache);
|
2298
2307
|
$fileTrailer = '';
|
2299
|
-
# repeat for each
|
2300
|
-
if (
|
2308
|
+
# repeat for each sub-document if necessary
|
2309
|
+
if ($$et{DOC_COUNT}) {
|
2301
2310
|
# (cache tag keys if there are sub-documents)
|
2302
2311
|
$lastDoc = $$et{DOC_COUNT} and $cache = { };
|
2303
2312
|
} else {
|
@@ -4121,6 +4130,7 @@ sub AddPrintFormat($)
|
|
4121
4130
|
push @{$printFmt{$type}}, $expr;
|
4122
4131
|
# add to list of requested tags
|
4123
4132
|
push @requestTags, $expr =~ /\$\{?((?:[-\w]+:)*[-\w?*]+)/g;
|
4133
|
+
$printFmt{SetTags} = 1 if $expr =~ /\bSetTags\b/;
|
4124
4134
|
}
|
4125
4135
|
|
4126
4136
|
#------------------------------------------------------------------------------
|
@@ -4711,50 +4721,50 @@ supported by ExifTool (r = read, w = write, c = create):
|
|
4711
4721
|
|
4712
4722
|
File Types
|
4713
4723
|
------------+-------------+-------------+-------------+------------
|
4714
|
-
360 r/w | DOCX r | ITC r |
|
4715
|
-
3FR r | DPX r | J2C r |
|
4716
|
-
3G2 r/w | DR4 r/w/c | JNG r/w |
|
4717
|
-
3GP r/w | DSS r | JP2 r/w |
|
4718
|
-
7Z r | DV r | JPEG r/w |
|
4719
|
-
A r | DVB r/w | JSON r |
|
4720
|
-
AA r | DVR-MS r | JXL r/w |
|
4721
|
-
AAC r | DYLIB r | K25 r |
|
4722
|
-
AAE r | EIP r | KDC r |
|
4723
|
-
AAX r/w | EPS r/w | KEY r |
|
4724
|
-
ACR r | EPUB r | LA r |
|
4725
|
-
AFM r | ERF r/w | LFP r |
|
4726
|
-
AI r/w | EXE r | LIF r |
|
4727
|
-
AIFF r | EXIF r/w/c | LNK r |
|
4728
|
-
APE r | EXR r | LRV r/w |
|
4729
|
-
ARQ r/w | EXV r/w/c | M2TS r |
|
4730
|
-
ARW r/w | F4A/V r/w | M4A/V r/w |
|
4731
|
-
ASF r | FFF r/w | MACOS r |
|
4732
|
-
AVI r | FITS r | MAX r |
|
4733
|
-
AVIF r/w | FLA r | MEF r/w |
|
4734
|
-
AZW r | FLAC r | MIE r/w/c |
|
4735
|
-
BMP r | FLIF r/w | MIFF r |
|
4736
|
-
BPG r | FLV r | MKA r |
|
4737
|
-
BTF r | FPF r | MKS r |
|
4738
|
-
C2PA r | FPX r | MKV r |
|
4739
|
-
CHM r | GIF r/w | MNG r/w |
|
4740
|
-
COS r | GLV r/w | MOBI r |
|
4741
|
-
CR2 r/w | GPR r/w | MODD r |
|
4742
|
-
CR3 r/w | GZ r | MOI r |
|
4743
|
-
CRM r/w | HDP r/w | MOS r/w |
|
4744
|
-
CRW r/w | HDR r | MOV r/w |
|
4745
|
-
CS1 r/w | HEIC r/w | MP3 r |
|
4746
|
-
CSV r | HEIF r/w | MP4 r/w |
|
4747
|
-
CUR r | HTML r | MPC r |
|
4748
|
-
CZI r | ICC r/w/c | MPG r |
|
4749
|
-
DCM r | ICO r | MPO r/w |
|
4750
|
-
DCP r/w | ICS r | MQV r/w |
|
4751
|
-
DCR r | IDML r | MRC r |
|
4752
|
-
DFONT r | IIQ r/w | MRW r/w |
|
4753
|
-
DIVX r | IND r/w | MXF r |
|
4754
|
-
DJVU r | INSP r/w | NEF r/w |
|
4755
|
-
DLL r | INSV r |
|
4756
|
-
DNG r/w | INX r |
|
4757
|
-
DOC r | ISO r |
|
4724
|
+
360 r/w | DOCX r | ITC r | NUMBERS r | RAW r/w
|
4725
|
+
3FR r | DPX r | J2C r | NXD r | RIFF r
|
4726
|
+
3G2 r/w | DR4 r/w/c | JNG r/w | O r | RSRC r
|
4727
|
+
3GP r/w | DSS r | JP2 r/w | ODP r | RTF r
|
4728
|
+
7Z r | DV r | JPEG r/w | ODS r | RW2 r/w
|
4729
|
+
A r | DVB r/w | JSON r | ODT r | RWL r/w
|
4730
|
+
AA r | DVR-MS r | JXL r/w | OFR r | RWZ r
|
4731
|
+
AAC r | DYLIB r | K25 r | OGG r | RM r
|
4732
|
+
AAE r | EIP r | KDC r | OGV r | SEQ r
|
4733
|
+
AAX r/w | EPS r/w | KEY r | ONP r | SKETCH r
|
4734
|
+
ACR r | EPUB r | LA r | OPUS r | SO r
|
4735
|
+
AFM r | ERF r/w | LFP r | ORF r/w | SR2 r/w
|
4736
|
+
AI r/w | EXE r | LIF r | ORI r/w | SRF r
|
4737
|
+
AIFF r | EXIF r/w/c | LNK r | OTF r | SRW r/w
|
4738
|
+
APE r | EXR r | LRV r/w | PAC r | SVG r
|
4739
|
+
ARQ r/w | EXV r/w/c | M2TS r | PAGES r | SWF r
|
4740
|
+
ARW r/w | F4A/V r/w | M4A/V r/w | PBM r/w | THM r/w
|
4741
|
+
ASF r | FFF r/w | MACOS r | PCD r | TIFF r/w
|
4742
|
+
AVI r | FITS r | MAX r | PCX r | TORRENT r
|
4743
|
+
AVIF r/w | FLA r | MEF r/w | PDB r | TTC r
|
4744
|
+
AZW r | FLAC r | MIE r/w/c | PDF r/w | TTF r
|
4745
|
+
BMP r | FLIF r/w | MIFF r | PEF r/w | TXT r
|
4746
|
+
BPG r | FLV r | MKA r | PFA r | VCF r
|
4747
|
+
BTF r | FPF r | MKS r | PFB r | VNT r
|
4748
|
+
C2PA r | FPX r | MKV r | PFM r | VRD r/w/c
|
4749
|
+
CHM r | GIF r/w | MNG r/w | PGF r | VSD r
|
4750
|
+
COS r | GLV r/w | MOBI r | PGM r/w | WAV r
|
4751
|
+
CR2 r/w | GPR r/w | MODD r | PLIST r | WDP r/w
|
4752
|
+
CR3 r/w | GZ r | MOI r | PICT r | WEBP r/w
|
4753
|
+
CRM r/w | HDP r/w | MOS r/w | PMP r | WEBM r
|
4754
|
+
CRW r/w | HDR r | MOV r/w | PNG r/w | WMA r
|
4755
|
+
CS1 r/w | HEIC r/w | MP3 r | PPM r/w | WMV r
|
4756
|
+
CSV r | HEIF r/w | MP4 r/w | PPT r | WPG r
|
4757
|
+
CUR r | HTML r | MPC r | PPTX r | WTV r
|
4758
|
+
CZI r | ICC r/w/c | MPG r | PS r/w | WV r
|
4759
|
+
DCM r | ICO r | MPO r/w | PSB r/w | X3F r/w
|
4760
|
+
DCP r/w | ICS r | MQV r/w | PSD r/w | XCF r
|
4761
|
+
DCR r | IDML r | MRC r | PSP r | XISF r
|
4762
|
+
DFONT r | IIQ r/w | MRW r/w | QTIF r/w | XLS r
|
4763
|
+
DIVX r | IND r/w | MXF r | R3D r | XLSX r
|
4764
|
+
DJVU r | INSP r/w | NEF r/w | RA r | XMP r/w/c
|
4765
|
+
DLL r | INSV r | NKA r | RAF r/w | ZIP r
|
4766
|
+
DNG r/w | INX r | NKSC r/w | RAM r |
|
4767
|
+
DOC r | ISO r | NRW r/w | RAR r |
|
4758
4768
|
|
4759
4769
|
Meta Information
|
4760
4770
|
----------------------+----------------------+---------------------
|
@@ -5642,7 +5652,7 @@ it from subsequent text (and must be used if subsequent text begins with an
|
|
5642
5652
|
alphanumeric character, hyphen, underline, colon or number sign). Use C<$$>
|
5643
5653
|
to represent a C<$> symbol, and C<$/> for a newline. When the string
|
5644
5654
|
argument is used (ie. I<STR>), a newline is added to the end of the string
|
5645
|
-
unless B<-p-> is specified.
|
5655
|
+
unless B<-p-> is specified or the B<-b> option is used.
|
5646
5656
|
|
5647
5657
|
Multiple B<-p> options may be used. Lines beginning with C<#[HEAD]> and
|
5648
5658
|
C<#[TAIL]> are output before the first processed file and after the last
|
@@ -5668,7 +5678,7 @@ with this command:
|
|
5668
5678
|
|
5669
5679
|
produces output like this:
|
5670
5680
|
|
5671
|
-
-- Generated by ExifTool 12.
|
5681
|
+
-- Generated by ExifTool 12.85 --
|
5672
5682
|
File: a.jpg - 2003:10:31 15:44:19
|
5673
5683
|
(f/5.6, 1/60s, ISO 100)
|
5674
5684
|
File: b.jpg - 2006:05:23 11:57:38
|
@@ -5907,7 +5917,8 @@ processed file by using %C (upper case) instead of %c. This allows a
|
|
5907
5917
|
sequential number to be added to output file names, even if the names are
|
5908
5918
|
different. For %C, a copy number of zero is not omitted as it is with %c.
|
5909
5919
|
A leading '-' causes the number to be reset at the start of each new
|
5910
|
-
directory
|
5920
|
+
directory (in the original directory structure if the files are being
|
5921
|
+
moved), and '+' has no effect. The number before the decimal place gives
|
5911
5922
|
the starting index, the number after the decimal place gives the field
|
5912
5923
|
width. The following examples show the output filenames when used with the
|
5913
5924
|
command C<exiftool rose.jpg star.jpg jet.jpg ...>:
|
@@ -6902,6 +6913,19 @@ sources. An equivalent to the above commands using this feature would be:
|
|
6902
6913
|
|
6903
6914
|
exiftool -tagsfromfile @ -keywords -api nodups a.jpg
|
6904
6915
|
|
6916
|
+
C<SetTags>
|
6917
|
+
|
6918
|
+
Used to set tags in extracted images. With no arguments, copies all tags
|
6919
|
+
from the source file to the embedded image:
|
6920
|
+
|
6921
|
+
exiftool -p '${previewimage;SetTags}' -b a.arw > preview.jpg
|
6922
|
+
|
6923
|
+
Arguments may be added to copy or set specific tags. Arguments take exactly
|
6924
|
+
the same form as those on the command line when copying or writing tags,
|
6925
|
+
but without the leading dash. For example:
|
6926
|
+
|
6927
|
+
exiftool -p '${previewimage;SetTags("comment=test","title<filename")}' ...
|
6928
|
+
|
6905
6929
|
=head1 WINDOWS UNICODE FILE NAMES
|
6906
6930
|
|
6907
6931
|
In Windows, command-line arguments are specified using the current code page
|
data/bin/fmt_files/gpx.fmt
CHANGED
@@ -11,6 +11,7 @@
|
|
11
11
|
# 2018/01/04 - PH Added IF to be sure position exists
|
12
12
|
# 2018/01/06 - PH Use DateFmt function instead of -d option
|
13
13
|
# 2019/10/24 - PH Preserve sub-seconds in GPSDateTime value
|
14
|
+
# 2024/04/11 - PH Use %f feature in GPSDateTime formatting
|
14
15
|
#
|
15
16
|
# Notes: 1) Input file(s) must contain GPSLatitude and GPSLongitude.
|
16
17
|
# 2) The -ee3 option is to extract the full track from video files.
|
@@ -32,7 +33,7 @@
|
|
32
33
|
#[IF] $gpslatitude $gpslongitude
|
33
34
|
#[BODY]<trkpt lat="$gpslatitude#" lon="$gpslongitude#">
|
34
35
|
#[BODY] <ele>$gpsaltitude#</ele>
|
35
|
-
#[BODY] <time>${gpsdatetime#;
|
36
|
+
#[BODY] <time>${gpsdatetime#;DateFmt("%Y-%m-%dT%H:%M:%S%fZ")}</time>
|
36
37
|
#[BODY]</trkpt>
|
37
38
|
#[TAIL]</trkseg>
|
38
39
|
#[TAIL]</trk>
|
data/bin/fmt_files/gpx_wpt.fmt
CHANGED
@@ -12,6 +12,7 @@
|
|
12
12
|
# 2018/01/04 - PH Added IF to be sure position exists
|
13
13
|
# 2018/01/06 - PH Use DateFmt function instead of -d option
|
14
14
|
# 2019/10/24 - PH Preserve sub-seconds in GPSDateTime value
|
15
|
+
# 2024/04/11 - PH Use %f feature in GPSDateTime formatting
|
15
16
|
#
|
16
17
|
# Notes: 1) Input file(s) must contain GPSLatitude and GPSLongitude.
|
17
18
|
# 2) The -ee3 option is to extract the full track from video files.
|
@@ -30,7 +31,7 @@
|
|
30
31
|
#[IF] $gpslatitude $gpslongitude
|
31
32
|
#[BODY]<wpt lat="$gpslatitude#" lon="$gpslongitude#">
|
32
33
|
#[BODY] <ele>$gpsaltitude#</ele>
|
33
|
-
#[BODY] <time>${gpsdatetime#;
|
34
|
+
#[BODY] <time>${gpsdatetime#;DateFmt("%Y-%m-%dT%H:%M:%S%fZ")}</time>
|
34
35
|
#[BODY] <name>$filename</name>
|
35
36
|
#[BODY] <link href="$directory/$filename"/>
|
36
37
|
#[BODY] <sym>Scenic Area</sym>
|
@@ -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.
|
19
|
+
$VERSION = '1.12';
|
20
20
|
|
21
21
|
sub ConvertPLIST($$);
|
22
22
|
|
@@ -128,6 +128,8 @@ sub ConvertPLIST($$);
|
|
128
128
|
1 => 'ProRAW',
|
129
129
|
2 => 'Portrait',
|
130
130
|
10 => 'Photo',
|
131
|
+
11 => 'Manual Focus', #forum16044
|
132
|
+
12 => 'Scene', #forum16044
|
131
133
|
},
|
132
134
|
},
|
133
135
|
0x0015 => { # (ImageGroupIdentifier, ref 2)
|
@@ -154,12 +156,17 @@ sub ConvertPLIST($$);
|
|
154
156
|
},
|
155
157
|
# 0x001b - (PhotosRenderEffect, ref 2)
|
156
158
|
# 0x001c - (BracketedCaptureSequenceNumber, ref 2)
|
159
|
+
# 0x001c - Flash, 2="On" (ref PH)
|
157
160
|
0x001d => { #2
|
158
161
|
Name => 'LuminanceNoiseAmplitude',
|
159
162
|
Writable => 'rational64s',
|
160
163
|
},
|
161
164
|
# 0x001e - (OriginatingAppID, ref 2)
|
162
|
-
|
165
|
+
0x001f => {
|
166
|
+
Name => 'PhotosAppFeatureFlags', #2
|
167
|
+
Notes => 'set if person or pet detected in image', #PH
|
168
|
+
Writable => 'int32s',
|
169
|
+
},
|
163
170
|
0x0020 => { # (ImageCaptureRequestIdentifier, ref 2)
|
164
171
|
Name => 'ImageCaptureRequestID',
|
165
172
|
Writable => 'string',
|
@@ -170,6 +177,17 @@ sub ConvertPLIST($$);
|
|
170
177
|
Writable => 'rational64s',
|
171
178
|
},
|
172
179
|
# 0x0022 - (ARKitPhoto, ref 2)
|
180
|
+
0x0023 => {
|
181
|
+
Name => 'AFPerformance', #2
|
182
|
+
Writable => 'int32s',
|
183
|
+
Count => 2,
|
184
|
+
Notes => q{
|
185
|
+
first number maybe related to focus distance, last number maybe related to
|
186
|
+
focus accuracy
|
187
|
+
},
|
188
|
+
PrintConv => 'my @a=split " ",$val; sprintf("%d %d %d",$a[0],$a[1]>>28,$a[1]&0xfffffff)',
|
189
|
+
PrintConvInv => 'my @a=split " ",$val; sprintf("%d %d",$a[0],($a[1]<<28)+$a[2])',
|
190
|
+
},
|
173
191
|
# 0x0023 - int32s[2] (AFPerformance, ref 2)
|
174
192
|
# 0x0024 - (AFExternalOffset, ref 2)
|
175
193
|
0x0025 => { # (StillImageSceneFlags, ref 2)
|
@@ -196,7 +214,21 @@ sub ConvertPLIST($$);
|
|
196
214
|
},
|
197
215
|
# 0x002C - (SpatialOverCaptureImageType, ref 2)
|
198
216
|
# 0x002D - (CCT, ref 2)
|
217
|
+
0x002d => { #PH
|
218
|
+
Name => 'ColorTemperature',
|
219
|
+
Writable => 'int32s',
|
220
|
+
},
|
199
221
|
# 0x002E - (ApsMode, ref 2)
|
222
|
+
0x002e => { #PH
|
223
|
+
Name => 'CameraType',
|
224
|
+
Writable => 'int32s',
|
225
|
+
PrintConv => {
|
226
|
+
0 => 'Back Wide Angle',
|
227
|
+
1 => 'Back Normal',
|
228
|
+
6 => 'Front',
|
229
|
+
},
|
230
|
+
},
|
231
|
+
# 0x002e - set to 0 for 0.5x (crop?) (ref PH)
|
200
232
|
0x002F => { #2
|
201
233
|
Name => 'FocusPosition',
|
202
234
|
Writable => 'int32s',
|
@@ -209,7 +241,9 @@ sub ConvertPLIST($$);
|
|
209
241
|
# 0x0032 - (IntelligentDistortionCorrection, ref 2)
|
210
242
|
# 0x0033 - (NRFStatus, ref 2)
|
211
243
|
# 0x0034 - (NRFInputBracketCount, ref 2)
|
244
|
+
# 0x0034 - 1 for flash on, otherwise doesn't exist (ref PH)
|
212
245
|
# 0x0035 - (NRFRegisteredBracketCount, ref 2)
|
246
|
+
# 0x0035 - 0 for flash on, otherwise doesn't exist (ref PH)
|
213
247
|
# 0x0036 - (LuxLevel, ref 2)
|
214
248
|
# 0x0037 - (LastFocusingMethod, ref 2)
|
215
249
|
0x0038 => { # (TimeOfFlightAssistedAutoFocusEstimatorMeasuredDepth, ref 2)
|
@@ -219,8 +253,10 @@ sub ConvertPLIST($$);
|
|
219
253
|
},
|
220
254
|
# 0x0039 - (TimeOfFlightAssistedAutoFocusEstimatorROIType, ref 2)
|
221
255
|
# 0x003A - (NRFSRLStatus, ref 2)
|
256
|
+
# 0x003a - non-zero if a person was in the image? (ref PH)
|
222
257
|
# 0x003B - (SystemPressureLevel, ref 2)
|
223
258
|
# 0x003C - (CameraControlsStatisticsMaster, ref 2)
|
259
|
+
# 0x003c - 4=rear cam, 1=front cam? (ref PH)
|
224
260
|
0x003D => { # (TimeOfFlightAssistedAutoFocusEstimatorSensorConfidence, ref 2)
|
225
261
|
Name => 'AFConfidence',
|
226
262
|
Writable => 'int32s',
|
@@ -237,6 +273,7 @@ sub ConvertPLIST($$);
|
|
237
273
|
},
|
238
274
|
0x0040 => { #2
|
239
275
|
Name => 'SemanticStyle',
|
276
|
+
Notes => '_1=Tone, _2=Warm, _3=1.Std,2.Vibrant,3.Rich Contrast,4.Warm,5.Cool', #PH
|
240
277
|
ValueConv => \&ConvertPLIST,
|
241
278
|
},
|
242
279
|
0x0041 => { # (SemanticStyleKey_RenderingVersion, ref 2)
|
@@ -249,20 +286,28 @@ sub ConvertPLIST($$);
|
|
249
286
|
},
|
250
287
|
# 0x0043 - (SemanticStyleKey_ToneBias, ref 2)
|
251
288
|
# 0x0044 - (SemanticStyleKey_WarmthBias, ref 2)
|
252
|
-
0x0045
|
253
|
-
Name => 'FrontFacingCamera',
|
254
|
-
Writable => 'int32s',
|
255
|
-
PrintConv => { 0 => 'No', 1 => 'Yes' }, #PH (NC)
|
256
|
-
},
|
289
|
+
# 0x0045 - (FrontFacing, ref 2) (not for iPhone15, ref PH)
|
257
290
|
# 0x0046 - (TimeOfFlightAssistedAutoFocusEstimatorContainsBlindSpot, ref 2)
|
258
291
|
# 0x0047 - (LeaderFollowerAutoFocusLeaderDepth, ref 2)
|
259
292
|
# 0x0048 - (LeaderFollowerAutoFocusLeaderFocusMethod, ref 2)
|
260
293
|
# 0x0049 - (LeaderFollowerAutoFocusLeaderConfidence, ref 2)
|
261
294
|
# 0x004A - (LeaderFollowerAutoFocusLeaderROIType, ref 2)
|
295
|
+
# 0x004a - 2=back normal, 4=back wide angle, 5=front (ref PH)
|
262
296
|
# 0x004B - (ZeroShutterLagFailureReason, ref 2)
|
263
297
|
# 0x004C - (TimeOfFlightAssistedAutoFocusEstimatorMSPMeasuredDepth, ref 2)
|
264
298
|
# 0x004D - (TimeOfFlightAssistedAutoFocusEstimatorMSPSensorConfidence, ref 2)
|
265
299
|
# 0x004E - (Camera, ref 2)
|
300
|
+
0x004e => {
|
301
|
+
Name => 'Apple_0x004e',
|
302
|
+
Unknown => 1,
|
303
|
+
# first number is 0 for front cam, 1 for either back cam (ref PH)
|
304
|
+
ValueConv => \&ConvertPLIST,
|
305
|
+
},
|
306
|
+
0x004f => {
|
307
|
+
Name => 'Apple_0x004f',
|
308
|
+
Unknown => 1,
|
309
|
+
ValueConv => \&ConvertPLIST,
|
310
|
+
}
|
266
311
|
);
|
267
312
|
|
268
313
|
# PLIST-format CMTime structure (ref PH)
|
@@ -35,7 +35,7 @@ use Image::ExifTool::Sony;
|
|
35
35
|
use Image::ExifTool::Validate;
|
36
36
|
use Image::ExifTool::MacOS;
|
37
37
|
|
38
|
-
$VERSION = '3.
|
38
|
+
$VERSION = '3.56';
|
39
39
|
@ISA = qw(Exporter);
|
40
40
|
|
41
41
|
sub NumbersFirst($$);
|
@@ -672,7 +672,10 @@ Camero.
|
|
672
672
|
|
673
673
|
Use the API L<PrintCSV|../ExifTool.html#PrintCSV> option to output all timed
|
674
674
|
PDR data in CSV format at greatly increased speed and with much lower memory
|
675
|
-
usage.
|
675
|
+
usage. This option prints the numerical values for each channel in CSV
|
676
|
+
format, suitable for import into RaceRender. In this output, the gear
|
677
|
+
numbers for Neutral and Reverse are changed to -1 and -100 respectively for
|
678
|
+
compatibility with RaceRender.
|
676
679
|
},
|
677
680
|
PodTrailer => q{
|
678
681
|
~head1 NOTES
|
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
|
|
88
88
|
sub ProcessExifInfo($$$);
|
89
89
|
sub SwapWords($);
|
90
90
|
|
91
|
-
$VERSION = '4.
|
91
|
+
$VERSION = '4.75';
|
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)
|
@@ -2590,6 +2590,13 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
|
|
2590
2590
|
},
|
2591
2591
|
# 47 - related to aspect ratio: 100=4:3,70=1:1/16:9,90=3:2,60=4:5 (PH G12)
|
2592
2592
|
# (roughly image area in percent - 4:3=100%,1:1/16:9=75%,3:2=89%,4:5=60%)
|
2593
|
+
51 => { #forum16036 (EOS R models)
|
2594
|
+
Name => 'Clarity',
|
2595
|
+
PrintConv => {
|
2596
|
+
OTHER => sub { shift },
|
2597
|
+
0x7fff => 'n/a',
|
2598
|
+
},
|
2599
|
+
},
|
2593
2600
|
);
|
2594
2601
|
|
2595
2602
|
# focal length information (MakerNotes tag 0x02)
|
@@ -7031,7 +7038,7 @@ my %ciMaxFocal = (
|
|
7031
7038
|
},
|
7032
7039
|
},
|
7033
7040
|
2 => { #12
|
7034
|
-
Name => 'Sharpness',
|
7041
|
+
Name => 'Sharpness', # (unsharp mask strength for the EOS R5)
|
7035
7042
|
Notes => 'all models except the 20D and 350D',
|
7036
7043
|
Condition => '$$self{Model} !~ /\b(20D|350D|REBEL XT|Kiss Digital N)\b/',
|
7037
7044
|
Priority => 0, # (maybe not as reliable as other sharpness values)
|
@@ -7077,6 +7084,8 @@ my %ciMaxFocal = (
|
|
7077
7084
|
Name => 'WBShiftGM',
|
7078
7085
|
Notes => 'positive is a shift toward green',
|
7079
7086
|
},
|
7087
|
+
14 => 'UnsharpMaskFineness', #forum16036
|
7088
|
+
15 => 'UnsharpMaskThreshold', #forum16036
|
7080
7089
|
);
|
7081
7090
|
|
7082
7091
|
# Color balance information (MakerNotes tag 0xa9) (ref PH)
|
@@ -23,7 +23,7 @@ use vars qw($VERSION);
|
|
23
23
|
use Image::ExifTool qw(:DataAccess :Utils);
|
24
24
|
use Image::ExifTool::Canon;
|
25
25
|
|
26
|
-
$VERSION = '1.
|
26
|
+
$VERSION = '1.41';
|
27
27
|
|
28
28
|
sub ProcessCanonVRD($$;$);
|
29
29
|
sub WriteCanonVRD($$;$);
|
@@ -1020,6 +1020,18 @@ my $blankFooter = "CANON OPTIONAL DATA\0" . ("\0" x 42) . "\xff\xd9";
|
|
1020
1020
|
# 0x10018 - fmt=8: 0
|
1021
1021
|
# 0x10020 - fmt=2: ''
|
1022
1022
|
0x10021 => 'CustomPictureStyle', # (string)
|
1023
|
+
0x10100 => { #forum15965
|
1024
|
+
Name => 'Rating',
|
1025
|
+
PrintConv => {
|
1026
|
+
0 => 'Unrated',
|
1027
|
+
1 => 1,
|
1028
|
+
2 => 2,
|
1029
|
+
3 => 3,
|
1030
|
+
4 => 4,
|
1031
|
+
5 => 5,
|
1032
|
+
4294967295 => 'Rejected',
|
1033
|
+
},
|
1034
|
+
},
|
1023
1035
|
0x10101 => {
|
1024
1036
|
Name => 'CheckMark',
|
1025
1037
|
PrintConv => {
|
@@ -1427,15 +1439,16 @@ my $blankFooter = "CANON OPTIONAL DATA\0" . ("\0" x 42) . "\xff\xd9";
|
|
1427
1439
|
4 => 'CropY',
|
1428
1440
|
5 => 'CropWidth',
|
1429
1441
|
6 => 'CropHeight',
|
1442
|
+
7 => 'CropRotation',
|
1430
1443
|
8 => {
|
1431
|
-
Name => '
|
1444
|
+
Name => 'CropAngle',
|
1432
1445
|
Format => 'double',
|
1433
1446
|
PrintConv => 'sprintf("%.7g",$val)',
|
1434
1447
|
PrintConvInv => '$val',
|
1435
1448
|
},
|
1436
|
-
|
1437
|
-
|
1438
|
-
#
|
1449
|
+
10 => 'CropOriginalWidth',
|
1450
|
+
11 => 'CropOriginalHeight',
|
1451
|
+
# 12 double - value: 100
|
1439
1452
|
);
|
1440
1453
|
|
1441
1454
|
# DR4 Stamp Tool tags (ref PH)
|
@@ -19,6 +19,7 @@ use Image::ExifTool::GPS;
|
|
19
19
|
$VERSION = '1.09';
|
20
20
|
|
21
21
|
sub ProcessDJIInfo($$$);
|
22
|
+
sub Process_djmd($$$);
|
22
23
|
|
23
24
|
my %convFloat2 = (
|
24
25
|
PrintConv => 'sprintf("%+.2f", $val)',
|
@@ -186,6 +187,34 @@ my %convFloat2 = (
|
|
186
187
|
},
|
187
188
|
);
|
188
189
|
|
190
|
+
# TODO - eventually add ability to decode this?
|
191
|
+
%Image::ExifTool::DJI::djmd = (
|
192
|
+
PROCESS_PROC => \&Process_djmd,
|
193
|
+
);
|
194
|
+
|
195
|
+
#------------------------------------------------------------------------------
|
196
|
+
# Process DJI djmd timed data from Action4 videos (ref PH)
|
197
|
+
# Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
|
198
|
+
# Returns: 1 on success
|
199
|
+
# TODO: work in progress
|
200
|
+
sub Process_djmd($$$)
|
201
|
+
{
|
202
|
+
my ($et, $dirInfo, $tagTbl) = @_;
|
203
|
+
my $dataPt = $$dirInfo{DataPt};
|
204
|
+
my ($pos, $bit, $val) = (6, 0, 0);
|
205
|
+
for (;;) {
|
206
|
+
my $v = Get8u($dataPt, $pos);
|
207
|
+
$val += ($v & 0x7f) << $bit;
|
208
|
+
last unless $v & 0x80;
|
209
|
+
++$pos;
|
210
|
+
$bit += 7;
|
211
|
+
}
|
212
|
+
$pos += 49;
|
213
|
+
my @a = unpack("x${pos}fxfxfxfx3fxfxf", $$dataPt);
|
214
|
+
print "$val @a\n";
|
215
|
+
return 1;
|
216
|
+
}
|
217
|
+
|
189
218
|
#------------------------------------------------------------------------------
|
190
219
|
# Process DJI info (ref PH)
|
191
220
|
# Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
|
@@ -15,7 +15,7 @@ use strict;
|
|
15
15
|
use vars qw($VERSION);
|
16
16
|
use Image::ExifTool qw(:DataAccess :Utils);
|
17
17
|
|
18
|
-
$VERSION = '1.
|
18
|
+
$VERSION = '1.07';
|
19
19
|
|
20
20
|
# DPX tags
|
21
21
|
%Image::ExifTool::DPX::Main = (
|
@@ -97,7 +97,7 @@ $VERSION = '1.06';
|
|
97
97
|
3 => 'Logarithmic',
|
98
98
|
4 => 'Unspecified video',
|
99
99
|
5 => 'SMPTE 274M',
|
100
|
-
6 => 'ITU-R
|
100
|
+
6 => 'ITU-R 709-4',
|
101
101
|
7 => 'ITU-R 601-5 system B or G (625)',
|
102
102
|
8 => 'ITU-R 601-5 system M (525)',
|
103
103
|
9 => 'Composite video (NTSC)',
|
@@ -124,7 +124,7 @@ $VERSION = '1.06';
|
|
124
124
|
1 => 'Printing density',
|
125
125
|
4 => 'Unspecified video',
|
126
126
|
5 => 'SMPTE 274M',
|
127
|
-
6 => 'ITU-R
|
127
|
+
6 => 'ITU-R 709-4',
|
128
128
|
7 => 'ITU-R 601-5 system B or G (625)',
|
129
129
|
8 => 'ITU-R 601-5 system M (525)',
|
130
130
|
9 => 'Composite video (NTSC)',
|
@@ -57,7 +57,7 @@ use vars qw($VERSION $AUTOLOAD @formatSize @formatName %formatNumber %intFormat
|
|
57
57
|
use Image::ExifTool qw(:DataAccess :Utils);
|
58
58
|
use Image::ExifTool::MakerNotes;
|
59
59
|
|
60
|
-
$VERSION = '4.
|
60
|
+
$VERSION = '4.52';
|
61
61
|
|
62
62
|
sub ProcessExif($$$);
|
63
63
|
sub WriteExif($$$);
|
@@ -4342,7 +4342,7 @@ my %opcodeInfo = (
|
|
4342
4342
|
Count => -1,
|
4343
4343
|
Protected => 1,
|
4344
4344
|
},
|
4345
|
-
|
4345
|
+
0xcd3f => { # DNG 1.6
|
4346
4346
|
Name => 'RGBTables',
|
4347
4347
|
Writable => 'undef',
|
4348
4348
|
WriteGroup => 'IFD0',
|
@@ -4404,6 +4404,23 @@ my %opcodeInfo = (
|
|
4404
4404
|
WriteGroup => 'IFD0',
|
4405
4405
|
Protected => 1,
|
4406
4406
|
},
|
4407
|
+
0xcd49 => { # DNG 1.7.1
|
4408
|
+
Name => 'JXLDistance',
|
4409
|
+
Writable => 'float',
|
4410
|
+
WriteGroup => 'IFD0',
|
4411
|
+
},
|
4412
|
+
0xcd4a => { # DNG 1.7.1
|
4413
|
+
Name => 'JXLEffort',
|
4414
|
+
Notes => 'values range from 1=low to 9=high',
|
4415
|
+
Writable => 'int32u',
|
4416
|
+
WriteGroup => 'IFD0',
|
4417
|
+
},
|
4418
|
+
0xcd4b => { # DNG 1.7.1
|
4419
|
+
Name => 'JXLDecodeSpeed',
|
4420
|
+
Notes => 'values range from 1=slow to 4=fast',
|
4421
|
+
Writable => 'int32u',
|
4422
|
+
WriteGroup => 'IFD0',
|
4423
|
+
},
|
4407
4424
|
0xea1c => { #13
|
4408
4425
|
Name => 'Padding',
|
4409
4426
|
Binary => 1,
|