exiftool-vendored.pl 12.49.0 → 12.54.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.
- package/bin/Changes +107 -6
- package/bin/MANIFEST +5 -0
- package/bin/META.json +1 -1
- package/bin/META.yml +1 -1
- package/bin/README +3 -3
- package/bin/exiftool +39 -30
- package/bin/lib/File/RandomAccess.pm +1 -1
- package/bin/lib/File/RandomAccess.pod +2 -2
- package/bin/lib/Image/ExifTool/AES.pm +1 -1
- package/bin/lib/Image/ExifTool/AFCP.pm +1 -1
- package/bin/lib/Image/ExifTool/AIFF.pm +1 -1
- package/bin/lib/Image/ExifTool/APE.pm +1 -1
- package/bin/lib/Image/ExifTool/APP12.pm +1 -1
- package/bin/lib/Image/ExifTool/ASF.pm +1 -1
- package/bin/lib/Image/ExifTool/Apple.pm +197 -27
- package/bin/lib/Image/ExifTool/Audible.pm +1 -1
- package/bin/lib/Image/ExifTool/BMP.pm +1 -1
- package/bin/lib/Image/ExifTool/BPG.pm +1 -1
- package/bin/lib/Image/ExifTool/BZZ.pm +1 -1
- package/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
- package/bin/lib/Image/ExifTool/BuildTagLookup.pm +10 -7
- package/bin/lib/Image/ExifTool/CBOR.pm +1 -1
- package/bin/lib/Image/ExifTool/Canon.pm +26 -9
- package/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
- package/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/CanonVRD.pm +9 -9
- package/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
- package/bin/lib/Image/ExifTool/Casio.pm +4 -4
- package/bin/lib/Image/ExifTool/Charset.pm +1 -1
- package/bin/lib/Image/ExifTool/DICOM.pm +1 -1
- package/bin/lib/Image/ExifTool/DJI.pm +1 -1
- package/bin/lib/Image/ExifTool/DNG.pm +1 -1
- package/bin/lib/Image/ExifTool/DPX.pm +1 -1
- package/bin/lib/Image/ExifTool/DV.pm +1 -1
- package/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
- package/bin/lib/Image/ExifTool/DjVu.pm +1 -1
- package/bin/lib/Image/ExifTool/EXE.pm +1 -1
- package/bin/lib/Image/ExifTool/Exif.pm +11 -21
- package/bin/lib/Image/ExifTool/FITS.pm +1 -1
- package/bin/lib/Image/ExifTool/FLAC.pm +1 -1
- package/bin/lib/Image/ExifTool/FLIF.pm +1 -1
- package/bin/lib/Image/ExifTool/FLIR.pm +7 -6
- package/bin/lib/Image/ExifTool/Fixup.pm +1 -1
- package/bin/lib/Image/ExifTool/Flash.pm +1 -1
- package/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
- package/bin/lib/Image/ExifTool/Font.pm +1 -1
- package/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
- package/bin/lib/Image/ExifTool/FujiFilm.pm +20 -13
- package/bin/lib/Image/ExifTool/GE.pm +1 -1
- package/bin/lib/Image/ExifTool/GIF.pm +1 -1
- package/bin/lib/Image/ExifTool/GIMP.pm +1 -1
- package/bin/lib/Image/ExifTool/GPS.pm +12 -6
- package/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
- package/bin/lib/Image/ExifTool/Geotag.pm +14 -6
- package/bin/lib/Image/ExifTool/GoPro.pm +1 -1
- package/bin/lib/Image/ExifTool/H264.pm +1 -1
- package/bin/lib/Image/ExifTool/HP.pm +1 -1
- package/bin/lib/Image/ExifTool/HTML.pm +1 -1
- package/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
- package/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
- package/bin/lib/Image/ExifTool/ICO.pm +3 -1
- package/bin/lib/Image/ExifTool/ID3.pm +1 -1
- package/bin/lib/Image/ExifTool/IPTC.pm +6 -2
- package/bin/lib/Image/ExifTool/ISO.pm +1 -1
- package/bin/lib/Image/ExifTool/ITC.pm +1 -1
- package/bin/lib/Image/ExifTool/Import.pm +1 -1
- package/bin/lib/Image/ExifTool/InDesign.pm +1 -1
- package/bin/lib/Image/ExifTool/JPEG.pm +2 -1
- package/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
- package/bin/lib/Image/ExifTool/JSON.pm +1 -1
- package/bin/lib/Image/ExifTool/JVC.pm +1 -1
- package/bin/lib/Image/ExifTool/Jpeg2000.pm +35 -8
- package/bin/lib/Image/ExifTool/Kodak.pm +1 -1
- package/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/LIF.pm +1 -1
- package/bin/lib/Image/ExifTool/LNK.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/de.pm +2 -2
- package/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/fr.pm +6016 -760
- package/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/sk.pm +1806 -0
- package/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
- package/bin/lib/Image/ExifTool/Leaf.pm +1 -1
- package/bin/lib/Image/ExifTool/Lytro.pm +1 -1
- package/bin/lib/Image/ExifTool/M2TS.pm +45 -2
- package/bin/lib/Image/ExifTool/MIE.pm +1 -1
- package/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
- package/bin/lib/Image/ExifTool/MIFF.pm +1 -1
- package/bin/lib/Image/ExifTool/MISB.pm +2 -2
- package/bin/lib/Image/ExifTool/MNG.pm +1 -1
- package/bin/lib/Image/ExifTool/MOI.pm +1 -1
- package/bin/lib/Image/ExifTool/MPC.pm +1 -1
- package/bin/lib/Image/ExifTool/MPEG.pm +1 -1
- package/bin/lib/Image/ExifTool/MPF.pm +1 -1
- package/bin/lib/Image/ExifTool/MRC.pm +1 -1
- package/bin/lib/Image/ExifTool/MWG.pm +1 -1
- package/bin/lib/Image/ExifTool/MXF.pm +1 -1
- package/bin/lib/Image/ExifTool/MacOS.pm +1 -1
- package/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
- package/bin/lib/Image/ExifTool/Matroska.pm +262 -46
- package/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
- package/bin/lib/Image/ExifTool/Minolta.pm +1 -1
- package/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/Motorola.pm +1 -1
- package/bin/lib/Image/ExifTool/Nikon.pm +845 -355
- package/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
- package/bin/lib/Image/ExifTool/NikonCustom.pm +140 -107
- package/bin/lib/Image/ExifTool/NikonSettings.pm +1 -1
- package/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
- package/bin/lib/Image/ExifTool/OOXML.pm +1 -1
- package/bin/lib/Image/ExifTool/Ogg.pm +1 -1
- package/bin/lib/Image/ExifTool/Olympus.pm +6 -4
- package/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
- package/bin/lib/Image/ExifTool/Opus.pm +1 -1
- package/bin/lib/Image/ExifTool/Other.pm +1 -1
- package/bin/lib/Image/ExifTool/PCX.pm +1 -1
- package/bin/lib/Image/ExifTool/PDF.pm +1 -1
- package/bin/lib/Image/ExifTool/PGF.pm +1 -1
- package/bin/lib/Image/ExifTool/PICT.pm +1 -1
- package/bin/lib/Image/ExifTool/PLIST.pm +12 -7
- package/bin/lib/Image/ExifTool/PLUS.pm +1 -1
- package/bin/lib/Image/ExifTool/PNG.pm +9 -2
- package/bin/lib/Image/ExifTool/PPM.pm +1 -1
- package/bin/lib/Image/ExifTool/PSP.pm +1 -1
- package/bin/lib/Image/ExifTool/Palm.pm +1 -1
- package/bin/lib/Image/ExifTool/Panasonic.pm +1 -1
- package/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/Parrot.pm +1 -1
- package/bin/lib/Image/ExifTool/Pentax.pm +8 -3
- package/bin/lib/Image/ExifTool/PhaseOne.pm +1 -1
- package/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
- package/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
- package/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
- package/bin/lib/Image/ExifTool/PostScript.pm +1 -1
- package/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
- package/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
- package/bin/lib/Image/ExifTool/QuickTime.pm +52 -9
- package/bin/lib/Image/ExifTool/QuickTimeStream.pl +95 -14
- package/bin/lib/Image/ExifTool/README +6 -1
- package/bin/lib/Image/ExifTool/RIFF.pm +1 -1
- package/bin/lib/Image/ExifTool/RSRC.pm +1 -1
- package/bin/lib/Image/ExifTool/RTF.pm +1 -1
- package/bin/lib/Image/ExifTool/Radiance.pm +1 -1
- package/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
- package/bin/lib/Image/ExifTool/Real.pm +1 -1
- package/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
- package/bin/lib/Image/ExifTool/Red.pm +1 -1
- package/bin/lib/Image/ExifTool/Ricoh.pm +1 -1
- package/bin/lib/Image/ExifTool/Samsung.pm +3 -1
- package/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
- package/bin/lib/Image/ExifTool/Scalado.pm +1 -1
- package/bin/lib/Image/ExifTool/Shift.pl +1 -1
- package/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
- package/bin/lib/Image/ExifTool/Sigma.pm +1 -1
- package/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/Sony.pm +35 -20
- package/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
- package/bin/lib/Image/ExifTool/Stim.pm +1 -1
- package/bin/lib/Image/ExifTool/TagInfoXML.pm +15 -8
- package/bin/lib/Image/ExifTool/TagLookup.pm +4672 -4568
- package/bin/lib/Image/ExifTool/TagNames.pod +357 -46
- package/bin/lib/Image/ExifTool/Text.pm +1 -1
- package/bin/lib/Image/ExifTool/Theora.pm +1 -1
- package/bin/lib/Image/ExifTool/Torrent.pm +1 -1
- package/bin/lib/Image/ExifTool/Unknown.pm +1 -1
- package/bin/lib/Image/ExifTool/VCard.pm +1 -1
- package/bin/lib/Image/ExifTool/Validate.pm +1 -1
- package/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
- package/bin/lib/Image/ExifTool/WTV.pm +1 -1
- package/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
- package/bin/lib/Image/ExifTool/WriteExif.pl +14 -1
- package/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
- package/bin/lib/Image/ExifTool/WritePDF.pl +5 -1
- package/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
- package/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
- package/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
- package/bin/lib/Image/ExifTool/WriteQuickTime.pl +30 -14
- package/bin/lib/Image/ExifTool/WriteRIFF.pl +1 -1
- package/bin/lib/Image/ExifTool/WriteXMP.pl +16 -2
- package/bin/lib/Image/ExifTool/Writer.pl +35 -15
- package/bin/lib/Image/ExifTool/XMP.pm +25 -4
- package/bin/lib/Image/ExifTool/XMP2.pl +29 -2
- package/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
- package/bin/lib/Image/ExifTool/ZIP.pm +20 -8
- package/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
- package/bin/lib/Image/ExifTool/iWork.pm +1 -1
- package/bin/lib/Image/ExifTool.pm +45 -20
- package/bin/lib/Image/ExifTool.pod +48 -46
- package/bin/perl-Image-ExifTool.spec +1 -1
- package/bin/pp_build_exe.args +6 -5
- package/package.json +3 -3
|
@@ -222,7 +222,7 @@ characteristics of TXT and CSV files.
|
|
|
222
222
|
|
|
223
223
|
=head1 AUTHOR
|
|
224
224
|
|
|
225
|
-
Copyright 2003-
|
|
225
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
|
226
226
|
|
|
227
227
|
This library is free software; you can redistribute it and/or modify it
|
|
228
228
|
under the same terms as Perl itself.
|
|
@@ -122,7 +122,7 @@ information from Theora video streams.
|
|
|
122
122
|
|
|
123
123
|
=head1 AUTHOR
|
|
124
124
|
|
|
125
|
-
Copyright 2003-
|
|
125
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
|
126
126
|
|
|
127
127
|
This library is free software; you can redistribute it and/or modify it
|
|
128
128
|
under the same terms as Perl itself.
|
|
@@ -309,7 +309,7 @@ bencoded information from BitTorrent files.
|
|
|
309
309
|
|
|
310
310
|
=head1 AUTHOR
|
|
311
311
|
|
|
312
|
-
Copyright 2003-
|
|
312
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
|
313
313
|
|
|
314
314
|
This library is free software; you can redistribute it and/or modify it
|
|
315
315
|
under the same terms as Perl itself.
|
|
@@ -53,7 +53,7 @@ unknown manufacturers.
|
|
|
53
53
|
|
|
54
54
|
=head1 AUTHOR
|
|
55
55
|
|
|
56
|
-
Copyright 2003-
|
|
56
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
|
57
57
|
|
|
58
58
|
This library is free software; you can redistribute it and/or modify it
|
|
59
59
|
under the same terms as Perl itself.
|
|
@@ -416,7 +416,7 @@ information from vCard VCF and iCalendar ICS files.
|
|
|
416
416
|
|
|
417
417
|
=head1 AUTHOR
|
|
418
418
|
|
|
419
|
-
Copyright 2003-
|
|
419
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
|
420
420
|
|
|
421
421
|
This library is free software; you can redistribute it and/or modify it
|
|
422
422
|
under the same terms as Perl itself.
|
|
@@ -659,7 +659,7 @@ ExifTool Validate option is enabled.
|
|
|
659
659
|
|
|
660
660
|
=head1 AUTHOR
|
|
661
661
|
|
|
662
|
-
Copyright 2003-
|
|
662
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
|
663
663
|
|
|
664
664
|
This library is free software; you can redistribute it and/or modify it
|
|
665
665
|
under the same terms as Perl itself.
|
|
@@ -228,7 +228,7 @@ information from Ogg Vorbis audio headers.
|
|
|
228
228
|
|
|
229
229
|
=head1 AUTHOR
|
|
230
230
|
|
|
231
|
-
Copyright 2003-
|
|
231
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
|
232
232
|
|
|
233
233
|
This library is free software; you can redistribute it and/or modify it
|
|
234
234
|
under the same terms as Perl itself.
|
|
@@ -297,7 +297,7 @@ This module contains definitions required by Image::ExifTool to read WTV
|
|
|
297
297
|
|
|
298
298
|
=head1 AUTHOR
|
|
299
299
|
|
|
300
|
-
Copyright 2003-
|
|
300
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
|
301
301
|
|
|
302
302
|
This library is free software; you can redistribute it and/or modify it
|
|
303
303
|
under the same terms as Perl itself.
|
|
@@ -630,7 +630,7 @@ JPEG files, and would lead to far fewer problems with corrupted metadata.
|
|
|
630
630
|
|
|
631
631
|
=head1 AUTHOR
|
|
632
632
|
|
|
633
|
-
Copyright 2003-
|
|
633
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
|
634
634
|
|
|
635
635
|
This library is free software; you can redistribute it and/or modify it
|
|
636
636
|
under the same terms as Perl itself.
|
|
@@ -53,6 +53,19 @@ my %mandatory = (
|
|
|
53
53
|
},
|
|
54
54
|
);
|
|
55
55
|
|
|
56
|
+
#------------------------------------------------------------------------------
|
|
57
|
+
# Inverse print conversion for OffsetTime tags
|
|
58
|
+
# Inputs: 0) input time zone or date/time value, 1) ExifTool ref
|
|
59
|
+
# Returns: Time zone string for writing to EXIF
|
|
60
|
+
sub InverseOffsetTime($$)
|
|
61
|
+
{
|
|
62
|
+
my ($val, $et) = @_;
|
|
63
|
+
$val = $et->TimeNow() if lc($val) eq 'now';
|
|
64
|
+
return '+00:00' if $val =~ /Z$/;
|
|
65
|
+
return sprintf('%s%.2d:%.2d',$1,$2,$3) if $val =~ /([-+])(\d{1,2}):?(\d{2})/;
|
|
66
|
+
return undef;
|
|
67
|
+
}
|
|
68
|
+
|
|
56
69
|
#------------------------------------------------------------------------------
|
|
57
70
|
# Inverse print conversion for LensInfo
|
|
58
71
|
# Inputs: 0) lens info string
|
|
@@ -2640,7 +2653,7 @@ This file contains routines to write EXIF metadata.
|
|
|
2640
2653
|
|
|
2641
2654
|
=head1 AUTHOR
|
|
2642
2655
|
|
|
2643
|
-
Copyright 2003-
|
|
2656
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
|
2644
2657
|
|
|
2645
2658
|
This library is free software; you can redistribute it and/or modify it
|
|
2646
2659
|
under the same terms as Perl itself.
|
|
@@ -711,7 +711,7 @@ seldom-used routines.
|
|
|
711
711
|
|
|
712
712
|
=head1 AUTHOR
|
|
713
713
|
|
|
714
|
-
Copyright 2003-
|
|
714
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
|
715
715
|
|
|
716
716
|
This library is free software; you can redistribute it and/or modify it
|
|
717
717
|
under the same terms as Perl itself.
|
|
@@ -395,6 +395,10 @@ sub WritePDF($$)
|
|
|
395
395
|
|
|
396
396
|
# must pre-determine Info reference to be used in encryption
|
|
397
397
|
my $infoRef = $prevInfoRef || \ "$nextObject 0 R";
|
|
398
|
+
unless (ref $infoRef eq 'SCALAR') {
|
|
399
|
+
$et->Error("Info dictionary is not an indirect object");
|
|
400
|
+
return $rtn;
|
|
401
|
+
}
|
|
398
402
|
$keyExt = $$infoRef;
|
|
399
403
|
|
|
400
404
|
# must encrypt all values in dictionary if they came from an encrypted stream
|
|
@@ -750,7 +754,7 @@ C<PDF-update> pseudo group).
|
|
|
750
754
|
|
|
751
755
|
=head1 AUTHOR
|
|
752
756
|
|
|
753
|
-
Copyright 2003-
|
|
757
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
|
754
758
|
|
|
755
759
|
This library is free software; you can redistribute it and/or modify it
|
|
756
760
|
under the same terms as Perl itself.
|
|
@@ -401,7 +401,7 @@ strings).
|
|
|
401
401
|
|
|
402
402
|
=head1 AUTHOR
|
|
403
403
|
|
|
404
|
-
Copyright 2003-
|
|
404
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
|
405
405
|
|
|
406
406
|
This library is free software; you can redistribute it and/or modify it
|
|
407
407
|
under the same terms as Perl itself.
|
|
@@ -257,7 +257,7 @@ default resource name, and applied if no appended name is provided.
|
|
|
257
257
|
|
|
258
258
|
=head1 AUTHOR
|
|
259
259
|
|
|
260
|
-
Copyright 2003-
|
|
260
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
|
261
261
|
|
|
262
262
|
This library is free software; you can redistribute it and/or modify it
|
|
263
263
|
under the same terms as Perl itself.
|
|
@@ -687,7 +687,7 @@ Thanks to Tim Kordick for his help testing the EPS writer.
|
|
|
687
687
|
|
|
688
688
|
=head1 AUTHOR
|
|
689
689
|
|
|
690
|
-
Copyright 2003-
|
|
690
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
|
691
691
|
|
|
692
692
|
This library is free software; you can redistribute it and/or modify it
|
|
693
693
|
under the same terms as Perl itself.
|
|
@@ -306,14 +306,17 @@ sub CheckQTValue($$$)
|
|
|
306
306
|
|
|
307
307
|
#------------------------------------------------------------------------------
|
|
308
308
|
# Format QuickTime value for writing
|
|
309
|
-
# Inputs: 0) ExifTool ref, 1) value ref, 2)
|
|
310
|
-
# Returns: Flags for QT data type, and reformats value as required
|
|
309
|
+
# Inputs: 0) ExifTool ref, 1) value ref, 2) tagInfo ref, 3) Format (or undef)
|
|
310
|
+
# Returns: Flags for QT data type, and reformats value as required (sets to undef on error)
|
|
311
311
|
sub FormatQTValue($$;$$)
|
|
312
312
|
{
|
|
313
|
-
my ($et, $valPt, $
|
|
313
|
+
my ($et, $valPt, $tagInfo, $format) = @_;
|
|
314
|
+
my $writable = $$tagInfo{Writable};
|
|
315
|
+
my $count = $$tagInfo{Count};
|
|
314
316
|
my $flags;
|
|
317
|
+
$format or $format = $$tagInfo{Format};
|
|
315
318
|
if ($format and $format ne 'string' or not $format and $writable and $writable ne 'string') {
|
|
316
|
-
$$valPt = WriteValue($$valPt, $format || $writable);
|
|
319
|
+
$$valPt = WriteValue($$valPt, $format || $writable, $count);
|
|
317
320
|
if ($writable and $qtFormat{$writable}) {
|
|
318
321
|
$flags = $qtFormat{$writable};
|
|
319
322
|
} else {
|
|
@@ -329,6 +332,7 @@ sub FormatQTValue($$;$$)
|
|
|
329
332
|
$flags = 0x01; # UTF8
|
|
330
333
|
$$valPt = $et->Encode($$valPt, 'UTF8');
|
|
331
334
|
}
|
|
335
|
+
defined $$valPt or $et->WarnOnce("Error converting value for $$tagInfo{Name}");
|
|
332
336
|
return $flags;
|
|
333
337
|
}
|
|
334
338
|
|
|
@@ -1139,7 +1143,7 @@ sub WriteQuickTime($$$)
|
|
|
1139
1143
|
my $newVal = $et->GetNewValue($nvHash);
|
|
1140
1144
|
next unless defined $newVal;
|
|
1141
1145
|
my $prVal = $newVal;
|
|
1142
|
-
my $flags = FormatQTValue($et, \$newVal, $
|
|
1146
|
+
my $flags = FormatQTValue($et, \$newVal, $tagInfo, $format);
|
|
1143
1147
|
next unless defined $newVal;
|
|
1144
1148
|
my ($ctry, $lang) = (0, 0);
|
|
1145
1149
|
if ($$ti{LangCode}) {
|
|
@@ -1220,7 +1224,8 @@ sub WriteQuickTime($$$)
|
|
|
1220
1224
|
}
|
|
1221
1225
|
my $prVal = $newVal;
|
|
1222
1226
|
# format new value for writing (and get new flags)
|
|
1223
|
-
$flags = FormatQTValue($et, \$newVal, $
|
|
1227
|
+
$flags = FormatQTValue($et, \$newVal, $tagInfo, $format);
|
|
1228
|
+
next unless defined $newVal;
|
|
1224
1229
|
my $grp = $et->GetGroup($langInfo, 1);
|
|
1225
1230
|
$et->VerboseValue("- $grp:$$langInfo{Name}", $val);
|
|
1226
1231
|
$et->VerboseValue("+ $grp:$$langInfo{Name}", $prVal);
|
|
@@ -1463,7 +1468,7 @@ sub WriteQuickTime($$$)
|
|
|
1463
1468
|
my $newVal = $et->GetNewValue($nvHash);
|
|
1464
1469
|
next unless defined $newVal;
|
|
1465
1470
|
my $prVal = $newVal;
|
|
1466
|
-
my $flags = FormatQTValue($et, \$newVal,
|
|
1471
|
+
my $flags = FormatQTValue($et, \$newVal, $tagInfo);
|
|
1467
1472
|
next unless defined $newVal;
|
|
1468
1473
|
my ($ctry, $lang) = (0, 0);
|
|
1469
1474
|
# handle alternate languages
|
|
@@ -1662,12 +1667,18 @@ sub WriteQuickTime($$$)
|
|
|
1662
1667
|
# edit size of mdat in header if necessary
|
|
1663
1668
|
if ($diff) {
|
|
1664
1669
|
if (length($$hdrChunk[2]) == 8) {
|
|
1665
|
-
my $size = Get32u(\$$hdrChunk[2], 0)
|
|
1666
|
-
$size
|
|
1667
|
-
|
|
1670
|
+
my $size = Get32u(\$$hdrChunk[2], 0);
|
|
1671
|
+
if ($size) { # (0 size = extends to end of file)
|
|
1672
|
+
$size += $diff;
|
|
1673
|
+
$size > 0xffffffff and $et->Error("Can't yet grow mdat across 4GB boundary"), return $rtnVal;
|
|
1674
|
+
Set32u($size, \$$hdrChunk[2], 0);
|
|
1675
|
+
}
|
|
1668
1676
|
} elsif (length($$hdrChunk[2]) == 16) {
|
|
1669
|
-
my $size = Get64u(\$$hdrChunk[2], 8)
|
|
1670
|
-
|
|
1677
|
+
my $size = Get64u(\$$hdrChunk[2], 8);
|
|
1678
|
+
if ($size) {
|
|
1679
|
+
$size += $diff;
|
|
1680
|
+
Set64u($size, \$$hdrChunk[2], 8);
|
|
1681
|
+
}
|
|
1671
1682
|
} else {
|
|
1672
1683
|
$et->Error('Internal error. Invalid mdat header');
|
|
1673
1684
|
return $rtnVal;
|
|
@@ -1894,7 +1905,12 @@ sub WriteMOV($$)
|
|
|
1894
1905
|
$ftype = 'MOV';
|
|
1895
1906
|
}
|
|
1896
1907
|
$et->SetFileType($ftype); # need to set "FileType" tag for a Condition
|
|
1897
|
-
|
|
1908
|
+
if ($ftype eq 'HEIC') {
|
|
1909
|
+
# EXIF is preferred in HEIC files
|
|
1910
|
+
$et->InitWriteDirs($dirMap{$ftype}, 'EXIF', 'QuickTime');
|
|
1911
|
+
} else {
|
|
1912
|
+
$et->InitWriteDirs($dirMap{$ftype}, 'XMP', 'QuickTime');
|
|
1913
|
+
}
|
|
1898
1914
|
$$et{DirMap} = $dirMap{$ftype}; # need access to directory map when writing
|
|
1899
1915
|
# track tags globally to avoid creating multiple tags in the case of duplicate directories
|
|
1900
1916
|
$$et{DidTag} = { };
|
|
@@ -1927,7 +1943,7 @@ QuickTime-based file formats like MOV and MP4.
|
|
|
1927
1943
|
|
|
1928
1944
|
=head1 AUTHOR
|
|
1929
1945
|
|
|
1930
|
-
Copyright 2003-
|
|
1946
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
|
1931
1947
|
|
|
1932
1948
|
This library is free software; you can redistribute it and/or modify it
|
|
1933
1949
|
under the same terms as Perl itself.
|
|
@@ -338,7 +338,7 @@ Currently writes only WebP files.
|
|
|
338
338
|
|
|
339
339
|
=head1 AUTHOR
|
|
340
340
|
|
|
341
|
-
Copyright 2003-
|
|
341
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
|
342
342
|
|
|
343
343
|
This library is free software; you can redistribute it and/or modify it
|
|
344
344
|
under the same terms as Perl itself.
|
|
@@ -561,7 +561,21 @@ sub AddStructType($$$$;$)
|
|
|
561
561
|
}
|
|
562
562
|
|
|
563
563
|
#------------------------------------------------------------------------------
|
|
564
|
-
#
|
|
564
|
+
# Process SphericalVideoXML (see XMP-GSpherical tags documentation)
|
|
565
|
+
# Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
|
|
566
|
+
# Returns: SphericalVideoXML data
|
|
567
|
+
sub ProcessGSpherical($$$)
|
|
568
|
+
{
|
|
569
|
+
my ($et, $dirInfo, $tagTablePtr) = @_;
|
|
570
|
+
# extract SphericalVideoXML as a block if requested
|
|
571
|
+
if ($$et{REQ_TAG_LOOKUP}{sphericalvideoxml}) {
|
|
572
|
+
$et->FoundTag(SphericalVideoXML => substr(${$$dirInfo{DataPt}}, 16));
|
|
573
|
+
}
|
|
574
|
+
return Image::ExifTool::XMP::ProcessXMP($et, $dirInfo, $tagTablePtr);
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
#------------------------------------------------------------------------------
|
|
578
|
+
# Hack to use XMP writer for SphericalVideoXML (see XMP-GSpherical tags documentation)
|
|
565
579
|
# Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
|
|
566
580
|
# Returns: SphericalVideoXML data
|
|
567
581
|
sub WriteGSpherical($$$)
|
|
@@ -1621,7 +1635,7 @@ This file contains routines to write XMP metadata.
|
|
|
1621
1635
|
|
|
1622
1636
|
=head1 AUTHOR
|
|
1623
1637
|
|
|
1624
|
-
Copyright 2003-
|
|
1638
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
|
1625
1639
|
|
|
1626
1640
|
This library is free software; you can redistribute it and/or modify it
|
|
1627
1641
|
under the same terms as Perl itself.
|
|
@@ -242,7 +242,7 @@ my %intRange = (
|
|
|
242
242
|
'int64s' => [-9223372036854775808, 9223372036854775807],
|
|
243
243
|
);
|
|
244
244
|
# lookup for file types with block-writable EXIF
|
|
245
|
-
my %blockExifTypes = map { $_ => 1 } qw(JPEG PNG JP2 MIE EXIF FLIF MOV MP4 RIFF);
|
|
245
|
+
my %blockExifTypes = map { $_ => 1 } qw(JPEG PNG JP2 JXL MIE EXIF FLIF MOV MP4 RIFF);
|
|
246
246
|
|
|
247
247
|
my $maxSegmentLen = 0xfffd; # maximum length of data in a JPEG segment
|
|
248
248
|
my $maxXMPLen = $maxSegmentLen; # maximum length of XMP data in JPEG
|
|
@@ -707,9 +707,13 @@ TAG: foreach $tagInfo (@matchingTags) {
|
|
|
707
707
|
$writeGroup or $writeGroup = $group0;
|
|
708
708
|
# get priority for this group
|
|
709
709
|
unless ($priority) {
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
710
|
+
if ($$tagInfo{Avoid} and $$tagInfo{WriteAlso}) {
|
|
711
|
+
$priority = 0;
|
|
712
|
+
} else {
|
|
713
|
+
$priority = $$self{WRITE_PRIORITY}{lc($writeGroup)};
|
|
714
|
+
unless ($priority) {
|
|
715
|
+
$priority = $$self{WRITE_PRIORITY}{lc($group0)} || 0;
|
|
716
|
+
}
|
|
713
717
|
}
|
|
714
718
|
}
|
|
715
719
|
# adjust priority based on Preferred level for this tag
|
|
@@ -830,6 +834,8 @@ TAG: foreach $tagInfo (@matchingTags) {
|
|
|
830
834
|
$tag = $$tagInfo{Name}; # get tag name for warnings
|
|
831
835
|
my $lcTag = lc $tag;
|
|
832
836
|
my $pref = $preferred{$lcTag} || { };
|
|
837
|
+
# don't write Avoid-ed tags with side effect unless preferred
|
|
838
|
+
next if not $$pref{$tagInfo} and $$tagInfo{Avoid} and $$tagInfo{WriteAlso};
|
|
833
839
|
my $shift = $options{Shift};
|
|
834
840
|
my $addValue = $options{AddValue};
|
|
835
841
|
if (defined $shift) {
|
|
@@ -971,6 +977,7 @@ TAG: foreach $tagInfo (@matchingTags) {
|
|
|
971
977
|
$self->GetNewValueHash($tagInfo, $writeGroup, 'delete', $options{ProtectSaved});
|
|
972
978
|
# also delete related tag previous new values
|
|
973
979
|
if ($$tagInfo{WriteAlso}) {
|
|
980
|
+
$$self{INDENT2} = '+';
|
|
974
981
|
my ($wgrp, $wtag);
|
|
975
982
|
if ($$tagInfo{WriteGroup} and $$tagInfo{WriteGroup} eq 'All' and $writeGroup) {
|
|
976
983
|
$wgrp = $writeGroup . ':';
|
|
@@ -981,6 +988,7 @@ TAG: foreach $tagInfo (@matchingTags) {
|
|
|
981
988
|
my ($n,$e) = $self->SetNewValue($wgrp . $wtag, undef, Replace=>2);
|
|
982
989
|
$numSet += $n;
|
|
983
990
|
}
|
|
991
|
+
$$self{INDENT2} = '';
|
|
984
992
|
}
|
|
985
993
|
$options{Replace} == 2 and ++$numSet, next;
|
|
986
994
|
}
|
|
@@ -1022,7 +1030,7 @@ TAG: foreach $tagInfo (@matchingTags) {
|
|
|
1022
1030
|
require 'Image/ExifTool/XMPStruct.pl';
|
|
1023
1031
|
$_ = Image::ExifTool::XMP::SerializeStruct($_);
|
|
1024
1032
|
}
|
|
1025
|
-
print $out "$verb $wgrp1:$tag$fromList if value is '${_}'\n";
|
|
1033
|
+
print $out "$$self{INDENT2}$verb $wgrp1:$tag$fromList if value is '${_}'\n";
|
|
1026
1034
|
}
|
|
1027
1035
|
}
|
|
1028
1036
|
}
|
|
@@ -1086,15 +1094,25 @@ TAG: foreach $tagInfo (@matchingTags) {
|
|
|
1086
1094
|
push @{$$nvHash{Value}}, ref $val eq 'ARRAY' ? @$val : $val;
|
|
1087
1095
|
}
|
|
1088
1096
|
if ($verbose > 1) {
|
|
1089
|
-
my $ifExists
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1097
|
+
my $ifExists;
|
|
1098
|
+
if ($$tagInfo{IsComposite}) {
|
|
1099
|
+
# (composite tags don't technically exist in the file)
|
|
1100
|
+
if ($$tagInfo{WriteAlso}) {
|
|
1101
|
+
$ifExists = ' (+' . join(',+',sort keys %{$$tagInfo{WriteAlso}}) . '):';
|
|
1102
|
+
} else {
|
|
1103
|
+
$ifExists = '';
|
|
1104
|
+
}
|
|
1105
|
+
} else {
|
|
1106
|
+
$ifExists = $$nvHash{IsCreating} ? ( $createOnly ?
|
|
1107
|
+
($$nvHash{IsCreating} == 2 ?
|
|
1108
|
+
" if $writeGroup exists and tag doesn't" :
|
|
1109
|
+
" if tag doesn't exist") :
|
|
1110
|
+
($$nvHash{IsCreating} == 2 ? " if $writeGroup exists" : '')) :
|
|
1094
1111
|
(($$nvHash{DelValue} and @{$$nvHash{DelValue}}) ?
|
|
1095
|
-
|
|
1112
|
+
' if tag was deleted' : ' if tag exists');
|
|
1113
|
+
}
|
|
1096
1114
|
my $verb = ($shift ? 'Shifting' : ($addValue ? 'Adding' : 'Writing'));
|
|
1097
|
-
print $out "$verb $wgrp1:$tag$ifExists\n";
|
|
1115
|
+
print $out "$$self{INDENT2}$verb $wgrp1:$tag$ifExists\n";
|
|
1098
1116
|
}
|
|
1099
1117
|
}
|
|
1100
1118
|
} elsif ($permanent) {
|
|
@@ -1109,7 +1127,7 @@ TAG: foreach $tagInfo (@matchingTags) {
|
|
|
1109
1127
|
$self->GetNewValueHash($tagInfo, $writeGroup, 'delete');
|
|
1110
1128
|
my $nvHash = $self->GetNewValueHash($tagInfo, $writeGroup, 'create');
|
|
1111
1129
|
$$nvHash{WantGroup} = $wantGroup;
|
|
1112
|
-
$verbose > 1 and print $out "Deleting $wgrp1:$tag\n";
|
|
1130
|
+
$verbose > 1 and print $out "$$self{INDENT2}Deleting $wgrp1:$tag\n";
|
|
1113
1131
|
}
|
|
1114
1132
|
$$setTags{$tagInfo} = 1 if $setTags;
|
|
1115
1133
|
$prioritySet = 1 if $$pref{$tagInfo};
|
|
@@ -1118,6 +1136,7 @@ WriteAlso:
|
|
|
1118
1136
|
# also write related tags
|
|
1119
1137
|
my $writeAlso = $$tagInfo{WriteAlso};
|
|
1120
1138
|
if ($writeAlso) {
|
|
1139
|
+
$$self{INDENT2} = '+'; # indicate related tag with a leading "+"
|
|
1121
1140
|
my ($wgrp, $wtag, $n);
|
|
1122
1141
|
if ($$tagInfo{WriteGroup} and $$tagInfo{WriteGroup} eq 'All' and $writeGroup) {
|
|
1123
1142
|
$wgrp = $writeGroup . ':';
|
|
@@ -1137,7 +1156,7 @@ WriteAlso:
|
|
|
1137
1156
|
SetTags => \%alsoWrote, # remember tags already written
|
|
1138
1157
|
);
|
|
1139
1158
|
undef $evalWarning;
|
|
1140
|
-
#### eval WriteAlso ($val)
|
|
1159
|
+
#### eval WriteAlso ($val,%opts)
|
|
1141
1160
|
my $v = eval $$writeAlso{$wtag};
|
|
1142
1161
|
# we wanted to do the eval in case there are side effect, but we
|
|
1143
1162
|
# don't want to write a value for a tag that is being deleted:
|
|
@@ -1159,6 +1178,7 @@ WriteAlso:
|
|
|
1159
1178
|
}
|
|
1160
1179
|
}
|
|
1161
1180
|
}
|
|
1181
|
+
$$self{INDENT2} = '';
|
|
1162
1182
|
}
|
|
1163
1183
|
}
|
|
1164
1184
|
# print warning if we couldn't set our priority tag
|
|
@@ -7045,7 +7065,7 @@ used routines.
|
|
|
7045
7065
|
|
|
7046
7066
|
=head1 AUTHOR
|
|
7047
7067
|
|
|
7048
|
-
Copyright 2003-
|
|
7068
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
|
7049
7069
|
|
|
7050
7070
|
This library is free software; you can redistribute it and/or modify it
|
|
7051
7071
|
under the same terms as Perl itself.
|
|
@@ -50,7 +50,7 @@ use Image::ExifTool::Exif;
|
|
|
50
50
|
use Image::ExifTool::GPS;
|
|
51
51
|
require Exporter;
|
|
52
52
|
|
|
53
|
-
$VERSION = '3.
|
|
53
|
+
$VERSION = '3.56';
|
|
54
54
|
@ISA = qw(Exporter);
|
|
55
55
|
@EXPORT_OK = qw(EscapeXML UnescapeXML);
|
|
56
56
|
|
|
@@ -87,6 +87,7 @@ my %stdPath = (
|
|
|
87
87
|
'MicrosoftPhoto' => 'microsoft',
|
|
88
88
|
'prismusagerights' => 'pur',
|
|
89
89
|
'GettyImagesGIFT' => 'getty',
|
|
90
|
+
'hdr_metadata' => 'hdr',
|
|
90
91
|
);
|
|
91
92
|
|
|
92
93
|
# translate ExifTool XMP family 1 group names back to standard XMP namespace prefixes
|
|
@@ -197,6 +198,7 @@ my %xmpNS = (
|
|
|
197
198
|
sdc => 'http://ns.nikon.com/sdc/1.0/',
|
|
198
199
|
ast => 'http://ns.nikon.com/asteroid/1.0/',
|
|
199
200
|
nine => 'http://ns.nikon.com/nine/1.0/',
|
|
201
|
+
hdr_metadata => 'http://ns.adobe.com/hdr-metadata/1.0/',
|
|
200
202
|
);
|
|
201
203
|
|
|
202
204
|
# build reverse namespace lookup
|
|
@@ -895,6 +897,10 @@ my %sRangeMask = (
|
|
|
895
897
|
Name => 'nine',
|
|
896
898
|
SubDirectory => { TagTable => 'Image::ExifTool::Nikon::nine' },
|
|
897
899
|
},
|
|
900
|
+
hdr => {
|
|
901
|
+
Name => 'hdr',
|
|
902
|
+
SubDirectory => { TagTable => 'Image::ExifTool::XMP::hdr' },
|
|
903
|
+
},
|
|
898
904
|
);
|
|
899
905
|
|
|
900
906
|
# hack to allow XML containing Dublin Core metadata to be handled like XMP (eg. EPUB - see ZIP.pm)
|
|
@@ -1728,6 +1734,14 @@ my %sPantryItem = (
|
|
|
1728
1734
|
List => 'Seq',
|
|
1729
1735
|
},
|
|
1730
1736
|
RangeMaskMapInfo => { Name => 'RangeMask', Struct => \%sRangeMask, FlatName => 'RangeMask' },
|
|
1737
|
+
# new for ACR 15.1 (not sure if these are integer or real, so just guess)
|
|
1738
|
+
HDREditMode => { Writable => 'integer' },
|
|
1739
|
+
SDRBrightness => { Writable => 'real' },
|
|
1740
|
+
SDRContrast => { Writable => 'real' },
|
|
1741
|
+
SDRHighlights => { Writable => 'real' },
|
|
1742
|
+
SDRShadows => { Writable => 'real' },
|
|
1743
|
+
SDRWhites => { Writable => 'real' },
|
|
1744
|
+
SDRBlend => { Writable => 'real' },
|
|
1731
1745
|
);
|
|
1732
1746
|
|
|
1733
1747
|
# Tiff namespace properties (tiff)
|
|
@@ -2279,7 +2293,13 @@ my %sPantryItem = (
|
|
|
2279
2293
|
PrintConvInv => '$val=~s/\s*m$//; $val',
|
|
2280
2294
|
},
|
|
2281
2295
|
NativeDigest => { }, #PH
|
|
2282
|
-
#
|
|
2296
|
+
# the following written incorrectly by ACR 15.1
|
|
2297
|
+
# SubSecTime (should not be written according to Exif4XMP 2.32 specification)
|
|
2298
|
+
# SubSecTimeOriginal (should not be written according to Exif4XMP 2.32 specification)
|
|
2299
|
+
# SubSecTimeDigitized (should not be written according to Exif4XMP 2.32 specification)
|
|
2300
|
+
# SerialNumber (should be BodySerialNumber)
|
|
2301
|
+
# Lens (should be XMP-aux)
|
|
2302
|
+
# LensInfo (should be XMP-aux)
|
|
2283
2303
|
);
|
|
2284
2304
|
|
|
2285
2305
|
# Exif extended properties (exifEX, ref 12)
|
|
@@ -2996,8 +3016,9 @@ sub AddFlattenedTags($;$$)
|
|
|
2996
3016
|
} else {
|
|
2997
3017
|
$$flatInfo{Groups}{2} = $tagG2;
|
|
2998
3018
|
}
|
|
2999
|
-
# save reference to top-level
|
|
3019
|
+
# save reference to top-level and parent structures
|
|
3000
3020
|
$$flatInfo{RootTagInfo} = $$tagInfo{RootTagInfo} || $tagInfo;
|
|
3021
|
+
$$flatInfo{ParentTagInfo} = $tagInfo;
|
|
3001
3022
|
# recursively generate flattened tags for sub-structures
|
|
3002
3023
|
next unless $$flatInfo{Struct};
|
|
3003
3024
|
length($flatID) > 250 and warn("Possible deep recursion for tag $flatID\n"), last;
|
|
@@ -4391,7 +4412,7 @@ information.
|
|
|
4391
4412
|
|
|
4392
4413
|
=head1 AUTHOR
|
|
4393
4414
|
|
|
4394
|
-
Copyright 2003-
|
|
4415
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
|
4395
4416
|
|
|
4396
4417
|
This library is free software; you can redistribute it and/or modify it
|
|
4397
4418
|
under the same terms as Perl itself.
|
|
@@ -538,7 +538,7 @@ my %sImageRegion = ( # new in 1.5
|
|
|
538
538
|
NAMESPACE => 'Iptc4xmpExt',
|
|
539
539
|
TABLE_DESC => 'XMP IPTC Extension',
|
|
540
540
|
NOTES => q{
|
|
541
|
-
This table contains tags defined by the IPTC Extension schema version 1.
|
|
541
|
+
This table contains tags defined by the IPTC Extension schema version 1.7
|
|
542
542
|
and IPTC Video Metadata version 1.3. The actual namespace prefix is
|
|
543
543
|
"Iptc4xmpExt", but ExifTool shortens this for the family 1 group name. (See
|
|
544
544
|
L<http://www.iptc.org/standards/photo-metadata/iptc-standard/> and
|
|
@@ -683,6 +683,7 @@ my %sImageRegion = ( # new in 1.5
|
|
|
683
683
|
ProductName => { Writable => 'lang-alt' },
|
|
684
684
|
ProductGTIN => { },
|
|
685
685
|
ProductDescription => { Writable => 'lang-alt' },
|
|
686
|
+
ProductId => { }, # added in version 2022.1
|
|
686
687
|
},
|
|
687
688
|
List => 'Bag',
|
|
688
689
|
},
|
|
@@ -1525,6 +1526,7 @@ my %sSubVersion = (
|
|
|
1525
1526
|
ImageHistory => { Avoid => 1, Notes => 'different format from EXIF:ImageHistory' },
|
|
1526
1527
|
LensCorrectionSettings => { },
|
|
1527
1528
|
ImageUniqueID => { Avoid => 1 },
|
|
1529
|
+
picasawebGPhotoId => { }, #forum14108
|
|
1528
1530
|
);
|
|
1529
1531
|
|
|
1530
1532
|
# SWF namespace tags (ref PH)
|
|
@@ -1854,6 +1856,11 @@ my %sSubVersion = (
|
|
|
1854
1856
|
MicroVideoVersion => { Writable => 'integer' },
|
|
1855
1857
|
MicroVideoOffset => { Writable => 'integer' },
|
|
1856
1858
|
MicroVideoPresentationTimestampUs => { Writable => 'integer' },
|
|
1859
|
+
shot_log_data => { #forum14108
|
|
1860
|
+
Name => 'ShotLogData',
|
|
1861
|
+
ValueConv => 'Image::ExifTool::XMP::DecodeBase64($val)',
|
|
1862
|
+
ValueConvInv => 'Image::ExifTool::XMP::EncodeBase64($val)',
|
|
1863
|
+
},
|
|
1857
1864
|
);
|
|
1858
1865
|
|
|
1859
1866
|
# Google creations namespace (ref PH)
|
|
@@ -1863,6 +1870,7 @@ my %sSubVersion = (
|
|
|
1863
1870
|
NAMESPACE => 'GCreations',
|
|
1864
1871
|
NOTES => 'Google creations tags.',
|
|
1865
1872
|
CameraBurstID => { },
|
|
1873
|
+
Type => { Avoid => 1 },
|
|
1866
1874
|
);
|
|
1867
1875
|
|
|
1868
1876
|
# Google depth-map Device namespace (ref 13)
|
|
@@ -2066,6 +2074,25 @@ my %sSubVersion = (
|
|
|
2066
2074
|
},
|
|
2067
2075
|
);
|
|
2068
2076
|
|
|
2077
|
+
# hdr metadata namespace used by ACR 15.1
|
|
2078
|
+
%Image::ExifTool::XMP::hdr = (
|
|
2079
|
+
%xmpTableDefaults,
|
|
2080
|
+
GROUPS => { 1 => 'XMP-hdr', 2 => 'Image' },
|
|
2081
|
+
NAMESPACE => 'hdr_metadata',
|
|
2082
|
+
TABLE_DESC => 'XMP HDR Metadata',
|
|
2083
|
+
NOTES => q{
|
|
2084
|
+
HDR metadata namespace tags written by ACR 15.1. The actual namespace
|
|
2085
|
+
prefix is "hdr_metadata", which is the prefix recorded in the file, but
|
|
2086
|
+
ExifTool shortens this for the family 1 group name.
|
|
2087
|
+
},
|
|
2088
|
+
ccv_primaries_xy => { Name => 'CCVPrimariesXY' }, # (comma-separated string of 6 reals)
|
|
2089
|
+
ccv_white_xy => { Name => 'CCVWhiteXY' }, # (comma-separated string of 2 reals)
|
|
2090
|
+
ccv_min_luminance_nits => { Name => 'CCVMinLuminanceNits', Writable => 'real' },
|
|
2091
|
+
ccv_max_luminance_nits => { Name => 'CCVMaxLuminanceNits', Writable => 'real' },
|
|
2092
|
+
ccv_avg_luminance_nits => { Name => 'CCVAvgLuminanceNits', Writable => 'real' },
|
|
2093
|
+
scene_referred => { Name => 'SceneReferred', Writable => 'boolean' },
|
|
2094
|
+
);
|
|
2095
|
+
|
|
2069
2096
|
# SVG namespace properties (ref 9)
|
|
2070
2097
|
%Image::ExifTool::XMP::SVG = (
|
|
2071
2098
|
GROUPS => { 0 => 'SVG', 1 => 'SVG', 2 => 'Image' },
|
|
@@ -2133,7 +2160,7 @@ This file contains definitions for less common XMP namespaces.
|
|
|
2133
2160
|
|
|
2134
2161
|
=head1 AUTHOR
|
|
2135
2162
|
|
|
2136
|
-
Copyright 2003-
|
|
2163
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
|
2137
2164
|
|
|
2138
2165
|
This library is free software; you can redistribute it and/or modify it
|
|
2139
2166
|
under the same terms as Perl itself.
|
|
@@ -869,7 +869,7 @@ information.
|
|
|
869
869
|
|
|
870
870
|
=head1 AUTHOR
|
|
871
871
|
|
|
872
|
-
Copyright 2003-
|
|
872
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
|
873
873
|
|
|
874
874
|
This library is free software; you can redistribute it and/or modify it
|
|
875
875
|
under the same terms as Perl itself.
|