exiftool-vendored.exe 12.73.0 → 12.78.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 +94 -6
- package/bin/exiftool_files/README +46 -45
- package/bin/exiftool_files/config_files/example.config +10 -2
- package/bin/exiftool_files/exiftool.pl +138 -87
- package/bin/exiftool_files/lib/File/RandomAccess.pm +31 -5
- package/bin/exiftool_files/lib/File/RandomAccess.pod +4 -4
- package/bin/exiftool_files/lib/Image/ExifTool/7Z.pm +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/AFCP.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/BZZ.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/BuildTagLookup.pm +7 -7
- package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +17 -13
- package/bin/exiftool_files/lib/Image/ExifTool/CanonVRD.pm +8 -2
- package/bin/exiftool_files/lib/Image/ExifTool/DICOM.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/DNG.pm +4 -4
- package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +54 -5
- package/bin/exiftool_files/lib/Image/ExifTool/FLIR.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Fixup.pm +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/FlashPix.pm +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/FujiFilm.pm +8 -3
- package/bin/exiftool_files/lib/Image/ExifTool/GPS.pm +5 -3
- package/bin/exiftool_files/lib/Image/ExifTool/Geolocation.dat +0 -0
- package/bin/exiftool_files/lib/Image/ExifTool/Geolocation.pm +237 -0
- package/bin/exiftool_files/lib/Image/ExifTool/Geotag.pm +4 -4
- package/bin/exiftool_files/lib/Image/ExifTool/HtmlDump.pm +7 -4
- package/bin/exiftool_files/lib/Image/ExifTool/ID3.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Import.pm +9 -6
- package/bin/exiftool_files/lib/Image/ExifTool/JSON.pm +11 -11
- package/bin/exiftool_files/lib/Image/ExifTool/Jpeg2000.pm +51 -12
- package/bin/exiftool_files/lib/Image/ExifTool/MIE.pm +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/MWG.pm +1 -0
- package/bin/exiftool_files/lib/Image/ExifTool/MacOS.pm +19 -4
- package/bin/exiftool_files/lib/Image/ExifTool/MinoltaRaw.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +5 -3
- package/bin/exiftool_files/lib/Image/ExifTool/NikonCustom.pm +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/Ogg.pm +4 -3
- package/bin/exiftool_files/lib/Image/ExifTool/Olympus.pm +3 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PDF.pm +59 -9
- package/bin/exiftool_files/lib/Image/ExifTool/PLIST.pm +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/PanasonicRaw.pm +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/Pentax.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PhaseOne.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Photoshop.pm +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/PostScript.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +223 -117
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +260 -242
- package/bin/exiftool_files/lib/Image/ExifTool/RSRC.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Samsung.pm +4 -4
- package/bin/exiftool_files/lib/Image/ExifTool/Shift.pl +1 -2
- package/bin/exiftool_files/lib/Image/ExifTool/SigmaRaw.pm +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/TagInfoXML.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +85 -8
- package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +148 -8
- package/bin/exiftool_files/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WriteExif.pl +26 -23
- package/bin/exiftool_files/lib/Image/ExifTool/WritePDF.pl +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WriteQuickTime.pl +15 -2
- package/bin/exiftool_files/lib/Image/ExifTool/WriteXMP.pl +4 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Writer.pl +77 -52
- package/bin/exiftool_files/lib/Image/ExifTool/XMP.pm +2 -1
- package/bin/exiftool_files/lib/Image/ExifTool/XMP2.pl +9 -0
- package/bin/exiftool_files/lib/Image/ExifTool/ZIP.pm +6 -6
- package/bin/exiftool_files/lib/Image/ExifTool.pm +204 -63
- package/bin/exiftool_files/lib/Image/ExifTool.pod +118 -94
- package/package.json +5 -5
|
@@ -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
|
|
15
|
+
They contain a total of 27565 tags, with 17308 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
|
|
@@ -376,6 +376,7 @@ for the official EXIF 2.32 specification.
|
|
|
376
376
|
0x0110 Model IFD0 string
|
|
377
377
|
0x0111 StripOffsets - no
|
|
378
378
|
OtherImageStart - no
|
|
379
|
+
PreviewJXLStart - no
|
|
379
380
|
StripOffsets - no
|
|
380
381
|
PreviewImageStart IFD0 int32u*
|
|
381
382
|
PreviewImageStart All int32u*
|
|
@@ -385,6 +386,7 @@ for the official EXIF 2.32 specification.
|
|
|
385
386
|
0x0116 RowsPerStrip IFD0 int32u!
|
|
386
387
|
0x0117 StripByteCounts - no
|
|
387
388
|
OtherImageLength - no
|
|
389
|
+
PreviewJXLLength - no
|
|
388
390
|
StripByteCounts - no
|
|
389
391
|
PreviewImageLength IFD0 int32u*
|
|
390
392
|
PreviewImageLength All int32u*
|
|
@@ -10115,6 +10117,7 @@ CameraInfo tags for the PowerShot G5 X Mark II.
|
|
|
10115
10117
|
Index1 Tag Name Writable
|
|
10116
10118
|
------ -------- --------
|
|
10117
10119
|
659 ShutterCount int32u
|
|
10120
|
+
2709 ShutterCount int32u
|
|
10118
10121
|
2849 DirectoryIndex int32u
|
|
10119
10122
|
2861 FileIndex int32u
|
|
10120
10123
|
|
|
@@ -12270,6 +12273,11 @@ below by a decimal appended to the tag ID (.0, .1 or .2).
|
|
|
12270
12273
|
0x20916 PurpleHSL yes
|
|
12271
12274
|
0x20917 MagentaHSL yes
|
|
12272
12275
|
0x20a00 GammaInfo CanonVRD GammaInfo
|
|
12276
|
+
0x20b10 DPRAWMicroadjustBackFront yes
|
|
12277
|
+
0x20b12 DPRAWMicroadjustStrength yes
|
|
12278
|
+
0x20b20 DPRAWBokehShift yes
|
|
12279
|
+
0x20b21 DPRAWBokehShiftArea yes
|
|
12280
|
+
0x20b30 DPRAWGhostingReductionArea yes
|
|
12273
12281
|
0x30101 CropAspectRatio yes
|
|
12274
12282
|
0x30102 CropAspectRatioCustom yes
|
|
12275
12283
|
0xf0100 CropInfo CanonVRD CropInfo
|
|
@@ -25405,10 +25413,13 @@ C2PA (Coalition for Content Provenance and Authenticity) CAI (Content
|
|
|
25405
25413
|
Authenticity Initiative) JUMBF (JPEG Universal Metadata Box Format) metdata
|
|
25406
25414
|
is currently extracted from JPEG, PNG, TIFF-based (eg. TIFF, DNG),
|
|
25407
25415
|
QuickTime-based (eg. MP4, MOV, HEIF, AVIF), RIFF-based (eg. WAV, AVI, WebP),
|
|
25408
|
-
GIF files and ID3v2 metadata. The suggested ExifTool
|
|
25409
|
-
for reading C2PA metadata are C<-jumbf:all -G3 -b -j
|
|
25410
|
-
metadata may be deleted from writable JPEG, PNG, WebP,
|
|
25411
|
-
QuickTime-based files by deleting the JUMBF group with
|
|
25416
|
+
PDF, SVG and GIF files, and ID3v2 metadata. The suggested ExifTool
|
|
25417
|
+
command-line arguments for reading C2PA metadata are C<-jumbf:all -G3 -b -j
|
|
25418
|
+
-u -struct>. This metadata may be deleted from writable JPEG, PNG, WebP,
|
|
25419
|
+
TIFF-based, and QuickTime-based files by deleting the JUMBF group with
|
|
25420
|
+
C<-jumbf:all=>. The C2PA JUMBF metadata may be extracted as a block via the
|
|
25421
|
+
JUMBF tag. See L<https://c2pa.org/specifications/> for the C2PA
|
|
25422
|
+
specification.
|
|
25412
25423
|
|
|
25413
25424
|
Tag ID Tag Name Writable
|
|
25414
25425
|
------ -------- --------
|
|
@@ -28532,6 +28543,7 @@ This is the PDF document catalog.
|
|
|
28532
28543
|
|
|
28533
28544
|
Tag ID Tag Name Writable
|
|
28534
28545
|
------ -------- --------
|
|
28546
|
+
'AF' AF PDF AF
|
|
28535
28547
|
'AcroForm' AcroForm PDF AcroForm
|
|
28536
28548
|
'Lang' Language no
|
|
28537
28549
|
'MarkInfo' MarkInfo PDF MarkInfo
|
|
@@ -28542,6 +28554,28 @@ This is the PDF document catalog.
|
|
|
28542
28554
|
'Perms' Perms PDF Perms
|
|
28543
28555
|
'Version' PDFVersion no
|
|
28544
28556
|
|
|
28557
|
+
=head3 PDF AF Tags
|
|
28558
|
+
|
|
28559
|
+
Processed only for C2PA information if AFRelationship is "/C2PA_Manifest".
|
|
28560
|
+
|
|
28561
|
+
Tag ID Tag Name Writable
|
|
28562
|
+
------ -------- --------
|
|
28563
|
+
'EF' EF PDF EF
|
|
28564
|
+
|
|
28565
|
+
=head3 PDF EF Tags
|
|
28566
|
+
|
|
28567
|
+
Tag ID Tag Name Writable
|
|
28568
|
+
------ -------- --------
|
|
28569
|
+
'F' F_ PDF F
|
|
28570
|
+
|
|
28571
|
+
=head3 PDF F Tags
|
|
28572
|
+
|
|
28573
|
+
C2PA JUMBF metadata extracted from "/C2PA_Manifest" file.
|
|
28574
|
+
|
|
28575
|
+
Tag ID Tag Name Writable
|
|
28576
|
+
------ -------- --------
|
|
28577
|
+
'_stream' JUMBF Jpeg2000
|
|
28578
|
+
|
|
28545
28579
|
=head3 PDF AcroForm Tags
|
|
28546
28580
|
|
|
28547
28581
|
Tag ID Tag Name Writable
|
|
@@ -29227,6 +29261,7 @@ for the official specification.
|
|
|
29227
29261
|
ThumbnailImage no
|
|
29228
29262
|
Free? no
|
|
29229
29263
|
'ftyp' FileType QuickTime FileType
|
|
29264
|
+
'gdat' GPSData QuickTime Stream
|
|
29230
29265
|
'gps0' GPSTrack QuickTime Stream
|
|
29231
29266
|
'gsen' GSensor QuickTime Stream
|
|
29232
29267
|
'junk' Junk? no
|
|
@@ -29238,6 +29273,7 @@ for the official specification.
|
|
|
29238
29273
|
'moof' MovieFragment QuickTime MovieFragment
|
|
29239
29274
|
'moov' Movie QuickTime Movie
|
|
29240
29275
|
'mpvd' MotionPhotoVideo yes
|
|
29276
|
+
'nbmt' NextbaseMeta QuickTime Stream
|
|
29241
29277
|
'pict' PreviewPICT no
|
|
29242
29278
|
'pnot' Preview QuickTime Preview
|
|
29243
29279
|
'prrt' ARDroneTelemetry no
|
|
@@ -29257,10 +29293,11 @@ for the official specification.
|
|
|
29257
29293
|
UUID-Flip QuickTime Flip
|
|
29258
29294
|
UUID-Canon2 Canon uuid2
|
|
29259
29295
|
SensorData QuickTime Tags360Fly
|
|
29296
|
+
SensorData no
|
|
29260
29297
|
JUMBF Jpeg2000
|
|
29261
29298
|
CBOR CBOR
|
|
29262
|
-
SensorData no
|
|
29263
29299
|
PreviewImage no
|
|
29300
|
+
ThumbnailImage no
|
|
29264
29301
|
UUID-Unknown? no
|
|
29265
29302
|
'wide' Wide? no
|
|
29266
29303
|
|
|
@@ -29269,7 +29306,7 @@ for the official specification.
|
|
|
29269
29306
|
The tags below are extracted from timed metadata in QuickTime and other
|
|
29270
29307
|
formats of video files when the ExtractEmbedded option is used. Although
|
|
29271
29308
|
most of these tags are combined into the single table below, ExifTool
|
|
29272
|
-
currently reads
|
|
29309
|
+
currently reads 71 different formats of timed GPS metadata from video files.
|
|
29273
29310
|
|
|
29274
29311
|
Tag Name Writable
|
|
29275
29312
|
-------- --------
|
|
@@ -29278,6 +29315,7 @@ currently reads 68 different formats of timed GPS metadata from video files.
|
|
|
29278
29315
|
AngularVelocity no
|
|
29279
29316
|
CTMD Canon CTMD
|
|
29280
29317
|
CameraDateTime no
|
|
29318
|
+
CameraModel no
|
|
29281
29319
|
Car no
|
|
29282
29320
|
DateTimeOriginal no
|
|
29283
29321
|
Distance no
|
|
@@ -29481,8 +29519,10 @@ changed via the config file.
|
|
|
29481
29519
|
'com.android.version' AndroidVersion yes
|
|
29482
29520
|
'com.apple.photos.captureMode' CaptureMode yes
|
|
29483
29521
|
'comment' Comment yes
|
|
29522
|
+
'compatible_brands' CompatibleBrands yes/
|
|
29484
29523
|
'content.identifier' ContentIdentifier yes
|
|
29485
29524
|
'copyright' Copyright yes
|
|
29525
|
+
'creation_time' CreationTime yes/
|
|
29486
29526
|
'creationdate' CreationDate yes
|
|
29487
29527
|
'description' Description yes
|
|
29488
29528
|
'detected-face' FaceInfo QuickTime FaceInfo
|
|
@@ -29514,7 +29554,9 @@ changed via the config file.
|
|
|
29514
29554
|
'location.name' LocationName yes
|
|
29515
29555
|
'location.note' LocationNote yes
|
|
29516
29556
|
'location.role' LocationRole yes
|
|
29557
|
+
'major_brand' MajorBrand yes/
|
|
29517
29558
|
'make' Make yes
|
|
29559
|
+
'minor_version' MinorVersion yes/
|
|
29518
29560
|
'model' Model yes
|
|
29519
29561
|
'player.movie.audio.balance' Balance yes
|
|
29520
29562
|
'player.movie.audio.bass' Bass yes
|
|
@@ -30507,12 +30549,15 @@ the config file.
|
|
|
30507
30549
|
'cvru' CoverURI string
|
|
30508
30550
|
'date' DateTimeOriginal string
|
|
30509
30551
|
'dscp' Description string/
|
|
30552
|
+
'finm' OriginalFileName no
|
|
30510
30553
|
'gnre' Genre string/
|
|
30511
30554
|
'hinf' HintTrackInfo QuickTime HintTrackInfo
|
|
30512
30555
|
'hinv' HintVersion string
|
|
30513
30556
|
'hnti' HintInfo QuickTime HintInfo
|
|
30514
30557
|
'htcb' HTCBinary QuickTime HTCBinary
|
|
30515
30558
|
'icnu' IconURI string
|
|
30559
|
+
'infi' CameraInfo QuickTime Nextbase
|
|
30560
|
+
'info' FirmwareVersion string
|
|
30516
30561
|
'infu' InfoURL string
|
|
30517
30562
|
'kgtt' TrackType string
|
|
30518
30563
|
'kywd' Keywords no
|
|
@@ -30544,9 +30589,11 @@ the config file.
|
|
|
30544
30589
|
ThumbnailImage string
|
|
30545
30590
|
ThumbnailPNG string
|
|
30546
30591
|
UnknownThumbnail string
|
|
30592
|
+
'time' TimeStamp no
|
|
30547
30593
|
'titl' Title string/
|
|
30548
30594
|
'urat' UserRating undef/
|
|
30549
30595
|
'uuid' GarminSoftware string
|
|
30596
|
+
GarminModel no
|
|
30550
30597
|
UUID-Unknown? no
|
|
30551
30598
|
'vndr' Vendor string
|
|
30552
30599
|
'vrot' AccelerometerData no
|
|
@@ -30661,6 +30708,83 @@ Tags found in TomTom Bandit Action Cam MP4 videos.
|
|
|
30661
30708
|
------ -------- --------
|
|
30662
30709
|
[no tags known]
|
|
30663
30710
|
|
|
30711
|
+
=head3 QuickTime Nextbase Tags
|
|
30712
|
+
|
|
30713
|
+
Tags found in 'infi' atom from some Nextbase videos. As well as these tags,
|
|
30714
|
+
other existing tags are also extracted. These tags are not currently
|
|
30715
|
+
writable but they may all be removed by deleting the Nextbase group.
|
|
30716
|
+
|
|
30717
|
+
Tag ID Tag Name Writable
|
|
30718
|
+
------ -------- --------
|
|
30719
|
+
'2nd Cam' SecondCam no
|
|
30720
|
+
'Alerts' Alerts no
|
|
30721
|
+
'Alexa' Alexa no
|
|
30722
|
+
'Alexa - Paired Device Name'
|
|
30723
|
+
Alexa-PairedDeviceName no
|
|
30724
|
+
'Alexa - Pairing' Alexa-Pairing no
|
|
30725
|
+
'Alexa - Privacy Mode' Alexa-PrivacyMode no
|
|
30726
|
+
'Alexa - Wake Word Language'
|
|
30727
|
+
Alexa-WakeWordLanguage no
|
|
30728
|
+
'Audio' Audio no
|
|
30729
|
+
'Auto Power Off' AutoPowerOff no
|
|
30730
|
+
'Battery Status' BatteryStatus no
|
|
30731
|
+
'Bluetooth MAC Address' BluetoothMACAddress no
|
|
30732
|
+
'Bluetooth Name' BluetoothName no
|
|
30733
|
+
'Country' Country no
|
|
30734
|
+
'Default Settings' DefaultSettings no
|
|
30735
|
+
'Device Sounds' DeviceSounds no
|
|
30736
|
+
'Dual Files' DualFiles no
|
|
30737
|
+
'Emergency SOS' EmergencySOS no
|
|
30738
|
+
'Exposure' Exposure no
|
|
30739
|
+
'Extreme Weather Mode' ExtremeWeatherMode no
|
|
30740
|
+
'FCC-ID' FCC-ID no
|
|
30741
|
+
'Firmware' Firmware no
|
|
30742
|
+
'Firmware Version' FirmwareVersion no
|
|
30743
|
+
'Format SD Card' FormatSDCard no
|
|
30744
|
+
'G Sensor' GSensor no
|
|
30745
|
+
'GPS Stamp' GPSStamp no
|
|
30746
|
+
'Image Stabilisation' ImageStabilisation no
|
|
30747
|
+
'Keep User Settings' KeepUserSettings no
|
|
30748
|
+
'Language' Language no
|
|
30749
|
+
'Linux' Linux no
|
|
30750
|
+
'Model' Model no
|
|
30751
|
+
'Model Stamp' ModelStamp no
|
|
30752
|
+
'MyNextbase - Paired Device Name'
|
|
30753
|
+
MyNextbase-PairedDeviceName no
|
|
30754
|
+
'MyNextbase - Pairing' MyNextbase-Pairing no
|
|
30755
|
+
'NBCD' NBCD no
|
|
30756
|
+
'Number / License Plate' NumberLicensePlate no
|
|
30757
|
+
'Parking Mode' ParkingMode no
|
|
30758
|
+
'RTOS' RTOS no
|
|
30759
|
+
'Recording History' RecordingHistory no
|
|
30760
|
+
'Resolution' Resolution no
|
|
30761
|
+
'Reversing Camera' ReversingCamera no
|
|
30762
|
+
'SD Card Class' SDCardClass no
|
|
30763
|
+
'SD Card Format' SDCardFormat no
|
|
30764
|
+
'SD Card Manf Date' SDCardManfDate no
|
|
30765
|
+
'SD Card Manf ID' SDCardManfID no
|
|
30766
|
+
'SD Card Model No' SDCardModelNo no
|
|
30767
|
+
'SD Card OEM ID' SDCardOEMID no
|
|
30768
|
+
'SD Card Serial No' SDCardSerialNo no
|
|
30769
|
+
'SD Card Size' SDCardSize no
|
|
30770
|
+
'SD Card Type' SDCardType no
|
|
30771
|
+
'SD Card Used Space' SDCardUsedSpace no
|
|
30772
|
+
'Screen Dimming' ScreenDimming no
|
|
30773
|
+
'Screen Saver' ScreenSaver no
|
|
30774
|
+
'Serial No' SerialNumber no
|
|
30775
|
+
'Speed Stamp' SpeedStamp no
|
|
30776
|
+
'Speed Units' SpeedUnits no
|
|
30777
|
+
'System Info' SystemInfo no
|
|
30778
|
+
'Time & Date' TimeAndDate no
|
|
30779
|
+
'Time Lapse' TimeLapse no
|
|
30780
|
+
'Time Stamp' VideoTimeStamp no
|
|
30781
|
+
'Time Zone / DST' TimeZoneDST no
|
|
30782
|
+
'Video Length' VideoLength no
|
|
30783
|
+
'Wi-Fi MAC Address' Wi-FiMACAddress no
|
|
30784
|
+
'Wi-Fi Password' Wi-FiPassword no
|
|
30785
|
+
'Wi-Fi SSID' Wi-FiSSID no
|
|
30786
|
+
'what3words' What3Words no
|
|
30787
|
+
|
|
30664
30788
|
=head3 QuickTime Video Tags
|
|
30665
30789
|
|
|
30666
30790
|
Index1 Tag Name Writable
|
|
@@ -39333,7 +39457,7 @@ these files directly.
|
|
|
39333
39457
|
XAttrLastUsedDate no
|
|
39334
39458
|
XAttrMDItemDownloadedDate no
|
|
39335
39459
|
XAttrMDItemFinderComment no
|
|
39336
|
-
XAttrMDItemWhereFroms
|
|
39460
|
+
XAttrMDItemWhereFroms yes!
|
|
39337
39461
|
XAttrMDLabel no
|
|
39338
39462
|
XAttrQuarantine yes!
|
|
39339
39463
|
XAttrResourceFork no
|
|
@@ -39531,6 +39655,16 @@ FileName.
|
|
|
39531
39655
|
FileTypeExtension File no
|
|
39532
39656
|
FileUserID System yes!
|
|
39533
39657
|
ForceWrite - yes
|
|
39658
|
+
Geolocate - yes
|
|
39659
|
+
GeolocationBearing ExifTool no
|
|
39660
|
+
GeolocationCity ExifTool no
|
|
39661
|
+
GeolocationCountry ExifTool no
|
|
39662
|
+
GeolocationCountryCode ExifTool no
|
|
39663
|
+
GeolocationDistance ExifTool no
|
|
39664
|
+
GeolocationPopulation ExifTool no
|
|
39665
|
+
GeolocationPosition ExifTool no
|
|
39666
|
+
GeolocationRegion ExifTool no
|
|
39667
|
+
GeolocationTimeZone ExifTool no
|
|
39534
39668
|
Geosync - yes
|
|
39535
39669
|
Geotag - yes
|
|
39536
39670
|
Geotime - yes
|
|
@@ -39544,6 +39678,7 @@ FileName.
|
|
|
39544
39678
|
JPEGDigest File no
|
|
39545
39679
|
JPEGImageLength File no
|
|
39546
39680
|
JPEGQualityEstimate File no
|
|
39681
|
+
JUMBF JUMBF no
|
|
39547
39682
|
MIMEType File no
|
|
39548
39683
|
MaxVal File no
|
|
39549
39684
|
NewGUID ExifTool no
|
|
@@ -39552,6 +39687,7 @@ FileName.
|
|
|
39552
39687
|
OtherImage File no
|
|
39553
39688
|
PageCount File no
|
|
39554
39689
|
PreviewImage File yes
|
|
39690
|
+
PreviewJXL File no
|
|
39555
39691
|
PreviewPDF File no
|
|
39556
39692
|
PreviewPNG File no
|
|
39557
39693
|
PreviewTIFF File no
|
|
@@ -39815,6 +39951,10 @@ values, may created via the ExifTool configuration file.
|
|
|
39815
39951
|
PreviewImage ScreenNail no
|
|
39816
39952
|
PreviewImageSize PreviewImageWidth no
|
|
39817
39953
|
PreviewImageHeight
|
|
39954
|
+
PreviewJXL PreviewJXLStart no
|
|
39955
|
+
PreviewJXLLength
|
|
39956
|
+
PreviewJXLStart (1)
|
|
39957
|
+
PreviewJXLLength (1)
|
|
39818
39958
|
RedBalance WB_RGGBLevels no
|
|
39819
39959
|
WB_RGBGLevels
|
|
39820
39960
|
WB_RBGGLevels
|
|
@@ -128,7 +128,7 @@ sub SaveMakerNotes($)
|
|
|
128
128
|
delete $$et{MAKER_NOTE_INFO};
|
|
129
129
|
my $dirEntries = $makerInfo->{Entries};
|
|
130
130
|
my $numEntries = scalar(keys %$dirEntries);
|
|
131
|
-
my $fixup =
|
|
131
|
+
my $fixup = Image::ExifTool::Fixup->new;
|
|
132
132
|
return unless $numEntries;
|
|
133
133
|
# build the MakerNotes directory
|
|
134
134
|
my $makerNotes = Set16u($numEntries);
|
|
@@ -171,9 +171,9 @@ sub RebuildMakerNotes($$$)
|
|
|
171
171
|
my $saveOrder = GetByteOrder();
|
|
172
172
|
my $loc = Image::ExifTool::MakerNotes::LocateIFD($et,\%subdirInfo);
|
|
173
173
|
if (defined $loc) {
|
|
174
|
-
my $makerFixup = $subdirInfo{Fixup} =
|
|
174
|
+
my $makerFixup = $subdirInfo{Fixup} = Image::ExifTool::Fixup->new;
|
|
175
175
|
# create new exiftool object to rewrite the directory without changing it
|
|
176
|
-
my $newTool =
|
|
176
|
+
my $newTool = Image::ExifTool->new;
|
|
177
177
|
$newTool->Options(
|
|
178
178
|
IgnoreMinorErrors => $$et{OPTIONS}{IgnoreMinorErrors},
|
|
179
179
|
FixBase => $$et{OPTIONS}{FixBase},
|
|
@@ -565,7 +565,7 @@ sub WriteExif($$$)
|
|
|
565
565
|
my $firstBase = $base;
|
|
566
566
|
my $raf = $$dirInfo{RAF};
|
|
567
567
|
my $dirName = $$dirInfo{DirName} || 'unknown';
|
|
568
|
-
my $fixup = $$dirInfo{Fixup} ||
|
|
568
|
+
my $fixup = $$dirInfo{Fixup} || Image::ExifTool::Fixup->new;
|
|
569
569
|
my $imageDataFlag = $$dirInfo{ImageData} || '';
|
|
570
570
|
my $verbose = $et->Options('Verbose');
|
|
571
571
|
my $out = $et->Options('TextOut');
|
|
@@ -745,7 +745,7 @@ sub WriteExif($$$)
|
|
|
745
745
|
my $valBuff = ''; # buffer for value data
|
|
746
746
|
my @valFixups; # list of fixups for offsets in valBuff
|
|
747
747
|
# fixup for offsets in dirBuff
|
|
748
|
-
my $dirFixup =
|
|
748
|
+
my $dirFixup = Image::ExifTool::Fixup->new;
|
|
749
749
|
my $entryBasedFixup;
|
|
750
750
|
my $lastTagID = -1;
|
|
751
751
|
my ($oldInfo, $oldFormat, $oldFormName, $oldCount, $oldSize, $oldValue, $oldImageData);
|
|
@@ -896,7 +896,7 @@ Entry: for (;;) {
|
|
|
896
896
|
TagInfo => $oldInfo || $tmpInfo,
|
|
897
897
|
Offset => $base + $valuePtr + $dataPos,
|
|
898
898
|
Size => $oldSize,
|
|
899
|
-
Fixup =>
|
|
899
|
+
Fixup => Image::ExifTool::Fixup->new,
|
|
900
900
|
},
|
|
901
901
|
$invalidPreview = 2;
|
|
902
902
|
# remove SubDirectory to prevent processing (for now)
|
|
@@ -1348,7 +1348,7 @@ NoOverwrite: next if $isNew > 0;
|
|
|
1348
1348
|
# create empty source directory
|
|
1349
1349
|
my %sourceDir = (
|
|
1350
1350
|
Parent => $dirName,
|
|
1351
|
-
Fixup =>
|
|
1351
|
+
Fixup => Image::ExifTool::Fixup->new,
|
|
1352
1352
|
);
|
|
1353
1353
|
$sourceDir{DirName} = $$newInfo{Groups}{1} if $$newInfo{SubIFD};
|
|
1354
1354
|
$newValue = $et->WriteDirectory(\%sourceDir, $subTable);
|
|
@@ -1509,7 +1509,7 @@ NoOverwrite: next if $isNew > 0;
|
|
|
1509
1509
|
}
|
|
1510
1510
|
if (defined $loc) {
|
|
1511
1511
|
# we need fixup data for this subdirectory
|
|
1512
|
-
$subdirInfo{Fixup} =
|
|
1512
|
+
$subdirInfo{Fixup} = Image::ExifTool::Fixup->new;
|
|
1513
1513
|
# rewrite maker notes
|
|
1514
1514
|
my $changed = $$et{CHANGED};
|
|
1515
1515
|
$subdir = $et->WriteDirectory(\%subdirInfo, $subTable, $writeProc);
|
|
@@ -1673,7 +1673,7 @@ NoOverwrite: next if $isNew > 0;
|
|
|
1673
1673
|
Name => $$newInfo{Name},
|
|
1674
1674
|
TagInfo => $newInfo,
|
|
1675
1675
|
Parent => $dirName,
|
|
1676
|
-
Fixup =>
|
|
1676
|
+
Fixup => Image::ExifTool::Fixup->new,
|
|
1677
1677
|
RAF => $raf,
|
|
1678
1678
|
Subdir => $subdir,
|
|
1679
1679
|
# set ImageData only for 1st level SubIFD's
|
|
@@ -1782,7 +1782,7 @@ NoOverwrite: next if $isNew > 0;
|
|
|
1782
1782
|
#### eval Base ($start,$base)
|
|
1783
1783
|
$subdirBase += eval $$subdir{Base};
|
|
1784
1784
|
}
|
|
1785
|
-
my $subFixup =
|
|
1785
|
+
my $subFixup = Image::ExifTool::Fixup->new;
|
|
1786
1786
|
my %subdirInfo = (
|
|
1787
1787
|
Base => $subdirBase,
|
|
1788
1788
|
DataPt => $valueDataPt,
|
|
@@ -1995,7 +1995,7 @@ NoOverwrite: next if $isNew > 0;
|
|
|
1995
1995
|
# hold onto the PreviewImage until we can determine if it fits
|
|
1996
1996
|
$$et{PREVIEW_INFO} or $$et{PREVIEW_INFO} = {
|
|
1997
1997
|
Data => $$newValuePt,
|
|
1998
|
-
Fixup =>
|
|
1998
|
+
Fixup => Image::ExifTool::Fixup->new,
|
|
1999
1999
|
};
|
|
2000
2000
|
$$et{PREVIEW_INFO}{ChangeBase} = 1 if $$newInfo{ChangeBase};
|
|
2001
2001
|
if ($$newInfo{IsOffset} and $$newInfo{IsOffset} eq '2') {
|
|
@@ -2017,7 +2017,7 @@ NoOverwrite: next if $isNew > 0;
|
|
|
2017
2017
|
$valBuff .= $$newValuePt; # add value data to buffer
|
|
2018
2018
|
# must save a fixup pointer for every pointer in the directory
|
|
2019
2019
|
if ($entryBased) {
|
|
2020
|
-
$entryBasedFixup or $entryBasedFixup =
|
|
2020
|
+
$entryBasedFixup or $entryBasedFixup = Image::ExifTool::Fixup->new;
|
|
2021
2021
|
$entryBasedFixup->AddFixup(length($dirBuff) + 8, $dataTag);
|
|
2022
2022
|
} else {
|
|
2023
2023
|
$dirFixup->AddFixup(length($dirBuff) + 8, $dataTag);
|
|
@@ -2277,14 +2277,17 @@ NoOverwrite: next if $isNew > 0;
|
|
|
2277
2277
|
$$offsetInfo{0x117} and $$offsetInfo{0x145} and
|
|
2278
2278
|
$$offsetInfo{0x111}[2]==1) # (must be a single strip or the tile offsets could get out of sync)
|
|
2279
2279
|
{
|
|
2280
|
-
#
|
|
2281
|
-
|
|
2282
|
-
|
|
2283
|
-
|
|
2284
|
-
|
|
2285
|
-
|
|
2286
|
-
|
|
2287
|
-
|
|
2280
|
+
# check the start offsets to see if they are the same
|
|
2281
|
+
if ($$offsetInfo{0x111}[3][0] == $$offsetInfo{0x144}[3][0]) {
|
|
2282
|
+
# some Sony ARW images contain double-referenced raw data stored as both strips
|
|
2283
|
+
# and tiles. Copy the data using only the strip tags, but store the TileOffets
|
|
2284
|
+
# information for updating later (see PanasonicRaw:PatchRawDataOffset for a
|
|
2285
|
+
# description of offsetInfo elements)
|
|
2286
|
+
$$offsetInfo{0x111}[5] = $$offsetInfo{0x144}; # hack to save TileOffsets
|
|
2287
|
+
# delete tile information from offsetInfo because we will copy as strips
|
|
2288
|
+
delete $$offsetInfo{0x144};
|
|
2289
|
+
delete $$offsetInfo{0x145};
|
|
2290
|
+
}
|
|
2288
2291
|
} else {
|
|
2289
2292
|
$et->Error("TIFF $dirName contains both strip and tile data");
|
|
2290
2293
|
}
|
|
@@ -2451,7 +2454,7 @@ NoOverwrite: next if $isNew > 0;
|
|
|
2451
2454
|
$newOffset += $blockSize; # data comes after other deferred data
|
|
2452
2455
|
# create fixup for SubIFD ImageData
|
|
2453
2456
|
if ($imageDataFlag eq 'SubIFD' and not $subIfdDataFixup) {
|
|
2454
|
-
$subIfdDataFixup =
|
|
2457
|
+
$subIfdDataFixup = Image::ExifTool::Fixup->new;
|
|
2455
2458
|
$imageData[-1][4] = $subIfdDataFixup;
|
|
2456
2459
|
}
|
|
2457
2460
|
$size += $pad; # account for pad byte if necessary
|
|
@@ -2522,7 +2525,7 @@ NoOverwrite: next if $isNew > 0;
|
|
|
2522
2525
|
# hold onto the PreviewImage until we can determine if it fits
|
|
2523
2526
|
$$et{PREVIEW_INFO} or $$et{PREVIEW_INFO} = {
|
|
2524
2527
|
Data => $buff,
|
|
2525
|
-
Fixup =>
|
|
2528
|
+
Fixup => Image::ExifTool::Fixup->new,
|
|
2526
2529
|
};
|
|
2527
2530
|
if ($$tagInfo{IsOffset} and $$tagInfo{IsOffset} eq '2') {
|
|
2528
2531
|
$$et{PREVIEW_INFO}{NoBaseShift} = 1;
|
|
@@ -2603,7 +2606,7 @@ NoOverwrite: next if $isNew > 0;
|
|
|
2603
2606
|
$fixup->AddFixup($entry + 8);
|
|
2604
2607
|
# create special fixup for SubIFD data
|
|
2605
2608
|
if ($imageDataFlag eq 'SubIFD') {
|
|
2606
|
-
my $subIfdDataFixup =
|
|
2609
|
+
my $subIfdDataFixup = Image::ExifTool::Fixup->new;
|
|
2607
2610
|
$subIfdDataFixup->AddFixup($entry + 8);
|
|
2608
2611
|
# save fixup in imageData list
|
|
2609
2612
|
$$blockInfo[4] = $subIfdDataFixup;
|
|
@@ -2668,7 +2671,7 @@ NoOverwrite: next if $isNew > 0;
|
|
|
2668
2671
|
} else {
|
|
2669
2672
|
# Doesn't fit, or we still don't know, so save fixup information
|
|
2670
2673
|
# and put the preview at the end of the file
|
|
2671
|
-
$$previewInfo{Fixup} or $$previewInfo{Fixup} =
|
|
2674
|
+
$$previewInfo{Fixup} or $$previewInfo{Fixup} = Image::ExifTool::Fixup->new;
|
|
2672
2675
|
$$previewInfo{Fixup}->AddFixup($fixup);
|
|
2673
2676
|
}
|
|
2674
2677
|
} elsif (defined $newData and $deleteAll) {
|
|
@@ -290,7 +290,7 @@ sub WritePDF($$)
|
|
|
290
290
|
$raf->Seek($pos, 0);
|
|
291
291
|
|
|
292
292
|
# create a new ExifTool object and use it to read PDF and XMP information
|
|
293
|
-
my $newTool =
|
|
293
|
+
my $newTool = Image::ExifTool->new;
|
|
294
294
|
$newTool->Options(List => 1);
|
|
295
295
|
$newTool->Options(Password => $et->Options('Password'));
|
|
296
296
|
$newTool->Options(NoPDFList => $et->Options('NoPDFList'));
|
|
@@ -356,6 +356,18 @@ sub SetVarInt($$)
|
|
|
356
356
|
return '';
|
|
357
357
|
}
|
|
358
358
|
|
|
359
|
+
#------------------------------------------------------------------------------
|
|
360
|
+
# Write Nextbase infi atom (ref PH)
|
|
361
|
+
# Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
|
|
362
|
+
# Returns: updated infi data
|
|
363
|
+
sub WriteNextbase($$$)
|
|
364
|
+
{
|
|
365
|
+
my ($et, $dirInfo, $tagTablePtr) = @_;
|
|
366
|
+
$et or return 1;
|
|
367
|
+
$$et{DEL_GROUP}{Nextbase} and ++$$et{CHANGED}, return '';
|
|
368
|
+
return ${$$dirInfo{DataPt}};
|
|
369
|
+
}
|
|
370
|
+
|
|
359
371
|
#------------------------------------------------------------------------------
|
|
360
372
|
# Write Meta Keys to add/delete entries as necessary ('mdta' handler) (ref PH)
|
|
361
373
|
# Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
|
|
@@ -785,7 +797,7 @@ sub WriteQuickTime($$$)
|
|
|
785
797
|
my ($rtnVal, $rtnErr) = $dataPt ? (undef, undef) : (1, 0);
|
|
786
798
|
|
|
787
799
|
if ($dataPt) {
|
|
788
|
-
$raf =
|
|
800
|
+
$raf = File::RandomAccess->new($dataPt);
|
|
789
801
|
} else {
|
|
790
802
|
return 0 unless $raf;
|
|
791
803
|
}
|
|
@@ -1619,7 +1631,8 @@ sub WriteQuickTime($$$)
|
|
|
1619
1631
|
if ($isEmpty) {
|
|
1620
1632
|
$et->VPrint(0,' Deleting ' . join('+', sort map { $emptyMeta{$_} } keys %boxPos)) if %boxPos;
|
|
1621
1633
|
$$outfile = '';
|
|
1622
|
-
|
|
1634
|
+
# (could report a file if editing nothing when it contained an empty Meta atom)
|
|
1635
|
+
# ++$$et{CHANGED};
|
|
1623
1636
|
}
|
|
1624
1637
|
if ($curPath eq 'MOV-Movie-Meta') {
|
|
1625
1638
|
delete $$addDirs{Keys}; # prevent creation of another Meta for Keys tags
|
|
@@ -1083,6 +1083,8 @@ sub WriteXMP($$;$)
|
|
|
1083
1083
|
# delete all structure (or pseudo-structure) elements
|
|
1084
1084
|
require 'Image/ExifTool/XMPStruct.pl';
|
|
1085
1085
|
($deleted, $added, $existed) = DeleteStruct($et, \%capture, \$path, $nvHash, \$changed);
|
|
1086
|
+
# don't add if it didn't exist and not IsCreating and Avoid
|
|
1087
|
+
undef $added if not $existed and not $$nvHash{IsCreating} and $$tagInfo{Avoid};
|
|
1086
1088
|
next unless $deleted or $added or $et->IsOverwriting($nvHash);
|
|
1087
1089
|
next if $existed and $$nvHash{CreateOnly};
|
|
1088
1090
|
} elsif ($cap) {
|
|
@@ -1262,8 +1264,8 @@ sub WriteXMP($$;$)
|
|
|
1262
1264
|
# check to see if we want to create this tag
|
|
1263
1265
|
# (create non-avoided tags in XMP data files by default)
|
|
1264
1266
|
my $isCreating = ($$nvHash{IsCreating} or (($isStruct or
|
|
1265
|
-
($preferred and not $$
|
|
1266
|
-
|
|
1267
|
+
($preferred and not defined $$nvHash{Shift})) and
|
|
1268
|
+
not $$tagInfo{Avoid} and not $$nvHash{EditOnly}));
|
|
1267
1269
|
|
|
1268
1270
|
# don't add new values unless...
|
|
1269
1271
|
# ...tag existed before and was deleted, or we added it to a list
|