exiftool_vendored 13.17.0 → 13.18.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 +16 -3
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/config_files/example.config +1 -1
- data/bin/exiftool +12 -8
- data/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/GoPro.pm +58 -48
- data/bin/lib/Image/ExifTool/Nikon.pm +45 -19
- data/bin/lib/Image/ExifTool/Photoshop.pm +2 -2
- data/bin/lib/Image/ExifTool/QuickTime.pm +255 -251
- data/bin/lib/Image/ExifTool/TagLookup.pm +36 -2
- data/bin/lib/Image/ExifTool/TagNames.pod +48 -7
- data/bin/lib/Image/ExifTool/Trailer.pm +1 -1
- data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +4 -1
- data/bin/lib/Image/ExifTool/Writer.pl +5 -3
- data/bin/lib/Image/ExifTool/XMP2.pl +2 -0
- data/bin/lib/Image/ExifTool.pm +11 -12
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -2
@@ -4797,6 +4797,7 @@ my %tagLookup = (
|
|
4797
4797
|
'mediamodifydate' => { 413 => 0x2 },
|
4798
4798
|
'mediasummarycode' => { 341 => 'MediaSummaryCode' },
|
4799
4799
|
'mediatype' => { 409 => 'stik' },
|
4800
|
+
'mediauid' => { 417 => 'MUID' },
|
4800
4801
|
'memoaudioquality' => { 90 => 0x812 },
|
4801
4802
|
'memorycardconfiguration' => { 451 => 0x16 },
|
4802
4803
|
'memorycardnumber' => { 220 => 0x2 },
|
@@ -7872,6 +7873,8 @@ my %tagExists = (
|
|
7872
7873
|
'asin' => 1,
|
7873
7874
|
'asin2' => 1,
|
7874
7875
|
'aspectinfo' => 1,
|
7876
|
+
'aspectratiounwarped' => 1,
|
7877
|
+
'aspectratiowarped' => 1,
|
7875
7878
|
'aspectratiox' => 1,
|
7876
7879
|
'aspectratioy' => 1,
|
7877
7880
|
'assistantdirector' => 1,
|
@@ -7911,6 +7914,7 @@ my %tagExists = (
|
|
7911
7914
|
'audioavailablenumberchannels' => 1,
|
7912
7915
|
'audioavgbitrate' => 1,
|
7913
7916
|
'audiobitratecontrolmode' => 1,
|
7917
|
+
'audiobluetooth' => 1,
|
7914
7918
|
'audiobytes' => 1,
|
7915
7919
|
'audiochannellayout' => 1,
|
7916
7920
|
'audiochanneltypes' => 1,
|
@@ -7949,6 +7953,7 @@ my %tagExists = (
|
|
7949
7953
|
'audiopacketframesize' => 1,
|
7950
7954
|
'audioprofile' => 1,
|
7951
7955
|
'audioprofileversion' => 1,
|
7956
|
+
'audioprotuneoption' => 1,
|
7952
7957
|
'audioqualitysetting' => 1,
|
7953
7958
|
'audiorequirespacketdescription' => 1,
|
7954
7959
|
'audiosamplecount' => 1,
|
@@ -7975,12 +7980,14 @@ my %tagExists = (
|
|
7975
7980
|
'authorship' => 1,
|
7976
7981
|
'authorsortorder' => 1,
|
7977
7982
|
'autoareaafstartingpoint' => 1,
|
7983
|
+
'autoboostscore' => 1,
|
7978
7984
|
'autocaptureoffset' => 1,
|
7979
7985
|
'autoisomin' => 1,
|
7980
7986
|
'autolowlightduration' => 1,
|
7981
7987
|
'automationanimation' => 1,
|
7982
7988
|
'automationflags' => 1,
|
7983
7989
|
'autopoweroff' => 1,
|
7990
|
+
'autoprotune' => 1,
|
7984
7991
|
'autorotation' => 1,
|
7985
7992
|
'autosavefilepath' => 1,
|
7986
7993
|
'autosaveformat' => 1,
|
@@ -8069,6 +8076,7 @@ my %tagExists = (
|
|
8069
8076
|
'bitrate' => 1,
|
8070
8077
|
'bitrateinfo' => 1,
|
8071
8078
|
'bitratemutualexclusion' => 1,
|
8079
|
+
'bitratesetting' => 1,
|
8072
8080
|
'bitsperextendedrunlength' => 1,
|
8073
8081
|
'bitsperpixel' => 1,
|
8074
8082
|
'bitsperrunlength' => 1,
|
@@ -8353,6 +8361,7 @@ my %tagExists = (
|
|
8353
8361
|
'captproftype' => 1,
|
8354
8362
|
'captprofversion' => 1,
|
8355
8363
|
'captureconditionspar' => 1,
|
8364
|
+
'capturedelaytimer' => 1,
|
8356
8365
|
'capturedevicefid' => 1,
|
8357
8366
|
'captureheightresetblacksegnormal' => 1,
|
8358
8367
|
'captureheightresetblacksegtest' => 1,
|
@@ -8514,6 +8523,7 @@ my %tagExists = (
|
|
8514
8523
|
'class' => 1,
|
8515
8524
|
'classificationandmarkingsystem' => 1,
|
8516
8525
|
'classificationcomments' => 1,
|
8526
|
+
'classificationdatapresent' => 1,
|
8517
8527
|
'classificationreason' => 1,
|
8518
8528
|
'classifiedby' => 1,
|
8519
8529
|
'classifyingcountry' => 1,
|
@@ -8733,6 +8743,7 @@ my %tagExists = (
|
|
8733
8743
|
'contrastadjustment' => 1,
|
8734
8744
|
'contrastinfo' => 1,
|
8735
8745
|
'controller' => 1,
|
8746
|
+
'controllevel' => 1,
|
8736
8747
|
'conttake' => 1,
|
8737
8748
|
'convergenceangle' => 1,
|
8738
8749
|
'convergencebaseimage' => 1,
|
@@ -9032,6 +9043,7 @@ my %tagExists = (
|
|
9032
9043
|
'devicesettings' => 1,
|
9033
9044
|
'devicesounds' => 1,
|
9034
9045
|
'dex' => 1,
|
9046
|
+
'diagonalfieldofview' => 1,
|
9035
9047
|
'dialect' => 1,
|
9036
9048
|
'dicom' => 1,
|
9037
9049
|
'dictionary' => 1,
|
@@ -9049,6 +9061,7 @@ my %tagExists = (
|
|
9049
9061
|
'digitalexposuregains' => 1,
|
9050
9062
|
'digitalimagebroker' => 1,
|
9051
9063
|
'digitalsignature' => 1,
|
9064
|
+
'digitalzoomamount' => 1,
|
9052
9065
|
'dimensions' => 1,
|
9053
9066
|
'directionalatob0' => 1,
|
9054
9067
|
'directionalatob1' => 1,
|
@@ -9188,6 +9201,7 @@ my %tagExists = (
|
|
9188
9201
|
'duotonehalftoninginfo' => 1,
|
9189
9202
|
'duotoneimageinfo' => 1,
|
9190
9203
|
'duotonetransferfuncs' => 1,
|
9204
|
+
'durationsetting' => 1,
|
9191
9205
|
'dustdeleteapplied' => 1,
|
9192
9206
|
'dustinfo' => 1,
|
9193
9207
|
'dvdid' => 1,
|
@@ -9217,6 +9231,7 @@ my %tagExists = (
|
|
9217
9231
|
'eighthlanguage' => 1,
|
9218
9232
|
'electricalextendermagnification' => 1,
|
9219
9233
|
'electronicimagestabilization' => 1,
|
9234
|
+
'electronicstabilizationon' => 1,
|
9220
9235
|
'electronicvr' => 1,
|
9221
9236
|
'elementarystreamtrack' => 1,
|
9222
9237
|
'embeddedaudiofile' => 1,
|
@@ -9333,6 +9348,7 @@ my %tagExists = (
|
|
9333
9348
|
'exposurereferencegain' => 1,
|
9334
9349
|
'exposurereferenceoffset' => 1,
|
9335
9350
|
'exposuretimes' => 1,
|
9351
|
+
'exposuretype' => 1,
|
9336
9352
|
'exposureunknown' => 1,
|
9337
9353
|
'expressionmedia' => 1,
|
9338
9354
|
'exrversion' => 1,
|
@@ -9888,6 +9904,7 @@ my %tagExists = (
|
|
9888
9904
|
'hdrinfoversion' => 1,
|
9889
9905
|
'hdrl' => 1,
|
9890
9906
|
'hdrtoninginfo' => 1,
|
9907
|
+
'hdrvideo' => 1,
|
9891
9908
|
'header' => 1,
|
9892
9909
|
'header4' => 1,
|
9893
9910
|
'headerext' => 1,
|
@@ -9907,6 +9924,7 @@ my %tagExists = (
|
|
9907
9924
|
'highlightendpoints' => 1,
|
9908
9925
|
'highnote' => 1,
|
9909
9926
|
'highvelocity' => 1,
|
9927
|
+
'hindsightsettings' => 1,
|
9910
9928
|
'hintformat' => 1,
|
9911
9929
|
'hintheader' => 1,
|
9912
9930
|
'hintinfo' => 1,
|
@@ -9931,6 +9949,7 @@ my %tagExists = (
|
|
9931
9949
|
'homepostalcode' => 1,
|
9932
9950
|
'homestateorprovince' => 1,
|
9933
9951
|
'homestreet' => 1,
|
9952
|
+
'horizoncontrol' => 1,
|
9934
9953
|
'horizontalfieldofview' => 1,
|
9935
9954
|
'horizontalresolution' => 1,
|
9936
9955
|
'horizontalscale' => 1,
|
@@ -10452,6 +10471,7 @@ my %tagExists = (
|
|
10452
10471
|
'lensmaker' => 1,
|
10453
10472
|
'lensnumber' => 1,
|
10454
10473
|
'lenspartnumber' => 1,
|
10474
|
+
'lensprojection' => 1,
|
10455
10475
|
'lensrec' => 1,
|
10456
10476
|
'lensshading' => 1,
|
10457
10477
|
'lenstableindex' => 1,
|
@@ -10581,6 +10601,10 @@ my %tagExists = (
|
|
10581
10601
|
'manufactureindex' => 1,
|
10582
10602
|
'manufacturername' => 1,
|
10583
10603
|
'mappingscheme' => 1,
|
10604
|
+
'mappingxcoefficients' => 1,
|
10605
|
+
'mappingxmode' => 1,
|
10606
|
+
'mappingycoefficients' => 1,
|
10607
|
+
'mappingymode' => 1,
|
10584
10608
|
'mapscale' => 1,
|
10585
10609
|
'mariahthresholds' => 1,
|
10586
10610
|
'mariahthresholdslow' => 1,
|
@@ -10613,7 +10637,6 @@ my %tagExists = (
|
|
10613
10637
|
'maximumimageindex' => 1,
|
10614
10638
|
'maximumobjectsize' => 1,
|
10615
10639
|
'maximumoperationindex' => 1,
|
10616
|
-
'maximumshutterangle' => 1,
|
10617
10640
|
'maximumtransformindex' => 1,
|
10618
10641
|
'maxjpegtableindex' => 1,
|
10619
10642
|
'maxpacketsize' => 1,
|
@@ -10802,6 +10825,7 @@ my %tagExists = (
|
|
10802
10825
|
'mediaistape' => 1,
|
10803
10826
|
'mediajukebox' => 1,
|
10804
10827
|
'medialanguagecode' => 1,
|
10828
|
+
'mediamode' => 1,
|
10805
10829
|
'medianetworkaffiliation' => 1,
|
10806
10830
|
'mediaoriginalbroadcastdatetime' => 1,
|
10807
10831
|
'mediaoriginalchannel' => 1,
|
@@ -11217,6 +11241,7 @@ my %tagExists = (
|
|
11217
11241
|
'orderingrestrictions' => 1,
|
11218
11242
|
'organizeraddress' => 1,
|
11219
11243
|
'organizername' => 1,
|
11244
|
+
'orientationdatapresent' => 1,
|
11220
11245
|
'orientationinfo' => 1,
|
11221
11246
|
'orientationoffset' => 1,
|
11222
11247
|
'orientoffset' => 1,
|
@@ -11475,6 +11500,8 @@ my %tagExists = (
|
|
11475
11500
|
'podcastid' => 1,
|
11476
11501
|
'podcastkeywords' => 1,
|
11477
11502
|
'pointsize' => 1,
|
11503
|
+
'polynomialcoefficients' => 1,
|
11504
|
+
'polynomialpower' => 1,
|
11478
11505
|
'popularimeter' => 1,
|
11479
11506
|
'popupfillattributes' => 1,
|
11480
11507
|
'popupflash' => 1,
|
@@ -11491,6 +11518,7 @@ my %tagExists = (
|
|
11491
11518
|
'postscript2csa' => 1,
|
11492
11519
|
'postscriptfont' => 1,
|
11493
11520
|
'postscriptfontname' => 1,
|
11521
|
+
'powerprofile' => 1,
|
11494
11522
|
'pragma' => 1,
|
11495
11523
|
'prediminanthue' => 1,
|
11496
11524
|
'preferredfamily' => 1,
|
@@ -11644,6 +11672,7 @@ my %tagExists = (
|
|
11644
11672
|
'protectiontype' => 1,
|
11645
11673
|
'protocol' => 1,
|
11646
11674
|
'protune' => 1,
|
11675
|
+
'protuneisomode' => 1,
|
11647
11676
|
'providercopyright' => 1,
|
11648
11677
|
'providerlogourl' => 1,
|
11649
11678
|
'providerrating' => 1,
|
@@ -12069,6 +12098,8 @@ my %tagExists = (
|
|
12069
12098
|
'sceneclassification' => 1,
|
12070
12099
|
'scenecolorimetryestimates' => 1,
|
12071
12100
|
'sceneilluminance' => 1,
|
12101
|
+
'schedulecapture' => 1,
|
12102
|
+
'schedulecapturetime' => 1,
|
12072
12103
|
'scheduleitemid' => 1,
|
12073
12104
|
'schemeinfo' => 1,
|
12074
12105
|
'schemetype' => 1,
|
@@ -12334,6 +12365,7 @@ my %tagExists = (
|
|
12334
12365
|
'spectralviewingconditions' => 1,
|
12335
12366
|
'spectralwhitepoint' => 1,
|
12336
12367
|
'speed' => 1,
|
12368
|
+
'speedrampsetting' => 1,
|
12337
12369
|
'speedstamp' => 1,
|
12338
12370
|
'speedunits' => 1,
|
12339
12371
|
'sphericalvideo' => 1,
|
@@ -12341,6 +12373,7 @@ my %tagExists = (
|
|
12341
12373
|
'spiffversion' => 1,
|
12342
12374
|
'spinstrength' => 1,
|
12343
12375
|
'spothalftone' => 1,
|
12376
|
+
'spotmeter' => 1,
|
12344
12377
|
'spouse' => 1,
|
12345
12378
|
'sr2dataifd' => 1,
|
12346
12379
|
'sr2private' => 1,
|
@@ -12982,7 +13015,6 @@ my %tagExists = (
|
|
12982
13015
|
'videoorientation' => 1,
|
12983
13016
|
'videoprofile' => 1,
|
12984
13017
|
'videoprofileversion' => 1,
|
12985
|
-
'videosampledesc' => 1,
|
12986
13018
|
'videoscantype' => 1,
|
12987
13019
|
'videosize' => 1,
|
12988
13020
|
'videostreamtype' => 1,
|
@@ -13012,6 +13044,7 @@ my %tagExists = (
|
|
13012
13044
|
'visibleoutputs' => 1,
|
13013
13045
|
'vistaidlistdata' => 1,
|
13014
13046
|
'visualflightruleshud' => 1,
|
13047
|
+
'visualsampledesc' => 1,
|
13015
13048
|
'vivo' => 1,
|
13016
13049
|
'vmaphandling' => 1,
|
13017
13050
|
'vmcoldropthresh' => 1,
|
@@ -13233,6 +13266,7 @@ my %tagExists = (
|
|
13233
13266
|
'zoomedpreviewimage' => 1,
|
13234
13267
|
'zoompos' => 1,
|
13235
13268
|
'zoomposition' => 1,
|
13269
|
+
'zoomscalenormalization' => 1,
|
13236
13270
|
'zoomstrength' => 1,
|
13237
13271
|
'zxif' => 1,
|
13238
13272
|
);
|
@@ -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 28442 tags, with 17565 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
|
@@ -5566,6 +5566,8 @@ is to write ImageRegion as a structure with these tags as new fields.
|
|
5566
5566
|
|
5567
5567
|
=head3 XMP LocationDetails Struct
|
5568
5568
|
|
5569
|
+
Note that the GPS elements of this structure are in the "exif" namespace.
|
5570
|
+
|
5569
5571
|
Field Name Writable
|
5570
5572
|
---------- --------
|
5571
5573
|
City string
|
@@ -12307,24 +12309,40 @@ L<https://github.com/gopro/gpmf-parser> for details about this format.
|
|
12307
12309
|
Tag ID Tag Name Writable
|
12308
12310
|
------ -------- --------
|
12309
12311
|
'AALP' AudioLevel no
|
12312
|
+
'ABSC' AutoBoostScore no
|
12310
12313
|
'ACCL' Accelerometer no
|
12311
12314
|
'ALLD' AutoLowLightDuration no
|
12315
|
+
'APTO' AudioProtuneOption no
|
12316
|
+
'ARUW' AspectRatioUnwarped no
|
12317
|
+
'ARWA' AspectRatioWarped no
|
12312
12318
|
'ATTD' Attitude no
|
12313
12319
|
'ATTR' AttitudeTarget no
|
12320
|
+
'AUBT' AudioBlueTooth no
|
12314
12321
|
'AUDO' AudioSetting no
|
12322
|
+
'AUPT' AutoProtune no
|
12323
|
+
'BITR' BitrateSetting no
|
12315
12324
|
'BPOS' Controller? no
|
12316
12325
|
'CASN' CameraSerialNumber no
|
12326
|
+
'CDAT' CreationDate no
|
12327
|
+
'CDTM' CaptureDelayTimer no
|
12328
|
+
'CLDP' ClassificationDataPresent no
|
12317
12329
|
'CORI' CameraOrientation no
|
12330
|
+
'CPIN' ChapterNumber no
|
12318
12331
|
'CSEN' CoyoteSense no
|
12332
|
+
'CTRL' ControlLevel no
|
12319
12333
|
'CYTS' CoyoteStatus no
|
12320
12334
|
'DEVC' DeviceContainer GoPro GPMF
|
12335
|
+
'DUST' DurationSetting no
|
12321
12336
|
'DVID' DeviceID? no
|
12322
12337
|
'DVNM' DeviceName no
|
12323
|
-
'
|
12338
|
+
'DZMX' DigitalZoomAmount no
|
12339
|
+
'DZOM' DigitalZoomOn no
|
12340
|
+
'DZST' DigitalZoom no
|
12324
12341
|
'EISA' ElectronicImageStabilization no
|
12342
|
+
'EISE' ElectronicStabilizationOn no
|
12325
12343
|
'EMPT' Empty? no
|
12326
12344
|
'ESCS' EscapeStatus? no
|
12327
|
-
'EXPT'
|
12345
|
+
'EXPT' ExposureType no
|
12328
12346
|
'FACE' FaceDetected no
|
12329
12347
|
'FCNM' FaceNumbers no
|
12330
12348
|
'FMWR' FirmwareVersion no
|
@@ -12339,6 +12357,9 @@ L<https://github.com/gopro/gpmf-parser> for details about this format.
|
|
12339
12357
|
'GPSU' GPSDateTime no
|
12340
12358
|
'GRAV' GravityVector no
|
12341
12359
|
'GYRO' Gyroscope no
|
12360
|
+
'HCLT' HorizonControl no
|
12361
|
+
'HDRV' HDRVideo no
|
12362
|
+
'HSGT' HindsightSettings no
|
12342
12363
|
'HUES' PrediminantHue no
|
12343
12364
|
'IORI' ImageOrientation no
|
12344
12365
|
'ISOE' ISOSpeeds no
|
@@ -12346,30 +12367,45 @@ L<https://github.com/gopro/gpmf-parser> for details about this format.
|
|
12346
12367
|
'KBAT' BatteryStatus GoPro KBAT
|
12347
12368
|
'LNED' LocalPositionNED no
|
12348
12369
|
'MAGN' Magnetometer no
|
12370
|
+
'MAPX' MappingXCoefficients no
|
12371
|
+
'MAPY' MappingYCoefficients no
|
12349
12372
|
'MINF' Model no
|
12373
|
+
'MMOD' MediaMode no
|
12350
12374
|
'MTRX' AccelerometerMatrix no
|
12351
12375
|
'MUID' MediaUniqueID no
|
12352
12376
|
'MWET' MicrophoneWet no
|
12377
|
+
'MXCF' MappingXMode no
|
12378
|
+
'MYCF' MappingYMode no
|
12379
|
+
'ORDP' OrientationDataPresent no
|
12353
12380
|
'OREN' AutoRotation no
|
12354
12381
|
'ORIN' InputOrientation no
|
12355
12382
|
'ORIO' OutputOrientation no
|
12356
12383
|
'PHDR' HDRSetting no
|
12384
|
+
'PIMD' ProtuneISOMode no
|
12357
12385
|
'PIMN' AutoISOMin no
|
12358
12386
|
'PIMX' AutoISOMax no
|
12387
|
+
'POLY' PolynomialCoefficients no
|
12359
12388
|
'PRES' PhotoResolution no
|
12360
|
-
'
|
12389
|
+
'PRJT' LensProjection no
|
12390
|
+
'PRTN' Protune no
|
12361
12391
|
'PTCL' ColorMode no
|
12362
12392
|
'PTEV' ExposureCompensation no
|
12363
12393
|
'PTSH' Sharpness no
|
12364
12394
|
'PTWB' WhiteBalance no
|
12395
|
+
'PWPR' PowerProfile no
|
12396
|
+
'PYCF' PolynomialPower no
|
12397
|
+
'RAMP' SpeedRampSetting no
|
12365
12398
|
'RATE' Rate no
|
12366
12399
|
'RMRK' Comments no
|
12367
12400
|
'SCAL' ScaleFactor? no
|
12401
|
+
'SCAP' ScheduleCapture no
|
12368
12402
|
'SCEN' SceneClassification no
|
12369
12403
|
'SCPR' ScaledPressure no
|
12404
|
+
'SCTM' ScheduleCaptureTime no
|
12370
12405
|
'SHUT' ExposureTimes no
|
12371
12406
|
'SIMU' ScaledIMU no
|
12372
12407
|
'SIUN' SIUnits? no
|
12408
|
+
'SMTR' SpotMeter no
|
12373
12409
|
'SROT' SensorReadoutTime no
|
12374
12410
|
'STMP' TimeStamp no
|
12375
12411
|
'STNM' StreamName? no
|
@@ -12390,6 +12426,8 @@ L<https://github.com/gopro/gpmf-parser> for details about this format.
|
|
12390
12426
|
'WNDM' WindProcessing no
|
12391
12427
|
'WRGB' WhiteBalanceRGB no
|
12392
12428
|
'YAVG' LumaAverage no
|
12429
|
+
'ZFOV' DiagonalFieldOfView no
|
12430
|
+
'ZMPL' ZoomScaleNormalization no
|
12393
12431
|
|
12394
12432
|
=head3 GoPro GLPI Tags
|
12395
12433
|
|
@@ -16858,12 +16896,14 @@ These tags are written by Nikon DSLR's which have the live view feature.
|
|
16858
16896
|
26 AFAreaHeight int16u
|
16859
16897
|
28 ContrastDetectAFInFocus int8u
|
16860
16898
|
AFPointsSelected undef[20]
|
16899
|
+
AFPointsSelected int16u
|
16861
16900
|
42 AFImageWidth int16u
|
16862
16901
|
44 AFImageHeight int16u
|
16863
16902
|
46 AFAreaXPosition int16u
|
16864
16903
|
47 FocusPositionHorizontal int8u~
|
16865
16904
|
48 AFAreaYPosition int16u
|
16866
16905
|
AFPointsInFocus undef[20]
|
16906
|
+
AFPointsInFocus undef[7]
|
16867
16907
|
49 FocusPositionVertical int8u~
|
16868
16908
|
50 AFAreaWidth int16u
|
16869
16909
|
52 AFAreaHeight int16u
|
@@ -31192,7 +31232,7 @@ MP4 sample table box.
|
|
31192
31232
|
'stps' PartialSyncSamples no
|
31193
31233
|
'stsc' SampleToChunk? no
|
31194
31234
|
'stsd' AudioSampleDesc QuickTime AudioSampleDesc
|
31195
|
-
|
31235
|
+
VisualSampleDesc QuickTime VisualSampleDesc
|
31196
31236
|
HintSampleDesc QuickTime HintSampleDesc
|
31197
31237
|
MetaSampleDesc QuickTime MetaSampleDesc
|
31198
31238
|
OtherSampleDesc QuickTime OtherSampleDesc
|
@@ -31338,7 +31378,7 @@ Child atoms found in "sinf" and/or "pinf" atoms.
|
|
31338
31378
|
'enda' Endianness no
|
31339
31379
|
'frma' PurchaseFileFormat no
|
31340
31380
|
|
31341
|
-
=head3 QuickTime
|
31381
|
+
=head3 QuickTime VisualSampleDesc Tags
|
31342
31382
|
|
31343
31383
|
ID/Index Tag Name Writable
|
31344
31384
|
-------- -------- --------
|
@@ -31533,6 +31573,7 @@ the config file.
|
|
31533
31573
|
'Lvlm' LevelMeter? rational64s
|
31534
31574
|
'MMA0' MinoltaMMA0 Minolta MMA
|
31535
31575
|
'MMA1' MinoltaMMA1 Minolta MMA
|
31576
|
+
'MUID' MediaUID no
|
31536
31577
|
'MVTG' FujiFilmMVTG EXIF
|
31537
31578
|
'NCDT' NikonNCDT Nikon NCDT
|
31538
31579
|
'PANA' PanasonicPANA Panasonic PANA
|
@@ -32021,7 +32062,7 @@ Tags used in QTIF QuickTime Image Files.
|
|
32021
32062
|
Tag ID Tag Name Writable
|
32022
32063
|
------ -------- --------
|
32023
32064
|
'idat' ImageData no
|
32024
|
-
'idsc' ImageDescription QuickTime
|
32065
|
+
'idsc' ImageDescription QuickTime VisualSampleDesc
|
32025
32066
|
'iicc' ICC_Profile ICC_Profile
|
32026
32067
|
|
32027
32068
|
=head2 RIFF Tags
|
@@ -214,7 +214,7 @@ sub ProcessGoogle($$)
|
|
214
214
|
|
215
215
|
delete $$et{ProcessGoogleTrailer}; # reset flag to process the Google trailer
|
216
216
|
|
217
|
-
return -1 if $$dirInfo{OutFile};
|
217
|
+
return -1 if $$dirInfo{OutFile}; # let caller handle the writing
|
218
218
|
|
219
219
|
# sometimes DirectoryItemLength is missing the Primary entry
|
220
220
|
$len = [ $len ] unless ref $len eq 'ARRAY';
|
@@ -566,7 +566,7 @@ sub WriteCRW($$)
|
|
566
566
|
my $trailPt;
|
567
567
|
while ($success) {
|
568
568
|
# check to see if trailer(s) exist(s)
|
569
|
-
my $trailInfo =
|
569
|
+
my $trailInfo = $et->IdentifyTrailer($raf) or last;
|
570
570
|
# rewrite the trailer(s)
|
571
571
|
$buff = '';
|
572
572
|
$$trailInfo{OutFile} = \$buff;
|
@@ -1225,6 +1225,7 @@ sub WriteQuickTime($$$)
|
|
1225
1225
|
OutFile => $outfile,
|
1226
1226
|
NoRefTest=> 1, # don't check directory references
|
1227
1227
|
WriteGroup => $$tagInfo{WriteGroup},
|
1228
|
+
Permanent => $$tagInfo{Permanent},
|
1228
1229
|
# initialize array to hold details about chunk offset table
|
1229
1230
|
# (each entry has 3-5 items: 0=atom type, 1=table offset, 2=table size,
|
1230
1231
|
# 3=optional base offset, 4=optional item ID)
|
@@ -1564,7 +1565,9 @@ sub WriteQuickTime($$$)
|
|
1564
1565
|
}
|
1565
1566
|
if ($msg) {
|
1566
1567
|
# (allow empty sample description for non-audio/video handler types, eg. 'url ', 'meta')
|
1567
|
-
|
1568
|
+
# (also, incorrectly written 'mett' SampleEntry by Google phones,
|
1569
|
+
# see https://exiftool.org/forum/index.php?msg=91158)
|
1570
|
+
if ($avType{$$et{MediaType}}) {
|
1568
1571
|
my $grp = $$et{CUR_WRITE_GROUP} || $parent;
|
1569
1572
|
$et->Error("$msg for $grp");
|
1570
1573
|
return $rtnErr;
|
@@ -4262,9 +4262,11 @@ sub WriteDirectory($$$;$)
|
|
4262
4262
|
if ($permanentDir{$grp0} and not ($$dirInfo{TagInfo} and $$dirInfo{TagInfo}{Deletable})) {
|
4263
4263
|
undef $delFlag;
|
4264
4264
|
}
|
4265
|
-
# (never delete an entire QuickTime group)
|
4266
4265
|
if ($delFlag) {
|
4267
|
-
if (
|
4266
|
+
if ($$dirInfo{Permanent}) {
|
4267
|
+
$self->Warn("Not deleting permanent $dirName directory");
|
4268
|
+
undef $grp1;
|
4269
|
+
} elsif (($grp0 =~ /^(MakerNotes)$/ or $grp1 =~ /^(IFD0|ExifIFD|MakerNotes)$/) and
|
4268
4270
|
$self->IsRawType() and
|
4269
4271
|
# allow non-permanent MakerNote directories to be deleted (ie. NikonCapture)
|
4270
4272
|
(not $$dirInfo{TagInfo} or not defined $$dirInfo{TagInfo}{Permanent} or
|
@@ -6027,7 +6029,7 @@ sub WriteJPEG($$)
|
|
6027
6029
|
Write($outfile, $hdr, $s, $segData) or $err = 1;
|
6028
6030
|
my ($buff, $endPos, $trailInfo);
|
6029
6031
|
my $delPreview = $$self{DEL_PREVIEW};
|
6030
|
-
$trailInfo = IdentifyTrailer($raf) unless $$delGroup{Trailer};
|
6032
|
+
$trailInfo = $self->IdentifyTrailer($raf) unless $$delGroup{Trailer};
|
6031
6033
|
my $nvTrail = $self->GetNewValueHash($Image::ExifTool::Extra{Trailer});
|
6032
6034
|
unless ($oldOutfile or $delPreview or $trailInfo or $$delGroup{Trailer} or $nvTrail or
|
6033
6035
|
$$self{HiddenData})
|
@@ -402,6 +402,7 @@ my %sLocationDetails = (
|
|
402
402
|
STRUCT_NAME => 'LocationDetails',
|
403
403
|
NAMESPACE => 'Iptc4xmpExt',
|
404
404
|
GROUPS => { 2 => 'Location' },
|
405
|
+
NOTES => 'Note that the GPS elements of this structure are in the "exif" namespace.',
|
405
406
|
Identifier => { List => 'Bag', Namespace => 'xmp' },
|
406
407
|
City => { },
|
407
408
|
CountryCode => { },
|
@@ -420,6 +421,7 @@ my %sLocationDetails = (
|
|
420
421
|
PrintConvInv => '$val=~s/\s*m$//;$val',
|
421
422
|
},
|
422
423
|
GPSAltitudeRef => {
|
424
|
+
Namespace => 'exif',
|
423
425
|
Writable => 'integer',
|
424
426
|
PrintConv => {
|
425
427
|
OTHER => sub {
|
data/bin/lib/Image/ExifTool.pm
CHANGED
@@ -29,7 +29,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
|
|
29
29
|
%jpegMarker %specialTags %fileTypeLookup $testLen $exeDir
|
30
30
|
%static_vars $advFmtSelf);
|
31
31
|
|
32
|
-
$VERSION = '13.
|
32
|
+
$VERSION = '13.18';
|
33
33
|
$RELEASE = '';
|
34
34
|
@ISA = qw(Exporter);
|
35
35
|
%EXPORT_TAGS = (
|
@@ -6868,10 +6868,10 @@ sub HDump($$$$;$$$)
|
|
6868
6868
|
# Returns: Trailer info hash (with RAF and DirName set),
|
6869
6869
|
# or undef if no recognized trailer was found
|
6870
6870
|
# Notes: leaves file position unchanged
|
6871
|
-
sub IdentifyTrailer(
|
6871
|
+
sub IdentifyTrailer($$;$)
|
6872
6872
|
{
|
6873
|
-
my $raf =
|
6874
|
-
|
6873
|
+
my ($self, $raf, $offset) = @_;
|
6874
|
+
$offset or $offset = 0;
|
6875
6875
|
my $pos = $raf->Tell();
|
6876
6876
|
my ($buff, $type, $len);
|
6877
6877
|
while ($raf->Seek(-$offset, 2) and ($len = $raf->Tell()) > 0) {
|
@@ -6900,6 +6900,9 @@ sub IdentifyTrailer($;$)
|
|
6900
6900
|
$type = 'Vivo';
|
6901
6901
|
} elsif ($buff =~ /jxrs...\0$/s) {
|
6902
6902
|
$type = 'OnePlus';
|
6903
|
+
} elsif ($$self{ProcessGoogleTrailer}) {
|
6904
|
+
# check for Google trailer information if specific XMP tags exist
|
6905
|
+
$type = 'Google';
|
6903
6906
|
}
|
6904
6907
|
last;
|
6905
6908
|
}
|
@@ -7052,7 +7055,7 @@ sub ProcessTrailers($$)
|
|
7052
7055
|
$offset += $dirLen;
|
7053
7056
|
last if $dataPos and $$self{TrailerStart} and $dataPos <= $$self{TrailerStart};
|
7054
7057
|
# look for next trailer
|
7055
|
-
my $nextTrail = IdentifyTrailer($raf, $offset);
|
7058
|
+
my $nextTrail = $self->IdentifyTrailer($raf, $offset);
|
7056
7059
|
# process Google trailer after all others if necessary and not done already
|
7057
7060
|
unless ($nextTrail) {
|
7058
7061
|
last unless $$self{ProcessGoogleTrailer};
|
@@ -7504,11 +7507,7 @@ sub ProcessJPEG($$;$)
|
|
7504
7507
|
}
|
7505
7508
|
}
|
7506
7509
|
unless ($fast) {
|
7507
|
-
$trailInfo = IdentifyTrailer($raf);
|
7508
|
-
# check for Google trailer information if specific XMP tags exist
|
7509
|
-
if (not $trailInfo and $$self{ProcessGoogleTrailer}) {
|
7510
|
-
$trailInfo = { DirName => 'Google', RAF => $raf };
|
7511
|
-
}
|
7510
|
+
$trailInfo = $self->IdentifyTrailer($raf);
|
7512
7511
|
# process trailer now unless we are doing verbose dump
|
7513
7512
|
if ($trailInfo and $verbose < 3 and not $htmlDump) {
|
7514
7513
|
# process trailers (keep trailInfo to finish processing later
|
@@ -8619,7 +8618,7 @@ sub DoProcessTIFF($$;$)
|
|
8619
8618
|
}
|
8620
8619
|
# process information in recognized trailers
|
8621
8620
|
if ($raf) {
|
8622
|
-
my $trailInfo = IdentifyTrailer($raf);
|
8621
|
+
my $trailInfo = $self->IdentifyTrailer($raf);
|
8623
8622
|
if ($trailInfo) {
|
8624
8623
|
# scan to find AFCP if necessary (Note: we are scanning
|
8625
8624
|
# from a random file position in the TIFF)
|
@@ -8724,7 +8723,7 @@ sub DoProcessTIFF($$;$)
|
|
8724
8723
|
for (;;) {
|
8725
8724
|
last unless $extra > 12;
|
8726
8725
|
$raf->Seek($tiffEnd); # seek back to end of image
|
8727
|
-
$trailInfo = IdentifyTrailer($raf);
|
8726
|
+
$trailInfo = $self->IdentifyTrailer($raf);
|
8728
8727
|
last unless $trailInfo;
|
8729
8728
|
my $tbuf = '';
|
8730
8729
|
$$trailInfo{OutFile} = \$tbuf; # rewrite trailer(s)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: exiftool_vendored
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 13.
|
4
|
+
version: 13.18.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew McEachen
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2025-
|
12
|
+
date: 2025-02-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: exiftool
|