Ignore:
Timestamp:
2011-06-01T12:33:42+12:00 (13 years ago)
Author:
sjm84
Message:

Updating the ExifTool perl modules

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/perllib/cpan/Image/ExifTool/AIFF.pm

    r16842 r24107  
    55#
    66# Revisions:    01/06/2006 - P. Harvey Created
     7#               09/22/2008 - PH Added DjVu support
    78#
    89# References:   1) http://developer.apple.com/documentation/QuickTime/INMAC/SOUND/imsoundmgr.30.htm#pgfId=3190
     
    1819use Image::ExifTool::ID3;
    1920
    20 $VERSION = '1.01';
     21$VERSION = '1.03';
    2122
    2223# information for time/date-based tags (time zero is Jan 1, 1904)
     
    2930# AIFF info
    3031%Image::ExifTool::AIFF::Main = (
    31     PROCESS_PROC => \&Image::ExifTool::AIFF::ProcessSubChunks,
    3232    GROUPS => { 2 => 'Audio' },
    3333    NOTES => 'Only the tags decoded by ExifTool are listed in this table.',
     
    137137    my ($exifTool, $dirInfo) = @_;
    138138    my $raf = $$dirInfo{RAF};
    139     my $verbose = $exifTool->Options('Verbose');
    140     my ($buff, $err);
     139    my ($buff, $err, $tagTablePtr, $page, $type);
    141140
    142141    # verify this is a valid AIFF file
    143142    return 0 unless $raf->Read($buff, 12) == 12;
    144     return 0 unless $buff =~ /^FORM....(AIF(F|C))/s;
    145     $exifTool->SetFileType($1);
     143    my $pos = 12;
     144    # check for DjVu image
     145    if ($buff =~ /^AT&TFORM/) {
     146        # http://www.djvu.org/
     147        # http://djvu.sourceforge.net/specs/djvu3changes.txt
     148        my $buf2;
     149        return 0 unless $raf->Read($buf2, 4) == 4 and $buf2 =~ /^(DJVU|DJVM)/;
     150        $pos += 4;
     151        $buff = substr($buff, 4) . $buf2;
     152        $tagTablePtr = GetTagTable('Image::ExifTool::DjVu::Main');
     153        $exifTool->SetFileType('DJVU');
     154        # modifiy FileType to indicate a multi-page document
     155        $exifTool->{VALUE}->{FileType} .= " (multi-page)" if $buf2 eq 'DJVM';
     156        $type = 'DjVu';
     157    } else {
     158        return 0 unless $buff =~ /^FORM....(AIF(F|C))/s;
     159        $exifTool->SetFileType($1);
     160        $tagTablePtr = GetTagTable('Image::ExifTool::AIFF::Main');
     161        $type = 'AIFF';
     162    }
    146163    SetByteOrder('MM');
    147     my $tagTablePtr = GetTagTable('Image::ExifTool::AIFF::Main');
    148     my $pos = 12;
    149 #
    150 # Read chunks in AIFF image
     164#
     165# Read through the IFF chunks
    151166#
    152167    for (;;) {
     
    159174        my $len2 = $len + ($len & 0x01);
    160175        if ($tagInfo) {
    161             $raf->Read($buff, $len2) == $len2 or $err=1, last;
     176            if ($$tagInfo{TypeOnly}) {
     177                $len = $len2 = 4;
     178                $page = ($page || 0) + 1;
     179                $exifTool->VPrint(0, $exifTool->{INDENT} . "Page $page:\n");
     180            }
     181            $raf->Read($buff, $len2) >= $len or $err=1, last;
     182            unless ($$tagInfo{SubDirectory} or $$tagInfo{Binary}) {
     183                $buff =~ s/\0+$//;  # remove trailing nulls
     184            }
    162185            $exifTool->HandleTag($tagTablePtr, $tag, $buff,
    163186                DataPt => \$buff,
     
    171194        $pos += $len2;
    172195    }
    173     $err and $exifTool->Warn('Error reading AIFF file (corrupted?)');
     196    $err and $exifTool->Warn("Error reading $type file (corrupted?)");
    174197    return 1;
    175198}
     
    194217=head1 AUTHOR
    195218
    196 Copyright 2003-2007, Phil Harvey (phil at owl.phy.queensu.ca)
     219Copyright 2003-2011, Phil Harvey (phil at owl.phy.queensu.ca)
    197220
    198221This library is free software; you can redistribute it and/or modify it
     
    217240
    218241=cut
    219 
Note: See TracChangeset for help on using the changeset viewer.