-
Vojtech Moravec authored
This method is used for stream compressor/decompressor. It will cache the codebook and huffman tree so that each compression/decompression pass don't have to create it.
Vojtech Moravec authoredThis method is used for stream compressor/decompressor. It will cache the codebook and huffman tree so that each compression/decompression pass don't have to create it.
IImageDecompressor.java 1.82 KiB
package azgracompress.compression;
import azgracompress.cache.ICacheFile;
import azgracompress.compression.exception.ImageDecompressionException;
import azgracompress.fileformat.QCMPFileHeader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
public interface IImageDecompressor extends IListenable {
/**
* Get correct size of data block.
*
* @param header QCMPFile header with information about compressed file.
* @return Expected size of data.
*/
long getExpectedDataSize(final QCMPFileHeader header);
/**
* Decompress the image planes to decompress stream.
*
* @param compressedStream Input stream of compressed data.
* @param decompressStream Output stream for decompressed data.
* @param header QCMPFile information.
* @throws ImageDecompressionException when decompression fails.
*/
void decompress(DataInputStream compressedStream,
DataOutputStream decompressStream,
final QCMPFileHeader header) throws ImageDecompressionException;
/**
* Decompress the image planes to memory buffer.
*
* @param compressedStream Input stream of compressed data.
* @param buffer Buffer to store decompressed pixels.
* @param header QCMPFile information.
* @throws ImageDecompressionException when decompression fails.
*/
void decompressToBuffer(DataInputStream compressedStream,
short[][] buffer,
final QCMPFileHeader header) throws ImageDecompressionException;
/**
* Preload decompressor codebook and Huffman tree for stream decompressor from provided cache file.
*
* @param codebookCacheFile Codebook cache file.
*/
void preloadGlobalCodebook(final ICacheFile codebookCacheFile);
}