Changeset 7220


Ignore:
Timestamp:
11/17/10 05:28:36 (9 years ago)
Author:
melissa
Message:

Added support for JPEG-compressed AVIs. Closes #569.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/components/bio-formats/src/loci/formats/in/AVIReader.java

    r7143 r7220  
    3535import loci.formats.codec.BitBuffer; 
    3636import loci.formats.codec.CodecOptions; 
     37import loci.formats.codec.JPEGCodec; 
    3738import loci.formats.codec.MSRLECodec; 
    3839import loci.formats.codec.MSVideoCodec; 
     
    5960  private static final int MS_VIDEO = 1296126531; 
    6061  //private static final int CINEPAK = 1684633187; 
     62  private static final int JPEG = 1196444237; 
    6163 
    6264  // -- Fields -- 
     
    252254    core[0].interleaved = bmpBitsPerPixel != 16; 
    253255 
    254     if (bmpBitsPerPixel == 32) { 
     256    if (bmpCompression == JPEG) { 
     257      long fileOff = offsets.get(0).longValue(); 
     258      in.seek(fileOff); 
     259      int nBytes = uncompress(0, null).length / (getSizeX() * getSizeY()); 
     260 
     261      if (bmpBitsPerPixel == 16) { 
     262        nBytes /= 2; 
     263      } 
     264      core[0].sizeC = nBytes; 
     265      core[0].rgb = getSizeC() > 1; 
     266    } 
     267    else if (bmpBitsPerPixel == 32) { 
    255268      core[0].sizeC = 4; 
    256269      core[0].rgb = true; 
     
    300313    options.previousImage = (lastImageNo == no - 1) ? lastImage : null; 
    301314    options.bitsPerSample = bmpBitsPerPixel; 
     315    options.interleaved = isInterleaved(); 
     316    options.littleEndian = isLittleEndian(); 
    302317 
    303318    if (bmpCompression == MSRLE) { 
     
    315330      lastImageNo = no; 
    316331    } 
     332    else if (bmpCompression == JPEG) { 
     333      JPEGCodec codec = new JPEGCodec(); 
     334      buf = codec.decompress(in, options); 
     335    } 
    317336    /* 
    318337    else if (bmpCompression == CINEPAK) { 
     
    480499 
    481500                if (bmpCompression != MSRLE && bmpCompression != 0 && 
    482                   bmpCompression != MS_VIDEO/* && bmpCompression != CINEPAK*/) 
     501                  bmpCompression != MS_VIDEO && bmpCompression != JPEG) 
    483502                { 
    484503                  throw new FormatException("Unsupported compression type " + 
     
    581600                  } 
    582601                  check = type.substring(2); 
     602                  if (check.equals("0d")) { 
     603                    in.seek(spos + 1); 
     604                    readTypeAndSize(); 
     605                    check = type.substring(2); 
     606                  } 
    583607                } 
    584608                in.seek(spos); 
Note: See TracChangeset for help on using the changeset viewer.