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