exiftool-vendored.exe 12.69.0 → 12.72.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/exiftool_files/Changes +78 -12
- package/bin/exiftool_files/README +10 -10
- package/bin/exiftool_files/exiftool.pl +32 -27
- package/bin/exiftool_files/lib/Image/ExifTool/AAC.pm +175 -0
- package/bin/exiftool_files/lib/Image/ExifTool/BuildTagLookup.pm +2 -1
- package/bin/exiftool_files/lib/Image/ExifTool/CBOR.pm +18 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +82 -20
- package/bin/exiftool_files/lib/Image/ExifTool/DJI.pm +3 -2
- package/bin/exiftool_files/lib/Image/ExifTool/EXE.pm +54 -6
- package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +111 -11
- package/bin/exiftool_files/lib/Image/ExifTool/FujiFilm.pm +145 -20
- package/bin/exiftool_files/lib/Image/ExifTool/GIF.pm +5 -1
- package/bin/exiftool_files/lib/Image/ExifTool/GoPro.pm +16 -1
- package/bin/exiftool_files/lib/Image/ExifTool/ID3.pm +76 -10
- package/bin/exiftool_files/lib/Image/ExifTool/InDesign.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/JPEG.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/JSON.pm +4 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Jpeg2000.pm +30 -15
- package/bin/exiftool_files/lib/Image/ExifTool/M2TS.pm +21 -16
- package/bin/exiftool_files/lib/Image/ExifTool/MakerNotes.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +203 -102
- package/bin/exiftool_files/lib/Image/ExifTool/Olympus.pm +7 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PNG.pm +8 -13
- package/bin/exiftool_files/lib/Image/ExifTool/Panasonic.pm +10 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Pentax.pm +15 -6
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +59 -13
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +59 -11
- package/bin/exiftool_files/lib/Image/ExifTool/README +7 -2
- package/bin/exiftool_files/lib/Image/ExifTool/RIFF.pm +53 -9
- package/bin/exiftool_files/lib/Image/ExifTool/Ricoh.pm +109 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Samsung.pm +3 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +177 -37
- package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +6961 -6856
- package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +580 -344
- package/bin/exiftool_files/lib/Image/ExifTool/Text.pm +4 -5
- package/bin/exiftool_files/lib/Image/ExifTool/Validate.pm +6 -5
- package/bin/exiftool_files/lib/Image/ExifTool/WriteExif.pl +19 -4
- package/bin/exiftool_files/lib/Image/ExifTool/WriteQuickTime.pl +1 -0
- package/bin/exiftool_files/lib/Image/ExifTool/WriteRIFF.pl +9 -3
- package/bin/exiftool_files/lib/Image/ExifTool/Writer.pl +102 -50
- package/bin/exiftool_files/lib/Image/ExifTool.pm +74 -36
- package/bin/exiftool_files/lib/Image/ExifTool.pod +28 -17
- package/package.json +5 -4
|
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
|
|
|
88
88
|
sub ProcessExifInfo($$$);
|
|
89
89
|
sub SwapWords($);
|
|
90
90
|
|
|
91
|
-
$VERSION = '4.
|
|
91
|
+
$VERSION = '4.72';
|
|
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)
|
|
@@ -611,22 +611,24 @@ $VERSION = '4.70';
|
|
|
611
611
|
'61182.35' => 'Canon RF 600mm F4L IS USM', #GiaZopatti
|
|
612
612
|
'61182.36' => 'Canon RF 600mm F4L IS USM + RF1.4x', #42
|
|
613
613
|
'61182.37' => 'Canon RF 600mm F4L IS USM + RF2x', #42
|
|
614
|
-
'61182.38' => 'Canon RF
|
|
615
|
-
'61182.39' => 'Canon RF 800mm F5.6L IS USM', #42
|
|
616
|
-
'61182.40' => 'Canon RF 800mm F5.6L IS USM +
|
|
617
|
-
'61182.41' => 'Canon RF
|
|
618
|
-
'61182.42' => 'Canon RF 1200mm F8L IS USM', #42
|
|
619
|
-
'61182.43' => 'Canon RF 1200mm F8L IS USM +
|
|
620
|
-
'61182.44' => 'Canon RF
|
|
621
|
-
'61182.45' => 'Canon RF
|
|
622
|
-
'61182.46' => 'Canon RF
|
|
623
|
-
'61182.47' => 'Canon RF
|
|
624
|
-
'61182.48' => 'Canon RF
|
|
625
|
-
'61182.49' => 'Canon RF 100-300mm F2.8L IS USM
|
|
626
|
-
'61182.50' => 'Canon RF 100-300mm F2.8L IS USM +
|
|
627
|
-
'61182.51' => 'Canon RF
|
|
628
|
-
|
|
629
|
-
'61182.
|
|
614
|
+
'61182.38' => 'Canon RF 800mm F5.6L IS USM', #42
|
|
615
|
+
'61182.39' => 'Canon RF 800mm F5.6L IS USM + RF1.4x', #42
|
|
616
|
+
'61182.40' => 'Canon RF 800mm F5.6L IS USM + RF2x', #42
|
|
617
|
+
'61182.41' => 'Canon RF 1200mm F8L IS USM', #42
|
|
618
|
+
'61182.42' => 'Canon RF 1200mm F8L IS USM + RF1.4x', #42
|
|
619
|
+
'61182.43' => 'Canon RF 1200mm F8L IS USM + RF2x', #42
|
|
620
|
+
'61182.44' => 'Canon RF 5.2mm F2.8L Dual Fisheye 3D VR', #PH
|
|
621
|
+
'61182.45' => 'Canon RF 15-30mm F4.5-6.3 IS STM', #42
|
|
622
|
+
'61182.46' => 'Canon RF 135mm F1.8 L IS USM', #42
|
|
623
|
+
'61182.47' => 'Canon RF 24-50mm F4.5-6.3 IS STM', #42
|
|
624
|
+
'61182.48' => 'Canon RF-S 55-210mm F5-7.1 IS STM', #42
|
|
625
|
+
'61182.49' => 'Canon RF 100-300mm F2.8L IS USM', #42
|
|
626
|
+
'61182.50' => 'Canon RF 100-300mm F2.8L IS USM + RF1.4x', #42
|
|
627
|
+
'61182.51' => 'Canon RF 100-300mm F2.8L IS USM + RF2x', #42
|
|
628
|
+
'61182.52' => 'Canon RF 10-20mm F4 L IS STM', #42
|
|
629
|
+
'61182.53' => 'Canon RF 28mm F2.8 STM', #42
|
|
630
|
+
'61182.54' => 'Canon RF 24-105mm F2.8 L IS USM Z', #42
|
|
631
|
+
'61182.55' => 'Canon RF-S 10-18mm F4.5-6.3 IS STM', #42
|
|
630
632
|
65535 => 'n/a',
|
|
631
633
|
);
|
|
632
634
|
|
|
@@ -1395,6 +1397,11 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
|
|
|
1395
1397
|
Condition => '$$self{Model} =~ /\bEOS R6$/',
|
|
1396
1398
|
SubDirectory => { TagTable => 'Image::ExifTool::Canon::CameraInfoR6' },
|
|
1397
1399
|
},
|
|
1400
|
+
{
|
|
1401
|
+
Name => 'CanonCameraInfoG5XII',
|
|
1402
|
+
Condition => '$$self{Model} =~ /\bG5 X Mark II$/',
|
|
1403
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Canon::CameraInfoG5XII' },
|
|
1404
|
+
},
|
|
1398
1405
|
{
|
|
1399
1406
|
Name => 'CanonCameraInfoPowerShot',
|
|
1400
1407
|
# valid if format is int32u[138] or int32u[148]
|
|
@@ -4714,6 +4721,44 @@ my %ciMaxFocal = (
|
|
|
4714
4721
|
},
|
|
4715
4722
|
);
|
|
4716
4723
|
|
|
4724
|
+
# ref https://exiftool.org/forum/index.php?topic=15356.0
|
|
4725
|
+
%Image::ExifTool::Canon::CameraInfoG5XII = (
|
|
4726
|
+
%binaryDataAttrs,
|
|
4727
|
+
FIRST_ENTRY => 0,
|
|
4728
|
+
PRIORITY => 0,
|
|
4729
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
4730
|
+
NOTES => 'CameraInfo tags for the PowerShot G5 X Mark II.',
|
|
4731
|
+
0x0293 => {
|
|
4732
|
+
Name => 'ShutterCount',
|
|
4733
|
+
Format => 'int32u',
|
|
4734
|
+
Notes => 'includes electronic + mechanical shutter',
|
|
4735
|
+
# - advances by 1 for each photo file, regardless of mechanical or electronic shutter
|
|
4736
|
+
# - does not advance for regular video files
|
|
4737
|
+
# - advances for time lapse video files
|
|
4738
|
+
# - creating a new directory or resetting the counter from the menu doesn't affect this shutter count
|
|
4739
|
+
},
|
|
4740
|
+
0x0b21 => {
|
|
4741
|
+
Name => 'DirectoryIndex',
|
|
4742
|
+
Groups => { 2 => 'Image' },
|
|
4743
|
+
Format => 'int32u',
|
|
4744
|
+
},
|
|
4745
|
+
0x0b2d => {
|
|
4746
|
+
Name => 'FileIndex',
|
|
4747
|
+
Format => 'int32u',
|
|
4748
|
+
Groups => { 2 => 'Image' },
|
|
4749
|
+
Format => 'int32u',
|
|
4750
|
+
ValueConv => '$val + 1',
|
|
4751
|
+
ValueConvInv => '$val - 1',
|
|
4752
|
+
},
|
|
4753
|
+
#0x0b39 => {
|
|
4754
|
+
# Name => 'DirectoryIndex',
|
|
4755
|
+
# Groups => { 2 => 'Image' },
|
|
4756
|
+
# Format => 'int32u',
|
|
4757
|
+
# ValueConv => '$val - 1',
|
|
4758
|
+
# ValueConvInv => '$val + 1',
|
|
4759
|
+
#},
|
|
4760
|
+
);
|
|
4761
|
+
|
|
4717
4762
|
# Canon camera information for 70D (MakerNotes tag 0x0d) (ref PH)
|
|
4718
4763
|
%Image::ExifTool::Canon::CameraInfo70D = (
|
|
4719
4764
|
%binaryDataAttrs,
|
|
@@ -6898,6 +6943,7 @@ my %ciMaxFocal = (
|
|
|
6898
6943
|
298 => 'Canon RF 1200mm F8L IS USM', #42
|
|
6899
6944
|
299 => 'Canon RF 1200mm F8L IS USM + RF1.4x', #42
|
|
6900
6945
|
300 => 'Canon RF 1200mm F8L IS USM + RF2x', #42
|
|
6946
|
+
301 => 'Canon RF 5.2mm F2.8L Dual Fisheye 3D VR', #PH
|
|
6901
6947
|
302 => 'Canon RF 15-30mm F4.5-6.3 IS STM', #42
|
|
6902
6948
|
303 => 'Canon RF 135mm F1.8 L IS USM', #42
|
|
6903
6949
|
304 => 'Canon RF 24-50mm F4.5-6.3 IS STM', #42
|
|
@@ -6905,7 +6951,13 @@ my %ciMaxFocal = (
|
|
|
6905
6951
|
306 => 'Canon RF 100-300mm F2.8L IS USM', #42
|
|
6906
6952
|
307 => 'Canon RF 100-300mm F2.8L IS USM + RF1.4x', #42
|
|
6907
6953
|
308 => 'Canon RF 100-300mm F2.8L IS USM + RF2x', #42
|
|
6954
|
+
309 => 'Canon RF 200-800mm F6.3-9 IS USM', #42
|
|
6955
|
+
310 => 'Canon RF 200-800mm F6.3-9 IS USM + RF1.4x', #42
|
|
6956
|
+
311 => 'Canon RF 200-800mm F6.3-9 IS USM + RF2x', #42
|
|
6957
|
+
312 => 'Canon RF 10-20mm F4 L IS STM', #42
|
|
6908
6958
|
313 => 'Canon RF 28mm F2.8 STM', #42
|
|
6959
|
+
314 => 'Canon RF 24-105mm F2.8 L IS USM Z', #42
|
|
6960
|
+
315 => 'Canon RF-S 10-18mm F4.5-6.3 IS STM', #42
|
|
6909
6961
|
# Note: add new RF lenses to %canonLensTypes with ID 61182
|
|
6910
6962
|
},
|
|
6911
6963
|
},
|
|
@@ -7422,7 +7474,7 @@ my %ciMaxFocal = (
|
|
|
7422
7474
|
RawConv => '$$self{ColorDataVersion} = $val',
|
|
7423
7475
|
PrintConv => {
|
|
7424
7476
|
2 => '2 (1DmkIII)',
|
|
7425
|
-
3 => '3 (40D)',
|
|
7477
|
+
3 => '3 (40D)', # (doesn't record SpecularWhiteLevel, ref github#233)
|
|
7426
7478
|
4 => '4 (1DSmkIII)',
|
|
7427
7479
|
5 => '5 (450D/1000D)',
|
|
7428
7480
|
6 => '6 (50D/5DmkII)',
|
|
@@ -7732,10 +7784,15 @@ my %ciMaxFocal = (
|
|
|
7732
7784
|
SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorCalib2' }
|
|
7733
7785
|
},
|
|
7734
7786
|
0x108=> { #IB
|
|
7735
|
-
Name => 'PerChannelBlackLevel',
|
|
7787
|
+
Name => 'PerChannelBlackLevel', # (or perhaps AverageBlackLevel?, ref github#232)
|
|
7736
7788
|
Condition => '$$self{ColorDataVersion} == -3',
|
|
7737
7789
|
Format => 'int16s[4]',
|
|
7738
7790
|
},
|
|
7791
|
+
0x296 => { #github#232
|
|
7792
|
+
Name => 'SpecularWhiteLevel',
|
|
7793
|
+
Condition => '$$self{ColorDataVersion} == -3',
|
|
7794
|
+
Format => 'int16u',
|
|
7795
|
+
},
|
|
7739
7796
|
0x14d=> { #IB
|
|
7740
7797
|
Name => 'PerChannelBlackLevel',
|
|
7741
7798
|
Condition => '$$self{ColorDataVersion} == -4',
|
|
@@ -8650,7 +8707,7 @@ my %ciMaxFocal = (
|
|
|
8650
8707
|
},
|
|
8651
8708
|
);
|
|
8652
8709
|
|
|
8653
|
-
# Auto Lighting
|
|
8710
|
+
# Auto Lighting Optimizer information (MakerNotes tag 0x4018) (ref PH)
|
|
8654
8711
|
%Image::ExifTool::Canon::LightingOpt = (
|
|
8655
8712
|
%binaryDataAttrs,
|
|
8656
8713
|
FORMAT => 'int32s',
|
|
@@ -8702,6 +8759,10 @@ my %ciMaxFocal = (
|
|
|
8702
8759
|
2 => 'High',
|
|
8703
8760
|
},
|
|
8704
8761
|
},
|
|
8762
|
+
11 => { #forum15445
|
|
8763
|
+
Name => 'DualPixelRaw',
|
|
8764
|
+
PrintConv => \%offOn,
|
|
8765
|
+
},
|
|
8705
8766
|
);
|
|
8706
8767
|
|
|
8707
8768
|
# Lens information (MakerNotes tag 0x4019) (ref 20)
|
|
@@ -9107,6 +9168,7 @@ my %filterConv = (
|
|
|
9107
9168
|
MakerNotes => 1,
|
|
9108
9169
|
SubDirectory => {
|
|
9109
9170
|
TagTable => 'Image::ExifTool::Canon::Main',
|
|
9171
|
+
DirName => 'MakerNotes', # (necessary for mechanism that prevents these from being deleted)
|
|
9110
9172
|
ProcessProc => \&ProcessCMT3,
|
|
9111
9173
|
WriteProc => \&Image::ExifTool::WriteTIFF,
|
|
9112
9174
|
},
|
|
@@ -16,7 +16,7 @@ use Image::ExifTool::Exif;
|
|
|
16
16
|
use Image::ExifTool::XMP;
|
|
17
17
|
use Image::ExifTool::GPS;
|
|
18
18
|
|
|
19
|
-
$VERSION = '1.
|
|
19
|
+
$VERSION = '1.09';
|
|
20
20
|
|
|
21
21
|
sub ProcessDJIInfo($$$);
|
|
22
22
|
|
|
@@ -143,9 +143,10 @@ my %convFloat2 = (
|
|
|
143
143
|
PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
|
|
144
144
|
PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1, "lat")',
|
|
145
145
|
},
|
|
146
|
-
GpsLongtitude => { # (
|
|
146
|
+
GpsLongtitude => { # [sic] (misspelt in DJI original file)
|
|
147
147
|
Name => 'GPSLongtitude',
|
|
148
148
|
Writable => 'real',
|
|
149
|
+
Avoid => 1, # (in case someone tries to write "GPSLong*")
|
|
149
150
|
PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
|
|
150
151
|
PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1, "lon")',
|
|
151
152
|
},
|
|
@@ -21,7 +21,7 @@ use strict;
|
|
|
21
21
|
use vars qw($VERSION);
|
|
22
22
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
23
23
|
|
|
24
|
-
$VERSION = '1.
|
|
24
|
+
$VERSION = '1.19';
|
|
25
25
|
|
|
26
26
|
sub ProcessPEResources($$);
|
|
27
27
|
sub ProcessPEVersion($$);
|
|
@@ -726,6 +726,7 @@ my %languageCode = (
|
|
|
726
726
|
Name => 'CPUType',
|
|
727
727
|
Format => 'int16u',
|
|
728
728
|
# ref /usr/include/linux/elf-em.h
|
|
729
|
+
# ref https://en.wikipedia.org/wiki/Executable_and_Linkable_Format
|
|
729
730
|
PrintConv => {
|
|
730
731
|
0 => 'None',
|
|
731
732
|
1 => 'AT&T WE 32100',
|
|
@@ -736,21 +737,68 @@ my %languageCode = (
|
|
|
736
737
|
6 => 'i486',
|
|
737
738
|
7 => 'i860',
|
|
738
739
|
8 => 'MIPS R3000',
|
|
740
|
+
9 => 'IBM System/370',
|
|
739
741
|
10 => 'MIPS R4000',
|
|
740
|
-
15 => '
|
|
742
|
+
15 => 'HP PA-RISC',
|
|
741
743
|
18 => 'Sun v8plus',
|
|
744
|
+
19 => 'Intel 80960',
|
|
742
745
|
20 => 'PowerPC',
|
|
743
746
|
21 => 'PowerPC 64-bit',
|
|
744
747
|
22 => 'IBM S/390',
|
|
745
748
|
23 => 'Cell BE SPU',
|
|
749
|
+
36 => 'NEC V800',
|
|
750
|
+
37=> 'Fujitsu FR20',
|
|
751
|
+
38 => 'TRW RH-32',
|
|
752
|
+
39 => 'Motorola RCE',
|
|
753
|
+
40 => 'Arm (up to Armv7/AArch32)',
|
|
754
|
+
41 => 'Digital Alpha',
|
|
746
755
|
42 => 'SuperH',
|
|
747
756
|
43 => 'SPARC v9 64-bit',
|
|
757
|
+
44 => 'Siemens TriCore',
|
|
758
|
+
45 => 'Argonaut RISC Core',
|
|
748
759
|
46 => 'Renesas H8/300,300H,H8S',
|
|
760
|
+
47 => 'Hitachi H8/300H',
|
|
761
|
+
48 => 'Hitachi H8S',
|
|
762
|
+
49 => 'Hitachi H8/500',
|
|
749
763
|
50 => 'HP/Intel IA-64',
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
764
|
+
0x33 => 'Stanford MIPS-X',
|
|
765
|
+
0x34 => 'Motorola ColdFire',
|
|
766
|
+
0x35 => 'Motorola M68HC12',
|
|
767
|
+
0x36 => 'Fujitsu MMA Multimedia Accelerator',
|
|
768
|
+
0x37 => 'Siemens PCP',
|
|
769
|
+
0x38 => 'Sony nCPU embedded RISC processor',
|
|
770
|
+
0x39 => 'Denso NDR1 microprocessor',
|
|
771
|
+
0x3a => 'Motorola Star*Core processor',
|
|
772
|
+
0x3b => 'Toyota ME16 processor',
|
|
773
|
+
0x3c => 'STMicroelectronics ST100 processor',
|
|
774
|
+
0x3d => 'Advanced Logic Corp. TinyJ embedded processor family',
|
|
775
|
+
0x3e => 'AMD x86-64',
|
|
776
|
+
0x3f => 'Sony DSP Processor',
|
|
777
|
+
0x40 => 'Digital Equipment Corp. PDP-10',
|
|
778
|
+
0x41 => 'Digital Equipment Corp. PDP-11',
|
|
779
|
+
0x42 => 'Siemens FX66 microcontroller',
|
|
780
|
+
0x43 => 'STMicroelectronics ST9+ 8/16 bit microcontroller',
|
|
781
|
+
0x44 => 'STMicroelectronics ST7 8-bit microcontroller',
|
|
782
|
+
0x45 => 'Motorola MC68HC16 Microcontroller',
|
|
783
|
+
0x46 => 'Motorola MC68HC11 Microcontroller',
|
|
784
|
+
0x47 => 'Motorola MC68HC08 Microcontroller',
|
|
785
|
+
0x48 => 'Motorola MC68HC05 Microcontroller',
|
|
786
|
+
0x49 => 'Silicon Graphics SVx',
|
|
787
|
+
0x4a => 'STMicroelectronics ST19 8-bit microcontroller',
|
|
788
|
+
0x4b => 'Digital VAX',
|
|
789
|
+
0x4c => 'Axis Communications 32-bit embedded processor',
|
|
790
|
+
0x4d => 'Infineon Technologies 32-bit embedded processor',
|
|
791
|
+
0x4e => 'Element 14 64-bit DSP Processor',
|
|
792
|
+
0x4f => 'LSI Logic 16-bit DSP Processor',
|
|
793
|
+
0x57 => 'NEC v850',
|
|
794
|
+
0x58 => 'Renesas M32R',
|
|
795
|
+
0x8c => 'TMS320C6000 Family',
|
|
796
|
+
0xaf => 'MCST Elbrus e2k',
|
|
797
|
+
0xb7 => 'Arm 64-bits (Armv8/AArch64)',
|
|
798
|
+
0xdc => 'Zilog Z80',
|
|
799
|
+
0xf3 => 'RISC-V',
|
|
800
|
+
0xf7 => 'Berkeley Packet Filter',
|
|
801
|
+
0x101 => 'WDC 65C816',
|
|
754
802
|
0x5441 => 'Fujitsu FR-V',
|
|
755
803
|
0x9026 => 'Alpha', # (interim value)
|
|
756
804
|
0x9041 => 'm32r (old)',
|
|
@@ -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.48';
|
|
61
61
|
|
|
62
62
|
sub ProcessExif($$$);
|
|
63
63
|
sub WriteExif($$$);
|
|
@@ -1005,7 +1005,7 @@ my %opcodeInfo = (
|
|
|
1005
1005
|
},
|
|
1006
1006
|
0x14d => 'InkNames', #3
|
|
1007
1007
|
0x14e => 'NumberofInks', #3
|
|
1008
|
-
0x150 => 'DotRange',
|
|
1008
|
+
0x150 => 'DotRange', # (int8u or int16u)
|
|
1009
1009
|
0x151 => {
|
|
1010
1010
|
Name => 'TargetPrinter',
|
|
1011
1011
|
Writable => 'string',
|
|
@@ -1426,12 +1426,12 @@ my %opcodeInfo = (
|
|
|
1426
1426
|
Count => 6,
|
|
1427
1427
|
Priority => 0,
|
|
1428
1428
|
},
|
|
1429
|
-
# 0x220 - int32u: 0 (IFD0,
|
|
1430
|
-
# 0x221 - int32u: 0 (IFD0,
|
|
1431
|
-
# 0x222 - int32u: 0 (IFD0,
|
|
1432
|
-
# 0x223 - int32u: 0 (IFD0,
|
|
1433
|
-
# 0x224 - int32u: 0,1 (IFD0,
|
|
1434
|
-
# 0x225 - string: "" (IFD0,
|
|
1429
|
+
# 0x220 - int32u: 0 (IFD0, Xiaomi Redmi models)
|
|
1430
|
+
# 0x221 - int32u: 0 (IFD0, Xiaomi Redmi models)
|
|
1431
|
+
# 0x222 - int32u: 0 (IFD0, Xiaomi Redmi models)
|
|
1432
|
+
# 0x223 - int32u: 0 (IFD0, Xiaomi Redmi models)
|
|
1433
|
+
# 0x224 - int32u: 0,1 (IFD0, Xiaomi Redmi models)
|
|
1434
|
+
# 0x225 - string: "" (IFD0, Xiaomi Redmi models)
|
|
1435
1435
|
0x22f => 'StripRowCounts',
|
|
1436
1436
|
0x2bc => {
|
|
1437
1437
|
Name => 'ApplicationNotes', # (writable directory!)
|
|
@@ -1445,6 +1445,16 @@ my %opcodeInfo = (
|
|
|
1445
1445
|
TagTable => 'Image::ExifTool::XMP::Main',
|
|
1446
1446
|
},
|
|
1447
1447
|
},
|
|
1448
|
+
0x303 => { #https://learn.microsoft.com/en-us/windows/win32/gdiplus/-gdiplus-constant-property-item-descriptions
|
|
1449
|
+
Name => 'RenderingIntent',
|
|
1450
|
+
Format => 'int8u',
|
|
1451
|
+
PrintConv => {
|
|
1452
|
+
0 => 'Perceptual',
|
|
1453
|
+
1 => 'Relative Colorimetric',
|
|
1454
|
+
2 => 'Saturation',
|
|
1455
|
+
3 => 'Absolute colorimetric',
|
|
1456
|
+
},
|
|
1457
|
+
},
|
|
1448
1458
|
0x3e7 => 'USPTOMiscellaneous', #20
|
|
1449
1459
|
0x1000 => { #5
|
|
1450
1460
|
Name => 'RelatedImageFileFormat',
|
|
@@ -1492,6 +1502,75 @@ my %opcodeInfo = (
|
|
|
1492
1502
|
WriteGroup => 'IFD0',
|
|
1493
1503
|
Avoid => 1,
|
|
1494
1504
|
},
|
|
1505
|
+
# tags 0x5XXX are obscure tags defined by Microsoft:
|
|
1506
|
+
# ref https://learn.microsoft.com/en-us/previous-versions/windows/embedded/ms932271(v=msdn.10)
|
|
1507
|
+
# ref https://learn.microsoft.com/en-us/windows/win32/gdiplus/-gdiplus-constant-property-item-descriptions
|
|
1508
|
+
0x5001 => { Name => 'ResolutionXUnit', Notes => "ID's from 0x5001 to 0x5113 are obscure tags defined by Microsoft" }, # (int16u)
|
|
1509
|
+
0x5002 => 'ResolutionYUnit', # (int16u)
|
|
1510
|
+
0x5003 => 'ResolutionXLengthUnit', # (int16u)
|
|
1511
|
+
0x5004 => 'ResolutionYLengthUnit', # (int16u)
|
|
1512
|
+
0x5005 => 'PrintFlags', # (string)
|
|
1513
|
+
0x5006 => 'PrintFlagsVersion', # (int16u)
|
|
1514
|
+
0x5007 => 'PrintFlagsCrop', # (int8u)
|
|
1515
|
+
0x5008 => 'PrintFlagsBleedWidth', # (int32u)
|
|
1516
|
+
0x5009 => 'PrintFlagsBleedWidthScale', # (int16u)
|
|
1517
|
+
0x500a => 'HalftoneLPI', # (rational64u)
|
|
1518
|
+
0x500b => 'HalftoneLPIUnit', # (int16u, 1=inch, 2=cm)
|
|
1519
|
+
0x500c => 'HalftoneDegree', # (rational64u)
|
|
1520
|
+
0x500d => 'HalftoneShape', # (int16u,0=round,1=Ellipse,2=Line,3=Square,4=Cross,5=Diamond)
|
|
1521
|
+
0x500e => 'HalftoneMisc', # (int32u)
|
|
1522
|
+
0x500f => 'HalftoneScreen', # (int8u)
|
|
1523
|
+
0x5010 => 'JPEGQuality', # (int32u[N])
|
|
1524
|
+
0x5011 => { Name => 'GridSize', Binary => 1 }, # (undef)
|
|
1525
|
+
0x5012 => 'ThumbnailFormat', # (int32u,1=raw RGB,2=JPEG)
|
|
1526
|
+
0x5013 => 'ThumbnailWidth', # (int32u)
|
|
1527
|
+
0x5014 => 'ThumbnailHeight', # (int32u)
|
|
1528
|
+
0x5015 => 'ThumbnailColorDepth', # (int16u)
|
|
1529
|
+
0x5016 => 'ThumbnailPlanes', # (int16u)
|
|
1530
|
+
0x5017 => 'ThumbnailRawBytes', # (int32u)
|
|
1531
|
+
0x5018 => 'ThumbnailLength', # (int32u)
|
|
1532
|
+
0x5019 => 'ThumbnailCompressedSize', # (int32u)
|
|
1533
|
+
0x501a => { Name => 'ColorTransferFunction', Binary => 1 }, # (undef)
|
|
1534
|
+
0x501b => { Name => 'ThumbnailData', Binary => 1, Format => 'undef' }, # (int8u)
|
|
1535
|
+
0x5020 => 'ThumbnailImageWidth', # (int16u or int32u)
|
|
1536
|
+
0x5021 => 'ThumbnailImageHeight', # (int16u or int32u)
|
|
1537
|
+
0x5022 => 'ThumbnailBitsPerSample', # (int16u[N])
|
|
1538
|
+
0x5023 => 'ThumbnailCompression', # (int16u)
|
|
1539
|
+
0x5024 => 'ThumbnailPhotometricInterp', # (int16u)
|
|
1540
|
+
0x5025 => 'ThumbnailDescription', # (string)
|
|
1541
|
+
0x5026 => 'ThumbnailEquipMake', # (string)
|
|
1542
|
+
0x5027 => 'ThumbnailEquipModel', # (string)
|
|
1543
|
+
0x5028 => 'ThumbnailStripOffsets', # (int16u or int32u)
|
|
1544
|
+
0x5029 => 'ThumbnailOrientation', # (int16u)
|
|
1545
|
+
0x502a => 'ThumbnailSamplesPerPixel', # (int16u)
|
|
1546
|
+
0x502b => 'ThumbnailRowsPerStrip', # (int16u or int32u)
|
|
1547
|
+
0x502c => 'ThumbnailStripByteCounts', # (int16u or int32u)
|
|
1548
|
+
0x502d => 'ThumbnailResolutionX',
|
|
1549
|
+
0x502e => 'ThumbnailResolutionY',
|
|
1550
|
+
0x502f => 'ThumbnailPlanarConfig', # (int16u)
|
|
1551
|
+
0x5030 => 'ThumbnailResolutionUnit', # (int16u)
|
|
1552
|
+
0x5031 => 'ThumbnailTransferFunction', # (int16u[N])
|
|
1553
|
+
0x5032 => 'ThumbnailSoftware', # (string)
|
|
1554
|
+
0x5033 => { Name => 'ThumbnailDateTime', Groups => { 2 => 'Time' } }, # (string)
|
|
1555
|
+
0x5034 => 'ThumbnailArtist', # (string)
|
|
1556
|
+
0x5035 => 'ThumbnailWhitePoint', # (rational64u[2])
|
|
1557
|
+
0x5036 => 'ThumbnailPrimaryChromaticities', # (rational64u[6])
|
|
1558
|
+
0x5037 => 'ThumbnailYCbCrCoefficients', # (rational64u[3])
|
|
1559
|
+
0x5038 => 'ThumbnailYCbCrSubsampling', # (int16u)
|
|
1560
|
+
0x5039 => 'ThumbnailYCbCrPositioning', # (int16u)
|
|
1561
|
+
0x503a => 'ThumbnailRefBlackWhite', # (rational64u[6])
|
|
1562
|
+
0x503b => 'ThumbnailCopyright', # (string)
|
|
1563
|
+
0x5090 => 'LuminanceTable', # (int16u[64])
|
|
1564
|
+
0x5091 => 'ChrominanceTable', # (int16u[64])
|
|
1565
|
+
0x5100 => 'FrameDelay', # (int32u[N])
|
|
1566
|
+
0x5101 => 'LoopCount', # (int16u)
|
|
1567
|
+
0x5102 => 'GlobalPalette', # (int8u[N])
|
|
1568
|
+
0x5103 => 'IndexBackground', # (int8u)
|
|
1569
|
+
0x5104 => 'IndexTransparent', # (int8u)
|
|
1570
|
+
0x5110 => 'PixelUnits', # (int8u)
|
|
1571
|
+
0x5111 => 'PixelsPerUnitX', # (int32u)
|
|
1572
|
+
0x5112 => 'PixelsPerUnitY', # (int32u)
|
|
1573
|
+
0x5113 => 'PaletteHistogram', # (int8u[N])
|
|
1495
1574
|
0x7000 => { #JR
|
|
1496
1575
|
Name => 'SonyRawFileType',
|
|
1497
1576
|
# (only valid if Sony:FileFormat >= ARW 2.0, ref IB)
|
|
@@ -2454,8 +2533,18 @@ my %opcodeInfo = (
|
|
|
2454
2533
|
Name => 'CameraElevationAngle',
|
|
2455
2534
|
Writable => 'rational64s',
|
|
2456
2535
|
},
|
|
2457
|
-
|
|
2458
|
-
|
|
2536
|
+
0x9999 => { # (ExifIFD, Xiaomi)
|
|
2537
|
+
Name => 'XiaomiSettings', # (writable directory!)
|
|
2538
|
+
Writable => 'string',
|
|
2539
|
+
Protected => 1,
|
|
2540
|
+
SubDirectory => { TagTable => 'Image::ExifTool::JSON::Main' },
|
|
2541
|
+
},
|
|
2542
|
+
0x9a00 => {
|
|
2543
|
+
Name => 'XiaomiModel',
|
|
2544
|
+
Writable => 'string',
|
|
2545
|
+
Protected => 1,
|
|
2546
|
+
},
|
|
2547
|
+
# 0x9aaa - int8u[2048/2176]: ? (ExifIFD, Xiaomi POCO F1)
|
|
2459
2548
|
0x9c9b => {
|
|
2460
2549
|
Name => 'XPTitle',
|
|
2461
2550
|
Format => 'undef',
|
|
@@ -2907,6 +2996,7 @@ my %opcodeInfo = (
|
|
|
2907
2996
|
0xa480 => { Name => 'GDALMetadata', Writable => 'string', WriteGroup => 'IFD0' }, #3
|
|
2908
2997
|
0xa481 => { Name => 'GDALNoData', Writable => 'string', WriteGroup => 'IFD0' }, #3
|
|
2909
2998
|
0xa500 => { Name => 'Gamma', Writable => 'rational64u' },
|
|
2999
|
+
# 0xa661 - string: ? (ExifIFD, Xiaomi)
|
|
2910
3000
|
0xafc0 => 'ExpandSoftware', #JD (Opanda)
|
|
2911
3001
|
0xafc1 => 'ExpandLens', #JD (Opanda)
|
|
2912
3002
|
0xafc2 => 'ExpandFilm', #JD (Opanda)
|
|
@@ -3102,7 +3192,7 @@ my %opcodeInfo = (
|
|
|
3102
3192
|
# by returning undef from the WriteProc), but we can't rebuild this directory
|
|
3103
3193
|
# by writing it properly because there is an erroneous StripByteCounts value
|
|
3104
3194
|
# written by the X2D 100C that renders the data unreadable
|
|
3105
|
-
WriteProc => sub { return undef },
|
|
3195
|
+
WriteProc => sub { return undef },
|
|
3106
3196
|
},
|
|
3107
3197
|
},
|
|
3108
3198
|
0xc573 => { #PH
|
|
@@ -4251,6 +4341,16 @@ my %opcodeInfo = (
|
|
|
4251
4341
|
Protected => 1,
|
|
4252
4342
|
Binary => 1,
|
|
4253
4343
|
},
|
|
4344
|
+
0xcd41 => {
|
|
4345
|
+
Name => 'JUMBF',
|
|
4346
|
+
# (set Deletable flag so we can delete this because
|
|
4347
|
+
# Jpeg2000 directories are otherwise permanent)
|
|
4348
|
+
Deletable => 1,
|
|
4349
|
+
SubDirectory => {
|
|
4350
|
+
TagTable => 'Image::ExifTool::Jpeg2000::Main',
|
|
4351
|
+
ByteOrder => 'BigEndian',
|
|
4352
|
+
},
|
|
4353
|
+
},
|
|
4254
4354
|
0xcd43 => { # DNG 1.7
|
|
4255
4355
|
Name => 'ColumnInterleaveFactor',
|
|
4256
4356
|
Writable => 'int32u',
|