Class RiceCompressor<T extends Buffer>
java.lang.Object
nom.tam.fits.compression.algorithm.rice.RiceCompressor<T>
- All Implemented Interfaces:
ICompressor<T>
- Direct Known Subclasses:
RiceCompressor.ByteRiceCompressor, RiceCompressor.IntRiceCompressor, RiceCompressor.ShortRiceCompressor
The original compression was designed by Rice, Yeh, and Miller the code was
written by Richard White at STSc at the STScI and included (ported to c and
adapted) in cfitsio by William Pence, NASA/GSFC. That code was then ported to
java by R. van Nieuwenhoven. Later it was massively refactored to harmonize
the different compression algorithms and reduce the duplicate code pieces
without obscuring the algorithm itself as far as possible.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classstatic classstatic classstatic classstatic class -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final intprivate static final intprivate static final intprivate final intprivate final intprivate static final intprivate static final intprivate static final intprivate static final intprivate static final intprivate static final intprivate static final intprivate final intprivate final intprivate static final Loggerlogger to log to.private static final int[]private static final longmask to convert a "unsigned" byte to a long.private static final longmask to convert a "unsigned" int to a long.private static final longmask to convert a "unsigned" short to a long. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidcompress the integer tiledImageOperation on a rise compressed byte buffer.protected voiddecompressBuffer(ByteBuffer readBuffer, int nx) decompress the readbuffer and fill the pixelarray.protected abstract intprotected abstract voidnextPixel(int pixel) private longundoMappingAndDifferencing(long lastpix, long diff) undo mapping and differencing Note that some of these operations will overflow the unsigned int arithmetic -- that's OK, it all works out to give the right answers in the output file.Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface ICompressor
compress, decompress
-
Field Details
-
UNSIGNED_BYTE_MASK
private static final long UNSIGNED_BYTE_MASKmask to convert a "unsigned" byte to a long.- See Also:
-
UNSIGNED_SHORT_MASK
private static final long UNSIGNED_SHORT_MASKmask to convert a "unsigned" short to a long.- See Also:
-
UNSIGNED_INTEGER_MASK
private static final long UNSIGNED_INTEGER_MASKmask to convert a "unsigned" int to a long.- See Also:
-
LOG
logger to log to. -
BITS_OF_1_BYTE
private static final int BITS_OF_1_BYTE- See Also:
-
BITS_PER_BYTE
private static final int BITS_PER_BYTE- See Also:
-
BYTE_MASK
private static final int BYTE_MASK- See Also:
-
FS_BITS_FOR_BYTE
private static final int FS_BITS_FOR_BYTE- See Also:
-
FS_BITS_FOR_INT
private static final int FS_BITS_FOR_INT- See Also:
-
FS_BITS_FOR_SHORT
private static final int FS_BITS_FOR_SHORT- See Also:
-
FS_MAX_FOR_BYTE
private static final int FS_MAX_FOR_BYTE- See Also:
-
FS_MAX_FOR_INT
private static final int FS_MAX_FOR_INT- See Also:
-
FS_MAX_FOR_SHORT
private static final int FS_MAX_FOR_SHORT- See Also:
-
NONZERO_COUNT
private static final int[] NONZERO_COUNT -
bBits
private final int bBits -
bitsPerPixel
private final int bitsPerPixel -
blockSize
private final int blockSize -
fsBits
private final int fsBits -
fsMax
private final int fsMax
-
-
Constructor Details
-
RiceCompressor
-
-
Method Details
-
undoMappingAndDifferencing
private long undoMappingAndDifferencing(long lastpix, long diff) undo mapping and differencing Note that some of these operations will overflow the unsigned int arithmetic -- that's OK, it all works out to give the right answers in the output file.
In java this is more complicated because of the missing unsigned integers. trying to simulate the behavior
- Parameters:
lastpix- the current last pix valuediff- the difference to "add"- Returns:
- return the new lastpiy value
-
compress
compress the integer tiledImageOperation on a rise compressed byte buffer.- Parameters:
dataLength- length of the data to compressfirstPixel- the value of the first pixelbuffer- the buffer to write to
-
decompressBuffer
decompress the readbuffer and fill the pixelarray.- Parameters:
readBuffer- input buffernx- the number of pixel to uncompress
-
nextPixel
protected abstract int nextPixel() -
nextPixel
protected abstract void nextPixel(int pixel)
-