exiftool_vendored 13.21.0 → 13.24.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 28526 tags, with 17595 unique tag names.
15
+ They contain a total of 28408 tags, with 17642 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
@@ -125,6 +125,7 @@ L<https://www.w3.org/Graphics/JPEG/jfif3.pdf> for the JPEG specification.
125
125
  PreviewImage no
126
126
  'APP4' Scalado Scalado
127
127
  FPXR FlashPix
128
+ QualcommDualCamera Qualcomm DualCamera
128
129
  InfiRayFactory InfiRay Factory
129
130
  ThermalParams DJI ThermalParams
130
131
  ThermalParams2 DJI ThermalParams2
@@ -11561,6 +11562,9 @@ for a given protocol should be considered to have the default value of 0.
11561
11562
  'dvtm_ac203_3-2-2-1' ISO no
11562
11563
  'dvtm_ac203_3-2-4-1' ShutterSpeed no
11563
11564
  'dvtm_ac203_3-2-6-1' ColorTemperature no
11565
+ 'dvtm_ac203_3-2-10-2' AccelerometerX no
11566
+ 'dvtm_ac203_3-2-10-3' AccelerometerY no
11567
+ 'dvtm_ac203_3-2-10-4' AccelerometerZ no
11564
11568
  'dvtm_ac203_3-4-2-1' GPSInfo DJI GPSInfo
11565
11569
  'dvtm_ac203_3-4-2-2' GPSAltitude no
11566
11570
  'dvtm_ac203_3-4-2-6-1' GPSDateTime no
@@ -11569,6 +11573,9 @@ for a given protocol should be considered to have the default value of 0.
11569
11573
  'dvtm_ac204_2-3' FrameInfo DJI FrameInfo
11570
11574
  'dvtm_ac204_3-2-4-1' ShutterSpeed no
11571
11575
  'dvtm_ac204_3-2-6-1' ColorTemperature no
11576
+ 'dvtm_ac204_3-2-10-2' AccelerometerX no
11577
+ 'dvtm_ac204_3-2-10-3' AccelerometerY no
11578
+ 'dvtm_ac204_3-2-10-4' AccelerometerZ no
11572
11579
  'dvtm_ac204_3-4-2-1' GPSInfo DJI GPSInfo
11573
11580
  'dvtm_ac204_3-4-2-2' GPSAltitude no
11574
11581
  'dvtm_ac204_3-4-2-6-1' GPSDateTime no
@@ -11577,6 +11584,7 @@ for a given protocol should be considered to have the default value of 0.
11577
11584
  'dvtm_pm320_2-2' FrameInfo DJI FrameInfo
11578
11585
  'dvtm_pm320_3-2-2-1' ISO no
11579
11586
  'dvtm_pm320_3-2-3-1' ShutterSpeed no
11587
+ 'dvtm_pm320_3-2-4-1' FNumber no
11580
11588
  'dvtm_pm320_3-2-6-1' DigitalZoom no
11581
11589
  'dvtm_pm320_3-3-3' DroneInfo DJI DroneInfo
11582
11590
  'dvtm_pm320_3-3-4-1' GPSInfo DJI GPSInfo
@@ -15146,7 +15154,7 @@ Tags written by some Nikon GPS-equipped cameras like the AW100.
15146
15154
 
15147
15155
  Index1 Tag Name Writable
15148
15156
  ------ -------- --------
15149
- 0 FirmwareVersion no
15157
+ 0 FirmwareVersion56 no
15150
15158
  4 BurstGroupID int16u
15151
15159
 
15152
15160
  =head3 Nikon AFInfo Tags
@@ -15803,80 +15811,17 @@ These tags are extracted from encrypted data in images from the Z8.
15803
15811
 
15804
15812
  Index1 Tag Name Writable
15805
15813
  ------ -------- --------
15806
- 16 MenuSettingsOffsetZ8 Nikon MenuSettingsZ8
15814
+ 16 MenuSettingsOffsetZ8v1 Nikon MenuSettingsZ8v1
15807
15815
  MenuSettingsOffsetZ8v2 -
15808
15816
  Nikon MenuSettingsZ8v2
15809
15817
 
15810
- =head3 Nikon MenuSettingsZ8 Tags
15818
+ =head3 Nikon MenuSettingsZ8v1 Tags
15811
15819
 
15812
- These tags are used by the Z8 firmware 1.00.
15820
+ These tags are used by the Z8 firmware 1.00 and 1.10.
15813
15821
 
15814
15822
  Index1 Tag Name Writable
15815
15823
  ------ -------- --------
15816
- 72 HighFrameRate int8u
15817
- 152 MultipleExposureMode int8u
15818
- 154 MultiExposureShots int8u
15819
- 184 IntervalDurationHours int32u
15820
- 188 IntervalDurationMinutes int32u
15821
- 192 IntervalDurationSeconds int32u
15822
- 200 Intervals int32u
15823
- 204 ShotsPerInterval int32u
15824
- 208 IntervalExposureSmoothing int8u
15825
- 210 IntervalPriority int8u
15826
- 244 FocusShiftNumberShots int8u
15827
- 248 FocusShiftStepWidth int8u
15828
- 252 FocusShiftInterval int8u~
15829
- 256 FocusShiftExposureLock? int8u
15830
- 286 PhotoShootingMenuBank int8u
15831
- 288 ExtendedMenuBanks int8u
15832
- 324 PhotoShootingMenuBankImageArea int8u
15833
- 338 AutoISO int8u
15834
- 340 ISOAutoHiLimit? int16u
15835
- 342 ISOAutoFlashLimit? int16u
15836
- 350 ISOAutoShutterTime no
15837
- 432 MovieVignetteControl? int8u
15838
- 434 DiffractionCompensation int8u
15839
- 436 FlickerReductionShooting int8u
15840
- 440 FlashControlMode int8u
15841
- 548 AFAreaMode int8u
15842
- 550 VRMode int8u
15843
- 554 BracketSet int8u
15844
- 556 BracketProgram int8u
15845
- 558 BracketIncrement int8u
15846
- 570 HDR int8u
15847
- 576 SecondarySlotFunction int8u
15848
- 582 HDRLevel int8u
15849
- 586 Slot2JpgSize? int8u
15850
- 592 DXCropAlert int8u
15851
- 594 SubjectDetection int8u
15852
- 596 DynamicAFAreaSize int8u
15853
- 618 ToneMap? int8u
15854
- 622 PortraitImpressionBalance int8u
15855
- 636 HighFrequencyFlickerReduction? int8u
15856
- 730 MovieImageArea? int8u & 0x01
15857
- 740 MovieType? int8u
15858
- 742 MovieISOAutoHiLimit? int16u
15859
- 744 MovieISOAutoControlManualMode? int8u
15860
- 746 MovieISOAutoManualMode? int16u
15861
- 820 MovieActiveD-Lighting? int8u
15862
- 822 MovieHighISONoiseReduction? int8u
15863
- 828 MovieFlickerReduction int8u
15864
- 830 MovieMeteringMode? int8u
15865
- 832 MovieFocusMode? int8u
15866
- 834 MovieAFAreaMode int8u
15867
- 836 MovieVRMode? int8u
15868
- 840 MovieElectronicVR? int8u
15869
- 842 MovieSoundRecording? int8u
15870
- 844 MicrophoneSensitivity? int8u
15871
- 846 MicrophoneAttenuator? int8u
15872
- 848 MicrophoneFrequencyResponse? int8u
15873
- 850 WindNoiseReduction? int8u
15874
- 882 MovieFrameSize? int8u
15875
- 884 MovieFrameRate? int8u
15876
- 886 MicrophoneJackPower? int8u
15877
- 887 MovieDXCropAlert? int8u
15878
- 888 MovieSubjectDetection? int8u
15879
- 896 MovieHighResZoom? int8u
15824
+ 0 MenuSettingsZ8 Nikon MenuSettingsZ8
15880
15825
  943 CustomSettingsZ8 NikonCustom SettingsZ8
15881
15826
  1684 TimeZone int8u
15882
15827
  1690 MonitorBrightness? int8u
@@ -15929,9 +15874,9 @@ These tags are used by the Z8 firmware 1.00.
15929
15874
  1890 USBPowerDelivery? int8u
15930
15875
  1899 SensorShield? int8u
15931
15876
 
15932
- =head3 Nikon MenuSettingsZ8v2 Tags
15877
+ =head3 Nikon MenuSettingsZ8 Tags
15933
15878
 
15934
- These tags are used by the Z8 firmware 1.00.
15879
+ These tags are common to all Z8 firmware versions.
15935
15880
 
15936
15881
  Index1 Tag Name Writable
15937
15882
  ------ -------- --------
@@ -15993,12 +15938,20 @@ These tags are used by the Z8 firmware 1.00.
15993
15938
  846 MicrophoneAttenuator? int8u
15994
15939
  848 MicrophoneFrequencyResponse? int8u
15995
15940
  850 WindNoiseReduction? int8u
15996
- 878 MovieFrameSize? int8u
15997
- 880 MovieFrameRate? int8u
15941
+ 882 MovieFrameSize? int8u
15942
+ 884 MovieFrameRate? int8u
15998
15943
  886 MicrophoneJackPower? int8u
15999
15944
  887 MovieDXCropAlert? int8u
16000
15945
  888 MovieSubjectDetection? int8u
16001
15946
  896 MovieHighResZoom? int8u
15947
+
15948
+ =head3 Nikon MenuSettingsZ8v2 Tags
15949
+
15950
+ These tags are used by the Z8 firmware 2.00 and 2.10.
15951
+
15952
+ Index1 Tag Name Writable
15953
+ ------ -------- --------
15954
+ 0 MenuSettingsZ8 Nikon MenuSettingsZ8
16002
15955
  943 CustomSettingsZ8 NikonCustom SettingsZ8
16003
15956
  1698 Language? int8u
16004
15957
  1700 TimeZone int8u
@@ -16092,8 +16045,6 @@ These tags are extracted from encrypted data in images from the Z9.
16092
16045
  MenuSettingsOffsetZ9v4 Nikon MenuSettingsZ9v3
16093
16046
  -
16094
16047
  Nikon MenuSettingsZ9v4
16095
- -
16096
- Nikon MenuSettingsZ9v5
16097
16048
 
16098
16049
  =head3 Nikon MenuSettingsZ9 Tags
16099
16050
 
@@ -16255,7 +16206,7 @@ These tags are used by the Z9 firmware 3.00.
16255
16206
 
16256
16207
  =head3 Nikon MenuSettingsZ9v4 Tags
16257
16208
 
16258
- These tags are used by the Z9 firmware 4.0.0 and 4.1.0.
16209
+ These tags are used by the Z9 firmware 4.00, 4.10, 5.00 and 5.10.
16259
16210
 
16260
16211
  Index1 Tag Name Writable
16261
16212
  ------ -------- --------
@@ -16395,148 +16346,6 @@ These tags are used by the Z9 firmware 4.0.0 and 4.1.0.
16395
16346
  2070 BracketButtonPlaybackMode int8u
16396
16347
  2072 FlashModeButtonPlaybackMode int8u
16397
16348
 
16398
- =head3 Nikon MenuSettingsZ9v5 Tags
16399
-
16400
- These tags are used by the Z9 firmware 5.1.
16401
-
16402
- Index1 Tag Name Writable
16403
- ------ -------- --------
16404
- 72 HighFrameRate int8u
16405
- 158 MultipleExposureMode int8u
16406
- 160 MultiExposureShots int8u
16407
- 208 Intervals int32u
16408
- 212 ShotsPerInterval int32u
16409
- 252 FocusShiftNumberShots int8u
16410
- 256 FocusShiftStepWidth int8u
16411
- 260 FocusShiftInterval int8u~
16412
- 264 FocusShiftExposureLock? int8u
16413
- 294 PhotoShootingMenuBank int8u
16414
- 296 ExtendedMenuBanks int8u
16415
- 332 PhotoShootingMenuBankImageArea int8u
16416
- 346 AutoISO int8u
16417
- 348 ISOAutoHiLimit? int16u
16418
- 350 ISOAutoFlashLimit? int16u
16419
- 358 ISOAutoShutterTime no
16420
- 440 MovieVignetteControl? int8u
16421
- 442 DiffractionCompensation int8u
16422
- 444 FlickerReductionShooting int8u
16423
- 448 FlashControlMode int8u
16424
- 450 FlashMasterCompensation? int8s
16425
- 454 FlashGNDistance? no
16426
- 458 FlashOutput? int8u
16427
- 552 AFAreaMode int8u
16428
- 554 VRMode int8u
16429
- 558 BracketSet int8u
16430
- 560 BracketProgram int8u
16431
- 562 BracketIncrement int8u
16432
- 574 HDR int8u
16433
- 580 SecondarySlotFunction int8u
16434
- 586 HDRLevel int8u
16435
- 590 Slot2JpgSize? int8u
16436
- 596 DXCropAlert int8u
16437
- 598 SubjectDetection int8u
16438
- 600 DynamicAFAreaSize int8u
16439
- 640 HighFrequencyFlickerReduction? int8u
16440
- 650 MovieImageArea? int8u & 0x01
16441
- 660 MovieType? int8u
16442
- 662 MovieISOAutoHiLimit? int16u
16443
- 664 MovieISOAutoControlManualMode? int8u
16444
- 666 MovieISOAutoManualMode? int16u
16445
- 740 MovieActiveD-Lighting? int8u
16446
- 742 MovieHighISONoiseReduction? int8u
16447
- 748 MovieFlickerReduction int8u
16448
- 750 MovieMeteringMode? int8u
16449
- 752 MovieFocusMode? int8u
16450
- 754 MovieAFAreaMode int8u
16451
- 756 MovieVRMode? int8u
16452
- 760 MovieElectronicVR? int8u
16453
- 762 MovieSoundRecording? int8u
16454
- 764 MicrophoneSensitivity? int8u
16455
- 766 MicrophoneAttenuator? int8u
16456
- 768 MicrophoneFrequencyResponse? int8u
16457
- 770 WindNoiseReduction? int8u
16458
- 792 MovieToneMap? int8u
16459
- 798 MovieFrameSize? int8u
16460
- 800 MovieFrameRate? int8u
16461
- 806 MicrophoneJackPower? int8u
16462
- 807 MovieDXCropAlert? int8u
16463
- 808 MovieSubjectDetection? int8u
16464
- 816 MovieHighResZoom? int8u
16465
- 851 CustomSettingsZ9v4 NikonCustom SettingsZ9v4
16466
- 1502 Language? int8u
16467
- 1504 TimeZone int8u
16468
- 1510 MonitorBrightness? int8u
16469
- 1532 AFFineTune? int8u
16470
- 1536 NonCPULens1FocalLength? int16s~
16471
- 1540 NonCPULens2FocalLength? int16s~
16472
- 1542 NonCPULens3FocalLength? int16s~
16473
- 1548 NonCPULens4FocalLength? int16s~
16474
- 1552 NonCPULens5FocalLength? int16s~
16475
- 1556 NonCPULens6FocalLength? int16s~
16476
- 1560 NonCPULens7FocalLength? int16s~
16477
- 1564 NonCPULens8FocalLength? int16s~
16478
- 1568 NonCPULens9FocalLength? int16s~
16479
- 1572 NonCPULens10FocalLength? int16s~
16480
- 1576 NonCPULens11FocalLength? int16s~
16481
- 1580 NonCPULens12FocalLength? int16s~
16482
- 1584 NonCPULens13FocalLength? int16s~
16483
- 1588 NonCPULens14FocalLength? int16s~
16484
- 1592 NonCPULens15FocalLength? int16s~
16485
- 1596 NonCPULens16FocalLength? int16s~
16486
- 1600 NonCPULens17FocalLength? int16s~
16487
- 1604 NonCPULens18FocalLength? int16s~
16488
- 1608 NonCPULens19FocalLength? int16s~
16489
- 1612 NonCPULens20FocalLength? int16s~
16490
- 1616 NonCPULens1MaxAperture? int16s~
16491
- 1620 NonCPULens2MaxAperture? int16s~
16492
- 1624 NonCPULens3MaxAperture? int16s~
16493
- 1628 NonCPULens4MaxAperture? int16s~
16494
- 1632 NonCPULens5MaxAperture? int16s~
16495
- 1636 NonCPULens6MaxAperture? int16s~
16496
- 1640 NonCPULens7MaxAperture? int16s~
16497
- 1644 NonCPULens8MaxAperture? int16s~
16498
- 1648 NonCPULens9MaxAperture? int16s~
16499
- 1652 NonCPULens10MaxAperture? int16s~
16500
- 1656 NonCPULens11MaxAperture? int16s~
16501
- 1660 NonCPULens12MaxAperture? int16s~
16502
- 1664 NonCPULens13MaxAperture? int16s~
16503
- 1668 NonCPULens14MaxAperture? int16s~
16504
- 1672 NonCPULens15MaxAperture? int16s~
16505
- 1676 NonCPULens16MaxAperture? int16s~
16506
- 1680 NonCPULens17MaxAperture? int16s~
16507
- 1684 NonCPULens18MaxAperture? int16s~
16508
- 1688 NonCPULens19MaxAperture? int16s~
16509
- 1692 NonCPULens20MaxAperture? int16s~
16510
- 1708 HDMIOutputResolution int8u
16511
- 1721 SetClockFromLocationData? int8u
16512
- 1728 AirplaneMode? int8u
16513
- 1729 EmptySlotRelease? int8u
16514
- 1764 EnergySavingMode? int8u
16515
- 1788 RecordLocationData? int8u
16516
- 1792 USBPowerDelivery? int8u
16517
- 1801 SensorShield? int8u
16518
- 1866 AutoCapturePreset int8u
16519
- 1868 FocusShiftAutoReset? int8u
16520
- 1926 PreReleaseBurstLength int8u
16521
- 1928 PostReleaseBurstLength int8u
16522
- 1942 VerticalISOButton int8u
16523
- 1944 ExposureCompensationButton int8u
16524
- 1946 ISOButton int8u
16525
- 2006 ViewModeShowEffectsOfSettings? int8u
16526
- 2008 DispButton int8u
16527
- 2052 ExposureDelay fixed32u~
16528
- 2056 CommandDialFrameAdvanceZoom? int8u
16529
- 2058 SubCommandDialFrameAdvanceZoom? int8u
16530
- 2060 PlaybackButton int8u
16531
- 2062 WBButton int8u
16532
- 2064 BracketButton int8u
16533
- 2066 FlashModeButton int8u
16534
- 2068 LensFunc1ButtonPlaybackMode int8u
16535
- 2070 LensFunc2ButtonPlaybackMode int8u
16536
- 2072 PlaybackButtonPlaybackMode int8u
16537
- 2074 BracketButtonPlaybackMode int8u
16538
- 2076 FlashModeButtonPlaybackMode int8u
16539
-
16540
16349
  =head3 Nikon ShotInfo Tags
16541
16350
 
16542
16351
  This information is encrypted for ShotInfoVersion 02xx, and some tags are
@@ -26509,6 +26318,57 @@ even if it is not listed in this table.
26509
26318
  YhiYloCorK1 no
26510
26319
  YhiYloCorK2 no
26511
26320
 
26321
+ =head3 Qualcomm DualCamera Tags
26322
+
26323
+ Found in JPEG APP4 "Qualcomm Dual Camera Attributes" written by some Nokia
26324
+ phones.
26325
+
26326
+ Tag Name Writable
26327
+ -------- --------
26328
+ AF_ROIHeight no
26329
+ AF_ROILeft no
26330
+ AF_ROITop no
26331
+ AF_ROIWidth no
26332
+ CAMIFCropHeight no
26333
+ CAMIFCropLeft no
26334
+ CAMIFCropTop no
26335
+ CAMIFCropWidth no
26336
+ CAMIF_ROIMapHeight no
26337
+ CAMIF_ROIMapLeft no
26338
+ CAMIF_ROIMapTop no
26339
+ CAMIF_ROIMapWidth no
26340
+ CPPCropHeight no
26341
+ CPPCropLeft no
26342
+ CPPCropTop no
26343
+ CPPCropWidth no
26344
+ CPP_ROIMapHeight no
26345
+ CPP_ROIMapLeft no
26346
+ CPP_ROIMapTop no
26347
+ CPP_ROIMapWidth no
26348
+ CurrentPipelineMirrorFlipSetting no
26349
+ CurrentPipelineRotationSetting no
26350
+ DDMCropHeight no
26351
+ DDMCropLeft no
26352
+ DDMCropTop no
26353
+ DDMCropWidth no
26354
+ FocalLengthRatio no
26355
+ ISPCropHeight no
26356
+ ISPCropLeft no
26357
+ ISPCropTop no
26358
+ ISPCropWidth no
26359
+ ISP_ROIMapHeight no
26360
+ ISP_ROIMapLeft no
26361
+ ISP_ROIMapTop no
26362
+ ISP_ROIMapWidth no
26363
+ SensorCropHeight no
26364
+ SensorCropLeft no
26365
+ SensorCropTop no
26366
+ SensorCropWidth no
26367
+ SensorROIMapHeight no
26368
+ SensorROIMapLeft no
26369
+ SensorROIMapTop no
26370
+ SensorROIMapWidth no
26371
+
26512
26372
  =head2 Jpeg2000 Tags
26513
26373
 
26514
26374
  The tags below are found in JPEG 2000 images and the C2PA CAI JUMBF metadata
@@ -28670,6 +28530,7 @@ check if speed is more of a concern.
28670
28530
  'gIFg' GIFGraphicControlExtension no
28671
28531
  'gIFt' GIFPlainTextExtension no
28672
28532
  'gIFx' GIFApplicationExtension no
28533
+ 'gdAT' GainMapImage no
28673
28534
  'hIST' PaletteHistogram no
28674
28535
  'iCCP' ICC_Profile ICC_Profile
28675
28536
  'iCCP-name' ProfileName yes
@@ -40290,6 +40151,42 @@ Information extracted from MS Shell Link (Windows shortcut) files.
40290
40151
  ------ -------- --------
40291
40152
  8 CodePage no
40292
40153
 
40154
+ =head2 PCAP Tags
40155
+
40156
+ Tags extracted from CAP, PCAP and PCAPNG Packet Capture files.
40157
+
40158
+ Tag ID Tag Name Writable
40159
+ ------ -------- --------
40160
+ 0x0001 Comment no
40161
+ 0x0bac CustomOption1 no
40162
+ 0x0bad CustomOption2 no
40163
+ 0x4bac CustomOption3 no
40164
+ 0x4bad CustomOption3 no
40165
+ 'ByteOrder' ByteOrder no
40166
+ 'IDB-2' DeviceName no
40167
+ 'IDB-3' Description no
40168
+ 'IDB-4' IPv4Addr no
40169
+ 'IDB-5' IPv6Addr no
40170
+ 'IDB-6' MACAddr no
40171
+ 'IDB-7' EUIAddr no
40172
+ 'IDB-8' Speed no
40173
+ 'IDB-9' TimeStampResolution no
40174
+ 'IDB-10' TimeZone no
40175
+ 'IDB-11' Filter no
40176
+ 'IDB-12' OperatingSytem no
40177
+ 'IDB-13' FCSLen no
40178
+ 'IDB-14' TimeStampOffset no
40179
+ 'IDB-15' Hardware no
40180
+ 'IDB-16' TXSpeed no
40181
+ 'IDB-17' RXSpeed no
40182
+ 'IDB-18' TimezoneName no
40183
+ 'LinkType' LinkType no
40184
+ 'PCAPVersion' PCAPVersion no
40185
+ 'SHB-2' Hardware no
40186
+ 'SHB-3' OperatingSytem no
40187
+ 'SHB-4' UserApplication no
40188
+ 'TimeStamp' TimeStamp no
40189
+
40293
40190
  =head2 Font Tags
40294
40191
 
40295
40192
  This table contains a collection of tags found in font files of various
@@ -12,7 +12,7 @@ use strict;
12
12
  use vars qw($VERSION);
13
13
  use Image::ExifTool qw(:DataAccess :Utils);
14
14
 
15
- $VERSION = '1.00';
15
+ $VERSION = '1.01';
16
16
 
17
17
  %Image::ExifTool::Trailer::Vivo = (
18
18
  GROUPS => { 0 => 'Trailer', 1 => 'Vivo', 2 => 'Image' },
@@ -271,7 +271,7 @@ sub ProcessGoogle($$)
271
271
  DataPos => $start + $pos,
272
272
  DirLen => $$len[$i],
273
273
  });
274
- $et->HandleTag($tagTable, $$tag[$i], \$buff, { DataPos => $start + $pos, DataPt => \$buff });
274
+ $et->HandleTag($tagTable, $$tag[$i], \$buff, DataPos => $start + $pos, DataPt => \$buff);
275
275
  # (haven't seen non-zero padding, but I assume this is how it works
276
276
  $pos += $$len[$i] + (($pad and $$pad[$i]) ? $$pad[$i] : 0);
277
277
  }
@@ -188,10 +188,10 @@ my %validValue = (
188
188
  0x115 => undef, # SamplesPerPixel
189
189
  0x116 => undef, # RowsPerStrip
190
190
  0x117 => undef, # StripByteCounts
191
- 0x11a => 'defined $val', # XResolution
192
- 0x11b => 'defined $val', # YResolution
191
+ # (optional as of 3.0) 0x11a => 'defined $val', # XResolution
192
+ # (optional as of 3.0) 0x11b => 'defined $val', # YResolution
193
193
  0x11c => undef, # PlanarConfiguration
194
- 0x128 => '$val =~ /^[123]$/', # ResolutionUnit
194
+ # (optional as of 3.0) 0x128 => '$val =~ /^[123]$/', # ResolutionUnit
195
195
  0x201 => undef, # JPEGInterchangeFormat
196
196
  0x202 => undef, # JPEGInterchangeFormatLength
197
197
  0x212 => undef, # YCbCrSubSampling
@@ -218,7 +218,7 @@ my %validValue = (
218
218
  ExifIFD => {
219
219
  0x9000 => 'defined $val and $val =~ /^\d{4}$/', # ExifVersion
220
220
  0x9101 => 'defined $val', # ComponentsConfiguration
221
- 0xa000 => 'defined $val', # FlashpixVersion
221
+ # (optional as of 3.0) 0xa000 => 'defined $val', # FlashpixVersion
222
222
  0xa001 => '$val == 1 or $val == 0xffff', # ColorSpace
223
223
  0xa002 => 'defined $val', # PixelXDimension
224
224
  0xa003 => 'defined $val', # PixelYDimension
@@ -25,9 +25,9 @@ my %crossDelete = (
25
25
  # mandatory tag default values
26
26
  my %mandatory = (
27
27
  IFD0 => {
28
- 0x011a => 72, # XResolution
29
- 0x011b => 72, # YResolution
30
- 0x0128 => 2, # ResolutionUnit (inches)
28
+ # (optional as of 3.0) 0x011a => 72, # XResolution
29
+ # (optional as of 3.0) 0x011b => 72, # YResolution
30
+ # (optional as of 3.0) 0x0128 => 2, # ResolutionUnit (inches)
31
31
  0x0213 => 1, # YCbCrPositioning (centered)
32
32
  # 0x8769 => ????, # ExifOffset
33
33
  },
@@ -40,7 +40,7 @@ my %mandatory = (
40
40
  ExifIFD => {
41
41
  0x9000 => '0232', # ExifVersion
42
42
  0x9101 => "1 2 3 0",# ComponentsConfiguration
43
- 0xa000 => '0100', # FlashpixVersion
43
+ # (optional as of 3.0) 0xa000 => '0100', # FlashpixVersion
44
44
  0xa001 => 0xffff, # ColorSpace (uncalibrated)
45
45
  # 0xa002 => ????, # ExifImageWidth
46
46
  # 0xa003 => ????, # ExifImageHeight
@@ -2269,6 +2269,11 @@ NoOverwrite: next if $isNew > 0;
2269
2269
  # build list of offsets to process
2270
2270
  my @offsetList;
2271
2271
  if ($ifd >= 0) {
2272
+ $dirName = $$dirInfo{DirName} || 'unknown';
2273
+ if ($ifd) {
2274
+ $dirName =~ s/\d+$//;
2275
+ $dirName .= $ifd;
2276
+ }
2272
2277
  my $offsetInfo = $offsetInfo[$ifd] or next;
2273
2278
  if ($$offsetInfo{0x111} and $$offsetInfo{0x144}) {
2274
2279
  # SubIFD may contain double-referenced data as both strips and tiles
@@ -50,7 +50,7 @@ use Image::ExifTool::Exif;
50
50
  use Image::ExifTool::GPS;
51
51
  require Exporter;
52
52
 
53
- $VERSION = '3.71';
53
+ $VERSION = '3.72';
54
54
  @ISA = qw(Exporter);
55
55
  @EXPORT_OK = qw(EscapeXML UnescapeXML);
56
56
 
@@ -3818,8 +3818,22 @@ sub ParseXMPElement($$$;$$$$)
3818
3818
  my ($parseResource, %attrs, @attrs);
3819
3819
  # this hangs Perl (v5.18.4) for a specific capture string [patched in ExifTool 12.98]
3820
3820
  # while ($attrs =~ m/(\S+?)\s*=\s*(['"])(.*?)\2/sg) {
3821
- while ($attrs =~ /(\S+?)\s*=\s*(['"])/g) {
3822
- my ($attr, $quote) = ($1, $2);
3821
+ # this may hang Perl v5.26.3 (but not v5.18.4) if there is lots of garbage in the XMP [patched in 13.23]
3822
+ # while ($attrs =~ /(\S+?)\s*=\s*(['"])/g) {
3823
+ for (;;) {
3824
+ my ($attr, $quote);
3825
+ if (length($attrs) < 2000) { # (do it the easy way if attributes aren't stupid long)
3826
+ last unless $attrs =~ /(\S+)\s*=\s*(['"])/g;
3827
+ ($attr, $quote) = ($1, $2);
3828
+ } else {
3829
+ # 13.23 patch to avoid capturing tons of garbage if XMP is corrupted
3830
+ last unless $attrs =~ /=\s*(['"])/g;
3831
+ $quote = $1;
3832
+ my $p = pos($attrs) > 1000 ? pos($attrs) - 1000 : 0;
3833
+ my $tmp = substr($attrs, $p, pos($attrs)-$p);
3834
+ last unless $tmp =~ /(\S+)\s*=\s*$quote$/;
3835
+ $attr = $1;
3836
+ }
3823
3837
  my $p0 = pos($attrs);
3824
3838
  last unless $attrs =~ /$quote/g;
3825
3839
  my $val = substr($attrs, $p0, pos($attrs)-$p0-1);