From 25b6f9bf981b50b2e25aa8fbb72aa1558d69ecd2 Mon Sep 17 00:00:00 2001 From: Vojtech Moravec <vojtech.moravec.st@vsb.cz> Date: Fri, 24 Jan 2020 10:12:21 +0100 Subject: [PATCH] Fixed bugs with cached codebook. --- src/main/java/azgracompress/cli/CliConstants.java | 4 ++-- .../java/azgracompress/compression/ImageCompressor.java | 6 +++++- .../java/azgracompress/compression/SQImageCompressor.java | 1 + .../java/azgracompress/compression/VQImageCompressor.java | 1 + 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/azgracompress/cli/CliConstants.java b/src/main/java/azgracompress/cli/CliConstants.java index 29222fd..62ea677 100644 --- a/src/main/java/azgracompress/cli/CliConstants.java +++ b/src/main/java/azgracompress/cli/CliConstants.java @@ -34,8 +34,8 @@ public class CliConstants { public static final String WORKER_COUNT_SHORT = "wc"; public static final String WORKER_COUNT_LONG = "worker-count"; - public static final String CODEBOOK_CACHE_FOLDER_SHORT = "wc"; - public static final String CODEBOOK_CACHE_FOLDER_LONG = "worker-count"; + public static final String CODEBOOK_CACHE_FOLDER_SHORT = "cbc"; + public static final String CODEBOOK_CACHE_FOLDER_LONG = "codebook-cache"; public static final String SCALAR_QUANTIZATION_SHORT = "sq"; public static final String SCALAR_QUANTIZATION_LONG = "scalar-quantization"; diff --git a/src/main/java/azgracompress/compression/ImageCompressor.java b/src/main/java/azgracompress/compression/ImageCompressor.java index 20cb982..6f0b45b 100644 --- a/src/main/java/azgracompress/compression/ImageCompressor.java +++ b/src/main/java/azgracompress/compression/ImageCompressor.java @@ -98,9 +98,13 @@ public class ImageCompressor extends CompressorDecompressorBase { private QCMPFileHeader createHeader() { QCMPFileHeader header = new QCMPFileHeader(); + header.setQuantizationType(options.getQuantizationType()); header.setBitsPerPixel((byte) options.getBitsPerPixel()); - header.setCodebookPerPlane(!options.hasReferencePlaneIndex()); + + // Codebook per plane is used only if reference plane isn't set nor is the cache folder. + final boolean oneCodebook = options.hasReferencePlaneIndex() || options.hasCodebookCacheFolder(); + header.setCodebookPerPlane(!oneCodebook); header.setImageSizeX(options.getImageDimension().getX()); header.setImageSizeY(options.getImageDimension().getY()); diff --git a/src/main/java/azgracompress/compression/SQImageCompressor.java b/src/main/java/azgracompress/compression/SQImageCompressor.java index f49727d..5f8f839 100644 --- a/src/main/java/azgracompress/compression/SQImageCompressor.java +++ b/src/main/java/azgracompress/compression/SQImageCompressor.java @@ -85,6 +85,7 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm Log("Loading codebook from cache file."); quantizer = loadQuantizerFromCache(); Log("Cached quantizer created."); + writeCodebookToOutputStream(quantizer, compressStream); } else if (options.hasReferencePlaneIndex()) { // TODO(Moravec): Reference plane will be deprecated in favor of 'middle' plane. stopwatch.restart(); diff --git a/src/main/java/azgracompress/compression/VQImageCompressor.java b/src/main/java/azgracompress/compression/VQImageCompressor.java index 52fd5af..fe3d027 100644 --- a/src/main/java/azgracompress/compression/VQImageCompressor.java +++ b/src/main/java/azgracompress/compression/VQImageCompressor.java @@ -94,6 +94,7 @@ public class VQImageCompressor extends CompressorDecompressorBase implements IIm Log("Loading codebook from cache file."); quantizer = loadQuantizerFromCache(); Log("Cached quantizer created."); + writeQuantizerToCompressStream(quantizer, compressStream); } else if (options.hasReferencePlaneIndex()) { stopwatch.restart(); -- GitLab