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 class
static class
static class
static class
static class
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final int
private static final int
private static final int
private final int
private final int
private static final int
private static final int
private static final int
private static final int
private static final int
private static final int
private static final int
private final int
private final int
private static final Logger
logger to log to.private static final int[]
private static final long
mask to convert a "unsigned" byte to a long.private static final long
mask to convert a "unsigned" int to a long.private static final long
mask to convert a "unsigned" short to a long. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected void
compress the integer tiledImageOperation on a rise compressed byte buffer.protected void
decompressBuffer
(ByteBuffer readBuffer, int nx) decompress the readbuffer and fill the pixelarray.protected abstract int
protected abstract void
nextPixel
(int pixel) 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.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface nom.tam.fits.compression.algorithm.api.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)
-