exiftool_vendored 12.56.0 → 12.57.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.
- checksums.yaml +4 -4
- data/bin/Changes +21 -2
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +74 -30
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +7 -2
- data/bin/lib/Image/ExifTool/FlashPix.pm +4 -0
- data/bin/lib/Image/ExifTool/GPS.pm +7 -2
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +5 -5
- data/bin/lib/Image/ExifTool/MIE.pm +3 -3
- data/bin/lib/Image/ExifTool/Nikon.pm +665 -845
- data/bin/lib/Image/ExifTool/NikonCustom.pm +2 -2
- data/bin/lib/Image/ExifTool/NikonSettings.pm +1 -1
- data/bin/lib/Image/ExifTool/Olympus.pm +3 -1
- data/bin/lib/Image/ExifTool/Photoshop.pm +36 -5
- data/bin/lib/Image/ExifTool/QuickTime.pm +18 -2
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +2 -0
- data/bin/lib/Image/ExifTool/README +11 -2
- data/bin/lib/Image/ExifTool/Sigma.pm +2 -1
- data/bin/lib/Image/ExifTool/TagLookup.pm +4654 -4628
- data/bin/lib/Image/ExifTool/TagNames.pod +194 -86
- data/bin/lib/Image/ExifTool/Writer.pl +36 -16
- data/bin/lib/Image/ExifTool.pm +38 -22
- data/bin/lib/Image/ExifTool.pod +4 -4
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -2
|
@@ -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 26359 tags, with 16845 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
|
|
@@ -7082,6 +7082,9 @@ Tags extracted from Photoshop layer information.
|
|
|
7082
7082
|
'_xnam' LayerNames no+
|
|
7083
7083
|
'_xopc' LayerOpacities no+
|
|
7084
7084
|
'_xrct' LayerRectangles no+
|
|
7085
|
+
'_xvis' LayerVisible no+
|
|
7086
|
+
'lclr' LayerColors no+
|
|
7087
|
+
'lsct' LayerSections no+
|
|
7085
7088
|
'luni' LayerUnicodeNames no+
|
|
7086
7089
|
'lyid' LayerIDs? no+
|
|
7087
7090
|
'shmd' LayerModifyDates no+
|
|
@@ -13713,7 +13716,6 @@ DiMAGE X and Xt.
|
|
|
13713
13716
|
ShotInfoD7000 Nikon ShotInfoD7000
|
|
13714
13717
|
ShotInfoD4 Nikon ShotInfoD4
|
|
13715
13718
|
ShotInfoD4S Nikon ShotInfoD4S
|
|
13716
|
-
ShotInfoD5 Nikon ShotInfoD500
|
|
13717
13719
|
ShotInfoD500 Nikon ShotInfoD500
|
|
13718
13720
|
ShotInfoD6 Nikon ShotInfoD6
|
|
13719
13721
|
ShotInfoD610 Nikon ShotInfoD610
|
|
@@ -14264,24 +14266,46 @@ These tags are extracted from encrypted data in images from the D800.
|
|
|
14264
14266
|
|
|
14265
14267
|
=head3 Nikon ShotInfoD810 Tags
|
|
14266
14268
|
|
|
14267
|
-
These tags are extracted from encrypted data in images from the D810.
|
|
14268
|
-
that the indices listed below are for firmware version 1.0, but they may be
|
|
14269
|
-
different for other firmware versions.
|
|
14269
|
+
These tags are extracted from encrypted data in images from the D810.
|
|
14270
14270
|
|
|
14271
14271
|
Index Tag Name Writable
|
|
14272
14272
|
----- -------- --------
|
|
14273
14273
|
0 ShotInfoVersion no
|
|
14274
14274
|
4 FirmwareVersion no
|
|
14275
|
-
|
|
14276
|
-
|
|
14277
|
-
|
|
14278
|
-
|
|
14279
|
-
|
|
14280
|
-
|
|
14281
|
-
|
|
14282
|
-
|
|
14283
|
-
|
|
14284
|
-
|
|
14275
|
+
16 SettingsOffset Nikon SettingsInfoD810
|
|
14276
|
+
36 BracketingOffset Nikon BracketingInfoD810
|
|
14277
|
+
56 ISOAutoOffset Nikon ISOAutoInfoD810
|
|
14278
|
+
64 CustomSettingsOffset NikonCustom SettingsD810
|
|
14279
|
+
132 OrientationOffset Nikon OrientationInfo
|
|
14280
|
+
|
|
14281
|
+
=head3 Nikon SettingsInfoD810 Tags
|
|
14282
|
+
|
|
14283
|
+
Index1 Tag Name Writable
|
|
14284
|
+
------ -------- --------
|
|
14285
|
+
316 SecondarySlotFunction int8u & 0x03
|
|
14286
|
+
|
|
14287
|
+
=head3 Nikon BracketingInfoD810 Tags
|
|
14288
|
+
|
|
14289
|
+
Index1 Tag Name Writable
|
|
14290
|
+
------ -------- --------
|
|
14291
|
+
15 AEBracketingSteps int8u & 0xff
|
|
14292
|
+
16 WBBracketingSteps int8u & 0xff
|
|
14293
|
+
23 NikonMeteringMode int8u & 0x03
|
|
14294
|
+
|
|
14295
|
+
=head3 Nikon ISOAutoInfoD810 Tags
|
|
14296
|
+
|
|
14297
|
+
Index1 Tag Name Writable
|
|
14298
|
+
------ -------- --------
|
|
14299
|
+
4 ISOAutoShutterTime int8u & 0x3f
|
|
14300
|
+
5 ISOAutoHiLimit int8u & 0xff
|
|
14301
|
+
|
|
14302
|
+
=head3 Nikon OrientationInfo Tags
|
|
14303
|
+
|
|
14304
|
+
Index1 Tag Name Writable
|
|
14305
|
+
------ -------- --------
|
|
14306
|
+
0 RollAngle fixed32u
|
|
14307
|
+
4 PitchAngle fixed32u
|
|
14308
|
+
8 YawAngle fixed32u
|
|
14285
14309
|
|
|
14286
14310
|
=head3 Nikon ShotInfoD850 Tags
|
|
14287
14311
|
|
|
@@ -14291,13 +14315,23 @@ These tags are extracted from encrypted data in images from the D850.
|
|
|
14291
14315
|
----- -------- --------
|
|
14292
14316
|
0 ShotInfoVersion no
|
|
14293
14317
|
4 FirmwareVersion no
|
|
14294
|
-
|
|
14295
|
-
|
|
14296
|
-
|
|
14297
|
-
|
|
14298
|
-
|
|
14299
|
-
|
|
14300
|
-
|
|
14318
|
+
16 MenuSettingsOffset Nikon MenuSettingsD850
|
|
14319
|
+
76 MoreSettingsOffset Nikon MoreSettingsD850
|
|
14320
|
+
88 CustomSettingsOffset NikonCustom SettingsD850
|
|
14321
|
+
160 OrientationOffset Nikon OrientationInfo
|
|
14322
|
+
|
|
14323
|
+
=head3 Nikon MenuSettingsD850 Tags
|
|
14324
|
+
|
|
14325
|
+
Index1 Tag Name Writable
|
|
14326
|
+
------ -------- --------
|
|
14327
|
+
1757 PhotoShootingMenuBankImageArea int8u & 0x07
|
|
14328
|
+
|
|
14329
|
+
=head3 Nikon MoreSettingsD850 Tags
|
|
14330
|
+
|
|
14331
|
+
Index1 Tag Name Writable
|
|
14332
|
+
------ -------- --------
|
|
14333
|
+
36 PhotoShootingMenuBank int8u & 0x03
|
|
14334
|
+
37 PrimarySlot int8u & 0x80
|
|
14301
14335
|
|
|
14302
14336
|
=head3 Nikon ShotInfoD5000 Tags
|
|
14303
14337
|
|
|
@@ -14369,9 +14403,7 @@ These tags are extracted from encrypted data in images from the D4S.
|
|
|
14369
14403
|
6378 ISOAutoShutterTime int8u & 0x3f
|
|
14370
14404
|
6379 ISOAutoHiLimit int8u & 0xff
|
|
14371
14405
|
6461 CustomSettingsD4S NikonCustom SettingsD4
|
|
14372
|
-
13579
|
|
14373
|
-
13583 PitchAngle fixed32u
|
|
14374
|
-
13587 YawAngle fixed32u
|
|
14406
|
+
13579 OrientationInfo Nikon OrientationInfo
|
|
14375
14407
|
13971 Rotation int8u & 0x30
|
|
14376
14408
|
|
|
14377
14409
|
=head3 Nikon ShotInfoD500 Tags
|
|
@@ -14382,27 +14414,61 @@ These tags are extracted from encrypted data in images from the D5 and D500.
|
|
|
14382
14414
|
----- -------- --------
|
|
14383
14415
|
0 ShotInfoVersion no
|
|
14384
14416
|
4 FirmwareVersion no
|
|
14385
|
-
|
|
14386
|
-
|
|
14387
|
-
|
|
14388
|
-
|
|
14389
|
-
|
|
14390
|
-
|
|
14391
|
-
|
|
14392
|
-
|
|
14393
|
-
|
|
14394
|
-
|
|
14395
|
-
|
|
14396
|
-
|
|
14397
|
-
|
|
14398
|
-
|
|
14399
|
-
|
|
14400
|
-
|
|
14417
|
+
16 RotationInfoOffset Nikon RotationInfoD500
|
|
14418
|
+
20 JPGInfoOffset Nikon JPGInfoD500
|
|
14419
|
+
44 BracketingOffset Nikon BracketingInfoD500
|
|
14420
|
+
80 ShootingMenuOffset Nikon ShootingMenuD500
|
|
14421
|
+
88 CustomSettingsOffset Nikon CustomSettingsD500
|
|
14422
|
+
160 OrientationOffset Nikon OrientationInfo
|
|
14423
|
+
168 OtherOffset Nikon OtherInfoD500
|
|
14424
|
+
|
|
14425
|
+
=head3 Nikon RotationInfoD500 Tags
|
|
14426
|
+
|
|
14427
|
+
Index1 Tag Name Writable
|
|
14428
|
+
------ -------- --------
|
|
14429
|
+
26 Rotation int8u & 0x03
|
|
14430
|
+
32 Interval int8u~
|
|
14431
|
+
36 IntervalFrame int8u~
|
|
14432
|
+
1330 FlickerReductionIndicator int8u & 0x01
|
|
14433
|
+
|
|
14434
|
+
=head3 Nikon JPGInfoD500 Tags
|
|
14435
|
+
|
|
14436
|
+
Index1 Tag Name Writable
|
|
14437
|
+
------ -------- --------
|
|
14438
|
+
36 JPGCompression int8u & 0x01
|
|
14439
|
+
|
|
14440
|
+
=head3 Nikon BracketingInfoD500 Tags
|
|
14441
|
+
|
|
14442
|
+
Index1 Tag Name Writable
|
|
14443
|
+
------ -------- --------
|
|
14444
|
+
15 AEBracketingSteps int8u & 0xff
|
|
14445
|
+
16 WBBracketingSteps int8u & 0xff
|
|
14446
|
+
23 ADLBracketingStep int8u & 0xf0
|
|
14447
|
+
24 ADLBracketingType int8u & 0x0f
|
|
14448
|
+
|
|
14449
|
+
=head3 Nikon ShootingMenuD500 Tags
|
|
14450
|
+
|
|
14451
|
+
Index1 Tag Name Writable
|
|
14452
|
+
------ -------- --------
|
|
14453
|
+
0 PhotoShootingMenuBank int8u & 0x03
|
|
14454
|
+
2 PrimarySlot int8u & 0x80
|
|
14455
|
+
4 ISOAutoShutterTime int8u & 0x3f
|
|
14456
|
+
5 ISOAutoHiLimit int8u & 0xff
|
|
14457
|
+
7 FlickerReduction int8u & 0x20
|
|
14458
|
+
7.1 PhotoShootingMenuBankImageArea int8u & 0x07
|
|
14459
|
+
|
|
14460
|
+
=head3 Nikon CustomSettingsD500 Tags
|
|
14461
|
+
|
|
14462
|
+
Index1 Tag Name Writable
|
|
14463
|
+
------ -------- --------
|
|
14464
|
+
0 CustomSettingsD5 NikonCustom SettingsD5
|
|
14401
14465
|
CustomSettingsD500 NikonCustom SettingsD500
|
|
14402
|
-
|
|
14403
|
-
|
|
14404
|
-
|
|
14405
|
-
|
|
14466
|
+
|
|
14467
|
+
=head3 Nikon OtherInfoD500 Tags
|
|
14468
|
+
|
|
14469
|
+
Index1 Tag Name Writable
|
|
14470
|
+
------ -------- --------
|
|
14471
|
+
532 NikonMeteringMode int8u & 0x03
|
|
14406
14472
|
|
|
14407
14473
|
=head3 Nikon ShotInfoD6 Tags
|
|
14408
14474
|
|
|
@@ -14412,28 +14478,38 @@ These tags are extracted from encrypted data in images from the D6.
|
|
|
14412
14478
|
----- -------- --------
|
|
14413
14479
|
0 ShotInfoVersion no
|
|
14414
14480
|
4 FirmwareVersion no
|
|
14415
|
-
|
|
14416
|
-
|
|
14417
|
-
|
|
14418
|
-
|
|
14419
|
-
|
|
14420
|
-
|
|
14421
|
-
|
|
14422
|
-
|
|
14423
|
-
|
|
14424
|
-
|
|
14425
|
-
|
|
14426
|
-
|
|
14427
|
-
|
|
14428
|
-
|
|
14429
|
-
|
|
14430
|
-
|
|
14431
|
-
|
|
14432
|
-
|
|
14433
|
-
|
|
14434
|
-
|
|
14435
|
-
|
|
14436
|
-
|
|
14481
|
+
48 SequenceOffset Nikon SeqInfoD6
|
|
14482
|
+
156 OrientationOffset Nikon OrientationInfo
|
|
14483
|
+
164 IntervalOffset Nikon IntervalInfoD6
|
|
14484
|
+
|
|
14485
|
+
=head3 Nikon SeqInfoD6 Tags
|
|
14486
|
+
|
|
14487
|
+
Index1 Tag Name Writable
|
|
14488
|
+
------ -------- --------
|
|
14489
|
+
36 IntervalShooting int16u~
|
|
14490
|
+
|
|
14491
|
+
=head3 Nikon IntervalInfoD6 Tags
|
|
14492
|
+
|
|
14493
|
+
Index1 Tag Name Writable
|
|
14494
|
+
------ -------- --------
|
|
14495
|
+
380 Intervals int32u
|
|
14496
|
+
384 ShotsPerInterval int32u
|
|
14497
|
+
388 IntervalExposureSmoothing int8u
|
|
14498
|
+
390 IntervalPriority int8u
|
|
14499
|
+
424 FocusShiftNumberShots int8u
|
|
14500
|
+
428 FocusShiftStepWidth int8u
|
|
14501
|
+
432 FocusShiftInterval int8u~
|
|
14502
|
+
436 FocusShiftExposureLock int8u
|
|
14503
|
+
526 DiffractionCompensation int8u
|
|
14504
|
+
532 FlashControlMode int8u
|
|
14505
|
+
538 FlashGNDistance? no
|
|
14506
|
+
542 FlashOutput? int8u
|
|
14507
|
+
552 FlashRemoteControl? int8u
|
|
14508
|
+
556 FlashMasterControlMode int8u
|
|
14509
|
+
558 FlashMasterCompensation? int8s
|
|
14510
|
+
562 FlashMasterOutput? int8u
|
|
14511
|
+
564 FlashWirelessOption? int8u
|
|
14512
|
+
714 MovieType? int8u
|
|
14437
14513
|
|
|
14438
14514
|
=head3 Nikon ShotInfoD610 Tags
|
|
14439
14515
|
|
|
@@ -14453,13 +14529,28 @@ These tags are extracted from encrypted data in images from the Z7II.
|
|
|
14453
14529
|
----- -------- --------
|
|
14454
14530
|
0 ShotInfoVersion no
|
|
14455
14531
|
4 FirmwareVersion no
|
|
14456
|
-
|
|
14457
|
-
|
|
14458
|
-
|
|
14459
|
-
|
|
14460
|
-
|
|
14461
|
-
|
|
14462
|
-
|
|
14532
|
+
48 IntervalOffset Nikon IntervalInfoZ7II
|
|
14533
|
+
56 PortraitOffset Nikon PortraitInfoZ7II
|
|
14534
|
+
152 OrientationOffset Nikon OrientationInfo
|
|
14535
|
+
160 MenuOffset Nikon MenuInfoZ7II
|
|
14536
|
+
|
|
14537
|
+
=head3 Nikon IntervalInfoZ7II Tags
|
|
14538
|
+
|
|
14539
|
+
Index1 Tag Name Writable
|
|
14540
|
+
------ -------- --------
|
|
14541
|
+
36 IntervalShooting int16u~
|
|
14542
|
+
|
|
14543
|
+
=head3 Nikon PortraitInfoZ7II Tags
|
|
14544
|
+
|
|
14545
|
+
Index1 Tag Name Writable
|
|
14546
|
+
------ -------- --------
|
|
14547
|
+
160 PortraitImpressionBalance int8u[2]~
|
|
14548
|
+
|
|
14549
|
+
=head3 Nikon MenuInfoZ7II Tags
|
|
14550
|
+
|
|
14551
|
+
Index1 Tag Name Writable
|
|
14552
|
+
------ -------- --------
|
|
14553
|
+
16 MenuSettingsOffsetZ7II Nikon MenuSettingsZ7II
|
|
14463
14554
|
|
|
14464
14555
|
=head3 Nikon MenuSettingsZ7II Tags
|
|
14465
14556
|
|
|
@@ -14467,6 +14558,7 @@ These tags are used by the Z5, Z6, Z7, Z6II, Z7II, Z50 and Zfc.
|
|
|
14467
14558
|
|
|
14468
14559
|
Index1 Tag Name Writable
|
|
14469
14560
|
------ -------- --------
|
|
14561
|
+
92 ReleaseMode no
|
|
14470
14562
|
160 IntervalDurationHours int32u
|
|
14471
14563
|
164 IntervalDurationMinutes int32u
|
|
14472
14564
|
168 IntervalDurationSeconds int32u
|
|
@@ -14513,17 +14605,24 @@ These tags are extracted from encrypted data in images from the Z9.
|
|
|
14513
14605
|
----- -------- --------
|
|
14514
14606
|
0 ShotInfoVersion no
|
|
14515
14607
|
4 FirmwareVersion no
|
|
14516
|
-
|
|
14517
|
-
|
|
14518
|
-
|
|
14519
|
-
|
|
14520
|
-
|
|
14521
|
-
|
|
14522
|
-
|
|
14523
|
-
|
|
14524
|
-
|
|
14525
|
-
|
|
14526
|
-
|
|
14608
|
+
48 SequenceOffset Nikon SeqInfoZ9
|
|
14609
|
+
132 OrientOffset Nikon OrientationInfo
|
|
14610
|
+
140 MenuOffset Nikon MenuInfoZ9
|
|
14611
|
+
|
|
14612
|
+
=head3 Nikon SeqInfoZ9 Tags
|
|
14613
|
+
|
|
14614
|
+
Index1 Tag Name Writable
|
|
14615
|
+
------ -------- --------
|
|
14616
|
+
32 FocusShiftShooting int8u~
|
|
14617
|
+
40 IntervalShooting int16u~
|
|
14618
|
+
|
|
14619
|
+
=head3 Nikon MenuInfoZ9 Tags
|
|
14620
|
+
|
|
14621
|
+
Index1 Tag Name Writable
|
|
14622
|
+
------ -------- --------
|
|
14623
|
+
16 MenuSettingsOffsetZ9 Nikon MenuSettingsZ9
|
|
14624
|
+
MenuSettingsOffsetZ9v3 -
|
|
14625
|
+
Nikon MenuSettingsZ9v3
|
|
14527
14626
|
|
|
14528
14627
|
=head3 Nikon MenuSettingsZ9 Tags
|
|
14529
14628
|
|
|
@@ -14601,7 +14700,7 @@ These tags are used by the Z9.
|
|
|
14601
14700
|
1636 USBPowerDelivery? int8u
|
|
14602
14701
|
1645 SensorShield? int8u
|
|
14603
14702
|
|
|
14604
|
-
=head3 Nikon
|
|
14703
|
+
=head3 Nikon MenuSettingsZ9v3 Tags
|
|
14605
14704
|
|
|
14606
14705
|
These tags are used by the Z9 firmware 3.00.
|
|
14607
14706
|
|
|
@@ -21977,6 +22076,10 @@ unrecognized Windows Compound Binary file as a FlashPix (FPX) file. See
|
|
|
21977
22076
|
L<http://graphcomp.com/info/specs/livepicture/fpx.pdf> for the FlashPix
|
|
21978
22077
|
specification.
|
|
21979
22078
|
|
|
22079
|
+
Note that Microsoft is not consistent with the time zone used for some
|
|
22080
|
+
date/time tags, and it may be either UTC or local time depending on the
|
|
22081
|
+
software used to create the file.
|
|
22082
|
+
|
|
21980
22083
|
Tag ID Tag Name Writable
|
|
21981
22084
|
------ -------- --------
|
|
21982
22085
|
"\x01CompObj" CompObj FlashPix CompObj
|
|
@@ -27705,6 +27808,11 @@ QuickTime-based files; it extracts other track-specific and timed metadata,
|
|
|
27705
27808
|
but can not yet edit tags in these locations (with the exception of
|
|
27706
27809
|
track-level date/time tags).
|
|
27707
27810
|
|
|
27811
|
+
Beware that the Keys tags are actually stored inside the ItemList in the
|
|
27812
|
+
file, so deleting the ItemList group as a block (ie. C<-ItemList:all=>) also
|
|
27813
|
+
deletes Keys tags. Instead, to preserve Keys tags the ItemList tags may be
|
|
27814
|
+
deleted individually with C<-QuickTime:ItemList:all=>.
|
|
27815
|
+
|
|
27708
27816
|
Alternate language tags may be accessed for
|
|
27709
27817
|
L<ItemList|Image::ExifTool::TagNames/QuickTime ItemList Tags> and
|
|
27710
27818
|
L<Keys|Image::ExifTool::TagNames/QuickTime Keys Tags> tags by adding
|
|
@@ -2727,8 +2727,10 @@ sub GetAllGroups($;$)
|
|
|
2727
2727
|
|
|
2728
2728
|
my @tableNames = keys %allTables;
|
|
2729
2729
|
|
|
2730
|
-
# loop through all tag tables and get all group names
|
|
2731
2730
|
my %allGroups;
|
|
2731
|
+
# add family 1 groups not in tables
|
|
2732
|
+
$family == 1 and map { $allGroups{$_} = 1 } qw(Garmin);
|
|
2733
|
+
# loop through all tag tables and get all group names
|
|
2732
2734
|
while (@tableNames) {
|
|
2733
2735
|
my $table = GetTagTable(pop @tableNames);
|
|
2734
2736
|
my ($grps, $grp, $tag, $tagInfo);
|
|
@@ -4267,7 +4269,7 @@ sub WriteDirectory($$$;$)
|
|
|
4267
4269
|
if ($out) {
|
|
4268
4270
|
print $out " Deleting $name\n" if defined $newData and not length $newData;
|
|
4269
4271
|
if ($$self{CHANGED} == $oldChanged and $$self{OPTIONS}{Verbose} > 2) {
|
|
4270
|
-
print $out "$$self{INDENT} [nothing changed in $
|
|
4272
|
+
print $out "$$self{INDENT} [nothing changed in $name]\n";
|
|
4271
4273
|
}
|
|
4272
4274
|
}
|
|
4273
4275
|
return $newData;
|
|
@@ -5432,7 +5434,6 @@ sub WriteJPEG($$)
|
|
|
5432
5434
|
my $verbose = $$self{OPTIONS}{Verbose};
|
|
5433
5435
|
my $out = $$self{OPTIONS}{TextOut};
|
|
5434
5436
|
my $rtnVal = 0;
|
|
5435
|
-
my %dumpParms = ( Out => $out );
|
|
5436
5437
|
my ($writeBuffer, $oldOutfile); # used to buffer writing until PreviewImage position is known
|
|
5437
5438
|
|
|
5438
5439
|
# check to be sure this is a valid JPG or EXV file
|
|
@@ -5447,7 +5448,6 @@ sub WriteJPEG($$)
|
|
|
5447
5448
|
Write($outfile,"\xff\x01") or $err = 1;
|
|
5448
5449
|
$isEXV = 1;
|
|
5449
5450
|
}
|
|
5450
|
-
$dumpParms{MaxLen} = 128 unless $verbose > 3;
|
|
5451
5451
|
|
|
5452
5452
|
delete $$self{PREVIEW_INFO}; # reset preview information
|
|
5453
5453
|
delete $$self{DEL_PREVIEW}; # reset flag to delete preview
|
|
@@ -6017,12 +6017,7 @@ sub WriteJPEG($$)
|
|
|
6017
6017
|
#
|
|
6018
6018
|
my $segDataPt = \$segData;
|
|
6019
6019
|
$length = length($segData);
|
|
6020
|
-
|
|
6021
|
-
print $out "JPEG $markerName ($length bytes):\n";
|
|
6022
|
-
if ($verbose > 2 and $markerName =~ /^APP/) {
|
|
6023
|
-
HexDump($segDataPt, undef, %dumpParms);
|
|
6024
|
-
}
|
|
6025
|
-
}
|
|
6020
|
+
print $out "JPEG $markerName ($length bytes)\n" if $verbose;
|
|
6026
6021
|
# group delete of APP segments
|
|
6027
6022
|
if ($$delGroup{$dirName}) {
|
|
6028
6023
|
$verbose and print $out " Deleting $dirName segment\n";
|
|
@@ -6870,6 +6865,7 @@ sub WriteBinaryData($$$)
|
|
|
6870
6865
|
|
|
6871
6866
|
# get default format ('int8u' unless specified)
|
|
6872
6867
|
my $dataPt = $$dirInfo{DataPt} or return undef;
|
|
6868
|
+
my $dataLen = length $$dataPt;
|
|
6873
6869
|
my $defaultFormat = $$tagTablePtr{FORMAT} || 'int8u';
|
|
6874
6870
|
my $increment = FormatSize($defaultFormat);
|
|
6875
6871
|
unless ($increment) {
|
|
@@ -6886,7 +6882,8 @@ sub WriteBinaryData($$$)
|
|
|
6886
6882
|
delete $$dirInfo{VarFormatData};
|
|
6887
6883
|
}
|
|
6888
6884
|
my $dirStart = $$dirInfo{DirStart} || 0;
|
|
6889
|
-
my $dirLen = $$dirInfo{DirLen}
|
|
6885
|
+
my $dirLen = $$dirInfo{DirLen};
|
|
6886
|
+
$dirLen = $dataLen - $dirStart if not defined $dirLen or $dirLen > $dataLen - $dirStart;
|
|
6890
6887
|
my $newData = substr($$dataPt, $dirStart, $dirLen) or return undef;
|
|
6891
6888
|
my $dirName = $$dirInfo{DirName};
|
|
6892
6889
|
my $varSize = 0;
|
|
@@ -7022,11 +7019,34 @@ sub WriteBinaryData($$$)
|
|
|
7022
7019
|
$tagInfo = $self->GetTagInfo($tagTablePtr, $tagID, \$v);
|
|
7023
7020
|
next unless $tagInfo;
|
|
7024
7021
|
}
|
|
7025
|
-
|
|
7026
|
-
my
|
|
7027
|
-
my $
|
|
7028
|
-
|
|
7029
|
-
|
|
7022
|
+
my $subdir = $$tagInfo{SubDirectory} or next;
|
|
7023
|
+
my $start = $$subdir{Start};
|
|
7024
|
+
my $len;
|
|
7025
|
+
if (not $start) {
|
|
7026
|
+
$start = $entry;
|
|
7027
|
+
$len = $dirLen - $start;
|
|
7028
|
+
} elsif ($start =~ /\$/) {
|
|
7029
|
+
my $count = 1;
|
|
7030
|
+
my $format = $$tagInfo{Format} || $defaultFormat;
|
|
7031
|
+
$format =~ /(.*)\[(.*)\]/ and ($format, $count) = ($1, $2);
|
|
7032
|
+
my $val = ReadValue($dataPt, $entry, $format, $count, $dirLen - $entry);
|
|
7033
|
+
# ignore directories with a zero offset (ie. missing Nikon ShotInfo entries)
|
|
7034
|
+
next unless $val;
|
|
7035
|
+
my $dirStart = 0;
|
|
7036
|
+
#### eval Start ($val, $dirStart)
|
|
7037
|
+
$start = eval($start);
|
|
7038
|
+
next if $start < $dirStart or $start > $dataLen;
|
|
7039
|
+
$len = $$subdir{DirLen};
|
|
7040
|
+
$len = $dataLen - $start unless $len and $len <= $dataLen - $start;
|
|
7041
|
+
}
|
|
7042
|
+
my %subdirInfo = (
|
|
7043
|
+
DataPt => \$newData,
|
|
7044
|
+
DirStart => $start,
|
|
7045
|
+
DirLen => $len,
|
|
7046
|
+
TagInfo => $tagInfo,
|
|
7047
|
+
);
|
|
7048
|
+
my $dat = $self->WriteDirectory(\%subdirInfo, GetTagTable($$subdir{TagTable}));
|
|
7049
|
+
substr($newData, $start, $len) = $dat if defined $dat and length $dat;
|
|
7030
7050
|
}
|
|
7031
7051
|
}
|
|
7032
7052
|
return $newData;
|