From ac7612b3df5f393c786e44f19d3ceb9a21e379a1 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Sat, 18 Mar 2023 11:33:29 +0100 Subject: [PATCH] WebP cleanup --- .../imageio/plugins/webp/WebPImageReader.java | 7 +-- .../webp/lossless/ColorIndexingTransform.java | 5 ++ .../imageio/plugins/webp/vp8/BoolDecoder.java | 55 ++++++++----------- 3 files changed, 31 insertions(+), 36 deletions(-) diff --git a/imageio/imageio-webp/src/main/java/com/twelvemonkeys/imageio/plugins/webp/WebPImageReader.java b/imageio/imageio-webp/src/main/java/com/twelvemonkeys/imageio/plugins/webp/WebPImageReader.java index 938185a5..3135225a 100644 --- a/imageio/imageio-webp/src/main/java/com/twelvemonkeys/imageio/plugins/webp/WebPImageReader.java +++ b/imageio/imageio-webp/src/main/java/com/twelvemonkeys/imageio/plugins/webp/WebPImageReader.java @@ -62,7 +62,6 @@ import java.util.Iterator; import java.util.List; import static com.twelvemonkeys.imageio.plugins.webp.lossless.VP8LDecoder.copyIntoRasterWithParams; - import static java.lang.Math.max; import static java.lang.Math.min; @@ -134,8 +133,8 @@ final class WebPImageReader extends ImageReaderBase { if (DEBUG) { System.out.printf("chunk: '%s'\n", fourCC(nextChunk)); - System.out.println("chunkLength: " + chunkLength); System.out.println("chunkStart: " + chunkStart); + System.out.println("chunkLength: " + chunkLength); } switch (nextChunk) { @@ -473,8 +472,8 @@ final class WebPImageReader extends ImageReaderBase { if (DEBUG) { System.out.printf("chunk: '%s'\n", fourCC(nextChunk)); - System.out.println("chunkLength: " + chunkLength); System.out.println("chunkStart: " + chunkStart); + System.out.println("chunkLength: " + chunkLength); } switch (nextChunk) { @@ -684,8 +683,8 @@ final class WebPImageReader extends ImageReaderBase { long chunkStart = imageInput.getStreamPosition(); // System.err.printf("chunk: '%s'\n", fourCC(nextChunk)); -// System.err.println("chunkLength: " + chunkLength); // System.err.println("chunkStart: " + chunkStart); +// System.err.println("chunkLength: " + chunkLength); switch (nextChunk) { case WebP.CHUNK_EXIF: diff --git a/imageio/imageio-webp/src/main/java/com/twelvemonkeys/imageio/plugins/webp/lossless/ColorIndexingTransform.java b/imageio/imageio-webp/src/main/java/com/twelvemonkeys/imageio/plugins/webp/lossless/ColorIndexingTransform.java index bfdf6815..d3e2f3dd 100644 --- a/imageio/imageio-webp/src/main/java/com/twelvemonkeys/imageio/plugins/webp/lossless/ColorIndexingTransform.java +++ b/imageio/imageio-webp/src/main/java/com/twelvemonkeys/imageio/plugins/webp/lossless/ColorIndexingTransform.java @@ -67,6 +67,11 @@ final class ColorIndexingTransform implements Transform { // Arraycopy for 4 elements might not be beneficial System.arraycopy(colorTable, index * 4, rgba, 0, 4); +// rgba[0] = colorTable[index * 4]; +// rgba[1] = colorTable[index * 4 + 1]; +// rgba[2] = colorTable[index * 4 + 2]; +// rgba[3] = colorTable[index * 4 + 3]; + raster.setDataElements(x, y, rgba); } } diff --git a/imageio/imageio-webp/src/main/java/com/twelvemonkeys/imageio/plugins/webp/vp8/BoolDecoder.java b/imageio/imageio-webp/src/main/java/com/twelvemonkeys/imageio/plugins/webp/vp8/BoolDecoder.java index d7b3f82d..774a0eb1 100644 --- a/imageio/imageio-webp/src/main/java/com/twelvemonkeys/imageio/plugins/webp/vp8/BoolDecoder.java +++ b/imageio/imageio-webp/src/main/java/com/twelvemonkeys/imageio/plugins/webp/vp8/BoolDecoder.java @@ -35,11 +35,11 @@ import javax.imageio.stream.ImageInputStream; import java.io.IOException; final class BoolDecoder { - private int bit_count; /* # of bits shifted out of value, at most 7 */ + private int bitCount; // # of bits shifted out of value, at most 7 ImageInputStream data; - private long offset; /* pointer to next compressed data byte */ - private int range; /* always identical to encoder's range */ - private int value; /* contains at least 24 significant bits */ + private long offset; // pointer to next compressed data byte + private int range; // always identical to encoder's range + private int value; // contains at least 24 significant bits BoolDecoder(ImageInputStream frame, long offset) throws IOException { this.data = frame; @@ -48,15 +48,15 @@ final class BoolDecoder { } private void initBoolDecoder() throws IOException { - value = 0; /* value = first 16 input bits */ + value = 0; // value = first 16 input bits data.seek(offset); value = data.readUnsignedByte() << 8; // value = (data[offset]) << 8; offset++; - range = 255; /* initial range is full */ - bit_count = 0; /* have not yet shifted out any bits */ + range = 255; // initial range is full + bitCount = 0; // have not yet shifted out any bits } public int readBit() throws IOException { @@ -66,21 +66,21 @@ final class BoolDecoder { public int readBool(int probability) throws IOException { int bit = 0; int split; - int bigsplit; + int bigSplit; int range = this.range; int value = this.value; split = 1 + (((range - 1) * probability) >> 8); - bigsplit = (split << 8); + bigSplit = (split << 8); range = split; - if (value >= bigsplit) { + if (value >= bigSplit) { range = this.range - split; - value = value - bigsplit; + value = value - bigSplit; bit = 1; } { - int count = this.bit_count; + int count = this.bitCount; int shift = Globals.vp8dxBitreaderNorm[range]; range <<= shift; value <<= shift; @@ -94,44 +94,35 @@ final class BoolDecoder { count += 8; } - this.bit_count = count; + this.bitCount = count; } this.value = value; this.range = range; + return bit; } - /* - * Convenience function reads a "literal", that is, a "num_bits" wide + /** + * Convenience method reads a "literal", that is, a "numBits" wide * unsigned value whose bits come high- to low-order, with each bit encoded * at probability 128 (i.e., 1/2). */ - public int readLiteral(int num_bits) throws IOException { + public int readLiteral(int numBits) throws IOException { int v = 0; - while (num_bits-- > 0) { + while (numBits-- > 0) { v = (v << 1) + readBool(128); } + return v; } - // int readTree(int t[], /* tree specification */ int p[] /* corresponding interior node probabilities */) throws IOException { -// int i = 0; /* begin at root */ -// -// /* Descend tree until leaf is reached */ -// while ((i = t[i + readBool(p[i >> 1])]) > 0) { -// } -// return -i; /* return value is negation of nonpositive index */ -// -// } -// -// int readTree(int t[], /* tree specification */ int p[], /* corresponding interior node probabilities */ int skip_branches) throws IOException { - int readTree(int[] t, /* tree specification */ int[] p, /* corresponding interior node probabilities */ int skip_branches) throws IOException { - int i = skip_branches * 2; /* begin at root */ + int readTree(int[] t, /* tree specification */ int[] p, /* corresponding interior node probabilities */ int skipBranches) throws IOException { + int i = skipBranches * 2; // begin at root - /* Descend tree until leaf is reached */ + // Descend tree until leaf is reached while ((i = t[i + readBool(p[i >> 1])]) > 0) { } - return -i; /* return value is negation of nonpositive index */ + return -i; // return value is negation of nonpositive index } public void seek() throws IOException {