Changeset 2675


Ignore:
Timestamp:
04/25/07 12:16:58 (13 years ago)
Author:
melissa
Message:

Added support for zlib-compressed headers.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/formats/in/QTReader.java

    r2673 r2675  
    2828import java.io.*; 
    2929import java.util.Vector; 
     30import java.util.zip.*; 
    3031import javax.imageio.ImageIO; 
    3132import loci.formats.*; 
     
    649650        } 
    650651        else if (atomType.equals("cmov")) { 
    651           throw new FormatException("Compressed header not supported."); 
     652          in.skipBytes(8); 
     653          byte[] b = new byte[4]; 
     654          in.read(b); 
     655          if ("zlib".equals(new String(b))) { 
     656            atomSize = in.readInt(); 
     657            in.skipBytes(4); 
     658            int uncompressedSize = in.readInt(); 
     659 
     660            b = new byte[(int) (atomSize - 12)]; 
     661            in.read(b);  
     662           
     663            Inflater inf = new Inflater(); 
     664            inf.setInput(b, 0, b.length); 
     665            byte[] output = new byte[uncompressedSize]; 
     666            try {  
     667              inf.inflate(output); 
     668            } 
     669            catch (DataFormatException dfe) { 
     670              if (debug) dfe.printStackTrace(); 
     671              throw new FormatException("Compressed header not supported."); 
     672            } 
     673            inf.end(); 
     674          
     675            RandomAccessStream oldIn = in; 
     676            in = new RandomAccessStream(output); 
     677            parse(0, 0, output.length); 
     678            in.close();  
     679            in = oldIn; 
     680          } 
     681          else throw new FormatException("Compressed header not supported."); 
    652682        } 
    653683        else if (atomType.equals("stco")) { 
Note: See TracChangeset for help on using the changeset viewer.