exiftool-vendored.exe 13.40.0 → 13.42.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.
@@ -12,7 +12,7 @@ meta information extracted from or written to a file.
12
12
  =head1 TAG TABLES
13
13
 
14
14
  The tables listed below give the names of all tags recognized by ExifTool.
15
- They contain a total of 28853 tags, with 17925 unique tag names.
15
+ They contain a total of 28932 tags, with 17990 unique tag names.
16
16
 
17
17
  B<Tag ID>, B<Index#> or B<Sequence> is given in the first column of each
18
18
  table. A B<Tag ID> is the computer-readable equivalent of a tag name, and
@@ -9541,7 +9541,7 @@ These tags are used by the R5, R5 and EOS 1DXmkIII.
9541
9541
 
9542
9542
  =head3 Canon ColorData11 Tags
9543
9543
 
9544
- These tags are used by the EOS R3, R7 and R6mkII
9544
+ These tags are used by the EOS R3, R7, R50 and R6mkII
9545
9545
 
9546
9546
  Index2 Tag Name Writable
9547
9547
  ------ -------- --------
@@ -9630,7 +9630,7 @@ These tags are used by the EOS R3, R7 and R6mkII
9630
9630
 
9631
9631
  =head3 Canon ColorData12 Tags
9632
9632
 
9633
- These tags are used by the EOS R1 and R5mkII
9633
+ These tags are used by the EOS R1, R5mkII and R50V
9634
9634
 
9635
9635
  Index2 Tag Name Writable
9636
9636
  ------ -------- --------
@@ -21924,7 +21924,9 @@ HEIC images from models such as the S10+.
21924
21924
  EmbeddedVideoFile no
21925
21925
  EmbeddedVideoType no
21926
21926
  MCCData no
21927
- PEg_Info JSON
21927
+ PEg_Info Samsung PEgInfo
21928
+ ReEditData Samsung ReEditData
21929
+ OriginalPathHashKey no
21928
21930
  RemasterInfo no
21929
21931
  SamsungCaptureInfo no
21930
21932
  SingleShotDepthMap no
@@ -21940,6 +21942,114 @@ HEIC images from models such as the S10+.
21940
21942
  16 DepthMapWidth no
21941
21943
  17 DepthMapHeight no
21942
21944
 
21945
+ =head3 Samsung PEgInfo Tags
21946
+
21947
+ Tag ID Tag Name Writable
21948
+ ------ -------- --------
21949
+ 'connectorType' ConnectorType no
21950
+ 'genImageVersion' GenImageVersion no
21951
+
21952
+ =head3 Samsung ReEditData Tags
21953
+
21954
+ Tag ID Tag Name Writable
21955
+ ------ -------- --------
21956
+ 'adjustmentValue' AdjustmentValue no
21957
+ 'clipInfoValue' ClipInfoValue Samsung ClipInfo
21958
+ 'effectValue' EffectValue Samsung EffectInfo
21959
+ 'endMotionVideo' EndMotionVideo no
21960
+ 'isAIFilterReEditOnly' IsAIFilterReEditOnly no
21961
+ 'isApplyShapeCorrection'
21962
+ IsApplyShapeCorrection no
21963
+ 'isBlending' IsBlending no
21964
+ 'isDecoReEditOnly' IsDecoReEditOnly no
21965
+ 'isMotionVideoMute' IsMotionVideoMute no
21966
+ 'isNewReEditOnly' IsNewReEditOnly no
21967
+ 'isNotReEdit' IsNotReEdit no
21968
+ 'isScaleAI' IsScaleAI no
21969
+ 'isTrimMotionVideo' IsTrimMotionVideo no
21970
+ 'ndeVersion' NDEVersion no
21971
+ 'originalPath' OriginalPath no
21972
+ 'portraitEffectValue' PortraitEffectValue Samsung PortraitEffect
21973
+ 'reSize' ReSize no
21974
+ 'representativeFrameLoc'
21975
+ RepresentativeFrameLoc no
21976
+ 'rotation' Rotation no
21977
+ 'sepVersion' SEPVersion no
21978
+ 'startMotionVideo' StartMotionVideo no
21979
+ 'toneValue' ToneValue Samsung ToneInfo
21980
+
21981
+ =head3 Samsung ClipInfo Tags
21982
+
21983
+ Tag ID Tag Name Writable
21984
+ ------ -------- --------
21985
+ 'mCenterX' ClipCenterX no
21986
+ 'mCenterY' ClipCenterY no
21987
+ 'mHFlip' ClipHFlip no
21988
+ 'mHFlipEffect' ClipHFlipEffect no
21989
+ 'mHeight' ClipHeight no
21990
+ 'mHozPerspective' ClipHozPerspective no
21991
+ 'mRotate' ClipRotate no
21992
+ 'mRotateEffect' ClipRotateEffect no
21993
+ 'mRotation' ClipRotation no
21994
+ 'mRotationEffect' ClipRotationEffect no
21995
+ 'mVFlip' ClipVFlip no
21996
+ 'mVFlipEffect' ClipVFlipEffect no
21997
+ 'mVerPerspective' ClipVerPerspective no
21998
+ 'mWidth' ClipWidth no
21999
+
22000
+ =head3 Samsung EffectInfo Tags
22001
+
22002
+ Tag ID Tag Name Writable
22003
+ ------ -------- --------
22004
+ 'alphaValue' AlphaValue no
22005
+ 'filterIndication' FilterIndication no
22006
+ 'filterType' FilterType no
22007
+
22008
+ =head3 Samsung PortraitEffect Tags
22009
+
22010
+ Tag ID Tag Name Writable
22011
+ ------ -------- --------
22012
+ 'effectId' PortraitEffectID no
22013
+ 'effectIdOriginal' PortraitEffectIDOriginal no
22014
+ 'effectLevel' PortraitEffectLevel no
22015
+ 'effectLevelOriginal' EffectLevelOriginal no
22016
+ 'exifRotation' PortraitExifRotation no
22017
+ 'lightLevel' PortraitLightLevel no
22018
+ 'lightLevelOriginal' LightLevelOriginal no
22019
+ 'refocusX' PortraitRefocusX no
22020
+ 'refocusXOriginal' RefocusXOriginal no
22021
+ 'refocusY' PortraitRefocusY no
22022
+ 'refocusYOriginal' RefocusYOriginal no
22023
+ 'touchX' PortraitTouchX no
22024
+ 'touchXOriginal' TouchXOriginal no
22025
+ 'touchY' PortraitTouchY no
22026
+ 'touchYOriginal' TouchYOriginal no
22027
+ 'waterMarkRemoved' WaterMarkRemoved no
22028
+ 'waterMarkRemovedOriginal'
22029
+ WaterMarkRemovedOriginal no
22030
+
22031
+ =head3 Samsung ToneInfo Tags
22032
+
22033
+ Tag ID Tag Name Writable
22034
+ ------ -------- --------
22035
+ 'brightness' Brightness no
22036
+ 'contrast' Contrast no
22037
+ 'definition' Definition no
22038
+ 'exposure' Exposure no
22039
+ 'highlight' Highlight no
22040
+ 'hue' Hue no
22041
+ 'isBrightnessIPE' IsBrightnessIPE no
22042
+ 'isContrastIPE' IsContrastIPE no
22043
+ 'isExposureIPE' IsExposureIPE no
22044
+ 'isSaturationIPE' IsSaturationIPE no
22045
+ 'lightbalance' Lightbalance no
22046
+ 'saturation' Saturation no
22047
+ 'shadow' Shadow no
22048
+ 'sharpness' Sharpness no
22049
+ 'tint' Tint no
22050
+ 'wbMode' WBMode no
22051
+ 'wbTemperature' WBTemperature no
22052
+
21943
22053
  =head3 Samsung SingleShotMeta Tags
21944
22054
 
21945
22055
  Tag ID Tag Name Writable
@@ -24074,10 +24184,12 @@ some models when the ExtractEmbedded option is used.
24074
24184
  Tag ID Tag Name Writable
24075
24185
  ------ -------- --------
24076
24186
  0x8000 FNumber no
24187
+ 0x8106 FrameRate no
24077
24188
  0x8109 ExposureTime no
24078
24189
  0x810a MasterGainAdjustment no
24079
24190
  0x810b ISO no
24080
24191
  0x810c ElectricalExtenderMagnification no
24192
+ 0x8114 SerialNumber no
24081
24193
  0x8500 GPSVersionID no
24082
24194
  0x8501 GPSLatitudeRef no
24083
24195
  0x8502 GPSLatitude no
@@ -30720,6 +30832,7 @@ for the official QuickTime specification.
30720
30832
  'free' KodakFree Kodak Free
30721
30833
  Pittasoft QuickTime Pittasoft
30722
30834
  ThumbnailImage no
30835
+ HighlightMarkers no
30723
30836
  Free? no
30724
30837
  'ftyp' FileType QuickTime FileType
30725
30838
  'gdat' GPSData QuickTime Stream
@@ -36442,6 +36555,7 @@ Tags extracted from Redcode R3D video files.
36442
36555
  0x1096 Filter no
36443
36556
  0x10a0 Brain no
36444
36557
  0x10a1 Sensor no
36558
+ 0x10be Quality no
36445
36559
  0x200d ColorTemperature no
36446
36560
  0x204b RGBCurves no
36447
36561
  0x2066 OriginalFrameRate no
@@ -40696,7 +40810,7 @@ Information extracted from MS Shell Link (Windows shortcut) files.
40696
40810
  0x30020 CommandLineArguments no
40697
40811
  0x30040 IconFileName no
40698
40812
  0xa0000000 UnknownData LNK UnknownData
40699
- 0xa0000001 EnvVarData LNK UnknownData
40813
+ 0xa0000001 EnvVarData LNK EnvVarData
40700
40814
  0xa0000002 ConsoleData LNK ConsoleData
40701
40815
  0xa0000003 TrackerData LNK TrackerData
40702
40816
  0xa0000004 ConsoleFEData LNK ConsoleFEData
@@ -40741,6 +40855,13 @@ Information extracted from MS Shell Link (Windows shortcut) files.
40741
40855
  ------ -------- --------
40742
40856
  [no tags known]
40743
40857
 
40858
+ =head3 LNK EnvVarData Tags
40859
+
40860
+ Index1 Tag Name Writable
40861
+ ------ -------- --------
40862
+ 8 EnvironmentTarget no
40863
+ 268 EnvironmentTargetUnicode no
40864
+
40744
40865
  =head3 LNK ConsoleData Tags
40745
40866
 
40746
40867
  Index1 Tag Name Writable
@@ -41690,6 +41811,7 @@ FileName.
41690
41811
  JPEGQualityEstimate File no
41691
41812
  JUMBF JUMBF no
41692
41813
  MIMEType File no
41814
+ MakerNoteByteOrder File no
41693
41815
  MaxVal File no
41694
41816
  NewGUID ExifTool no
41695
41817
  Now ExifTool no
@@ -1731,7 +1731,14 @@ ItemID2: foreach $id (reverse sort { $a <=> $b } keys %$items) {
1731
1731
  # (note that $tag may be a binary Keys index here)
1732
1732
  foreach $tag (@addTags) {
1733
1733
  my $tagInfo = $$dirs{$tag} || $$newTags{$tag};
1734
- next unless ref $tagInfo eq 'HASH'; # (shouldn't happen, but somehow there is forum17260)
1734
+ unless (ref $tagInfo eq 'HASH') { # (shouldn't happen, but somehow there is forum17260)
1735
+ # (also can happen if Meta exists but Keys does not since 'keys' is an array ref.
1736
+ # SonyPMW-EX1R.mp4 has a Movie-Meta atom with XML and no Keys that triggers this
1737
+ # issue. Note that in this case the Meta HandlerType is 'meta' instead of 'mdta',
1738
+ # which isn't a problem for ExifTool, but may be for other software?)
1739
+ next unless ref $tagInfo eq 'ARRAY';
1740
+ $tagInfo = $et->GetTagInfo($tagTablePtr, $tag) or next;
1741
+ }
1735
1742
  next if defined $$tagInfo{CanCreate} and not $$tagInfo{CanCreate};
1736
1743
  next if defined $$tagInfo{MediaType} and $$et{MediaType} ne $$tagInfo{MediaType};
1737
1744
  my $subdir = $$tagInfo{SubDirectory};
@@ -29,7 +29,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
29
29
  %jpegMarker %specialTags %fileTypeLookup $testLen $exeDir
30
30
  %static_vars $advFmtSelf $configFile @configFiles $noConfig);
31
31
 
32
- $VERSION = '13.40';
32
+ $VERSION = '13.42';
33
33
  $RELEASE = '';
34
34
  @ISA = qw(Exporter);
35
35
  %EXPORT_TAGS = (
@@ -392,8 +392,9 @@ my %createTypes = map { $_ => 1 } qw(XMP ICC MIE VRD DR4 EXIF EXV);
392
392
  LFR => 'LFP', # (Light Field RAW)
393
393
  LIF => ['LIF', 'Leica Image File'],
394
394
  LNK => ['LNK', 'Windows shortcut'],
395
+ LRF => ['MOV', 'Low-Resolution video File'], # (DJI)
395
396
  LRI => ['LRI', 'Light RAW'],
396
- LRV => ['MOV', 'Low-Resolution Video'],
397
+ LRV => ['MOV', 'Low-Resolution Video'], # (GoPro)
397
398
  M2T => 'M2TS',
398
399
  M2TS => ['M2TS', 'MPEG-2 Transport Stream'],
399
400
  M2V => ['MPEG', 'MPEG-2 Video'],
@@ -1818,6 +1819,13 @@ my %systemTagsNotes = (
1818
1819
  MM => 'Big-endian (Motorola, MM)',
1819
1820
  },
1820
1821
  },
1822
+ MakerNoteByteOrder => {
1823
+ Notes => 'byte order of maker notes. Generated only if different from ExifByteOrder',
1824
+ PrintConv => {
1825
+ II => 'Little-endian (Intel, II)',
1826
+ MM => 'Big-endian (Motorola, MM)',
1827
+ },
1828
+ },
1821
1829
  ExifUnicodeByteOrder => {
1822
1830
  Writable => 1,
1823
1831
  WriteOnly => 1,
@@ -8626,6 +8634,7 @@ sub DoProcessTIFF($$;$)
8626
8634
  my $ifdName = ($$dirInfo{DirName} and $$dirInfo{DirName} =~ /^(ExifIFD|GPS)$/) ? $1 : 'IFD0';
8627
8635
  if (not $tagTablePtr or $$tagTablePtr{GROUPS}{0} eq 'EXIF') {
8628
8636
  $self->FoundTag('ExifByteOrder', $byteOrder) unless $outfile;
8637
+ $$self{ExifByteOrder} = $byteOrder;
8629
8638
  } elsif ($$tagTablePtr{GROUPS}{0} eq 'MakerNotes') { # (for writing CR3 maker notes)
8630
8639
  $ifdName = $$tagTablePtr{GROUPS}{0};
8631
8640
  } else {
@@ -9685,10 +9694,10 @@ sub VPrint($$@)
9685
9694
  # Print verbose directory information
9686
9695
  # Inputs: 0) ExifTool object reference, 1) directory name or dirInfo ref
9687
9696
  # 2) number of entries in directory (or 0 if unknown)
9688
- # 3) optional size of directory in bytes
9689
- sub VerboseDir($$;$$)
9697
+ # 3) optional size of directory in bytes, 4) optional byte order for -v3 output
9698
+ sub VerboseDir($$;$$$)
9690
9699
  {
9691
- my ($self, $name, $entries, $size) = @_;
9700
+ my ($self, $name, $entries, $size, $byteOrder) = @_;
9692
9701
  return unless $$self{OPTIONS}{Verbose};
9693
9702
  if (ref $name eq 'HASH') {
9694
9703
  $size = $$name{DirLen} unless $size;
@@ -9698,6 +9707,9 @@ sub VerboseDir($$;$$)
9698
9707
  my $out = $$self{OPTIONS}{TextOut};
9699
9708
  my $str = ($entries or defined $entries and not $size) ? " with $entries entries" : '';
9700
9709
  $str .= ", $size bytes" if $size;
9710
+ if ($byteOrder and $$self{OPTIONS}{Verbose} > 2) {
9711
+ $str .= ', ' . (GetByteOrder() eq 'II' ? 'Little-endian' : 'Big-endian');
9712
+ }
9701
9713
  print $out "$indent+ [$name directory$str]\n";
9702
9714
  }
9703
9715
 
@@ -9820,7 +9832,7 @@ sub ProcessBinaryData($$$)
9820
9832
  # extract known tags in numerical order
9821
9833
  @tags = sort { ($a < 0 ? $a + 1e9 : $a) <=> ($b < 0 ? $b + 1e9 : $b) } TagTableKeys($tagTablePtr);
9822
9834
  }
9823
- $self->VerboseDir('BinaryData', undef, $size) if $verbose;
9835
+ $self->VerboseDir('BinaryData', undef, $size, GetByteOrder()) if $verbose;
9824
9836
  # avoid creating unknown tags for tags that fail condition if Unknown is 1
9825
9837
  $$self{NO_UNKNOWN} = 1 if $unknown < 2;
9826
9838
  my ($index, %val);
@@ -742,11 +742,16 @@ OPTIONS
742
742
  single command.
743
743
 
744
744
  Specific tags may be imported from the CSV database by adding
745
- -*TAG* options to the command, or excluded with --*TAG*, with
746
- exclusions taking priority. Group names and wildcards are allowed.
747
- If no tags are specified, then all except FileName and Directory
748
- are used. Tags are imported in the same order as the database
749
- entries.
745
+ -*TAG* options to the command after -csv=*CSVFILE*, or excluded
746
+ with --*TAG*, with exclusions taking priority. Group names and
747
+ wildcards in tag names are allowed, but the group name must match
748
+ exactly the group in the CSV file (eg. a "XMP-dc:Subject" column in
749
+ the CSV file won't match "-XMP:Subject" on the command line. Also,
750
+ tags from the CSV may be redirected and written to different tags
751
+ in the target file with support for advanced-formatting expressions
752
+ using the same syntax as the -tagsFromFile feature. If no tags are
753
+ specified, then all tags except FileName, Directory and excluded
754
+ tags are imported (in the same order as the database entries).
750
755
 
751
756
  When exporting a CSV file, the -g or -G option adds group names to
752
757
  the tag headings. If the -a option is used to allow duplicate tag
@@ -771,8 +776,8 @@ OPTIONS
771
776
  importing.
772
777
 
773
778
  Special feature: -csv+=*CSVFILE* may be used to add items to
774
- existing lists. This affects only list-type tags. Also applies to
775
- the -j option.
779
+ existing lists in the file. This affects only list-type tags. Also
780
+ applies to the -j option.
776
781
 
777
782
  Note that this and the -plot options are fundamentally different
778
783
  than all other output format options because they require
@@ -939,18 +944,23 @@ OPTIONS
939
944
  JSON file may be suffixed with a "#" to disable print conversion.
940
945
 
941
946
  Specific tags may be imported from the JSON database by adding
942
- -*TAG* options to the command, or excluded with --*TAG*, with
943
- exclusions taking priority. Group names and wildcards are allowed.
944
- If no tags are specified, then all except FileName and Directory
945
- are used. Tags are imported in the same order as the database
946
- entries.
947
+ -*TAG* options to the command after -j=*JSONFILE*, or excluded with
948
+ --*TAG*, with exclusions taking priority. Group names and wildcards
949
+ in tag names are allowed, but the group name must match exactly the
950
+ group in the JSON file (eg. a "XMP-dc:Subject" entry in the JSON
951
+ file won't match "-XMP:Subject" on the command line. Also, tags
952
+ from JSON may be redirected and written to different tags in the
953
+ target file with support for advanced-formatting expressions using
954
+ the same syntax as the -tagsFromFile feature. If no tags are
955
+ specified, then all tags except FileName, Directory and excluded
956
+ tags are imported (in the same order as the database entries).
947
957
 
948
958
  Unlike CSV import, empty values are not ignored, and will cause an
949
959
  empty value to be written if supported by the specific metadata
950
960
  type. Tags are deleted by using the -f option and setting the tag
951
961
  value to "-" (or to the MissingTagValue setting if this API option
952
962
  was used). Importing with -j+=*JSONFILE* causes new values to be
953
- added to existing lists.
963
+ added to existing lists in the target file.
954
964
 
955
965
  -l (-long)
956
966
  Use long 2-line Canon-style output format. Adds a description and
@@ -1088,7 +1098,7 @@ OPTIONS
1088
1098
 
1089
1099
  produces output like this:
1090
1100
 
1091
- -- Generated by ExifTool 13.40 --
1101
+ -- Generated by ExifTool 13.42 --
1092
1102
  File: a.jpg - 2003:10:31 15:44:19
1093
1103
  (f/5.6, 1/60s, ISO 100)
1094
1104
  File: b.jpg - 2006:05:23 11:57:38
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "exiftool-vendored.exe",
3
- "version": "13.40.0",
3
+ "version": "13.42.0",
4
4
  "description": "Vendored win32 ExifTool for Node.js",
5
5
  "main": "./index.js",
6
6
  "homepage": "https://github.com/photostructure/exiftool-vendored.exe#readme",
@@ -51,11 +51,11 @@
51
51
  },
52
52
  "devDependencies": {
53
53
  "cross-zip": "^4.0.1",
54
- "mocha": "^11.7.4",
55
- "npm-check-updates": "^19.1.1",
54
+ "mocha": "^11.7.5",
55
+ "npm-check-updates": "^19.1.2",
56
56
  "npm-run-all": "4.1.5",
57
57
  "prettier": "^3.6.2",
58
- "release-it": "^19.0.5",
58
+ "release-it": "^19.0.6",
59
59
  "xml2js": "^0.6.2"
60
60
  }
61
61
  }