exiftool-vendored.pl 13.26.0 → 13.30.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 (40) hide show
  1. package/README.md +9 -2
  2. package/bin/Changes +64 -1
  3. package/bin/META.json +3 -2
  4. package/bin/META.yml +3 -2
  5. package/bin/README +2 -2
  6. package/bin/arg_files/exif2xmp.args +2 -1
  7. package/bin/arg_files/xmp2exif.args +2 -1
  8. package/bin/config_files/pix4d.config +9 -8
  9. package/bin/exiftool +21 -16
  10. package/bin/lib/Image/ExifTool/BuildTagLookup.pm +1 -1
  11. package/bin/lib/Image/ExifTool/Canon.pm +4 -2
  12. package/bin/lib/Image/ExifTool/Exif.pm +3 -1
  13. package/bin/lib/Image/ExifTool/FujiFilm.pm +2 -1
  14. package/bin/lib/Image/ExifTool/GIMP.pm +1 -1
  15. package/bin/lib/Image/ExifTool/Geolocation.dat +0 -0
  16. package/bin/lib/Image/ExifTool/JPEG.pm +20 -8
  17. package/bin/lib/Image/ExifTool/LigoGPS.pm +16 -2
  18. package/bin/lib/Image/ExifTool/MPF.pm +5 -1
  19. package/bin/lib/Image/ExifTool/MakerNotes.pm +3 -3
  20. package/bin/lib/Image/ExifTool/Olympus.pm +6 -2
  21. package/bin/lib/Image/ExifTool/Panasonic.pm +9 -1
  22. package/bin/lib/Image/ExifTool/Parrot.pm +54 -7
  23. package/bin/lib/Image/ExifTool/Pentax.pm +151 -11
  24. package/bin/lib/Image/ExifTool/Plot.pm +36 -15
  25. package/bin/lib/Image/ExifTool/QuickTime.pm +73 -6
  26. package/bin/lib/Image/ExifTool/QuickTimeStream.pl +80 -14
  27. package/bin/lib/Image/ExifTool/README +12 -2
  28. package/bin/lib/Image/ExifTool/Sigma.pm +12 -4
  29. package/bin/lib/Image/ExifTool/Sony.pm +8 -3
  30. package/bin/lib/Image/ExifTool/TagLookup.pm +3745 -3729
  31. package/bin/lib/Image/ExifTool/TagNames.pod +147 -89
  32. package/bin/lib/Image/ExifTool/WriteExif.pl +2 -0
  33. package/bin/lib/Image/ExifTool/WriteQuickTime.pl +3 -0
  34. package/bin/lib/Image/ExifTool/Writer.pl +18 -7
  35. package/bin/lib/Image/ExifTool/XMP.pm +2 -2
  36. package/bin/lib/Image/ExifTool.pm +12 -7
  37. package/bin/lib/Image/ExifTool.pod +11 -11
  38. package/bin/perl-Image-ExifTool.spec +1 -1
  39. package/bin/windows_exiftool.txt +15 -9
  40. package/package.json +12 -9
@@ -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 28431 tags, with 17665 unique tag names.
15
+ They contain a total of 28450 tags, with 17673 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
@@ -154,7 +154,7 @@ L<https://www.w3.org/Graphics/JPEG/jfif3.pdf> for the JPEG specification.
154
154
  InfiRaySensor InfiRay Sensor
155
155
  SEAL XMP SEAL
156
156
  'APP10' Comment no
157
- HDRGainCurve no
157
+ HDRGainInfo -
158
158
  'APP11' JPEG-HDR JPEG HDR
159
159
  JUMBF Jpeg2000
160
160
  'APP12' PictureInfo APP12 PictureInfo
@@ -171,6 +171,7 @@ L<https://www.w3.org/Graphics/JPEG/jfif3.pdf> for the JPEG specification.
171
171
  FotoStation FotoStation
172
172
  PhotoMechanic PhotoMechanic
173
173
  MIE MIE
174
+ MPF MPF
174
175
  Samsung Samsung Trailer
175
176
  Vivo Trailer Vivo
176
177
  OnePlus Trailer OnePlus
@@ -277,6 +278,13 @@ Tags found in the XML metadata of the APP9 "Media Jukebox" segment.
277
278
  Tool_Name no
278
279
  Tool_Version no
279
280
 
281
+ =head3 JPEG HDRGainInfo Tags
282
+
283
+ Index1 Tag Name Writable
284
+ ------ -------- --------
285
+ 6 HDRGainCurveSize no
286
+ 10 HDRGainCurve no
287
+
280
288
  =head3 JPEG HDR Tags
281
289
 
282
290
  Information extracted from APP11 of a JPEG-HDR image.
@@ -19903,6 +19911,7 @@ These tags are used in Panasonic/Leica cameras.
19903
19911
  0x00d1 ISO int32u
19904
19912
  0x00d2 MonochromeGrainEffect int16u
19905
19913
  0x00d6 NoiseReductionStrength rational64s
19914
+ 0x00de AFAreaSize rational64u[2]
19906
19915
  0x00e4 LensTypeModel int16u
19907
19916
  0x00e8 MinimumISO int32u
19908
19917
  0x00e9 AFSubjectDetection int16u
@@ -20340,6 +20349,7 @@ These tags are used in Pentax/Asahi cameras.
20340
20349
  0x0230 FirmwareVersion string
20341
20350
  0x0231 ContrastDetectAFArea int16u[4]
20342
20351
  0x0235 CrossProcessParams undef[10]
20352
+ 0x0238 CAFPointInfo Pentax CAFPointInfo
20343
20353
  0x0239 LensInfoQ Pentax LensInfoQ
20344
20354
  0x023f Model string
20345
20355
  0x0243 PixelShiftInfo Pentax PixelShiftInfo
@@ -20666,6 +20676,9 @@ Flash information tags for the K10D, K20D and K200D.
20666
20676
  6 AFDefocus int8u
20667
20677
  7 AFIntegrationTime int8u
20668
20678
  11 AFPointsInFocus int8u
20679
+ 20 AFPointValues? no
20680
+ 298 AFPointsSelected int8u[41]~
20681
+ 399 AFPointsUnknown? int8u[41]~
20669
20682
  506 LiveView int8u
20670
20683
  509 AFHold int8u
20671
20684
 
@@ -20861,6 +20874,17 @@ valid for other models.
20861
20874
  83 WB_RGGBLevelsUnknown? int16u[4]
20862
20875
  92 WB_RGGBLevelsUserSelected int16u[4]
20863
20876
 
20877
+ =head3 Pentax CAFPointInfo Tags
20878
+
20879
+ Contrast-detect AF-point information for the K-01 and later models.
20880
+
20881
+ Index1 Tag Name Writable
20882
+ ------ -------- --------
20883
+ 1 NumCAFPoints no
20884
+ 1.1 CAFGridSize no
20885
+ 2 CAFPointsInFocus no
20886
+ 2.1 CAFPointsSelected no
20887
+
20864
20888
  =head3 Pentax LensInfoQ Tags
20865
20889
 
20866
20890
  More lens information stored by the Pentax Q.
@@ -20885,9 +20909,9 @@ AF point information written by the K-1.
20885
20909
  Index1 Tag Name Writable
20886
20910
  ------ -------- --------
20887
20911
  2 NumAFPoints int16u
20888
- 4 AFPointsInFocus int8u[9]~
20889
- 4.1 AFPointsSelected int8u[9]~
20890
- 4.2 AFPointsSpecial int8u[9]~
20912
+ 4 AFPointsInFocus no
20913
+ 4.1 AFPointsSelected no
20914
+ 4.2 AFPointsSpecial no
20891
20915
 
20892
20916
  =head3 Pentax TempInfo Tags
20893
20917
 
@@ -20902,6 +20926,7 @@ sensors are located in the camera.
20902
20926
  14 SensorTemperature2 int16s
20903
20927
  20 CameraTemperature4 int16s
20904
20928
  22 CameraTemperature5 int16s
20929
+ 42 SensorTemperature int16s
20905
20930
 
20906
20931
  =head3 Pentax UnknownInfo Tags
20907
20932
 
@@ -30310,6 +30335,7 @@ for the official QuickTime specification.
30310
30335
  'gdat' GPSData QuickTime Stream
30311
30336
  'gps0' GPSTrack QuickTime Stream
30312
30337
  'gsen' GSensor QuickTime Stream
30338
+ 'inst' Insta360Info QuickTime Stream
30313
30339
  'junk' Junk? no
30314
30340
  'mdat' MediaData? no
30315
30341
  'mdat-offset' MediaDataOffset no
@@ -30318,7 +30344,7 @@ for the official QuickTime specification.
30318
30344
  'meta' Meta QuickTime Meta
30319
30345
  'moof' MovieFragment QuickTime MovieFragment
30320
30346
  'moov' Movie QuickTime Movie
30321
- 'mpvd' MotionPhotoVideo yes
30347
+ 'mpvd' MotionPhotoVideo undef
30322
30348
  'nbmt' NextbaseMeta QuickTime Stream
30323
30349
  'pict' PreviewPICT no
30324
30350
  'pnot' Preview QuickTime Preview
@@ -30334,6 +30360,7 @@ for the official QuickTime specification.
30334
30360
  'udat' GPSLog no
30335
30361
  'udta' KenwoodData QuickTime Stream
30336
30362
  LigoJSON QuickTime Stream
30363
+ GKUData QuickTime Stream
30337
30364
  FLIRData FLIR UserData
30338
30365
  'uuid' XMP XMP
30339
30366
  UUID-PROF QuickTime Profile
@@ -30353,81 +30380,83 @@ for the official QuickTime specification.
30353
30380
  The tags below are extracted from timed metadata in QuickTime and other
30354
30381
  formats of video files when the ExtractEmbedded option is used. Although
30355
30382
  most of these tags are combined into the single table below, ExifTool
30356
- currently reads 103 different types of timed GPS metadata from video files.
30383
+ currently reads 107 different types of timed GPS metadata from video files.
30357
30384
 
30358
- Tag Name Writable
30359
- -------- --------
30360
- Accelerometer no
30361
- AccelerometerData no
30362
- AngularVelocity no
30363
- CTMD Canon CTMD
30364
- CameraDateTime no
30365
- CameraModel no
30366
- Car no
30367
- DJIDebug? DJI Protobuf
30368
- DJIMetadata DJI Protobuf
30369
- DateTimeOriginal no
30370
- DateTimeStamp no
30371
- Distance no
30372
- ExposureCompensation no
30373
- ExposureTime no
30374
- FNumber no
30375
- FrameNumber no
30376
- GPSAltitude no
30377
- GPSDOP no
30378
- GPSDateTime no
30379
- GPSLatitude no
30380
- GPSLatitude2 no
30381
- GPSLongitude no
30382
- GPSLongitude2 no
30383
- GPSSatellites no
30384
- GPSSpeed no
30385
- GPSSpeedRef no
30386
- GPSTimeStamp no
30387
- GPSTrack no
30388
- GPSTrackRef no
30389
- GSensor no
30390
- INSV QuickTime INSV_MakerNotes
30391
- ISO no
30392
- JpgFromRaw no
30393
- KiloCalories no
30394
- MagneticVariation no
30395
- PreviewImage no
30396
- PreviewInfo QuickTime PreviewInfo
30397
- RVMI_gReV QuickTime RVMI_gReV
30398
- RVMI_sReV QuickTime RVMI_sReV
30399
- RawGSensor no
30400
- SampleDateTime no
30401
- SampleDuration no
30402
- SampleTime no
30403
- Text no
30404
- TimeCode no
30405
- Unknown00? no
30406
- Unknown01? no
30407
- Unknown02? no
30408
- Unknown03? no
30409
- UserLabel no
30410
- VerticalSpeed no
30411
- VideoTimeStamp no
30412
- camm0 QuickTime camm0
30413
- camm1 QuickTime camm1
30414
- camm2 QuickTime camm2
30415
- camm3 QuickTime camm3
30416
- camm4 QuickTime camm4
30417
- camm5 QuickTime camm5
30418
- camm6 QuickTime camm6
30419
- camm7 QuickTime camm7
30420
- fdsc GoPro fdsc
30421
- gpmd_Kingslim QuickTime Stream
30422
- gpmd_Rove QuickTime Stream
30423
- gpmd_FMAS QuickTime Stream
30424
- gpmd_Wolfbox QuickTime Stream
30425
- gpmd_GoPro GoPro GPMF
30426
- marl GM marl
30427
- mebx QuickTime Keys
30428
- mett Parrot mett
30429
- rtmd Sony rtmd
30430
- tx3g QuickTime tx3g
30385
+ Tag ID Tag Name Writable
30386
+ ------ -------- --------
30387
+ 'Accelerometer' Accelerometer no
30388
+ 'AccelerometerData' AccelerometerData no
30389
+ 'AngularVelocity' AngularVelocity no
30390
+ 'CTMD' CTMD Canon CTMD
30391
+ 'CameraDateTime' CameraDateTime no
30392
+ 'CameraModel' CameraModel no
30393
+ 'Car' Car no
30394
+ 'DateTimeOriginal' DateTimeOriginal no
30395
+ 'DateTimeStamp' DateTimeStamp no
30396
+ 'Distance' Distance no
30397
+ 'ExposureCompensation' ExposureCompensation no
30398
+ 'ExposureTime' ExposureTime no
30399
+ 'FNumber' FNumber no
30400
+ 'FrameNumber' FrameNumber no
30401
+ 'GPSAltitude' GPSAltitude no
30402
+ 'GPSDOP' GPSDOP no
30403
+ 'GPSDateTime' GPSDateTime no
30404
+ 'GPSLatitude' GPSLatitude no
30405
+ 'GPSLatitude2' GPSLatitude2 no
30406
+ 'GPSLongitude' GPSLongitude no
30407
+ 'GPSLongitude2' GPSLongitude2 no
30408
+ 'GPSSatellites' GPSSatellites no
30409
+ 'GPSSpeed' GPSSpeed no
30410
+ 'GPSSpeedRef' GPSSpeedRef no
30411
+ 'GPSTimeStamp' GPSTimeStamp no
30412
+ 'GPSTrack' GPSTrack no
30413
+ 'GPSTrackRef' GPSTrackRef no
30414
+ 'GSensor' GSensor no
30415
+ 'INSV' INSV QuickTime INSV_MakerNotes
30416
+ 'ISO' ISO no
30417
+ 'JPEG' JpgFromRaw no
30418
+ 'KiloCalories' KiloCalories no
30419
+ 'MagneticVariation' MagneticVariation no
30420
+ 'RVMI' RVMI_gReV QuickTime RVMI_gReV
30421
+ RVMI_sReV QuickTime RVMI_sReV
30422
+ 'RawGSensor' RawGSensor no
30423
+ 'SampleDateTime' SampleDateTime no
30424
+ 'SampleDuration' SampleDuration no
30425
+ 'SampleTime' SampleTime no
30426
+ 'Text' Text no
30427
+ 'TimeCode' TimeCode no
30428
+ 'Unknown00' Unknown00? no
30429
+ 'Unknown01' Unknown01? no
30430
+ 'Unknown02' Unknown02? no
30431
+ 'Unknown03' Unknown03? no
30432
+ 'UserLabel' UserLabel no
30433
+ 'VerticalSpeed' VerticalSpeed no
30434
+ 'VideoTimeStamp' VideoTimeStamp no
30435
+ 'camm' camm0 QuickTime camm0
30436
+ camm1 QuickTime camm1
30437
+ camm2 QuickTime camm2
30438
+ camm3 QuickTime camm3
30439
+ camm4 QuickTime camm4
30440
+ camm5 QuickTime camm5
30441
+ camm6 QuickTime camm6
30442
+ camm7 QuickTime camm7
30443
+ 'dbgi' DJIDebug? DJI Protobuf
30444
+ 'djmd' DJIMetadata DJI Protobuf
30445
+ 'fdsc' fdsc GoPro fdsc
30446
+ 'gpmd' gpmd_Kingslim QuickTime Stream
30447
+ gpmd_Rove QuickTime Stream
30448
+ gpmd_FMAS QuickTime Stream
30449
+ gpmd_Wolfbox QuickTime Stream
30450
+ gpmd_GoPro GoPro GPMF
30451
+ 'marl' marl GM marl
30452
+ 'mebx' mebx QuickTime Keys
30453
+ 'mett' mett Parrot mett
30454
+ 'rtmd' rtmd Sony rtmd
30455
+ 'ssmd' RoveGPS QuickTime RoveGPS
30456
+ Accelerometer no
30457
+ PreviewImage no
30458
+ 'text' PreviewInfo QuickTime PreviewInfo
30459
+ 'tx3g' tx3g QuickTime tx3g
30431
30460
 
30432
30461
  =head3 QuickTime INSV_MakerNotes Tags
30433
30462
 
@@ -30438,14 +30467,6 @@ currently reads 103 different types of timed GPS metadata from video files.
30438
30467
  0x001a Firmware no
30439
30468
  0x002a Parameters no
30440
30469
 
30441
- =head3 QuickTime PreviewInfo Tags
30442
-
30443
- Preview stored by TomTom Bandit ActionCam.
30444
-
30445
- Index1 Tag Name Writable
30446
- ------ -------- --------
30447
- 8 PreviewImage no
30448
-
30449
30470
  =head3 QuickTime RVMI_gReV Tags
30450
30471
 
30451
30472
  GPS information extracted from the RVMI box of MOV videos.
@@ -30670,6 +30691,23 @@ VideoKeys family 1 gorup.
30670
30691
  ------ -------- --------
30671
30692
  'cits' FaceItem QuickTime Keys
30672
30693
 
30694
+ =head3 QuickTime RoveGPS Tags
30695
+
30696
+ Index1 Tag Name Writable
30697
+ ------ -------- --------
30698
+ 0 GPSLatitude no
30699
+ 8 GPSLongitude no
30700
+ 20 GPSSpeed no
30701
+ 22 GPSDateTime no
30702
+
30703
+ =head3 QuickTime PreviewInfo Tags
30704
+
30705
+ Preview stored by TomTom Bandit ActionCam.
30706
+
30707
+ Index1 Tag Name Writable
30708
+ ------ -------- --------
30709
+ 8 PreviewImage no
30710
+
30673
30711
  =head3 QuickTime tx3g Tags
30674
30712
 
30675
30713
  Tags extracted from the tx3g sbtl timed metadata of Yuneec and Autel drones,
@@ -31629,6 +31667,7 @@ the config file.
31629
31667
  'RMKN' RicohRMKN EXIF
31630
31668
  'RTHU' PreviewImage no
31631
31669
  'SDLN' PlayMode string
31670
+ 'SIGM' PreviewImage no
31632
31671
  'SNum' SerialNumber string/
31633
31672
  'SelO' PlaySelection int8u
31634
31673
  'TAGS' FujiFilmTags FujiFilm MOV
@@ -31692,6 +31731,7 @@ the config file.
31692
31731
  'mcvr' PreviewImage string
31693
31732
  'meta' Meta QuickTime Meta
31694
31733
  'modl' Model no
31734
+ 'nail' ThumbnailTIFF no
31695
31735
  'name' Name string
31696
31736
  'perf' Performer string/
31697
31737
  'pmcc' GarminSettings string
@@ -32760,9 +32800,11 @@ specification.
32760
32800
  'E2' ParrotFollowMe Parrot FollowMe
32761
32801
  'E3' ParrotAutomation Parrot Automation
32762
32802
  'application/arcore-accel' ARCoreAccel Parrot ARCoreAccel
32803
+ 'application/arcore-accel-0' ARCoreAccel0 Parrot ARCoreAccel0
32763
32804
  'application/arcore-custom-event'
32764
32805
  ARCoreCustom Parrot ARCoreCustom
32765
32806
  'application/arcore-gyro' ARCoreGyro Parrot ARCoreGyro
32807
+ 'application/arcore-gyro-0' ARCoreGyro0 Parrot ARCoreGyro0
32766
32808
  'application/arcore-video-0' ARCoreVideo Parrot ARCoreVideo
32767
32809
 
32768
32810
  =head3 Parrot V1 Tags
@@ -32900,6 +32942,14 @@ ARCore accelerometer data.
32900
32942
  4 AccelerometerUnknown? no
32901
32943
  5 Accelerometer no
32902
32944
 
32945
+ =head3 Parrot ARCoreAccel0 Tags
32946
+
32947
+ ARCore accelerometer data.
32948
+
32949
+ Index1 Tag Name Writable
32950
+ ------ -------- --------
32951
+ 9 Accelerometer no
32952
+
32903
32953
  =head3 Parrot ARCoreCustom Tags
32904
32954
 
32905
32955
  Index1 Tag Name Writable
@@ -32908,13 +32958,21 @@ ARCore accelerometer data.
32908
32958
 
32909
32959
  =head3 Parrot ARCoreGyro Tags
32910
32960
 
32911
- ARCore accelerometer data.
32961
+ ARCore gyro data.
32912
32962
 
32913
32963
  Index1 Tag Name Writable
32914
32964
  ------ -------- --------
32915
32965
  4 GyroscopeUnknown? no
32916
32966
  5 Gyroscope no
32917
32967
 
32968
+ =head3 Parrot ARCoreGyro0 Tags
32969
+
32970
+ ARCore gyro data.
32971
+
32972
+ Index1 Tag Name Writable
32973
+ ------ -------- --------
32974
+ 9 Gyroscope no
32975
+
32918
32976
  =head3 Parrot ARCoreVideo Tags
32919
32977
 
32920
32978
  Index1 Tag Name Writable
@@ -2434,6 +2434,8 @@ NoOverwrite: next if $isNew > 0;
2434
2434
  } else {
2435
2435
  my $fixedOffset = Get32u(\$newData, $offsets);
2436
2436
  my $padToFixedOffset = $fixedOffset - ($newOffset + $dpos);
2437
+ # account for blocks that come before this (Pansonic DC-S1RM2, forum17319)
2438
+ $padToFixedOffset -= $$_[1] + $$_[2] foreach @imageData;
2437
2439
  if ($padToFixedOffset < 0) {
2438
2440
  $et->Error('Metadata too large to fit before fixed-offset image data');
2439
2441
  } else {
@@ -1248,6 +1248,8 @@ ItemID2: foreach $id (reverse sort { $a <=> $b } keys %$items) {
1248
1248
  my $base = ($$dirInfo{Base} || 0) + $raf->Tell() - $size;
1249
1249
  my $dPos = 0;
1250
1250
  my $hdrLen = $start;
1251
+ # handle case where known trailer is the payload of a "DontRead" box (eg. 'inst')
1252
+ $trailer = $$trailer[3] if $$tagInfo{DontRead} and $trailer and $base == $$trailer[1];
1251
1253
  if ($$subdir{Base}) {
1252
1254
  my $localBase = eval $$subdir{Base};
1253
1255
  $dPos -= $localBase;
@@ -1729,6 +1731,7 @@ ItemID2: foreach $id (reverse sort { $a <=> $b } keys %$items) {
1729
1731
  # (note that $tag may be a binary Keys index here)
1730
1732
  foreach $tag (@addTags) {
1731
1733
  my $tagInfo = $$dirs{$tag} || $$newTags{$tag};
1734
+ next unless ref $tagInfo eq 'HASH'; # (shouldn't happen, but somehow there is forum17260)
1732
1735
  next if defined $$tagInfo{CanCreate} and not $$tagInfo{CanCreate};
1733
1736
  next if defined $$tagInfo{MediaType} and $$et{MediaType} ne $$tagInfo{MediaType};
1734
1737
  my $subdir = $$tagInfo{SubDirectory};
@@ -76,6 +76,8 @@ my %jpegMap = (
76
76
  MetaIFD => 'Meta',
77
77
  RMETA => 'APP5',
78
78
  SEAL => ['APP8','APP9'], # (note: add 'IFD0' if this is a possibility)
79
+ AROT => 'APP10',
80
+ JUMBF => 'APP11',
79
81
  Ducky => 'APP12',
80
82
  Photoshop => 'APP13',
81
83
  Adobe => 'APP14',
@@ -138,12 +140,12 @@ my %rawType = (
138
140
  # 2) any dependencies must be added to %excludeGroups
139
141
  my @delGroups = qw(
140
142
  Adobe AFCP APP0 APP1 APP2 APP3 APP4 APP5 APP6 APP7 APP8 APP9 APP10 APP11 APP12
141
- APP13 APP14 APP15 AudioKeys CanonVRD CIFF Ducky EXIF ExifIFD File FlashPix
143
+ APP13 APP14 APP15 AROT AudioKeys CanonVRD CIFF Ducky EXIF ExifIFD File FlashPix
142
144
  FotoStation GlobParamIFD GPS ICC_Profile IFD0 IFD1 Insta360 InteropIFD IPTC
143
- ItemList iTunes JFIF Jpeg2000 JUMBF Keys MakerNotes Meta MetaIFD Microsoft
144
- MIE MPF Nextbase NikonApp NikonCapture PDF PDF-update PhotoMechanic
145
- Photoshop PNG PNG-pHYs PrintIM QuickTime RMETA RSRC SEAL SubIFD Trailer
146
- UserData VideoKeys Vivo XML XML-* XMP XMP-*
145
+ ItemList iTunes JFIF Jpeg2000 JUMBF Keys MakerNotes Meta MetaIFD Microsoft MIE
146
+ MPF Nextbase NikonApp NikonCapture PDF PDF-update PhotoMechanic Photoshop PNG
147
+ PNG-pHYs PrintIM QuickTime RMETA RSRC SEAL SubIFD Trailer UserData VideoKeys
148
+ Vivo XML XML-* XMP XMP-*
147
149
  );
148
150
  # family 2 group names that we can delete
149
151
  my @delGroup2 = qw(
@@ -1604,6 +1606,8 @@ SET: foreach $set (@setList) {
1604
1606
  $$opts{Group} = $dstGrp if $dstGrp;
1605
1607
  my @rtnVals = $self->SetNewValue($dstTag, $val, %$opts);
1606
1608
  $rtnInfo{$dstTag} = $val if $rtnVals[0]; # tag was set successfully
1609
+ # return warning if any
1610
+ $rtnInfo{NextFreeTagKey(\%rtnInfo, 'Warning')} = $rtnVals[1] if $rtnVals[1];
1607
1611
  next;
1608
1612
  }
1609
1613
  foreach $tag (@{$setMatches{$set}}) {
@@ -3406,7 +3410,7 @@ sub InsertTagValues($$;$$$$)
3406
3410
  my $msg = $didExpr ? "Advanced formatting expression returned undef for '$g3${var}'" :
3407
3411
  "Tag '$g3${var}' not defined";
3408
3412
  if (ref $opt) {
3409
- $self->Warn($msg,2) or $val = '';
3413
+ $val = '' if $$self{OPTIONS}{IgnoreMinorErrors};
3410
3414
  } elsif ($opt) {
3411
3415
  no strict 'refs';
3412
3416
  ($opt eq 'Silent' or &$opt($self, $msg, 2)) and return $$self{FMT_EXPR} = undef;
@@ -5736,6 +5740,8 @@ sub WriteJPEG($$)
5736
5740
  $s =~ /^(Meta|META|Exif)\0\0/ and $dirName = 'Meta';
5737
5741
  } elsif ($marker == 0xe5) {
5738
5742
  $s =~ /^RMETA\0/ and $dirName = 'RMETA';
5743
+ } elsif ($marker == 0xea) {
5744
+ $s =~ /^AROT\0\0/ and $dirName = 'AROT';
5739
5745
  } elsif ($marker == 0xeb) {
5740
5746
  $s =~ /^JP/ and $dirName = 'JUMBF';
5741
5747
  } elsif ($marker == 0xec) {
@@ -6644,7 +6650,12 @@ sub WriteJPEG($$)
6644
6650
  $segType = 'SEAL';
6645
6651
  $$delGroup{SEAL} and $del = 1;
6646
6652
  }
6647
- } elsif ($marker == 0xeb) { # APP10 (JUMBF)
6653
+ } elsif ($marker == 0xea) { # APP10 (AROT)
6654
+ if ($$segDataPt =~ /^AROT\0\0/) {
6655
+ $segType = 'AROT';
6656
+ $$delGroup{AROT} and $del = 1;
6657
+ }
6658
+ } elsif ($marker == 0xeb) { # APP11 (JUMBF)
6648
6659
  if ($$segDataPt =~ /^JP/) {
6649
6660
  $segType = 'JUMBF';
6650
6661
  $$delGroup{JUMBF} and $del = 1;
@@ -50,7 +50,7 @@ use Image::ExifTool::Exif;
50
50
  use Image::ExifTool::GPS;
51
51
  require Exporter;
52
52
 
53
- $VERSION = '3.73';
53
+ $VERSION = '3.74';
54
54
  @ISA = qw(Exporter);
55
55
  @EXPORT_OK = qw(EscapeXML UnescapeXML);
56
56
 
@@ -3830,7 +3830,7 @@ sub ParseXMPElement($$$;$$$$)
3830
3830
  for (;;) {
3831
3831
  my ($attr, $quote);
3832
3832
  if (length($attrs) < 2000) { # (do it the easy way if attributes aren't stupid long)
3833
- last unless $attrs =~ /(\S+)\s*=\s*(['"])/g;
3833
+ last unless $attrs =~ /(\S+?)\s*=\s*(['"])/g;
3834
3834
  ($attr, $quote) = ($1, $2);
3835
3835
  } else {
3836
3836
  # 13.23 patch to avoid capturing tons of garbage if XMP is corrupted
@@ -27,9 +27,9 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
27
27
  %noWriteFile %magicNumber @langs $defaultLang %langName %charsetName
28
28
  %mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
29
29
  %jpegMarker %specialTags %fileTypeLookup $testLen $exeDir
30
- %static_vars $advFmtSelf);
30
+ %static_vars $advFmtSelf $configFile @configFiles $noConfig);
31
31
 
32
- $VERSION = '13.26';
32
+ $VERSION = '13.30';
33
33
  $RELEASE = '';
34
34
  @ISA = qw(Exporter);
35
35
  %EXPORT_TAGS = (
@@ -9213,10 +9213,14 @@ sub HandleTag($$$$;%)
9213
9213
  if ($start >= 0 and $start + $size <= $dLen) {
9214
9214
  $format = $$tagInfo{Format} || $$tagTablePtr{FORMAT};
9215
9215
  $format = $pfmt if not $format and $pfmt and $formatSize{$pfmt};
9216
- if ($format) {
9216
+ if (not $format) {
9217
+ $val = substr($$dataPt, $start, $size);
9218
+ } elsif (not $$tagInfo{ByteOrder}) {
9217
9219
  $val = ReadValue($dataPt, $start, $format, $$tagInfo{Count}, $size, \$rational);
9218
9220
  } else {
9219
- $val = substr($$dataPt, $start, $size);
9221
+ my $oldOrder = GetByteOrder(), SetByteOrder($$tagInfo{ByteOrder});
9222
+ $val = ReadValue($dataPt, $start, $format, $$tagInfo{Count}, $size, \$rational);
9223
+ SetByteOrder($oldOrder);
9220
9224
  }
9221
9225
  $binVal = substr($$dataPt, $start, $size) if $$self{OPTIONS}{SaveBin};
9222
9226
  } else {
@@ -10043,8 +10047,9 @@ sub ProcessBinaryData($$$)
10043
10047
  #..............................................................................
10044
10048
  # Load .ExifTool_config file from user's home directory
10045
10049
  # (use of noConfig is now deprecated, use configFile = '' instead)
10046
- until ($Image::ExifTool::noConfig) {
10047
- my $config = $Image::ExifTool::configFile;
10050
+ push @configFiles, $configFile if defined $configFile;
10051
+ until ($noConfig) {
10052
+ my $config = shift @configFiles;
10048
10053
  my $file;
10049
10054
  if (not defined $config) {
10050
10055
  $config = '.ExifTool_config';
@@ -10069,7 +10074,7 @@ until ($Image::ExifTool::noConfig) {
10069
10074
  shift @INC;
10070
10075
  # print warning (minus "Compilation failed" part)
10071
10076
  $@ and $_=$@, s/Compilation failed.*//s, warn $_;
10072
- last;
10077
+ last unless @configFiles;
10073
10078
  }
10074
10079
  # read user-defined lenses (may have been defined by script instead of config file)
10075
10080
  if (@Image::ExifTool::UserDefined::Lenses) {
@@ -2547,17 +2547,17 @@ Here is a complete list of groups for each of these families:
2547
2547
 
2548
2548
  =item Family 0 (Information Type):
2549
2549
 
2550
- AAC, AFCP, AIFF, APE, APP0, APP1, APP11, APP12, APP13, APP14, APP15, APP2,
2551
- APP3, APP4, APP5, APP6, APP7, APP8, APP9, ASF, Audible, Canon, CanonVRD,
2552
- Composite, DICOM, DjVu, DNG, Ducky, DV, EXE, EXIF, ExifTool, File, FITS,
2553
- FLAC, Flash, FlashPix, FLIR, Font, FotoStation, GeoTiff, GIF, GIMP, GM,
2554
- GoPro, H264, HTML, ICC_Profile, ID3, IPTC, ISO, ITC, JFIF, JPEG, Jpeg2000,
2555
- JSON, JUMBF, Leaf, LNK, Lytro, M2TS, MakerNotes, Matroska, Meta, MIE, MIFF,
2556
- MISB, MNG, MOI, MPC, MPEG, MPF, MXF, Ogg, OpenEXR, Opus, Palm, PanasonicRaw,
2557
- Parrot, PDF, PhotoCD, PhotoMechanic, Photoshop, PICT, PLIST, PNG,
2558
- PostScript, PrintIM, Protobuf, PSP, QuickTime, Radiance, RAF, Rawzor, Real,
2559
- Red, RIFF, RSRC, RTF, SigmaRaw, Sony, Stim, SVG, Theora, Torrent, Trailer,
2560
- VCard, Vorbis, WTV, XML, XMP, ZIP
2550
+ AAC, AFCP, AIFF, APE, APP0, APP1, APP10, APP11, APP12, APP13, APP14, APP15,
2551
+ APP2, APP3, APP4, APP5, APP6, APP7, APP8, APP9, ASF, Audible, Canon,
2552
+ CanonVRD, Composite, DICOM, DjVu, DNG, Ducky, DV, EXE, EXIF, ExifTool, File,
2553
+ FITS, FLAC, Flash, FlashPix, FLIR, Font, FotoStation, GeoTiff, GIF, GIMP,
2554
+ GM, GoPro, H264, HTML, ICC_Profile, ID3, IPTC, ISO, ITC, JFIF, JPEG,
2555
+ Jpeg2000, JSON, JUMBF, Leaf, LNK, Lytro, M2TS, MakerNotes, Matroska, Meta,
2556
+ MIE, MIFF, MISB, MNG, MOI, MPC, MPEG, MPF, MXF, Ogg, OpenEXR, Opus, Palm,
2557
+ PanasonicRaw, Parrot, PDF, PhotoCD, PhotoMechanic, Photoshop, PICT, PLIST,
2558
+ PNG, PostScript, PrintIM, Protobuf, PSP, QuickTime, Radiance, RAF, Rawzor,
2559
+ Real, Red, RIFF, RSRC, RTF, SigmaRaw, Sony, Stim, SVG, Theora, Torrent,
2560
+ Trailer, VCard, Vorbis, WTV, XML, XMP, ZIP
2561
2561
 
2562
2562
  =item Family 1 (Specific Location):
2563
2563
 
@@ -1,6 +1,6 @@
1
1
  Summary: perl module for image data extraction
2
2
  Name: perl-Image-ExifTool
3
- Version: 13.26
3
+ Version: 13.30
4
4
  Release: 1
5
5
  License: Artistic/GPL
6
6
  Group: Development/Libraries/Perl
@@ -1079,7 +1079,7 @@ OPTIONS
1079
1079
 
1080
1080
  produces output like this:
1081
1081
 
1082
- -- Generated by ExifTool 13.26 --
1082
+ -- Generated by ExifTool 13.30 --
1083
1083
  File: a.jpg - 2003:10:31 15:44:19
1084
1084
  (f/5.6, 1/60s, ISO 100)
1085
1085
  File: b.jpg - 2006:05:23 11:57:38
@@ -1583,9 +1583,10 @@ OPTIONS
1583
1583
  ignored. Use multiple -i options to ignore more than one directory
1584
1584
  name. A special *DIR* value of "SYMLINKS" may be specified to avoid
1585
1585
  recursing into directories which are symbolic links when the -r
1586
- option is used. As well, a value of "HIDDEN" may be used to ignore
1587
- files with names that start with a "." (ie. hidden files on Unix
1588
- systems) when scanning a directory.
1586
+ option is used (note this does not currently work under Windows).
1587
+ As well, a value of "HIDDEN" may be used to ignore files with names
1588
+ that start with a "." (ie. hidden files on Unix systems) when
1589
+ scanning a directory.
1589
1590
 
1590
1591
  -if[*NUM*] *EXPR*
1591
1592
  Specify a condition to be evaluated before processing each *FILE*.
@@ -1955,13 +1956,15 @@ OPTIONS
1955
1956
  -geotag option is equivalent to writing a value to the "Geotag"
1956
1957
  tag. The GPS position is interpolated from the track at a time
1957
1958
  specified by the value written to the "Geotime" tag. If "Geotime"
1958
- is not specified, the value is copied from "DateTimeOriginal#" (the
1959
- "#" is added to copy the unformatted value, avoiding potential
1960
- conflicts with the -d option). For example, the following two
1961
- commands are equivalent:
1959
+ is not specified, the value is copied from
1960
+ "SubSecDateTimeOriginal#" if it exists, otherwise
1961
+ "DateTimeOriginal#" (the "#" is added to copy the unformatted
1962
+ value, avoiding potential conflicts with the -d option). For
1963
+ example, the following two commands are equivalent if
1964
+ SubSecDateTimeOriginal exists in the file:
1962
1965
 
1963
1966
  exiftool -geotag trk.log image.jpg
1964
- exiftool -geotag trk.log "-Geotime<DateTimeOriginal#" image.jpg
1967
+ exiftool -geotag trk.log "-Geotime<SubSecDateTimeOriginal#" image.jpg
1965
1968
 
1966
1969
  If the "Geotime" value does not contain a time zone then the local
1967
1970
  system timezone is assumed. Writing "Geotime" causes the following
@@ -2160,6 +2163,9 @@ OPTIONS
2160
2163
  User-defined Composite tags may access tags from alternate files
2161
2164
  using the appropriate (case-sensitive) family 8 group name.
2162
2165
 
2166
+ The -fast option, if used, also applies to processing of the
2167
+ alternate files.
2168
+
2163
2169
  -list_dir
2164
2170
  List directories themselves instead of their contents. This option
2165
2171
  effectively causes directories to be treated as normal files when