exiftool_vendored 13.37.0 → 13.40.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 +41 -3
 - data/bin/MANIFEST +7 -0
 - data/bin/META.json +1 -1
 - data/bin/META.yml +1 -1
 - data/bin/README +49 -47
 - data/bin/config_files/local_time.config +55 -0
 - data/bin/exiftool +83 -70
 - data/bin/lib/Image/ExifTool/BMP.pm +1 -1
 - data/bin/lib/Image/ExifTool/BuildTagLookup.pm +2 -2
 - data/bin/lib/Image/ExifTool/DJI.pm +256 -20
 - data/bin/lib/Image/ExifTool/DSF.pm +138 -0
 - data/bin/lib/Image/ExifTool/EXE.pm +3 -1
 - data/bin/lib/Image/ExifTool/Font.pm +386 -118
 - data/bin/lib/Image/ExifTool/Geolocation.pm +10 -7
 - data/bin/lib/Image/ExifTool/Geotag.pm +21 -2
 - data/bin/lib/Image/ExifTool/GoPro.pm +6 -3
 - data/bin/lib/Image/ExifTool/Google.pm +16 -6
 - data/bin/lib/Image/ExifTool/ID3.pm +11 -10
 - data/bin/lib/Image/ExifTool/LNK.pm +63 -2
 - data/bin/lib/Image/ExifTool/M2TS.pm +32 -23
 - data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
 - data/bin/lib/Image/ExifTool/OOXML.pm +3 -2
 - data/bin/lib/Image/ExifTool/Olympus.pm +3 -1
 - data/bin/lib/Image/ExifTool/Pentax.pm +7 -2
 - data/bin/lib/Image/ExifTool/QuickTime.pm +3 -3
 - data/bin/lib/Image/ExifTool/QuickTimeStream.pl +44 -35
 - data/bin/lib/Image/ExifTool/Sony.pm +19 -14
 - data/bin/lib/Image/ExifTool/TagLookup.pm +35 -1
 - data/bin/lib/Image/ExifTool/TagNames.pod +1383 -1217
 - data/bin/lib/Image/ExifTool/WavPack.pm +144 -0
 - data/bin/lib/Image/ExifTool/XMP.pm +12 -7
 - data/bin/lib/Image/ExifTool/XMP2.pl +11 -5
 - data/bin/lib/Image/ExifTool.pm +46 -26
 - data/bin/lib/Image/ExifTool.pod +64 -56
 - data/bin/perl-Image-ExifTool.spec +47 -46
 - data/lib/exiftool_vendored/version.rb +1 -1
 - metadata +4 -1
 
| 
         @@ -0,0 +1,144 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #------------------------------------------------------------------------------
         
     | 
| 
      
 2 
     | 
    
         
            +
            # File:         WavPack.pm
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Description:  Read metadata from WavPack audio files
         
     | 
| 
      
 5 
     | 
    
         
            +
            #
         
     | 
| 
      
 6 
     | 
    
         
            +
            # Revisions:    2025-09-24 - P. Harvey Created
         
     | 
| 
      
 7 
     | 
    
         
            +
            #
         
     | 
| 
      
 8 
     | 
    
         
            +
            # References:   1) https://www.wavpack.com/WavPack5FileFormat.pdf
         
     | 
| 
      
 9 
     | 
    
         
            +
            #------------------------------------------------------------------------------
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            package Image::ExifTool::WavPack;
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            use strict;
         
     | 
| 
      
 14 
     | 
    
         
            +
            use vars qw($VERSION);
         
     | 
| 
      
 15 
     | 
    
         
            +
            use Image::ExifTool qw(:DataAccess :Utils);
         
     | 
| 
      
 16 
     | 
    
         
            +
            use Image::ExifTool::RIFF;
         
     | 
| 
      
 17 
     | 
    
         
            +
            use Image::ExifTool::APE;
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            $VERSION = '1.00';
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            %Image::ExifTool::WavPack::Main = (
         
     | 
| 
      
 22 
     | 
    
         
            +
                PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
         
     | 
| 
      
 23 
     | 
    
         
            +
                GROUPS => { 0 => 'File', 1 => 'File', 2 => 'Audio' },
         
     | 
| 
      
 24 
     | 
    
         
            +
                FORMAT => 'int32u',
         
     | 
| 
      
 25 
     | 
    
         
            +
                NOTES => q{
         
     | 
| 
      
 26 
     | 
    
         
            +
                    Tags extracted from the header of WavPack (WV and WVP) audio files.  These
         
     | 
| 
      
 27 
     | 
    
         
            +
                    files may also contain RIFF, ID3 and/or APE metadata which is also extracted
         
     | 
| 
      
 28 
     | 
    
         
            +
                    by ExifTool.  See L<https://www.wavpack.com/WavPack5FileFormat.pdf> for the
         
     | 
| 
      
 29 
     | 
    
         
            +
                    WavPack specification.
         
     | 
| 
      
 30 
     | 
    
         
            +
                },
         
     | 
| 
      
 31 
     | 
    
         
            +
                6.1 => {
         
     | 
| 
      
 32 
     | 
    
         
            +
                    Name => 'BytesPerSample',
         
     | 
| 
      
 33 
     | 
    
         
            +
                    Mask => 0x03,
         
     | 
| 
      
 34 
     | 
    
         
            +
                    ValueConv => '$val + 1',
         
     | 
| 
      
 35 
     | 
    
         
            +
                },
         
     | 
| 
      
 36 
     | 
    
         
            +
                6.2 => {
         
     | 
| 
      
 37 
     | 
    
         
            +
                    Name => 'AudioType',
         
     | 
| 
      
 38 
     | 
    
         
            +
                    Mask => 0x04,
         
     | 
| 
      
 39 
     | 
    
         
            +
                    PrintConv => { 0 => 'Stereo', 1 => 'Mono' },
         
     | 
| 
      
 40 
     | 
    
         
            +
                },
         
     | 
| 
      
 41 
     | 
    
         
            +
                6.3 => {
         
     | 
| 
      
 42 
     | 
    
         
            +
                    Name => 'Compression',
         
     | 
| 
      
 43 
     | 
    
         
            +
                    Mask => 0x08,
         
     | 
| 
      
 44 
     | 
    
         
            +
                    PrintConv => { 0 => 'Lossless', 1 => 'Hybrid' },
         
     | 
| 
      
 45 
     | 
    
         
            +
                },
         
     | 
| 
      
 46 
     | 
    
         
            +
                6.4 => {
         
     | 
| 
      
 47 
     | 
    
         
            +
                    Name => 'DataFormat',
         
     | 
| 
      
 48 
     | 
    
         
            +
                    Mask => 0x80,
         
     | 
| 
      
 49 
     | 
    
         
            +
                    PrintConv => { 0 => 'Integer', 1 => 'Floating Point' },
         
     | 
| 
      
 50 
     | 
    
         
            +
                },
         
     | 
| 
      
 51 
     | 
    
         
            +
                6.5 => {
         
     | 
| 
      
 52 
     | 
    
         
            +
                    Name => 'SampleRate',
         
     | 
| 
      
 53 
     | 
    
         
            +
                    Mask => 0x07800000,
         
     | 
| 
      
 54 
     | 
    
         
            +
                    Priority => 0, # ("Custom" is not very useful)
         
     | 
| 
      
 55 
     | 
    
         
            +
                    PrintConv => { # (NC)
         
     | 
| 
      
 56 
     | 
    
         
            +
                        0 => 6000,
         
     | 
| 
      
 57 
     | 
    
         
            +
                        1 => 8000,
         
     | 
| 
      
 58 
     | 
    
         
            +
                        2 => 9600,
         
     | 
| 
      
 59 
     | 
    
         
            +
                        3 => 11025,
         
     | 
| 
      
 60 
     | 
    
         
            +
                        4 => 12000,
         
     | 
| 
      
 61 
     | 
    
         
            +
                        5 => 16000,
         
     | 
| 
      
 62 
     | 
    
         
            +
                        6 => 22050,
         
     | 
| 
      
 63 
     | 
    
         
            +
                        7 => 24000,
         
     | 
| 
      
 64 
     | 
    
         
            +
                        8 => 32000,
         
     | 
| 
      
 65 
     | 
    
         
            +
                        9 => 44100,
         
     | 
| 
      
 66 
     | 
    
         
            +
                        10 => 48000,
         
     | 
| 
      
 67 
     | 
    
         
            +
                        11 => 64000,
         
     | 
| 
      
 68 
     | 
    
         
            +
                        12 => 88200,
         
     | 
| 
      
 69 
     | 
    
         
            +
                        13 => 96000,
         
     | 
| 
      
 70 
     | 
    
         
            +
                        14 => 192000,
         
     | 
| 
      
 71 
     | 
    
         
            +
                        15 => 'Custom',
         
     | 
| 
      
 72 
     | 
    
         
            +
                    },
         
     | 
| 
      
 73 
     | 
    
         
            +
                },
         
     | 
| 
      
 74 
     | 
    
         
            +
            );
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
            #------------------------------------------------------------------------------
         
     | 
| 
      
 77 
     | 
    
         
            +
            # Extract metadata from a WavPack file
         
     | 
| 
      
 78 
     | 
    
         
            +
            # Inputs: 0) ExifTool object reference, 1) dirInfo reference
         
     | 
| 
      
 79 
     | 
    
         
            +
            # Returns: 1 on success, 0 if this wasn't a valid WavPack file
         
     | 
| 
      
 80 
     | 
    
         
            +
            sub ProcessWV($$)
         
     | 
| 
      
 81 
     | 
    
         
            +
            {
         
     | 
| 
      
 82 
     | 
    
         
            +
                my ($et, $dirInfo) = @_;
         
     | 
| 
      
 83 
     | 
    
         
            +
                my $raf = $$dirInfo{RAF};
         
     | 
| 
      
 84 
     | 
    
         
            +
                my $buff;
         
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
      
 86 
     | 
    
         
            +
                # verify this is a valid WavPack file
         
     | 
| 
      
 87 
     | 
    
         
            +
                return 0 unless $raf->Read($buff, 32) == 32;
         
     | 
| 
      
 88 
     | 
    
         
            +
                return 0 unless $buff =~ /^wvpk.{4}[\x02\x10]\x04/s;
         
     | 
| 
      
 89 
     | 
    
         
            +
                $et->SetFileType();
         
     | 
| 
      
 90 
     | 
    
         
            +
                my %dirInfo = (
         
     | 
| 
      
 91 
     | 
    
         
            +
                    DataPt => \$buff,
         
     | 
| 
      
 92 
     | 
    
         
            +
                    DirStart => 0,
         
     | 
| 
      
 93 
     | 
    
         
            +
                    DirLen => length($buff),
         
     | 
| 
      
 94 
     | 
    
         
            +
                );
         
     | 
| 
      
 95 
     | 
    
         
            +
                $et->ProcessBinaryData(\%dirInfo, GetTagTable('Image::ExifTool::WavPack::Main'));
         
     | 
| 
      
 96 
     | 
    
         
            +
                # historically, the RIFF module has handled RIFF-type WavPack files
         
     | 
| 
      
 97 
     | 
    
         
            +
                $raf->Seek(0,0);
         
     | 
| 
      
 98 
     | 
    
         
            +
                push @{$$et{PATH}}, 'RIFF'; # update metadata path
         
     | 
| 
      
 99 
     | 
    
         
            +
                Image::ExifTool::RIFF::ProcessRIFF($et, $dirInfo);
         
     | 
| 
      
 100 
     | 
    
         
            +
                # also look for ID3 and APE trailers (ProcessAPE also checks for ID3)
         
     | 
| 
      
 101 
     | 
    
         
            +
                $$et{PATH}[-1] = 'APE';
         
     | 
| 
      
 102 
     | 
    
         
            +
                Image::ExifTool::APE::ProcessAPE($et, $dirInfo);
         
     | 
| 
      
 103 
     | 
    
         
            +
                pop @{$$et{PATH}};
         
     | 
| 
      
 104 
     | 
    
         
            +
                return 1;
         
     | 
| 
      
 105 
     | 
    
         
            +
            }
         
     | 
| 
      
 106 
     | 
    
         
            +
             
     | 
| 
      
 107 
     | 
    
         
            +
            1;  # end
         
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
      
 109 
     | 
    
         
            +
            __END__
         
     | 
| 
      
 110 
     | 
    
         
            +
             
     | 
| 
      
 111 
     | 
    
         
            +
            =head1 NAME
         
     | 
| 
      
 112 
     | 
    
         
            +
             
     | 
| 
      
 113 
     | 
    
         
            +
            Image::ExifTool::WavPack - Read metadata from WavPack audio files
         
     | 
| 
      
 114 
     | 
    
         
            +
             
     | 
| 
      
 115 
     | 
    
         
            +
            =head1 SYNOPSIS
         
     | 
| 
      
 116 
     | 
    
         
            +
             
     | 
| 
      
 117 
     | 
    
         
            +
            This module is used by Image::ExifTool
         
     | 
| 
      
 118 
     | 
    
         
            +
             
     | 
| 
      
 119 
     | 
    
         
            +
            =head1 DESCRIPTION
         
     | 
| 
      
 120 
     | 
    
         
            +
             
     | 
| 
      
 121 
     | 
    
         
            +
            This module contains definitions required by Image::ExifTool to read metadata
         
     | 
| 
      
 122 
     | 
    
         
            +
            from WavPack audio files.
         
     | 
| 
      
 123 
     | 
    
         
            +
             
     | 
| 
      
 124 
     | 
    
         
            +
            =head1 AUTHOR
         
     | 
| 
      
 125 
     | 
    
         
            +
             
     | 
| 
      
 126 
     | 
    
         
            +
            Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
         
     | 
| 
      
 127 
     | 
    
         
            +
             
     | 
| 
      
 128 
     | 
    
         
            +
            This library is free software; you can redistribute it and/or modify it
         
     | 
| 
      
 129 
     | 
    
         
            +
            under the same terms as Perl itself.
         
     | 
| 
      
 130 
     | 
    
         
            +
             
     | 
| 
      
 131 
     | 
    
         
            +
            =head1 REFERENCES
         
     | 
| 
      
 132 
     | 
    
         
            +
             
     | 
| 
      
 133 
     | 
    
         
            +
            =over 4
         
     | 
| 
      
 134 
     | 
    
         
            +
             
     | 
| 
      
 135 
     | 
    
         
            +
            =item L<https://www.wavpack.com/WavPack5FileFormat.pdf>
         
     | 
| 
      
 136 
     | 
    
         
            +
             
     | 
| 
      
 137 
     | 
    
         
            +
            =back
         
     | 
| 
      
 138 
     | 
    
         
            +
             
     | 
| 
      
 139 
     | 
    
         
            +
            =head1 SEE ALSO
         
     | 
| 
      
 140 
     | 
    
         
            +
             
     | 
| 
      
 141 
     | 
    
         
            +
            L<Image::ExifTool::TagNames/WavPack Tags>,
         
     | 
| 
      
 142 
     | 
    
         
            +
            L<Image::ExifTool(3pm)|Image::ExifTool>
         
     | 
| 
      
 143 
     | 
    
         
            +
             
     | 
| 
      
 144 
     | 
    
         
            +
            =cut
         
     | 
| 
         @@ -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.75';
         
     | 
| 
       54 
54 
     | 
    
         
             
            @ISA = qw(Exporter);
         
     | 
| 
       55 
55 
     | 
    
         
             
            @EXPORT_OK = qw(EscapeXML UnescapeXML);
         
     | 
| 
       56 
56 
     | 
    
         | 
| 
         @@ -4436,7 +4436,7 @@ sub ProcessXMP($$;$) 
     | 
|
| 
       4436 
4436 
     | 
    
         
             
                        $buf2 = pack('C*', unpack("$fmt*",$buff));
         
     | 
| 
       4437 
4437 
     | 
    
         
             
                    }
         
     | 
| 
       4438 
4438 
     | 
    
         
             
                    if (Image::ExifTool::GetWarning()) {
         
     | 
| 
       4439 
     | 
    
         
            -
                        $et->Warn('Superfluous BOM at start of XMP');
         
     | 
| 
      
 4439 
     | 
    
         
            +
                        $et->Warn('Superfluous BOM at start of XMP') unless $$dirInfo{RAF};
         
     | 
| 
       4440 
4440 
     | 
    
         
             
                        $dataPt = \$buff;   # use XMP with the BOM removed
         
     | 
| 
       4441 
4441 
     | 
    
         
             
                    } else {
         
     | 
| 
       4442 
4442 
     | 
    
         
             
                        $et->Warn('XMP is double UTF-encoded');
         
     | 
| 
         @@ -4487,13 +4487,16 @@ sub ProcessXMP($$;$) 
     | 
|
| 
       4487 
4487 
     | 
    
         
             
                    $begin = join "\0", split //, $begin;
         
     | 
| 
       4488 
4488 
     | 
    
         
             
                    # must reset pos because it was killed by previous unsuccessful //g match
         
     | 
| 
       4489 
4489 
     | 
    
         
             
                    pos($$dataPt) = $dirStart;
         
     | 
| 
      
 4490 
     | 
    
         
            +
                    my $badEnc;
         
     | 
| 
       4490 
4491 
     | 
    
         
             
                    if ($$dataPt =~ /\G(\0)?\Q$begin\E\0./sg) {
         
     | 
| 
       4491 
4492 
     | 
    
         
             
                        # validate byte ordering by checking for U+FEFF character
         
     | 
| 
       4492 
4493 
     | 
    
         
             
                        if ($1) {
         
     | 
| 
       4493 
4494 
     | 
    
         
             
                            # should be big-endian since we had a leading \0
         
     | 
| 
       4494 
     | 
    
         
            -
                            $fmt = 'n' 
     | 
| 
      
 4495 
     | 
    
         
            +
                            $fmt = 'n';
         
     | 
| 
      
 4496 
     | 
    
         
            +
                            $badEnc = 1 unless $$dataPt =~ /\G\xfe\xff/g;
         
     | 
| 
       4495 
4497 
     | 
    
         
             
                        } else {
         
     | 
| 
       4496 
     | 
    
         
            -
                            $fmt = 'v' 
     | 
| 
      
 4498 
     | 
    
         
            +
                            $fmt = 'v';
         
     | 
| 
      
 4499 
     | 
    
         
            +
                            $badEnc = 1 unless $$dataPt =~ /\G\0\xff\xfe/g;
         
     | 
| 
       4497 
4500 
     | 
    
         
             
                        }
         
     | 
| 
       4498 
4501 
     | 
    
         
             
                    } else {
         
     | 
| 
       4499 
4502 
     | 
    
         
             
                        # check for UTF-32 encoding (with three \0's between characters)
         
     | 
| 
         @@ -4503,12 +4506,14 @@ sub ProcessXMP($$;$) 
     | 
|
| 
       4503 
4506 
     | 
    
         
             
                            $fmt = 0;   # set format to zero as indication we didn't find encoded XMP
         
     | 
| 
       4504 
4507 
     | 
    
         
             
                        } elsif ($1) {
         
     | 
| 
       4505 
4508 
     | 
    
         
             
                            # should be big-endian
         
     | 
| 
       4506 
     | 
    
         
            -
                            $fmt = 'N' 
     | 
| 
      
 4509 
     | 
    
         
            +
                            $fmt = 'N';
         
     | 
| 
      
 4510 
     | 
    
         
            +
                            $badEnc = 1 unless $$dataPt =~ /\G\0\0\xfe\xff/g;
         
     | 
| 
       4507 
4511 
     | 
    
         
             
                        } else {
         
     | 
| 
       4508 
     | 
    
         
            -
                            $fmt = 'V' 
     | 
| 
      
 4512 
     | 
    
         
            +
                            $fmt = 'V';
         
     | 
| 
      
 4513 
     | 
    
         
            +
                            $badEnc = 1 unless $$dataPt =~ /\G\0\0\0\xff\xfe\0\0/g;
         
     | 
| 
       4509 
4514 
     | 
    
         
             
                        }
         
     | 
| 
       4510 
4515 
     | 
    
         
             
                    }
         
     | 
| 
       4511 
     | 
    
         
            -
                     
     | 
| 
      
 4516 
     | 
    
         
            +
                    $badEnc and $et->Warn('Invalid XMP encoding marker');
         
     | 
| 
       4512 
4517 
     | 
    
         
             
                }
         
     | 
| 
       4513 
4518 
     | 
    
         
             
                # warn if standard XMP is missing xpacket wrapper
         
     | 
| 
       4514 
4519 
     | 
    
         
             
                if ($$et{XMP_NO_XPACKET} and $$et{OPTIONS}{Validate} and
         
     | 
| 
         @@ -499,11 +499,12 @@ my %sImageRegion = ( # new in 1.5 
     | 
|
| 
       499 
499 
     | 
    
         
             
                NAMESPACE   => 'Iptc4xmpExt',
         
     | 
| 
       500 
500 
     | 
    
         
             
                TABLE_DESC => 'XMP IPTC Extension',
         
     | 
| 
       501 
501 
     | 
    
         
             
                NOTES => q{
         
     | 
| 
       502 
     | 
    
         
            -
             
     | 
| 
       503 
     | 
    
         
            -
             
     | 
| 
       504 
     | 
    
         
            -
             
     | 
| 
       505 
     | 
    
         
            -
             
     | 
| 
       506 
     | 
    
         
            -
             
     | 
| 
      
 502 
     | 
    
         
            +
            This table contains tags defined by the IPTC Extension schema version 1.7
         
     | 
| 
      
 503 
     | 
    
         
            +
            and IPTC Video Metadata version 1.3, plus the AI additions.  The actual
         
     | 
| 
      
 504 
     | 
    
         
            +
            namespace prefix is "Iptc4xmpExt", but ExifTool shortens this for the family
         
     | 
| 
      
 505 
     | 
    
         
            +
            1 group name. (See
         
     | 
| 
      
 506 
     | 
    
         
            +
            L<http://www.iptc.org/standards/photo-metadata/iptc-standard/> and
         
     | 
| 
      
 507 
     | 
    
         
            +
            L<https://iptc.org/standards/video-metadata-hub/>.)
         
     | 
| 
       507 
508 
     | 
    
         
             
                },
         
     | 
| 
       508 
509 
     | 
    
         
             
                AboutCvTerm => {
         
     | 
| 
       509 
510 
     | 
    
         
             
                    Struct => \%sCVTermDetails,
         
     | 
| 
         @@ -769,6 +770,11 @@ my %sImageRegion = ( # new in 1.5 
     | 
|
| 
       769 
770 
     | 
    
         
             
                ImageRegion => { Groups => { 2 => 'Image' }, List => 'Bag', Struct => \%sImageRegion },
         
     | 
| 
       770 
771 
     | 
    
         
             
                # new Extension 1.6 property
         
     | 
| 
       771 
772 
     | 
    
         
             
                EventId     => { Name => 'EventID', List => 'Bag' },
         
     | 
| 
      
 773 
     | 
    
         
            +
                # new AI tags
         
     | 
| 
      
 774 
     | 
    
         
            +
                AISystemUsed        => { },
         
     | 
| 
      
 775 
     | 
    
         
            +
                AISystemVersionUsed => { },
         
     | 
| 
      
 776 
     | 
    
         
            +
                AIPromptInformation => { },
         
     | 
| 
      
 777 
     | 
    
         
            +
                AIPromptWriterName  => { },
         
     | 
| 
       772 
778 
     | 
    
         
             
            );
         
     | 
| 
       773 
779 
     | 
    
         | 
| 
       774 
780 
     | 
    
         
             
            #------------------------------------------------------------------------------
         
     | 
    
        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 $configFile @configFiles $noConfig);
         
     | 
| 
       31 
31 
     | 
    
         | 
| 
       32 
     | 
    
         
            -
            $VERSION = '13. 
     | 
| 
      
 32 
     | 
    
         
            +
            $VERSION = '13.40';
         
     | 
| 
       33 
33 
     | 
    
         
             
            $RELEASE = '';
         
     | 
| 
       34 
34 
     | 
    
         
             
            @ISA = qw(Exporter);
         
     | 
| 
       35 
35 
     | 
    
         
             
            %EXPORT_TAGS = (
         
     | 
| 
         @@ -148,16 +148,16 @@ sub ReadValue($$$;$$$); 
     | 
|
| 
       148 
148 
     | 
    
         
             
                PCX PGF PSP PhotoCD Radiance Other::PFM PDF PostScript Photoshop::Header
         
     | 
| 
       149 
149 
     | 
    
         
             
                Photoshop::Layers Photoshop::ImageData FujiFilm::RAFHeader FujiFilm::RAF
         
     | 
| 
       150 
150 
     | 
    
         
             
                FujiFilm::IFD FujiFilm::MRAW Samsung::Trailer Sony::SRF2 Sony::SR2SubIFD
         
     | 
| 
       151 
     | 
    
         
            -
                Sony::PMP ITC ID3 ID3::Lyrics3 FLAC AAC Ogg Vorbis  
     | 
| 
       152 
     | 
    
         
            -
                APE::OldHeader Audible MPC MPEG::Audio MPEG::Video MPEG::Xing 
     | 
| 
       153 
     | 
    
         
            -
                QuickTime::ImageFile QuickTime::Stream QuickTime::Tags360Fly 
     | 
| 
       154 
     | 
    
         
            -
                Matroska::StdTag MOI MXF DV Flash Flash::FLV Real::Media 
     | 
| 
       155 
     | 
    
         
            -
                Real::Metafile Red RIFF AIFF ASF TNEF WTV DICOM FITS XISF MIE 
     | 
| 
       156 
     | 
    
         
            -
                XMP::SVG Palm Palm::MOBI Palm::EXTH Torrent EXE EXE::PEVersion 
     | 
| 
       157 
     | 
    
         
            -
                EXE::DebugRSDS EXE::DebugNB10 EXE::Misc EXE::MachO EXE::PEF 
     | 
| 
       158 
     | 
    
         
            -
                EXE::CHM LNK PCAP Font VCard Text VCard::VCalendar 
     | 
| 
       159 
     | 
    
         
            -
                ZIP ZIP::GZIP ZIP::RAR ZIP::RAR5 RTF OOXML iWork 
     | 
| 
       160 
     | 
    
         
            -
                MacOS MacOS::MDItem FlashPix::DocTable
         
     | 
| 
      
 151 
     | 
    
         
            +
                Sony::PMP ITC ID3 ID3::Lyrics3 FLAC AAC Ogg Vorbis DSF WavPack APE
         
     | 
| 
      
 152 
     | 
    
         
            +
                APE::NewHeader APE::OldHeader Audible MPC MPEG::Audio MPEG::Video MPEG::Xing
         
     | 
| 
      
 153 
     | 
    
         
            +
                M2TS QuickTime QuickTime::ImageFile QuickTime::Stream QuickTime::Tags360Fly
         
     | 
| 
      
 154 
     | 
    
         
            +
                Matroska Matroska::StdTag MOI MXF DV Flash Flash::FLV Real::Media
         
     | 
| 
      
 155 
     | 
    
         
            +
                Real::Audio Real::Metafile Red RIFF AIFF ASF TNEF WTV DICOM FITS XISF MIE
         
     | 
| 
      
 156 
     | 
    
         
            +
                JSON HTML XMP::SVG Palm Palm::MOBI Palm::EXTH Torrent EXE EXE::PEVersion
         
     | 
| 
      
 157 
     | 
    
         
            +
                EXE::PEString EXE::DebugRSDS EXE::DebugNB10 EXE::Misc EXE::MachO EXE::PEF
         
     | 
| 
      
 158 
     | 
    
         
            +
                EXE::ELF EXE::AR EXE::CHM LNK LNK::INI PCAP Font VCard Text VCard::VCalendar
         
     | 
| 
      
 159 
     | 
    
         
            +
                VCard::VNote RSRC Rawzor ZIP ZIP::GZIP ZIP::RAR ZIP::RAR5 RTF OOXML iWork
         
     | 
| 
      
 160 
     | 
    
         
            +
                ISO FLIR::AFF FLIR::FPF MacOS MacOS::MDItem FlashPix::DocTable
         
     | 
| 
       161 
161 
     | 
    
         
             
            );
         
     | 
| 
       162 
162 
     | 
    
         | 
| 
       163 
163 
     | 
    
         
             
            # alphabetical list of current Lang modules
         
     | 
| 
         @@ -194,13 +194,13 @@ $defaultLang = 'en';    # default language 
     | 
|
| 
       194 
194 
     | 
    
         
             
            # 3) PLIST must be in this list for the binary PLIST format, although it may
         
     | 
| 
       195 
195 
     | 
    
         
             
            #    cause a file to be checked twice for XML
         
     | 
| 
       196 
196 
     | 
    
         
             
            @fileTypes = qw(JPEG EXV CRW DR4 TIFF GIF MRW RAF X3F JP2 PNG MIE MIFF PS PDF
         
     | 
| 
       197 
     | 
    
         
            -
                            PSD XMP BMP WPG BPG PPM RIFF AIFF ASF MOV MPEG Real SWF PSP 
     | 
| 
       198 
     | 
    
         
            -
                            OGG FLAC APE MPC MKV MXF DV PMP IND PGF ICC ITC FLIR FLIF 
     | 
| 
       199 
     | 
    
         
            -
                            LFP HTML VRD RTF FITS XISF XCF DSS QTIF FPX PICT ZIP 
     | 
| 
       200 
     | 
    
         
            -
                            RAR 7Z BZ2 CZI TAR EXE EXR HDR CHM LNK WMF AVC DEX 
     | 
| 
       201 
     | 
    
         
            -
                            JUMBF RSRC M2TS MacOS PHP PCX DCX DWF DWG DXF WTV 
     | 
| 
       202 
     | 
    
         
            -
                            LRI R3D AA PDB PFM2 MRC LIF JXL MOI ISO ALIAS PCAP 
     | 
| 
       203 
     | 
    
         
            -
                            TNEF DICOM PCD NKA ICO TXT AAC);
         
     | 
| 
      
 197 
     | 
    
         
            +
                            PSD XMP BMP WPG BPG PPM WV RIFF AIFF ASF MOV MPEG Real SWF PSP
         
     | 
| 
      
 198 
     | 
    
         
            +
                            FLV OGG FLAC APE MPC MKV MXF DV PMP IND PGF ICC ITC FLIR FLIF
         
     | 
| 
      
 199 
     | 
    
         
            +
                            FPF LFP HTML VRD RTF FITS XISF XCF DSF DSS QTIF FPX PICT ZIP
         
     | 
| 
      
 200 
     | 
    
         
            +
                            GZIP PLIST RAR 7Z BZ2 CZI TAR EXE EXR HDR CHM LNK WMF AVC DEX
         
     | 
| 
      
 201 
     | 
    
         
            +
                            DPX RAW Font JUMBF RSRC M2TS MacOS PHP PCX DCX DWF DWG DXF WTV
         
     | 
| 
      
 202 
     | 
    
         
            +
                            Torrent VCard LRI R3D AA PDB PFM2 MRC LIF JXL MOI ISO ALIAS PCAP
         
     | 
| 
      
 203 
     | 
    
         
            +
                            JSON MP3 TNEF DICOM PCD NKA ICO TXT AAC);
         
     | 
| 
       204 
204 
     | 
    
         | 
| 
       205 
205 
     | 
    
         
             
            # file types that we can write (edit)
         
     | 
| 
       206 
206 
     | 
    
         
             
            my @writeTypes = qw(JPEG TIFF GIF CRW MRW ORF RAF RAW PNG MIE PSD XMP PPM EPS
         
     | 
| 
         @@ -304,6 +304,7 @@ my %createTypes = map { $_ => 1 } qw(XMP ICC MIE VRD DR4 EXIF EXV); 
     | 
|
| 
       304 
304 
     | 
    
         
             
                DPX  => ['DPX',  'Digital Picture Exchange' ],
         
     | 
| 
       305 
305 
     | 
    
         
             
                DR4  => ['DR4',  'Canon VRD version 4 Recipe'],
         
     | 
| 
       306 
306 
     | 
    
         
             
                DS2  => ['DSS',  'Digital Speech Standard 2'],
         
     | 
| 
      
 307 
     | 
    
         
            +
                DSF  => ['DSF',  'DSF Stream File'],
         
     | 
| 
       307 
308 
     | 
    
         
             
                DSS  => ['DSS',  'Digital Speech Standard'],
         
     | 
| 
       308 
309 
     | 
    
         
             
                DV   => ['DV',   'Digital Video'],
         
     | 
| 
       309 
310 
     | 
    
         
             
                DVB  => ['MOV',  'Digital Video Broadcasting'],
         
     | 
| 
         @@ -543,6 +544,7 @@ my %createTypes = map { $_ => 1 } qw(XMP ICC MIE VRD DR4 EXIF EXV); 
     | 
|
| 
       543 
544 
     | 
    
         
             
                TTF  => ['Font', 'True Type Font'],
         
     | 
| 
       544 
545 
     | 
    
         
             
                TUB  => 'PSP',
         
     | 
| 
       545 
546 
     | 
    
         
             
                TXT  => ['TXT',  'Text file'],
         
     | 
| 
      
 547 
     | 
    
         
            +
                URL  => ['LNK',  'Windows shortcut URL'],
         
     | 
| 
       546 
548 
     | 
    
         
             
                VCARD=> ['VCard','Virtual Card'],
         
     | 
| 
       547 
549 
     | 
    
         
             
                VCF  => 'VCARD',
         
     | 
| 
       548 
550 
     | 
    
         
             
                VOB  => ['MPEG', 'Video Object'],
         
     | 
| 
         @@ -556,7 +558,8 @@ my %createTypes = map { $_ => 1 } qw(XMP ICC MIE VRD DR4 EXIF EXV); 
     | 
|
| 
       556 
558 
     | 
    
         
             
                WMA  => ['ASF',  'Windows Media Audio'],
         
     | 
| 
       557 
559 
     | 
    
         
             
                WMF  => ['WMF',  'Windows Metafile Format'],
         
     | 
| 
       558 
560 
     | 
    
         
             
                WMV  => ['ASF',  'Windows Media Video'],
         
     | 
| 
       559 
     | 
    
         
            -
                WV   => [' 
     | 
| 
      
 561 
     | 
    
         
            +
                WV   => ['WV',   'WavPack Audio'],
         
     | 
| 
      
 562 
     | 
    
         
            +
                WVP  =>  'WV',
         
     | 
| 
       560 
563 
     | 
    
         
             
                X3F  => ['X3F',  'Sigma RAW format'],
         
     | 
| 
       561 
564 
     | 
    
         
             
                XCF  => ['XCF',  'GIMP native image format'],
         
     | 
| 
       562 
565 
     | 
    
         
             
                XHTML=> ['HTML', 'Extensible HyperText Markup Language'],
         
     | 
| 
         @@ -571,6 +574,7 @@ my %createTypes = map { $_ => 1 } qw(XMP ICC MIE VRD DR4 EXIF EXV); 
     | 
|
| 
       571 
574 
     | 
    
         
             
                XLTM => [['ZIP','FPX'], 'Office Open XML Spreadsheet Template Macro-enabled'],
         
     | 
| 
       572 
575 
     | 
    
         
             
                XLTX => [['ZIP','FPX'], 'Office Open XML Spreadsheet Template'],
         
     | 
| 
       573 
576 
     | 
    
         
             
                XMP  => ['XMP',  'Extensible Metadata Platform'],
         
     | 
| 
      
 577 
     | 
    
         
            +
                VSDX => ['ZIP',  'Visio Diagram Document'],
         
     | 
| 
       574 
578 
     | 
    
         
             
                WOFF => ['Font', 'Web Open Font Format'],
         
     | 
| 
       575 
579 
     | 
    
         
             
                WOFF2=> ['Font', 'Web Open Font Format 2'],
         
     | 
| 
       576 
580 
     | 
    
         
             
                WPG  => ['WPG',  'WordPerfect Graphics'],
         
     | 
| 
         @@ -652,6 +656,7 @@ my %fileDescription = ( 
     | 
|
| 
       652 
656 
     | 
    
         
             
                DPX  => 'image/x-dpx',
         
     | 
| 
       653 
657 
     | 
    
         
             
                DR4  => 'application/octet-stream', #PH (NC)
         
     | 
| 
       654 
658 
     | 
    
         
             
                DS2  => 'audio/x-ds2',
         
     | 
| 
      
 659 
     | 
    
         
            +
                DSF  => 'audio/x-dsf',
         
     | 
| 
       655 
660 
     | 
    
         
             
                DSS  => 'audio/x-dss',
         
     | 
| 
       656 
661 
     | 
    
         
             
                DV   => 'video/x-dv',
         
     | 
| 
       657 
662 
     | 
    
         
             
               'DVR-MS' => 'video/x-ms-dvr',
         
     | 
| 
         @@ -811,6 +816,7 @@ my %fileDescription = ( 
     | 
|
| 
       811 
816 
     | 
    
         
             
                VCard=> 'text/vcard',
         
     | 
| 
       812 
817 
     | 
    
         
             
                VRD  => 'application/octet-stream', #PH (NC)
         
     | 
| 
       813 
818 
     | 
    
         
             
                VSD  => 'application/x-visio',
         
     | 
| 
      
 819 
     | 
    
         
            +
                VSDX => 'application/vnd.ms-visio.drawing',
         
     | 
| 
       814 
820 
     | 
    
         
             
                WDP  => 'image/vnd.ms-photo',
         
     | 
| 
       815 
821 
     | 
    
         
             
                WEBM => 'video/webm',
         
     | 
| 
       816 
822 
     | 
    
         
             
                WMA  => 'audio/x-ms-wma',
         
     | 
| 
         @@ -818,6 +824,7 @@ my %fileDescription = ( 
     | 
|
| 
       818 
824 
     | 
    
         
             
                WMV  => 'video/x-ms-wmv',
         
     | 
| 
       819 
825 
     | 
    
         
             
                WPG  => 'image/x-wpg',
         
     | 
| 
       820 
826 
     | 
    
         
             
                WTV  => 'video/x-ms-wtv',
         
     | 
| 
      
 827 
     | 
    
         
            +
                WV   => 'audio/x-wavpack',
         
     | 
| 
       821 
828 
     | 
    
         
             
                X3F  => 'image/x-sigma-x3f',
         
     | 
| 
       822 
829 
     | 
    
         
             
                XCF  => 'image/x-xcf',
         
     | 
| 
       823 
830 
     | 
    
         
             
                XISF => 'image/x-xisf',
         
     | 
| 
         @@ -901,6 +908,7 @@ my %moduleName = ( 
     | 
|
| 
       901 
908 
     | 
    
         
             
                TXT  => 'Text',
         
     | 
| 
       902 
909 
     | 
    
         
             
                VRD  => 'CanonVRD',
         
     | 
| 
       903 
910 
     | 
    
         
             
                WMF  => 0,
         
     | 
| 
      
 911 
     | 
    
         
            +
                WV   => 'WavPack',
         
     | 
| 
       904 
912 
     | 
    
         
             
                X3F  => 'SigmaRaw',
         
     | 
| 
       905 
913 
     | 
    
         
             
                XCF  => 'GIMP',
         
     | 
| 
       906 
914 
     | 
    
         
             
            );
         
     | 
| 
         @@ -933,6 +941,7 @@ $testLen = 1024;    # number of bytes to read when testing for magic number 
     | 
|
| 
       933 
941 
     | 
    
         
             
                DOCX => 'PK\x03\x04',
         
     | 
| 
       934 
942 
     | 
    
         
             
                DPX  => '(SDPX|XPDS)',
         
     | 
| 
       935 
943 
     | 
    
         
             
                DR4  => 'IIII[\x04|\x05]\0\x04\0',
         
     | 
| 
      
 944 
     | 
    
         
            +
                DSF  => 'DSD \x1c\0{7}.{16}fmt ',
         
     | 
| 
       936 
945 
     | 
    
         
             
                DSS  => '(\x02dss|\x03ds2)',
         
     | 
| 
       937 
946 
     | 
    
         
             
                DV   => '\x1f\x07\0[\x3f\xbf]', # (not tested if extension recognized)
         
     | 
| 
       938 
947 
     | 
    
         
             
                DWF  => '\(DWF V\d',
         
     | 
| 
         @@ -968,9 +977,9 @@ $testLen = 1024;    # number of bytes to read when testing for magic number 
     | 
|
| 
       968 
977 
     | 
    
         
             
                JXL  => '(\xff\x0a|\0\0\0\x0cJXL \x0d\x0a......ftypjxl )',
         
     | 
| 
       969 
978 
     | 
    
         
             
                LFP  => '\x89LFP\x0d\x0a\x1a\x0a',
         
     | 
| 
       970 
979 
     | 
    
         
             
                LIF  => '\x70\0{3}.{4}\x2a.{4}<\0',
         
     | 
| 
       971 
     | 
    
         
            -
                LNK  => '.{4}\x01\x14\x02\0{5}\xc0\0{6}\x46',
         
     | 
| 
      
 980 
     | 
    
         
            +
                LNK  => '(.{4}\x01\x14\x02\0{5}\xc0\0{6}\x46|\[[InternetShortcut\][\x0d\x0a])',
         
     | 
| 
       972 
981 
     | 
    
         
             
                LRI  => 'LELR \0',
         
     | 
| 
       973 
     | 
    
         
            -
                M2TS => '( 
     | 
| 
      
 982 
     | 
    
         
            +
                M2TS => '.{0,191}?\x47(.{187}|.{191})\x47(.{187}|.{191})\x47',
         
     | 
| 
       974 
983 
     | 
    
         
             
                MacOS=> '\0\x05\x16\x07\0.\0\0Mac OS X        ',
         
     | 
| 
       975 
984 
     | 
    
         
             
                MIE  => '~[\x10\x18]\x04.0MIE',
         
     | 
| 
       976 
985 
     | 
    
         
             
                MIFF => 'id=ImageMagick',
         
     | 
| 
         @@ -1132,6 +1141,7 @@ my @availableOptions = ( 
     | 
|
| 
       1132 
1141 
     | 
    
         
             
                [ 'GeoMaxHDOP',       undef,  'geotag maximum HDOP' ],
         
     | 
| 
       1133 
1142 
     | 
    
         
             
                [ 'GeoMaxPDOP',       undef,  'geotag maximum PDOP' ],
         
     | 
| 
       1134 
1143 
     | 
    
         
             
                [ 'GeoMinSats',       undef,  'geotag minimum satellites' ],
         
     | 
| 
      
 1144 
     | 
    
         
            +
                [ 'GeoHPosErr',       undef,  'geotag GPSHPositioningError based on $GPSDOP' ],
         
     | 
| 
       1135 
1145 
     | 
    
         
             
                [ 'GeoSpeedRef',      undef,  'geotag GPSSpeedRef' ],
         
     | 
| 
       1136 
1146 
     | 
    
         
             
                [ 'GlobalTimeShift',  undef,  'apply time shift to all extracted date/time values' ],
         
     | 
| 
       1137 
1147 
     | 
    
         
             
                [ 'GPSQuadrant',      undef,  'quadrant for GPS if not otherwise known' ],
         
     | 
| 
         @@ -2292,7 +2302,8 @@ sub CleanWarning(;$) 
     | 
|
| 
       2292 
2302 
     | 
    
         
             
                    return undef unless defined $evalWarning;
         
     | 
| 
       2293 
2303 
     | 
    
         
             
                    $str = $evalWarning;
         
     | 
| 
       2294 
2304 
     | 
    
         
             
                }
         
     | 
| 
       2295 
     | 
    
         
            -
                 
     | 
| 
      
 2305 
     | 
    
         
            +
                # truncate at first " at " for warnings like "syntax error at (eval 80) line 1, at EOF"
         
     | 
| 
      
 2306 
     | 
    
         
            +
                $str = $1 if $str =~ /(.*?) at /s;
         
     | 
| 
       2296 
2307 
     | 
    
         
             
                $str =~ s/\s+$//s;
         
     | 
| 
       2297 
2308 
     | 
    
         
             
                return $str;
         
     | 
| 
       2298 
2309 
     | 
    
         
             
            }
         
     | 
| 
         @@ -5523,23 +5534,31 @@ sub AddCleanup($) 
     | 
|
| 
       5523 
5534 
     | 
    
         
             
            #------------------------------------------------------------------------------
         
     | 
| 
       5524 
5535 
     | 
    
         
             
            # Add warning tag
         
     | 
| 
       5525 
5536 
     | 
    
         
             
            # Inputs: 0) ExifTool object reference, 1) warning message
         
     | 
| 
       5526 
     | 
    
         
            -
            #         2)  
     | 
| 
       5527 
     | 
    
         
            -
            #             
     | 
| 
      
 5537 
     | 
    
         
            +
            #         2) 0=normal warning, 1=minor, 2=minor with behavioural change when
         
     | 
| 
      
 5538 
     | 
    
         
            +
            #            ignored, 3=warning shouldn't be issued with Validate option,
         
     | 
| 
      
 5539 
     | 
    
         
            +
            #            bit 0x04 set causes warning count to not be incremented
         
     | 
| 
       5528 
5540 
     | 
    
         
             
            # Returns: true if warning tag was added
         
     | 
| 
       5529 
5541 
     | 
    
         
             
            sub Warn($$;$)
         
     | 
| 
       5530 
5542 
     | 
    
         
             
            {
         
     | 
| 
       5531 
5543 
     | 
    
         
             
                my ($self, $str, $ignorable) = @_;
         
     | 
| 
       5532 
5544 
     | 
    
         
             
                my $noWarn = $$self{OPTIONS}{NoWarning};
         
     | 
| 
       5533 
     | 
    
         
            -
                 
     | 
| 
      
 5545 
     | 
    
         
            +
                my $noCount;
         
     | 
| 
      
 5546 
     | 
    
         
            +
                while ($ignorable) {
         
     | 
| 
      
 5547 
     | 
    
         
            +
                    if ($ignorable & 0x04) {
         
     | 
| 
      
 5548 
     | 
    
         
            +
                        $noCount = 1;
         
     | 
| 
      
 5549 
     | 
    
         
            +
                        $ignorable &= 0x03 or last;
         
     | 
| 
      
 5550 
     | 
    
         
            +
                    }
         
     | 
| 
      
 5551 
     | 
    
         
            +
                    my $ignorable = $ignorable & 0x03;
         
     | 
| 
       5534 
5552 
     | 
    
         
             
                    return 0 if $$self{OPTIONS}{IgnoreMinorErrors};
         
     | 
| 
       5535 
5553 
     | 
    
         
             
                    return 0 if $ignorable eq '3' and $$self{OPTIONS}{Validate};
         
     | 
| 
       5536 
5554 
     | 
    
         
             
                    return 1 if defined $noWarn and eval { $str =~ /$noWarn/ };
         
     | 
| 
       5537 
5555 
     | 
    
         
             
                    $str = $ignorable eq '2' ? "[Minor] $str" : "[minor] $str";
         
     | 
| 
      
 5556 
     | 
    
         
            +
                    last;
         
     | 
| 
       5538 
5557 
     | 
    
         
             
                }
         
     | 
| 
       5539 
5558 
     | 
    
         
             
                unless (defined $noWarn and eval { $str =~ /$noWarn/ }) {
         
     | 
| 
       5540 
5559 
     | 
    
         
             
                    # add each warning only once but count number of occurrences
         
     | 
| 
       5541 
5560 
     | 
    
         
             
                    if ($$self{WAS_WARNED}{$str}) {
         
     | 
| 
       5542 
     | 
    
         
            -
                        ++$$self{WAS_WARNED}{$str};
         
     | 
| 
      
 5561 
     | 
    
         
            +
                        ++$$self{WAS_WARNED}{$str} unless $noCount;
         
     | 
| 
       5543 
5562 
     | 
    
         
             
                    } else {
         
     | 
| 
       5544 
5563 
     | 
    
         
             
                        $self->FoundTag('Warning', $str);
         
     | 
| 
       5545 
5564 
     | 
    
         
             
                        $$self{WAS_WARNED}{$str} = 1;
         
     | 
| 
         @@ -9575,6 +9594,7 @@ sub DoEscape($$) 
     | 
|
| 
       9575 
9594 
     | 
    
         
             
            sub SetFileType($;$$$)
         
     | 
| 
       9576 
9595 
     | 
    
         
             
            {
         
     | 
| 
       9577 
9596 
     | 
    
         
             
                my ($self, $fileType, $mimeType, $normExt) = @_;
         
     | 
| 
      
 9597 
     | 
    
         
            +
                # use only the first FileType set if called again for the main document
         
     | 
| 
       9578 
9598 
     | 
    
         
             
                unless ($$self{FileType} and not $$self{DOC_NUM}) {
         
     | 
| 
       9579 
9599 
     | 
    
         
             
                    my $baseType = $$self{FILE_TYPE};
         
     | 
| 
       9580 
9600 
     | 
    
         
             
                    my $ext = $$self{FILE_EXT};
         
     | 
    
        data/bin/lib/Image/ExifTool.pod
    CHANGED
    
    | 
         @@ -54,62 +54,63 @@ Image::ExifTool - Read and write meta information 
     | 
|
| 
       54 
54 
     | 
    
         
             
            =head1 DESCRIPTION
         
     | 
| 
       55 
55 
     | 
    
         | 
| 
       56 
56 
     | 
    
         
             
            Reads and writes meta information in a wide variety of files, including the
         
     | 
| 
       57 
     | 
    
         
            -
            maker notes of many digital cameras by various manufacturers such as  
     | 
| 
       58 
     | 
    
         
            -
            Casio, DJI, FLIR, FujiFilm, GE, GoPro, HP, JVC/Victor, Kodak, 
     | 
| 
       59 
     | 
    
         
            -
            Minolta/Konica-Minolta, Nikon, Nintendo, Olympus/Epson, 
     | 
| 
       60 
     | 
    
         
            -
            Pentax/Asahi, Phase One, Reconyx, Ricoh, Samsung, Sanyo, 
     | 
| 
       61 
     | 
    
         
            -
            Sony.
         
     | 
| 
      
 57 
     | 
    
         
            +
            maker notes of many digital cameras by various manufacturers such as Apple,
         
     | 
| 
      
 58 
     | 
    
         
            +
            Canon, Casio, DJI, FLIR, FujiFilm, GE, Google, GoPro, HP, JVC/Victor, Kodak,
         
     | 
| 
      
 59 
     | 
    
         
            +
            Leaf, Minolta/Konica-Minolta, Nikon, Nintendo, Olympus/Epson,
         
     | 
| 
      
 60 
     | 
    
         
            +
            Panasonic/Leica, Pentax/Asahi, Phase One, Reconyx, Ricoh, Samsung, Sanyo,
         
     | 
| 
      
 61 
     | 
    
         
            +
            Sigma/Foveon and Sony.
         
     | 
| 
       62 
62 
     | 
    
         | 
| 
       63 
63 
     | 
    
         
             
            Below is a list of file types and meta information formats currently
         
     | 
| 
       64 
64 
     | 
    
         
             
            supported by ExifTool (r = read, w = write, c = create):
         
     | 
| 
       65 
65 
     | 
    
         | 
| 
       66 
66 
     | 
    
         
             
              File Types
         
     | 
| 
       67 
67 
     | 
    
         
             
              ------------+-------------+-------------+-------------+------------
         
     | 
| 
       68 
     | 
    
         
            -
              360   r/w   |  
     | 
| 
       69 
     | 
    
         
            -
              3FR   r     |  
     | 
| 
       70 
     | 
    
         
            -
              3G2   r/w   | DSS   r     |  
     | 
| 
       71 
     | 
    
         
            -
              3GP   r/w   | DV    r     |  
     | 
| 
       72 
     | 
    
         
            -
              7Z    r     | DVB   r/w   |  
     | 
| 
       73 
     | 
    
         
            -
              A     r     | DVR-MS r    |  
     | 
| 
       74 
     | 
    
         
            -
              AA    r     | DYLIB r     |  
     | 
| 
       75 
     | 
    
         
            -
              AAC   r     | EIP   r     |  
     | 
| 
       76 
     | 
    
         
            -
              AAE   r     | EPS   r/w   |  
     | 
| 
       77 
     | 
    
         
            -
              AAX   r/w   | EPUB  r     |  
     | 
| 
       78 
     | 
    
         
            -
              ACR   r     | ERF   r/w   |  
     | 
| 
       79 
     | 
    
         
            -
              AFM   r     | EXE   r     |  
     | 
| 
       80 
     | 
    
         
            -
              AI    r/w   | EXIF  r/w/c |  
     | 
| 
       81 
     | 
    
         
            -
              AIFF  r     | EXR   r     |  
     | 
| 
       82 
     | 
    
         
            -
              APE   r     | EXV   r/w/c |  
     | 
| 
       83 
     | 
    
         
            -
              ARQ   r/w   | F4A/V r/w   |  
     | 
| 
       84 
     | 
    
         
            -
              ARW   r/w   | FFF   r/w   |  
     | 
| 
       85 
     | 
    
         
            -
              ASF   r     | FITS  r     |  
     | 
| 
       86 
     | 
    
         
            -
              AVI   r     | FLA   r     |  
     | 
| 
       87 
     | 
    
         
            -
              AVIF  r/w   | FLAC  r     |  
     | 
| 
       88 
     | 
    
         
            -
              AZW   r     | FLIF  r/w   |  
     | 
| 
       89 
     | 
    
         
            -
              BMP   r     | FLV   r     |  
     | 
| 
       90 
     | 
    
         
            -
              BPG   r     | FPF   r     |  
     | 
| 
       91 
     | 
    
         
            -
              BTF   r     | FPX   r     |  
     | 
| 
       92 
     | 
    
         
            -
              C2PA  r     | GIF   r/w   |  
     | 
| 
       93 
     | 
    
         
            -
              CHM   r     | GLV   r/w   |  
     | 
| 
       94 
     | 
    
         
            -
              COS   r     | GPR   r/w   |  
     | 
| 
       95 
     | 
    
         
            -
              CR2   r/w   | GZ    r     |  
     | 
| 
       96 
     | 
    
         
            -
              CR3   r/w   | HDP   r/w   |  
     | 
| 
       97 
     | 
    
         
            -
              CRM   r/w   | HDR   r     |  
     | 
| 
       98 
     | 
    
         
            -
              CRW   r/w   | HEIC  r/w   |  
     | 
| 
       99 
     | 
    
         
            -
              CS1   r/w   | HEIF  r/w   |  
     | 
| 
       100 
     | 
    
         
            -
              CSV   r     | HTML  r     |  
     | 
| 
       101 
     | 
    
         
            -
              CUR   r     | ICC   r/w/c |  
     | 
| 
       102 
     | 
    
         
            -
              CZI   r     | ICO   r     |  
     | 
| 
       103 
     | 
    
         
            -
              DCM   r     | ICS   r     |  
     | 
| 
       104 
     | 
    
         
            -
              DCP   r/w   | IDML  r     |  
     | 
| 
       105 
     | 
    
         
            -
              DCR   r     | IIQ   r/w   |  
     | 
| 
       106 
     | 
    
         
            -
              DFONT r     | IND   r/w   |  
     | 
| 
       107 
     | 
    
         
            -
              DIVX  r     | INSP  r/w   |  
     | 
| 
       108 
     | 
    
         
            -
              DJVU  r     | INSV  r     |  
     | 
| 
       109 
     | 
    
         
            -
              DLL   r     | INX   r     |  
     | 
| 
       110 
     | 
    
         
            -
              DNG   r/w   | ISO   r     |  
     | 
| 
       111 
     | 
    
         
            -
              DOC   r     | ITC   r     |  
     | 
| 
       112 
     | 
    
         
            -
              DOCX  r     | J2C   r     |  
     | 
| 
      
 68 
     | 
    
         
            +
              360   r/w   | DR4   r/w/c | JP2   r/w   | ODT   r     | RWL   r/w
         
     | 
| 
      
 69 
     | 
    
         
            +
              3FR   r     | DSF   r     | JPEG  r/w   | OFR   r     | RWZ   r
         
     | 
| 
      
 70 
     | 
    
         
            +
              3G2   r/w   | DSS   r     | JSON  r     | OGG   r     | RM    r
         
     | 
| 
      
 71 
     | 
    
         
            +
              3GP   r/w   | DV    r     | JXL   r/w   | OGV   r     | SEQ   r
         
     | 
| 
      
 72 
     | 
    
         
            +
              7Z    r     | DVB   r/w   | K25   r     | ONP   r     | SKETCH r
         
     | 
| 
      
 73 
     | 
    
         
            +
              A     r     | DVR-MS r    | KDC   r     | OPUS  r     | SO    r
         
     | 
| 
      
 74 
     | 
    
         
            +
              AA    r     | DYLIB r     | KEY   r     | ORF   r/w   | SR2   r/w
         
     | 
| 
      
 75 
     | 
    
         
            +
              AAC   r     | EIP   r     | LA    r     | ORI   r/w   | SRF   r
         
     | 
| 
      
 76 
     | 
    
         
            +
              AAE   r     | EPS   r/w   | LFP   r     | OTF   r     | SRW   r/w
         
     | 
| 
      
 77 
     | 
    
         
            +
              AAX   r/w   | EPUB  r     | LIF   r     | PAC   r     | SVG   r
         
     | 
| 
      
 78 
     | 
    
         
            +
              ACR   r     | ERF   r/w   | LNK   r     | PAGES r     | SWF   r
         
     | 
| 
      
 79 
     | 
    
         
            +
              AFM   r     | EXE   r     | LRV   r/w   | PBM   r/w   | THM   r/w
         
     | 
| 
      
 80 
     | 
    
         
            +
              AI    r/w   | EXIF  r/w/c | M2TS  r     | PCAP  r     | TIFF  r/w
         
     | 
| 
      
 81 
     | 
    
         
            +
              AIFF  r     | EXR   r     | M4A/V r/w   | PCAPNG r    | TNEF  r
         
     | 
| 
      
 82 
     | 
    
         
            +
              APE   r     | EXV   r/w/c | MACOS r     | PCD   r     | TORRENT r
         
     | 
| 
      
 83 
     | 
    
         
            +
              ARQ   r/w   | F4A/V r/w   | MAX   r     | PCX   r     | TTC   r
         
     | 
| 
      
 84 
     | 
    
         
            +
              ARW   r/w   | FFF   r/w   | MEF   r/w   | PDB   r     | TTF   r
         
     | 
| 
      
 85 
     | 
    
         
            +
              ASF   r     | FITS  r     | MIE   r/w/c | PDF   r/w   | TXT   r
         
     | 
| 
      
 86 
     | 
    
         
            +
              AVI   r     | FLA   r     | MIFF  r     | PEF   r/w   | URL   r
         
     | 
| 
      
 87 
     | 
    
         
            +
              AVIF  r/w   | FLAC  r     | MKA   r     | PFA   r     | VCF   r
         
     | 
| 
      
 88 
     | 
    
         
            +
              AZW   r     | FLIF  r/w   | MKS   r     | PFB   r     | VNT   r
         
     | 
| 
      
 89 
     | 
    
         
            +
              BMP   r     | FLV   r     | MKV   r     | PFM   r     | VRD   r/w/c
         
     | 
| 
      
 90 
     | 
    
         
            +
              BPG   r     | FPF   r     | MNG   r/w   | PGF   r     | VSD   r
         
     | 
| 
      
 91 
     | 
    
         
            +
              BTF   r     | FPX   r     | MOBI  r     | PGM   r/w   | VSDX  r
         
     | 
| 
      
 92 
     | 
    
         
            +
              C2PA  r     | GIF   r/w   | MODD  r     | PLIST r     | WAV   r
         
     | 
| 
      
 93 
     | 
    
         
            +
              CHM   r     | GLV   r/w   | MOI   r     | PICT  r     | WDP   r/w
         
     | 
| 
      
 94 
     | 
    
         
            +
              COS   r     | GPR   r/w   | MOS   r/w   | PMP   r     | WEBP  r/w
         
     | 
| 
      
 95 
     | 
    
         
            +
              CR2   r/w   | GZ    r     | MOV   r/w   | PNG   r/w   | WEBM  r
         
     | 
| 
      
 96 
     | 
    
         
            +
              CR3   r/w   | HDP   r/w   | MP3   r     | PPM   r/w   | WMA   r
         
     | 
| 
      
 97 
     | 
    
         
            +
              CRM   r/w   | HDR   r     | MP4   r/w   | PPT   r     | WMV   r
         
     | 
| 
      
 98 
     | 
    
         
            +
              CRW   r/w   | HEIC  r/w   | MPC   r     | PPTX  r     | WOFF  r
         
     | 
| 
      
 99 
     | 
    
         
            +
              CS1   r/w   | HEIF  r/w   | MPG   r     | PS    r/w   | WOFF2 r
         
     | 
| 
      
 100 
     | 
    
         
            +
              CSV   r     | HTML  r     | MPO   r/w   | PSB   r/w   | WPG   r
         
     | 
| 
      
 101 
     | 
    
         
            +
              CUR   r     | ICC   r/w/c | MQV   r/w   | PSD   r/w   | WTV   r
         
     | 
| 
      
 102 
     | 
    
         
            +
              CZI   r     | ICO   r     | MRC   r     | PSP   r     | WV    r
         
     | 
| 
      
 103 
     | 
    
         
            +
              DCM   r     | ICS   r     | MRW   r/w   | QTIF  r/w   | X3F   r/w
         
     | 
| 
      
 104 
     | 
    
         
            +
              DCP   r/w   | IDML  r     | MXF   r     | R3D   r     | XCF   r
         
     | 
| 
      
 105 
     | 
    
         
            +
              DCR   r     | IIQ   r/w   | NEF   r/w   | RA    r     | XISF  r
         
     | 
| 
      
 106 
     | 
    
         
            +
              DFONT r     | IND   r/w   | NKA   r     | RAF   r/w   | XLS   r
         
     | 
| 
      
 107 
     | 
    
         
            +
              DIVX  r     | INSP  r/w   | NKSC  r/w   | RAM   r     | XLSX  r
         
     | 
| 
      
 108 
     | 
    
         
            +
              DJVU  r     | INSV  r     | NRW   r/w   | RAR   r     | XMP   r/w/c
         
     | 
| 
      
 109 
     | 
    
         
            +
              DLL   r     | INX   r     | NUMBERS r   | RAW   r/w   | ZIP   r
         
     | 
| 
      
 110 
     | 
    
         
            +
              DNG   r/w   | ISO   r     | NXD   r     | RIFF  r     |
         
     | 
| 
      
 111 
     | 
    
         
            +
              DOC   r     | ITC   r     | O     r     | RSRC  r     |
         
     | 
| 
      
 112 
     | 
    
         
            +
              DOCX  r     | J2C   r     | ODP   r     | RTF   r     |
         
     | 
| 
      
 113 
     | 
    
         
            +
              DPX   r     | JNG   r/w   | ODS   r     | RW2   r/w   |
         
     | 
| 
       113 
114 
     | 
    
         | 
| 
       114 
115 
     | 
    
         
             
              Meta Information
         
     | 
| 
       115 
116 
     | 
    
         
             
              ----------------------+----------------------+---------------------
         
     | 
| 
         @@ -795,6 +796,12 @@ ignored if the HDOP is greater than this.  Default is undef. 
     | 
|
| 
       795 
796 
     | 
    
         
             
            Maximum Position (3D) Dilution Of Precision for geotagging.  GPS fixes are
         
     | 
| 
       796 
797 
     | 
    
         
             
            ignored if the PDOP is greater than this.  Default is undef.
         
     | 
| 
       797 
798 
     | 
    
         | 
| 
      
 799 
     | 
    
         
            +
            =item GeoHPosErr
         
     | 
| 
      
 800 
     | 
    
         
            +
             
     | 
| 
      
 801 
     | 
    
         
            +
            Expression to set GPSHPositioningError based on value of GPSDOP when
         
     | 
| 
      
 802 
     | 
    
         
            +
            geotagging.  For example, use C<'$GPSDOP * 4'> to set GPSHPositioningError
         
     | 
| 
      
 803 
     | 
    
         
            +
            to 4 times GPSDOP.
         
     | 
| 
      
 804 
     | 
    
         
            +
             
     | 
| 
       798 
805 
     | 
    
         
             
            =item GeoMinSats
         
     | 
| 
       799 
806 
     | 
    
         | 
| 
       800 
807 
     | 
    
         
             
            Minimum number of satellites for geotagging.  GPS fixes are ignored if the
         
     | 
| 
         @@ -1082,13 +1089,14 @@ name documentation.  Default is undef. 
     | 
|
| 
       1082 
1089 
     | 
    
         | 
| 
       1083 
1090 
     | 
    
         
             
            =item RequestTags
         
     | 
| 
       1084 
1091 
     | 
    
         | 
| 
       1085 
     | 
    
         
            -
            List of additional tag and/or group names to request in  
     | 
| 
      
 1092 
     | 
    
         
            +
            List of additional tag and/or group names to request in subsequent calls to
         
     | 
| 
       1086 
1093 
     | 
    
         
             
            L</ExtractInfo>.  This option is useful only for tags/groups which aren't
         
     | 
| 
       1087 
     | 
    
         
            -
            extracted unless specifically requested 
     | 
| 
       1088 
     | 
    
         
            -
             
     | 
| 
       1089 
     | 
    
         
            -
             
     | 
| 
       1090 
     | 
    
         
            -
            name (eg. "MacOS:").  Names 
     | 
| 
       1091 
     | 
    
         
            -
            the list.  Default is 
     | 
| 
      
 1094 
     | 
    
         
            +
            extracted unless specifically requested, or if L</IgnoreTags> is set to
         
     | 
| 
      
 1095 
     | 
    
         
            +
            "All".  Value may be a list reference, a delimited string of names (any
         
     | 
| 
      
 1096 
     | 
    
         
            +
            delimiter is allowed), or undef to clear the current RequestTags list. 
         
     | 
| 
      
 1097 
     | 
    
         
            +
            Groups are requested by adding a colon after the name (eg. "MacOS:").  Names
         
     | 
| 
      
 1098 
     | 
    
         
            +
            are converted to lower case as they are added to the list.  Default is
         
     | 
| 
      
 1099 
     | 
    
         
            +
            undef.
         
     | 
| 
       1092 
1100 
     | 
    
         | 
| 
       1093 
1101 
     | 
    
         
             
            =item SaveBin
         
     | 
| 
       1094 
1102 
     | 
    
         |