exiftool_vendored 13.12.0 → 13.16.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 +79 -22
- data/bin/MANIFEST +7 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/arg_files/exif2xmp.args +4 -0
- data/bin/arg_files/xmp2exif.args +2 -1
- data/bin/build_geolocation +1 -1
- data/bin/exiftool +6 -5
- data/bin/lib/Image/ExifTool/AFCP.pm +5 -5
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +20 -15
- data/bin/lib/Image/ExifTool/Canon.pm +5 -3
- data/bin/lib/Image/ExifTool/DJI.pm +64 -11
- data/bin/lib/Image/ExifTool/EXE.pm +17 -3
- data/bin/lib/Image/ExifTool/Geolocation.pm +16 -7
- data/bin/lib/Image/ExifTool/ID3.pm +4 -4
- data/bin/lib/Image/ExifTool/JPEG.pm +5 -1
- data/bin/lib/Image/ExifTool/LigoGPS.pm +1 -0
- data/bin/lib/Image/ExifTool/MIE.pm +6 -3
- data/bin/lib/Image/ExifTool/Nikon.pm +328 -4
- data/bin/lib/Image/ExifTool/NikonCustom.pm +1 -1
- data/bin/lib/Image/ExifTool/Panasonic.pm +7 -1
- data/bin/lib/Image/ExifTool/Protobuf.pm +25 -7
- data/bin/lib/Image/ExifTool/QuickTime.pm +215 -59
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +12 -12
- data/bin/lib/Image/ExifTool/README +4 -1
- data/bin/lib/Image/ExifTool/RIFF.pm +11 -1
- data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
- data/bin/lib/Image/ExifTool/TagLookup.pm +4821 -4811
- data/bin/lib/Image/ExifTool/TagNames.pod +231 -25
- data/bin/lib/Image/ExifTool/Torrent.pm +2 -2
- data/bin/lib/Image/ExifTool/Vivo.pm +124 -0
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +114 -63
- data/bin/lib/Image/ExifTool/WriteRIFF.pl +3 -1
- data/bin/lib/Image/ExifTool/Writer.pl +16 -11
- data/bin/lib/Image/ExifTool.pm +24 -8
- data/bin/lib/Image/ExifTool.pod +52 -49
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +3 -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 28393 tags, with 17525 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
|
@@ -171,6 +171,7 @@ L<https://www.w3.org/Graphics/JPEG/jfif3.pdf> for the JPEG specification.
|
|
171
171
|
PhotoMechanic PhotoMechanic
|
172
172
|
MIE MIE
|
173
173
|
Samsung Samsung Trailer
|
174
|
+
Vivo Vivo
|
174
175
|
EmbeddedVideo no
|
175
176
|
Insta360 no
|
176
177
|
NikonApp no
|
@@ -12972,34 +12973,56 @@ Thermal parameters extracted from APP4 of some DJI RJPEG files.
|
|
12972
12973
|
|
12973
12974
|
=head3 DJI Protobuf Tags
|
12974
12975
|
|
12975
|
-
Tags found in protobuf-format DJI djmd and dbgi timed metadata.
|
12976
|
-
tags are
|
12977
|
-
the Unknown option to 1
|
12978
|
-
ID's are composed of the corresponding .proto
|
12979
|
-
hierarchical protobuf field numbers.
|
12976
|
+
Tags found in protobuf-format DJI djmd and dbgi timed metadata. The known
|
12977
|
+
tags listed below are extracted by default, but unknown djmd tags may be
|
12978
|
+
extracted as well by setting the Unknown option to 1, or 2 to also extract
|
12979
|
+
unknown dbgi debug tags. Tag ID's are composed of the corresponding .proto
|
12980
|
+
file name combined with the hierarchical protobuf field numbers.
|
12980
12981
|
|
12981
12982
|
ExifTool currently extracts timed GPS plus a few other tags from DJI devices
|
12982
12983
|
which use the following protocols: dvtm_AVATA2.proto (Avanta 2),
|
12983
|
-
dvtm_ac203.proto (Osmo Action 4),
|
12984
|
+
dvtm_ac203.proto (Osmo Action 4), dvtm_ac204.proto (Osmo Action 5) and
|
12985
|
+
dvtm_wm265e.proto (Mavic 3).
|
12986
|
+
|
12987
|
+
Note that with the protobuf format, numerical tags missing from the output
|
12988
|
+
for a given protocol should be considered to have the default value of 0.
|
12984
12989
|
|
12985
12990
|
Tag ID Tag Name Writable
|
12986
12991
|
------ -------- --------
|
12987
12992
|
'Protocol' Protocol no
|
12993
|
+
'dvtm_AVATA2_1-1-5' SerialNumber no
|
12988
12994
|
'dvtm_AVATA2_1-1-10' Model no
|
12989
|
-
'dvtm_AVATA2_2-2-3-1'
|
12995
|
+
'dvtm_AVATA2_2-2-3-1' SerialNumber2 no
|
12990
12996
|
'dvtm_AVATA2_2-3' FrameInfo DJI FrameInfo
|
12991
12997
|
'dvtm_AVATA2_3-1-2' TimeStamp no
|
12992
12998
|
'dvtm_AVATA2_3-4-4-1' GPSInfo DJI GPSInfo
|
12999
|
+
'dvtm_ac203_1-1-5' SerialNumber no
|
12993
13000
|
'dvtm_ac203_1-1-10' Model no
|
12994
13001
|
'dvtm_ac203_2-3' FrameInfo DJI FrameInfo
|
12995
13002
|
'dvtm_ac203_3-4-2-1' GPSInfo DJI GPSInfo
|
12996
13003
|
'dvtm_ac203_3-4-2-2' GPSAltitude no
|
12997
13004
|
'dvtm_ac203_3-4-2-6-1' GPSDateTime no
|
13005
|
+
'dvtm_ac204_1-1-5' SerialNumber no
|
12998
13006
|
'dvtm_ac204_1-1-10' Model no
|
12999
13007
|
'dvtm_ac204_2-3' FrameInfo DJI FrameInfo
|
13000
13008
|
'dvtm_ac204_3-4-2-1' GPSInfo DJI GPSInfo
|
13001
13009
|
'dvtm_ac204_3-4-2-2' GPSAltitude no
|
13002
13010
|
'dvtm_ac204_3-4-2-6-1' GPSDateTime no
|
13011
|
+
'dvtm_wm265e_1-1-5' SerialNumber no
|
13012
|
+
'dvtm_wm265e_1-1-10' Model no
|
13013
|
+
'dvtm_wm265e_2-2' FrameInfo DJI FrameInfo
|
13014
|
+
'dvtm_wm265e_3-2-2-1' ISO no
|
13015
|
+
'dvtm_wm265e_3-2-3-1' ShutterSpeed no
|
13016
|
+
'dvtm_wm265e_3-2-6-1' DigitalZoom no
|
13017
|
+
'dvtm_wm265e_3-3-3-1' DroneRoll no
|
13018
|
+
'dvtm_wm265e_3-3-3-2' DronePitch no
|
13019
|
+
'dvtm_wm265e_3-3-3-3' DroneYaw no
|
13020
|
+
'dvtm_wm265e_3-3-4-1' GPSInfo DJI GPSInfo
|
13021
|
+
'dvtm_wm265e_3-3-4-2' AbsoluteAltitude no
|
13022
|
+
'dvtm_wm265e_3-3-5-1' RelativeAltitude no
|
13023
|
+
'dvtm_wm265e_3-4-3-1' GimbalPitch no
|
13024
|
+
'dvtm_wm265e_3-4-3-2' GimbalRoll no
|
13025
|
+
'dvtm_wm265e_3-4-3-3' GimbalYaw no
|
13003
13026
|
|
13004
13027
|
=head3 DJI FrameInfo Tags
|
13005
13028
|
|
@@ -17214,6 +17237,8 @@ These tags are extracted from encrypted data in images from the Z9.
|
|
17214
17237
|
MenuSettingsOffsetZ9v4 Nikon MenuSettingsZ9v3
|
17215
17238
|
-
|
17216
17239
|
Nikon MenuSettingsZ9v4
|
17240
|
+
-
|
17241
|
+
Nikon MenuSettingsZ9v5
|
17217
17242
|
|
17218
17243
|
=head3 Nikon MenuSettingsZ9 Tags
|
17219
17244
|
|
@@ -17375,7 +17400,7 @@ These tags are used by the Z9 firmware 3.00.
|
|
17375
17400
|
|
17376
17401
|
=head3 Nikon MenuSettingsZ9v4 Tags
|
17377
17402
|
|
17378
|
-
These tags are used by the Z9 firmware 4.0.0 and 4.1.0
|
17403
|
+
These tags are used by the Z9 firmware 4.0.0 and 4.1.0.
|
17379
17404
|
|
17380
17405
|
Index1 Tag Name Writable
|
17381
17406
|
------ -------- --------
|
@@ -17515,6 +17540,148 @@ These tags are used by the Z9 firmware 4.0.0 and 4.1.0
|
|
17515
17540
|
2070 BracketButtonPlaybackMode int8u
|
17516
17541
|
2072 FlashModeButtonPlaybackMode int8u
|
17517
17542
|
|
17543
|
+
=head3 Nikon MenuSettingsZ9v5 Tags
|
17544
|
+
|
17545
|
+
These tags are used by the Z9 firmware 5.1.
|
17546
|
+
|
17547
|
+
Index1 Tag Name Writable
|
17548
|
+
------ -------- --------
|
17549
|
+
72 HighFrameRate int8u
|
17550
|
+
158 MultipleExposureMode int8u
|
17551
|
+
160 MultiExposureShots int8u
|
17552
|
+
208 Intervals int32u
|
17553
|
+
212 ShotsPerInterval int32u
|
17554
|
+
252 FocusShiftNumberShots int8u
|
17555
|
+
256 FocusShiftStepWidth int8u
|
17556
|
+
260 FocusShiftInterval int8u~
|
17557
|
+
264 FocusShiftExposureLock? int8u
|
17558
|
+
294 PhotoShootingMenuBank int8u
|
17559
|
+
296 ExtendedMenuBanks int8u
|
17560
|
+
332 PhotoShootingMenuBankImageArea int8u
|
17561
|
+
346 AutoISO int8u
|
17562
|
+
348 ISOAutoHiLimit? int16u
|
17563
|
+
350 ISOAutoFlashLimit? int16u
|
17564
|
+
358 ISOAutoShutterTime no
|
17565
|
+
440 MovieVignetteControl? int8u
|
17566
|
+
442 DiffractionCompensation int8u
|
17567
|
+
444 FlickerReductionShooting int8u
|
17568
|
+
448 FlashControlMode int8u
|
17569
|
+
450 FlashMasterCompensation? int8s
|
17570
|
+
454 FlashGNDistance? no
|
17571
|
+
458 FlashOutput? int8u
|
17572
|
+
552 AFAreaMode int8u
|
17573
|
+
554 VRMode int8u
|
17574
|
+
558 BracketSet int8u
|
17575
|
+
560 BracketProgram int8u
|
17576
|
+
562 BracketIncrement int8u
|
17577
|
+
574 HDR int8u
|
17578
|
+
580 SecondarySlotFunction int8u
|
17579
|
+
586 HDRLevel int8u
|
17580
|
+
590 Slot2JpgSize? int8u
|
17581
|
+
596 DXCropAlert int8u
|
17582
|
+
598 SubjectDetection int8u
|
17583
|
+
600 DynamicAFAreaSize int8u
|
17584
|
+
640 HighFrequencyFlickerReduction? int8u
|
17585
|
+
650 MovieImageArea? int8u & 0x01
|
17586
|
+
660 MovieType? int8u
|
17587
|
+
662 MovieISOAutoHiLimit? int16u
|
17588
|
+
664 MovieISOAutoControlManualMode? int8u
|
17589
|
+
666 MovieISOAutoManualMode? int16u
|
17590
|
+
740 MovieActiveD-Lighting? int8u
|
17591
|
+
742 MovieHighISONoiseReduction? int8u
|
17592
|
+
748 MovieFlickerReduction int8u
|
17593
|
+
750 MovieMeteringMode? int8u
|
17594
|
+
752 MovieFocusMode? int8u
|
17595
|
+
754 MovieAFAreaMode int8u
|
17596
|
+
756 MovieVRMode? int8u
|
17597
|
+
760 MovieElectronicVR? int8u
|
17598
|
+
762 MovieSoundRecording? int8u
|
17599
|
+
764 MicrophoneSensitivity? int8u
|
17600
|
+
766 MicrophoneAttenuator? int8u
|
17601
|
+
768 MicrophoneFrequencyResponse? int8u
|
17602
|
+
770 WindNoiseReduction? int8u
|
17603
|
+
792 MovieToneMap? int8u
|
17604
|
+
798 MovieFrameSize? int8u
|
17605
|
+
800 MovieFrameRate? int8u
|
17606
|
+
806 MicrophoneJackPower? int8u
|
17607
|
+
807 MovieDXCropAlert? int8u
|
17608
|
+
808 MovieSubjectDetection? int8u
|
17609
|
+
816 MovieHighResZoom? int8u
|
17610
|
+
851 CustomSettingsZ9v4 NikonCustom SettingsZ9v4
|
17611
|
+
1502 Language? int8u
|
17612
|
+
1504 TimeZone int8u
|
17613
|
+
1510 MonitorBrightness? int8u
|
17614
|
+
1532 AFFineTune? int8u
|
17615
|
+
1536 NonCPULens1FocalLength? int16s~
|
17616
|
+
1540 NonCPULens2FocalLength? int16s~
|
17617
|
+
1542 NonCPULens3FocalLength? int16s~
|
17618
|
+
1548 NonCPULens4FocalLength? int16s~
|
17619
|
+
1552 NonCPULens5FocalLength? int16s~
|
17620
|
+
1556 NonCPULens6FocalLength? int16s~
|
17621
|
+
1560 NonCPULens7FocalLength? int16s~
|
17622
|
+
1564 NonCPULens8FocalLength? int16s~
|
17623
|
+
1568 NonCPULens9FocalLength? int16s~
|
17624
|
+
1572 NonCPULens10FocalLength? int16s~
|
17625
|
+
1576 NonCPULens11FocalLength? int16s~
|
17626
|
+
1580 NonCPULens12FocalLength? int16s~
|
17627
|
+
1584 NonCPULens13FocalLength? int16s~
|
17628
|
+
1588 NonCPULens14FocalLength? int16s~
|
17629
|
+
1592 NonCPULens15FocalLength? int16s~
|
17630
|
+
1596 NonCPULens16FocalLength? int16s~
|
17631
|
+
1600 NonCPULens17FocalLength? int16s~
|
17632
|
+
1604 NonCPULens18FocalLength? int16s~
|
17633
|
+
1608 NonCPULens19FocalLength? int16s~
|
17634
|
+
1612 NonCPULens20FocalLength? int16s~
|
17635
|
+
1616 NonCPULens1MaxAperture? int16s~
|
17636
|
+
1620 NonCPULens2MaxAperture? int16s~
|
17637
|
+
1624 NonCPULens3MaxAperture? int16s~
|
17638
|
+
1628 NonCPULens4MaxAperture? int16s~
|
17639
|
+
1632 NonCPULens5MaxAperture? int16s~
|
17640
|
+
1636 NonCPULens6MaxAperture? int16s~
|
17641
|
+
1640 NonCPULens7MaxAperture? int16s~
|
17642
|
+
1644 NonCPULens8MaxAperture? int16s~
|
17643
|
+
1648 NonCPULens9MaxAperture? int16s~
|
17644
|
+
1652 NonCPULens10MaxAperture? int16s~
|
17645
|
+
1656 NonCPULens11MaxAperture? int16s~
|
17646
|
+
1660 NonCPULens12MaxAperture? int16s~
|
17647
|
+
1664 NonCPULens13MaxAperture? int16s~
|
17648
|
+
1668 NonCPULens14MaxAperture? int16s~
|
17649
|
+
1672 NonCPULens15MaxAperture? int16s~
|
17650
|
+
1676 NonCPULens16MaxAperture? int16s~
|
17651
|
+
1680 NonCPULens17MaxAperture? int16s~
|
17652
|
+
1684 NonCPULens18MaxAperture? int16s~
|
17653
|
+
1688 NonCPULens19MaxAperture? int16s~
|
17654
|
+
1692 NonCPULens20MaxAperture? int16s~
|
17655
|
+
1708 HDMIOutputResolution int8u
|
17656
|
+
1721 SetClockFromLocationData? int8u
|
17657
|
+
1728 AirplaneMode? int8u
|
17658
|
+
1729 EmptySlotRelease? int8u
|
17659
|
+
1764 EnergySavingMode? int8u
|
17660
|
+
1788 RecordLocationData? int8u
|
17661
|
+
1792 USBPowerDelivery? int8u
|
17662
|
+
1801 SensorShield? int8u
|
17663
|
+
1866 AutoCapturePreset int8u
|
17664
|
+
1868 FocusShiftAutoReset? int8u
|
17665
|
+
1926 PreReleaseBurstLength int8u
|
17666
|
+
1928 PostReleaseBurstLength int8u
|
17667
|
+
1942 VerticalISOButton int8u
|
17668
|
+
1944 ExposureCompensationButton int8u
|
17669
|
+
1946 ISOButton int8u
|
17670
|
+
2006 ViewModeShowEffectsOfSettings? int8u
|
17671
|
+
2008 DispButton int8u
|
17672
|
+
2052 ExposureDelay fixed32u~
|
17673
|
+
2056 CommandDialFrameAdvanceZoom? int8u
|
17674
|
+
2058 SubCommandDialFrameAdvanceZoom? int8u
|
17675
|
+
2060 PlaybackButton int8u
|
17676
|
+
2062 WBButton int8u
|
17677
|
+
2064 BracketButton int8u
|
17678
|
+
2066 FlashModeButton int8u
|
17679
|
+
2068 LensFunc1ButtonPlaybackMode int8u
|
17680
|
+
2070 LensFunc2ButtonPlaybackMode int8u
|
17681
|
+
2072 PlaybackButtonPlaybackMode int8u
|
17682
|
+
2074 BracketButtonPlaybackMode int8u
|
17683
|
+
2076 FlashModeButtonPlaybackMode int8u
|
17684
|
+
|
17518
17685
|
=head3 Nikon ShotInfo Tags
|
17519
17686
|
|
17520
17687
|
This information is encrypted for ShotInfoVersion 02xx, and some tags are
|
@@ -23679,6 +23846,16 @@ Tags written by the Sony Image Data Converter utility in ARW images.
|
|
23679
23846
|
0xd100 VersionCreateDate string
|
23680
23847
|
0xd101 VersionModifyDate string
|
23681
23848
|
|
23849
|
+
=head2 Vivo Tags
|
23850
|
+
|
23851
|
+
Proprietary information written by some Vivo phones.
|
23852
|
+
|
23853
|
+
Tag Name Writable
|
23854
|
+
-------- --------
|
23855
|
+
HDRImage no
|
23856
|
+
HiddenData no
|
23857
|
+
JSONInfo no
|
23858
|
+
|
23682
23859
|
=head2 Unknown Tags
|
23683
23860
|
|
23684
23861
|
The following tags are decoded in unsupported maker notes. Use the Unknown
|
@@ -29967,15 +30144,16 @@ appropriate table in the config file (see
|
|
29967
30144
|
example.config in the full distribution for an
|
29968
30145
|
example). Note that some tags with the same name but different ID's may
|
29969
30146
|
exist in the same location, but the family 7 group names may be used to
|
29970
|
-
differentiate these.
|
29971
|
-
QuickTime-based files; it extracts other track-specific and timed metadata,
|
29972
|
-
but can not yet edit tags in these locations (with the exception of
|
29973
|
-
track-level date/time tags).
|
30147
|
+
differentiate these.
|
29974
30148
|
|
29975
|
-
|
29976
|
-
|
29977
|
-
|
29978
|
-
|
30149
|
+
ExifTool currently writes
|
30150
|
+
L<ItemList|Image::ExifTool::TagNames/QuickTime ItemList Tags> and
|
30151
|
+
L<UserData|Image::ExifTool::TagNames/QuickTime UserData Tags> only as
|
30152
|
+
top-level metadata, but select Keys tags are may be written to the audio or
|
30153
|
+
video track. See the
|
30154
|
+
L<AudioKeys|Image::ExifTool::TagNames/QuickTime AudioKeys Tags> and
|
30155
|
+
L<VideoKeys|Image::ExifTool::TagNames/QuickTime VideoKeys Tags> tags for
|
30156
|
+
more information.
|
29979
30157
|
|
29980
30158
|
Alternate language tags may be accessed for
|
29981
30159
|
L<ItemList|Image::ExifTool::TagNames/QuickTime ItemList Tags> and
|
@@ -29987,8 +30165,8 @@ L<UserData|Image::ExifTool::TagNames/QuickTime UserData Tags> tags support a
|
|
29987
30165
|
language code, but without a country code. If no language code is specified
|
29988
30166
|
when writing, the default language is written and alternate languages for
|
29989
30167
|
the tag are deleted. Use the "und" language code to write the default
|
29990
|
-
language without deleting alternate languages. Note that
|
29991
|
-
as
|
30168
|
+
language without deleting alternate languages. Note that when reading,
|
30169
|
+
"eng" is also treated as the default language if there is no country code.
|
29992
30170
|
|
29993
30171
|
According to the specification, integer-format QuickTime date/time tags
|
29994
30172
|
should be stored as UTC. Unfortunately, digital cameras often store local
|
@@ -30073,7 +30251,7 @@ for the official QuickTime specification.
|
|
30073
30251
|
The tags below are extracted from timed metadata in QuickTime and other
|
30074
30252
|
formats of video files when the ExtractEmbedded option is used. Although
|
30075
30253
|
most of these tags are combined into the single table below, ExifTool
|
30076
|
-
currently reads
|
30254
|
+
currently reads 100 different types of timed GPS metadata from video files.
|
30077
30255
|
|
30078
30256
|
Tag Name Writable
|
30079
30257
|
-------- --------
|
@@ -30276,15 +30454,11 @@ changed via the config file.
|
|
30276
30454
|
'artist' Artist yes
|
30277
30455
|
'artwork' Artwork yes
|
30278
30456
|
'author' Author yes
|
30279
|
-
'camera.framereadouttimeinmicroseconds'
|
30280
|
-
FrameReadoutTime yes
|
30281
|
-
'camera.identifier' CameraIdentifier yes
|
30282
30457
|
'collection.user' UserCollection yes
|
30283
30458
|
'com.android.capture.fps' AndroidCaptureFPS float
|
30284
30459
|
'com.android.manufacturer' AndroidMake yes
|
30285
30460
|
'com.android.model' AndroidModel yes
|
30286
30461
|
'com.android.version' AndroidVersion yes
|
30287
|
-
'com.apple.photos.captureMode' CaptureMode yes
|
30288
30462
|
'com.xiaomi.hdr10' XiaomiHDR10 int32s
|
30289
30463
|
'com.xiaomi.preview_video_cover'
|
30290
30464
|
XiaomiPreviewVideoCover int32s
|
@@ -30353,6 +30527,35 @@ changed via the config file.
|
|
30353
30527
|
'xiaomi.exifInfo.videoinfo' XiaomiExifInfo yes
|
30354
30528
|
'year' Year yes
|
30355
30529
|
|
30530
|
+
=head3 QuickTime AudioKeys Tags
|
30531
|
+
|
30532
|
+
Keys tags written in the audio track by some Apple devices. These tags
|
30533
|
+
belong to the ExifTool AudioKeys family 1 gorup.
|
30534
|
+
|
30535
|
+
Tag ID Tag Name Writable
|
30536
|
+
------ -------- --------
|
30537
|
+
'player.movie.audio.balance' Balance yes
|
30538
|
+
'player.movie.audio.bass' Bass yes
|
30539
|
+
'player.movie.audio.gain' AudioGain yes
|
30540
|
+
'player.movie.audio.mute' Mute int8u
|
30541
|
+
'player.movie.audio.pitchshift' PitchShift yes
|
30542
|
+
'player.movie.audio.treble' Treble yes
|
30543
|
+
|
30544
|
+
=head3 QuickTime VideoKeys Tags
|
30545
|
+
|
30546
|
+
Keys tags written in the video track. These tags belong to the ExifTool
|
30547
|
+
VideoKeys family 1 gorup.
|
30548
|
+
|
30549
|
+
Tag ID Tag Name Writable
|
30550
|
+
------ -------- --------
|
30551
|
+
'camera.focal_length.35mm_equivalent'
|
30552
|
+
FocalLengthIn35mmFormat yes
|
30553
|
+
'camera.framereadouttimeinmicroseconds'
|
30554
|
+
FrameReadoutTime yes
|
30555
|
+
'camera.identifier' CameraIdentifier yes
|
30556
|
+
'camera.lens_model' LensModel yes
|
30557
|
+
'com.apple.photos.captureMode' CaptureMode yes
|
30558
|
+
|
30356
30559
|
=head3 QuickTime FaceInfo Tags
|
30357
30560
|
|
30358
30561
|
Tag ID Tag Name Writable
|
@@ -30452,7 +30655,9 @@ Tags found in Pittasoft Blackvue dashcam "free" data.
|
|
30452
30655
|
'ipro' ItemProtection? no
|
30453
30656
|
'iprp' ItemProperties QuickTime ItemProp
|
30454
30657
|
'iref' ItemReference QuickTime ItemRef
|
30455
|
-
'keys'
|
30658
|
+
'keys' AudioKeys QuickTime AudioKeys
|
30659
|
+
VideoKeys QuickTime VideoKeys
|
30660
|
+
Keys QuickTime Keys
|
30456
30661
|
'pitm' PrimaryItemReference no
|
30457
30662
|
'uuid' MetaVersion no
|
30458
30663
|
UUID-Unknown? no
|
@@ -32120,6 +32325,7 @@ This chunk is found in lossless WebP files.
|
|
32120
32325
|
------ -------- --------
|
32121
32326
|
1 ImageWidth no
|
32122
32327
|
2 ImageHeight no
|
32328
|
+
4 AlphaIsUsed no
|
32123
32329
|
|
32124
32330
|
=head3 RIFF VP8X Tags
|
32125
32331
|
|
@@ -14,7 +14,7 @@ use strict;
|
|
14
14
|
use vars qw($VERSION);
|
15
15
|
use Image::ExifTool qw(:DataAccess :Utils);
|
16
16
|
|
17
|
-
$VERSION = '1.
|
17
|
+
$VERSION = '1.07';
|
18
18
|
|
19
19
|
sub ReadBencode($$$);
|
20
20
|
sub ExtractTags($$$;$$@);
|
@@ -282,7 +282,7 @@ sub ProcessTorrent($$)
|
|
282
282
|
my $dict = ReadBencode($et, $raf, \$buff);
|
283
283
|
my $err = $$raf{BencodeError};
|
284
284
|
$et->Warn("Bencode error: $err") if $err;
|
285
|
-
if (ref $dict eq 'HASH' and ($$dict{announce} or $$dict{'created by'})) {
|
285
|
+
if (ref $dict eq 'HASH' and ($$dict{announce} or $$dict{'created by'} or $$dict{info})) {
|
286
286
|
$et->SetFileType();
|
287
287
|
my $tagTablePtr = GetTagTable('Image::ExifTool::Torrent::Main');
|
288
288
|
ExtractTags($et, $dict, $tagTablePtr) and $success = 1;
|
@@ -0,0 +1,124 @@
|
|
1
|
+
#------------------------------------------------------------------------------
|
2
|
+
# File: Vivo.pm
|
3
|
+
#
|
4
|
+
# Description: Read trailer written by Vivo phones
|
5
|
+
#
|
6
|
+
# Revisions: 2025-01-13 - P. Harvey Created
|
7
|
+
#------------------------------------------------------------------------------
|
8
|
+
|
9
|
+
package Image::ExifTool::Vivo;
|
10
|
+
|
11
|
+
use strict;
|
12
|
+
use vars qw($VERSION);
|
13
|
+
use Image::ExifTool qw(:DataAccess :Utils);
|
14
|
+
use Image::ExifTool::XMP;
|
15
|
+
|
16
|
+
$VERSION = '1.00';
|
17
|
+
|
18
|
+
%Image::ExifTool::Vivo::Main = (
|
19
|
+
GROUPS => { 0 => 'Trailer', 1 => 'Vivo', 2 => 'Image' },
|
20
|
+
VARS => { NO_ID => 1 },
|
21
|
+
NOTES => 'Proprietary information written by some Vivo phones.',
|
22
|
+
# (don't know for sure what type of image this is, but it is in JPEG format)
|
23
|
+
HDRImage => {
|
24
|
+
Notes => 'highlights of HDR image',
|
25
|
+
Groups => { 2 => 'Preview' },
|
26
|
+
Binary => 1,
|
27
|
+
},
|
28
|
+
JSONInfo => { },
|
29
|
+
HiddenData => {
|
30
|
+
Notes => 'hidden in EXIF, not in trailer. This data is lost if the file is edited',
|
31
|
+
Groups => { 0 => 'EXIF' },
|
32
|
+
},
|
33
|
+
);
|
34
|
+
|
35
|
+
#------------------------------------------------------------------------------
|
36
|
+
# Process Vivo trailer
|
37
|
+
# Inputs: 0) ExifTool object reference, 1) dirInfo reference
|
38
|
+
# Returns: 1 on success, -1 if we must scan for the start of the trailer
|
39
|
+
# - takes Offset as positive offset from end of trailer to end of file,
|
40
|
+
# and returns DataPos and DirLen, and updates OutFile when writing
|
41
|
+
sub ProcessVivo($$)
|
42
|
+
{
|
43
|
+
my ($et, $dirInfo) = @_;
|
44
|
+
my $raf = $$dirInfo{RAF};
|
45
|
+
my $buff;
|
46
|
+
|
47
|
+
# return now unless we are at a position to scan for the trailer
|
48
|
+
# (must scan because the trailer footer doesn't indicate the trailer length)
|
49
|
+
return -1 unless $$dirInfo{ScanForTrailer};
|
50
|
+
|
51
|
+
my $pos = $raf->Tell();
|
52
|
+
$raf->Seek(0, 2) or return 0;
|
53
|
+
my $len = $raf->Tell() - $pos - $$dirInfo{Offset};
|
54
|
+
$raf->Seek($pos, 0) or return 0;
|
55
|
+
return 0 unless $len > 0 and $len < 1e7 and $raf->Read($buff, $len) == $len and
|
56
|
+
$buff =~ /\xff{4}\x1b\*9HWfu\x84\x93\xa2\xb1$/ and # validate footer
|
57
|
+
$buff =~ /(streamdata|vivo\{")/g; # find start
|
58
|
+
my $start = pos($buff) - length($1);
|
59
|
+
if ($start) {
|
60
|
+
$pos += $start;
|
61
|
+
$len -= $start;
|
62
|
+
$buff = substr($buff, $start);
|
63
|
+
}
|
64
|
+
# set trailer position and length
|
65
|
+
@$dirInfo{'DataPos','DirLen'} = ($pos, $len);
|
66
|
+
|
67
|
+
if ($$dirInfo{OutFile}) {
|
68
|
+
if ($$et{DEL_GROUP}{Vivo}) {
|
69
|
+
$et->VPrint(0, " Deleting Vivo trailer ($len bytes)\n");
|
70
|
+
++$$et{CHANGED};
|
71
|
+
} else {
|
72
|
+
$et->VPrint(0, " Copying Vivo trailer ($len bytes)\n");
|
73
|
+
Write($$dirInfo{OutFile}, $buff);
|
74
|
+
}
|
75
|
+
} else {
|
76
|
+
$et->DumpTrailer($dirInfo) if $$et{OPTIONS}{Verbose} or $$et{HTML_DUMP};
|
77
|
+
my $tbl = GetTagTable('Image::ExifTool::Vivo::Main');
|
78
|
+
pos($buff) = 0; # rewind search to start of buffer
|
79
|
+
if ($buff =~ /^streamdata\xff\xd8\xff/ and $buff =~ /\xff\xd9stream(info|coun)/g) {
|
80
|
+
$et->HandleTag($tbl, HDRImage => substr($buff, 10, pos($buff)-20));
|
81
|
+
}
|
82
|
+
# continue looking for Vivo JSON data
|
83
|
+
if ($buff =~ /vivo\{"/g) {
|
84
|
+
my $jsonStart = pos($buff) - 2;
|
85
|
+
if ($buff =~ /\}\0/g) {
|
86
|
+
my $jsonLen = pos($buff) - 1 - $jsonStart;
|
87
|
+
$et->HandleTag($tbl, JSONInfo => substr($buff, $jsonStart, $jsonLen));
|
88
|
+
}
|
89
|
+
}
|
90
|
+
}
|
91
|
+
return 1;
|
92
|
+
}
|
93
|
+
|
94
|
+
1; # end
|
95
|
+
|
96
|
+
__END__
|
97
|
+
|
98
|
+
=head1 NAME
|
99
|
+
|
100
|
+
Image::ExifTool::Vivo - Read trailer written by Vivo phones
|
101
|
+
|
102
|
+
=head1 SYNOPSIS
|
103
|
+
|
104
|
+
This module is used by Image::ExifTool
|
105
|
+
|
106
|
+
=head1 DESCRIPTION
|
107
|
+
|
108
|
+
This module contains definitions required by Image::ExifTool to read
|
109
|
+
metadata the trailer written by some Vivo phones.
|
110
|
+
|
111
|
+
=head1 AUTHOR
|
112
|
+
|
113
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
114
|
+
|
115
|
+
This library is free software; you can redistribute it and/or modify it
|
116
|
+
under the same terms as Perl itself.
|
117
|
+
|
118
|
+
=head1 SEE ALSO
|
119
|
+
|
120
|
+
L<Image::ExifTool::TagNames/Vivo Tags>,
|
121
|
+
L<Image::ExifTool(3pm)|Image::ExifTool>
|
122
|
+
|
123
|
+
=cut
|
124
|
+
|