exiftool-vendored.exe 12.26.0 → 12.33.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.
Files changed (53) hide show
  1. package/bin/exiftool_files/Changes +119 -4
  2. package/bin/exiftool_files/README +44 -43
  3. package/bin/exiftool_files/arg_files/xmp2exif.args +2 -1
  4. package/bin/exiftool_files/config_files/convert_regions.config +25 -14
  5. package/bin/exiftool_files/config_files/example.config +1 -1
  6. package/bin/exiftool_files/exiftool.pl +79 -66
  7. package/bin/exiftool_files/fmt_files/gpx.fmt +1 -1
  8. package/bin/exiftool_files/fmt_files/gpx_wpt.fmt +1 -1
  9. package/bin/exiftool_files/lib/Image/ExifTool/BuildTagLookup.pm +11 -3
  10. package/bin/exiftool_files/lib/Image/ExifTool/CBOR.pm +331 -0
  11. package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +26 -7
  12. package/bin/exiftool_files/lib/Image/ExifTool/DPX.pm +13 -2
  13. package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +98 -4
  14. package/bin/exiftool_files/lib/Image/ExifTool/FlashPix.pm +35 -10
  15. package/bin/exiftool_files/lib/Image/ExifTool/FujiFilm.pm +1 -0
  16. package/bin/exiftool_files/lib/Image/ExifTool/Geotag.pm +13 -2
  17. package/bin/exiftool_files/lib/Image/ExifTool/GoPro.pm +16 -1
  18. package/bin/exiftool_files/lib/Image/ExifTool/ID3.pm +15 -3
  19. package/bin/exiftool_files/lib/Image/ExifTool/JSON.pm +7 -3
  20. package/bin/exiftool_files/lib/Image/ExifTool/Jpeg2000.pm +60 -26
  21. package/bin/exiftool_files/lib/Image/ExifTool/LIF.pm +153 -0
  22. package/bin/exiftool_files/lib/Image/ExifTool/Lang/nl.pm +60 -59
  23. package/bin/exiftool_files/lib/Image/ExifTool/M2TS.pm +103 -7
  24. package/bin/exiftool_files/lib/Image/ExifTool/MacOS.pm +2 -2
  25. package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +14 -3
  26. package/bin/exiftool_files/lib/Image/ExifTool/NikonSettings.pm +10 -2
  27. package/bin/exiftool_files/lib/Image/ExifTool/Olympus.pm +9 -2
  28. package/bin/exiftool_files/lib/Image/ExifTool/Other.pm +93 -0
  29. package/bin/exiftool_files/lib/Image/ExifTool/PDF.pm +9 -12
  30. package/bin/exiftool_files/lib/Image/ExifTool/PNG.pm +7 -6
  31. package/bin/exiftool_files/lib/Image/ExifTool/Panasonic.pm +14 -3
  32. package/bin/exiftool_files/lib/Image/ExifTool/Pentax.pm +27 -5
  33. package/bin/exiftool_files/lib/Image/ExifTool/Photoshop.pm +6 -0
  34. package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +105 -24
  35. package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +203 -121
  36. package/bin/exiftool_files/lib/Image/ExifTool/README +5 -2
  37. package/bin/exiftool_files/lib/Image/ExifTool/RIFF.pm +6 -1
  38. package/bin/exiftool_files/lib/Image/ExifTool/Samsung.pm +47 -10
  39. package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +85 -34
  40. package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +65 -5
  41. package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +153 -32
  42. package/bin/exiftool_files/lib/Image/ExifTool/Torrent.pm +18 -11
  43. package/bin/exiftool_files/lib/Image/ExifTool/WritePDF.pl +1 -0
  44. package/bin/exiftool_files/lib/Image/ExifTool/WritePNG.pl +2 -0
  45. package/bin/exiftool_files/lib/Image/ExifTool/WriteQuickTime.pl +8 -4
  46. package/bin/exiftool_files/lib/Image/ExifTool/Writer.pl +3 -0
  47. package/bin/exiftool_files/lib/Image/ExifTool/XMP.pm +21 -4
  48. package/bin/exiftool_files/lib/Image/ExifTool/XMP2.pl +3 -1
  49. package/bin/exiftool_files/lib/Image/ExifTool/XMPStruct.pl +3 -1
  50. package/bin/exiftool_files/lib/Image/ExifTool/ZISRAW.pm +121 -2
  51. package/bin/exiftool_files/lib/Image/ExifTool.pm +8867 -8835
  52. package/bin/exiftool_files/lib/Image/ExifTool.pod +58 -56
  53. package/package.json +3 -3
@@ -574,6 +574,9 @@ sub SetNewValue($;$$%)
574
574
  my $pre = $wantGroup ? $wantGroup . ':' : '';
575
575
  $err = "Tag '$pre${origTag}' is not defined";
576
576
  $err .= ' or has a bad language code' if $origTag =~ /-/;
577
+ if (not $pre and uc($origTag) eq 'TAG') {
578
+ $err .= " (specify a writable tag name, not '${origTag}' literally)"
579
+ }
577
580
  } else {
578
581
  $err = "Invalid tag name '${tag}'";
579
582
  $err .= " (remove the leading '\$')" if $tag =~ /^\$/;
@@ -50,7 +50,7 @@ use Image::ExifTool::Exif;
50
50
  use Image::ExifTool::GPS;
51
51
  require Exporter;
52
52
 
53
- $VERSION = '3.42';
53
+ $VERSION = '3.46';
54
54
  @ISA = qw(Exporter);
55
55
  @EXPORT_OK = qw(EscapeXML UnescapeXML);
56
56
 
@@ -1533,6 +1533,9 @@ my %sPantryItem = (
1533
1533
  CameraProfile => { },
1534
1534
  LookTable => { },
1535
1535
  ToneCurvePV2012 => { List => 'Seq' },
1536
+ ToneCurvePV2012Red => { List => 'Seq' },
1537
+ ToneCurvePV2012Green => { List => 'Seq' },
1538
+ ToneCurvePV2012Blue => { List => 'Seq' },
1536
1539
  },
1537
1540
  },
1538
1541
  }
@@ -2017,6 +2020,11 @@ my %sPantryItem = (
2017
2020
  Groups => { 2 => 'Location' },
2018
2021
  Writable => 'integer',
2019
2022
  PrintConv => {
2023
+ OTHER => sub {
2024
+ my ($val, $inv) = @_;
2025
+ return undef unless $inv and $val =~ /^([-+0-9])/;
2026
+ return($1 eq '-' ? 1 : 0);
2027
+ },
2020
2028
  0 => 'Above Sea Level',
2021
2029
  1 => 'Below Sea Level',
2022
2030
  },
@@ -2341,6 +2349,8 @@ my %sPantryItem = (
2341
2349
  Scene => { Groups => { 2 => 'Other' }, List => 'Bag' },
2342
2350
  SubjectCode => { Groups => { 2 => 'Other' }, List => 'Bag' },
2343
2351
  # Copyright - have seen this in a sample (Jan 2021), but I think it is non-standard
2352
+ AltTextAccessibility =>{ Groups => { 2 => 'Other' }, Writable => 'lang-alt' }, # added 2021-10-13
2353
+ ExtDescrAccessibility=>{ Groups => { 2 => 'Other' }, Writable => 'lang-alt' }, # added 2021-10-13
2344
2354
  );
2345
2355
 
2346
2356
  # Adobe Lightroom namespace properties (lr) (ref PH)
@@ -3258,8 +3268,14 @@ NoLoop:
3258
3268
  }
3259
3269
  }
3260
3270
  # generate a default tagInfo hash if necessary
3261
- $tagInfo or $tagInfo = { Name => $name, IsDefault => 1, Priority => 0 };
3262
-
3271
+ unless ($tagInfo) {
3272
+ # shorten tag name if necessary
3273
+ if ($$et{ShortenXmpTags}) {
3274
+ my $shorten = $$et{ShortenXmpTags};
3275
+ $name = &$shorten($name);
3276
+ }
3277
+ $tagInfo = { Name => $name, IsDefault => 1, Priority => 0 };
3278
+ }
3263
3279
  # add tag Namespace entry for tags in variable-namespace tables
3264
3280
  $$tagInfo{Namespace} = $xns if $xns;
3265
3281
  if ($$et{curURI}{$ns} and $$et{curURI}{$ns} =~ m{^http://ns.exiftool.(?:ca|org)/(.*?)/(.*?)/}) {
@@ -3778,6 +3794,7 @@ sub ParseXMPElement($$$;$$$$)
3778
3794
  # (unless we already extracted shorthand values from this element)
3779
3795
  if (length $val or not $shorthand) {
3780
3796
  my $lastProp = $$propList[-1];
3797
+ $lastProp = '' unless defined $lastProp;
3781
3798
  if (defined $nodeID) {
3782
3799
  SaveBlankInfo($blankInfo, $propList, $val);
3783
3800
  } elsif ($lastProp eq 'rdf:type' and $wasEmpty) {
@@ -3948,7 +3965,7 @@ sub ProcessXMP($$;$)
3948
3965
  } elsif ($1 eq 'REDXIF') {
3949
3966
  $type = 'RMD';
3950
3967
  $mime = 'application/xml';
3951
- } else {
3968
+ } elsif ($1 ne 'fcpxml') { # Final Cut Pro XML
3952
3969
  return 0;
3953
3970
  }
3954
3971
  } elsif ($buf2 =~ /<svg[\s>]/) {
@@ -539,7 +539,8 @@ my %sImageRegion = ( # new in 1.5
539
539
  NOTES => q{
540
540
  This table contains tags defined by the IPTC Extension schema version 1.5.
541
541
  The actual namespace prefix is "Iptc4xmpExt", but ExifTool shortens this for
542
- the family 1 group name. (see L<http://www.iptc.org/IPTC4XMP/>)
542
+ the family 1 group name. (see
543
+ L<http://www.iptc.org/standards/photo-metadata/iptc-standard/>)
543
544
  },
544
545
  AboutCvTerm => {
545
546
  Struct => \%sCVTermDetails,
@@ -796,6 +797,7 @@ my %sImageRegion = ( # new in 1.5
796
797
  audioBitsPerSample => { Groups => { 2 => 'Audio' }, Writable => 'integer' },
797
798
  # new IPTC Extension schema 1.5 property
798
799
  ImageRegion => { Groups => { 2 => 'Image' }, List => 'Bag', Struct => \%sImageRegion },
800
+ EventID => { List => 'Bag' }, # added 2021-10-13
799
801
  );
800
802
 
801
803
  #------------------------------------------------------------------------------
@@ -32,7 +32,9 @@ sub SerializeStruct($;$)
32
32
  my ($key, $val, @vals, $rtnVal);
33
33
 
34
34
  if (ref $obj eq 'HASH') {
35
- foreach $key (sort keys %$obj) {
35
+ # support hashes with ordered keys
36
+ my @keys = $$obj{_ordered_keys_} ? @{$$obj{_ordered_keys_}} : sort keys %$obj;
37
+ foreach $key (@keys) {
36
38
  push @vals, $key . '=' . SerializeStruct($$obj{$key}, '}');
37
39
  }
38
40
  $rtnVal = '{' . join(',', @vals) . '}';
@@ -14,7 +14,7 @@ use strict;
14
14
  use vars qw($VERSION);
15
15
  use Image::ExifTool qw(:DataAccess :Utils);
16
16
 
17
- $VERSION = '1.00';
17
+ $VERSION = '1.01';
18
18
 
19
19
  %Image::ExifTool::ZISRAW::Main = (
20
20
  PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
@@ -41,6 +41,123 @@ $VERSION = '1.00';
41
41
  },
42
42
  );
43
43
 
44
+ #------------------------------------------------------------------------------
45
+ # Shorten obscenely long CZI tag names
46
+ # Inputs: Tag name
47
+ # Returns: Shortened tag name
48
+ sub ShortenTagNames($)
49
+ {
50
+ local $_;
51
+ $_ = shift;
52
+ s/^HardwareSetting//;
53
+ s/^DevicesDevice/Device/;
54
+ s/LightPathNode//g;
55
+ s/Successors//g;
56
+ s/ExperimentExperiment/Experiment/g;
57
+ s/ObjectivesObjective/Objective/;
58
+ s/ChannelsChannel/Channel/;
59
+ s/TubeLensesTubeLens/TubeLens/;
60
+ s/^ExperimentHardwareSettingsPoolHardwareSetting/HardwareSetting/;
61
+ s/SharpnessMeasureSetSharpnessMeasure/Sharpness/;
62
+ s/FocusSetupAutofocusSetup/Autofocus/;
63
+ s/TracksTrack/Track/;
64
+ s/ChannelRefsChannelRef/ChannelRef/;
65
+ s/ChangerChanger/Changer/;
66
+ s/ElementsChangerElement/Changer/;
67
+ s/ChangerElements/Changer/;
68
+ s/ContrastChangerContrast/Contrast/;
69
+ s/KeyFunctionsKeyFunction/KeyFunction/;
70
+ s/ManagerContrastManager(Contrast)?/ManagerContrast/;
71
+ s/ObjectiveChangerObjective/ObjectiveChanger/;
72
+ s/ManagerLightManager/ManagerLight/;
73
+ s/WavelengthAreasWavelengthArea/WavelengthArea/;
74
+ s/ReflectorChangerReflector/ReflectorChanger/;
75
+ s/^StageStageAxesStageAxis/StageAxis/;
76
+ s/ShutterChangerShutter/ShutterChanger/;
77
+ s/OnOffChangerOnOff/OnOffChanger/;
78
+ s/UnsharpMaskStateUnsharpMask/UnsharpMask/;
79
+ s/Acquisition/Acq/;
80
+ s/Continuous/Cont/;
81
+ s/Resolution/Res/;
82
+ s/Experiment/Expt/g;
83
+ s/Threshold/Thresh/;
84
+ s/Reference/Ref/;
85
+ s/Magnification/Mag/;
86
+ s/Original/Orig/;
87
+ s/FocusSetupFocusStrategySetup/Focus/;
88
+ s/ParametersParameter/Parameter/;
89
+ s/IntervalInfo/Interval/;
90
+ s/ExptBlocksAcqBlock/AcqBlock/;
91
+ s/MicroscopesMicroscope/Microscope/;
92
+ s/TimeSeriesInterval/TimeSeries/;
93
+ s/Interval(.*Interval)/$1/;
94
+ s/SingleTileRegionsSingleTileRegion/SingleTileRegion/;
95
+ s/AcquisitionMode//;
96
+ s/DetectorsDetector/Detector/;
97
+ s/Setup//;
98
+ s/Setting//;
99
+ s/TrackTrack/Track/;
100
+ s/AnalogOutMaximumsAnalogOutMaximum/AnalogOutMaximum/;
101
+ s/AnalogOutMinimumsAnalogOutMinimum/AnalogOutMinimum/;
102
+ s/DigitalOutLabelsDigitalOutLabelLabel/DigitalOutLabelLabel/;
103
+ s/(VivaTomeOpticalSectionInformation)+VivaTomeOpticalSectionInformation/VivaTomeOpticalSectionInformation/;
104
+ s/FocusDefiniteFocus/FocusDefinite/;
105
+ s/ChangerChanger/Changer/;
106
+ s/Calibration/Cal/;
107
+ s/LightSwitchChangerRLTLSwitch/LightSwitchChangerRLTL/;
108
+ s/Parameters//;
109
+ s/Fluorescence/Fluor/;
110
+ s/CameraGeometryCameraGeometry/CameraGeometry/;
111
+ s/CameraCamera/Camera/;
112
+ s/DetectorsCamera/Camera/;
113
+ s/FilterChangerLeftChangerEmissionFilter/LeftChangerEmissionFilter/;
114
+ s/SwitchingStatesSwitchingState/SwitchingState/;
115
+ s/Information/Info/;
116
+ s/SubDimensions?//g;
117
+ s/Setups?//;
118
+ s/Parameters?//;
119
+ s/Calculate/Calc/;
120
+ s/Visibility/Vis/;
121
+ s/Orientation/Orient/;
122
+ s/ListItems/Items/;
123
+ s/Increment/Incr/;
124
+ s/Parameter/Param/;
125
+ s/(ParfocalParcentralValues)+ParfocalParcentralValue/Parcentral/;
126
+ s/ParcentralParcentral/Parcentral/;
127
+ s/CorrFocusCorrection/FocusCorr/;
128
+ s/(ApoTomeDepthInfo)+Element/ApoTomeDepth/;
129
+ s/(ApoTomeClickStopInfo)+Element/ApoTomeClickStop/;
130
+ s/DepthDepth/Depth/;
131
+ s/(Devices?)+Device/Device/;
132
+ s/(BeamPathNode)+/BeamPathNode/;
133
+ s/BeamPathsBeamPath/BeamPath/g;
134
+ s/BeamPathBeamPath/BeamPath/g;
135
+ s/Configuration/Config/;
136
+ s/StageAxesStageAxis/StageAxis/;
137
+ s/RangesRange/Range/;
138
+ s/DataGridDatasGridData(Grid)?/DataGrid/;
139
+ s/DataMicroscopeDatasMicroscopeData(Microscope)?/DataMicroscope/;
140
+ s/DataWegaDatasWegaData/DataWega/;
141
+ s/ClickStopPositionsClickStopPosition/ClickStopPosition/;
142
+ s/LightSourcess?LightSource(Settings)?(LightSource)?/LightSource/;
143
+ s/FilterSetsFilterSet/FilterSet/;
144
+ s/EmissionFiltersEmissionFilter/EmissionFilter/;
145
+ s/ExcitationFiltersExcitationFilter/ExcitationFilter/;
146
+ s/FiltersFilter/Filter/;
147
+ s/DichroicsDichroic/Dichronic/;
148
+ s/WavelengthsWavelength/Wavelength/;
149
+ s/MultiTrackSetup/MultiTrack/;
150
+ s/TrackTrack/Track/;
151
+ s/DataGrabberSetup/DataGrabber/;
152
+ s/CameraFrameSetup/CameraFrame/;
153
+ s/TimeSeries(TimeSeries|Setups)/TimeSeries/;
154
+ s/FocusFocus/Focus/;
155
+ s/FocusAutofocus/Autofocus/;
156
+ s/Focus(Hardware|Software)(Autofocus)+/Autofocus$1/;
157
+ s/AutofocusAutofocus/Autofocus/;
158
+ return $_;
159
+ }
160
+
44
161
  #------------------------------------------------------------------------------
45
162
  # Extract metadata from a ZISRAW (CZI) image
46
163
  # Inputs: 0) ExifTool object reference, 1) dirInfo reference
@@ -76,7 +193,9 @@ sub ProcessCZI($$)
76
193
  $tagTablePtr = GetTagTable('Image::ExifTool::XMP::XML');
77
194
  $dirInfo{DirLen} = length $buff;
78
195
  # shorten tag names somewhat by removing 'ImageDocumentMetadata' prefix from all
79
- $$et{XmpIgnoreProps} = [ 'ImageDocument', 'Metadata' ];
196
+ $$et{XmpIgnoreProps} = [ 'ImageDocument', 'Metadata', 'Information' ];
197
+ $$et{ShortenXmpTags} = \&ShortenTagNames;
198
+
80
199
  $et->ProcessDirectory(\%dirInfo, $tagTablePtr);
81
200
 
82
201
  return 1;