X-Git-Url: http://www2.svjatoslav.eu/gitweb/?p=imagesqueeze.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fimagesqueeze%2Fcodec%2FApproximator.java;h=1535a9d7ef2f28a6638c89d404a36f79850d196d;hp=622ae80dc6ec32ea5b7bc6a909f4c1904432b4b4;hb=HEAD;hpb=c7d0b8e1723045c0df086d9214a35f54db47684c diff --git a/src/main/java/eu/svjatoslav/imagesqueeze/codec/Approximator.java b/src/main/java/eu/svjatoslav/imagesqueeze/codec/Approximator.java index 622ae80..1535a9d 100755 --- a/src/main/java/eu/svjatoslav/imagesqueeze/codec/Approximator.java +++ b/src/main/java/eu/svjatoslav/imagesqueeze/codec/Approximator.java @@ -1,69 +1,65 @@ +/* + * Image codec. Author: Svjatoslav Agejenko, svjatoslav@svjatoslav.eu + * This project is released under Creative Commons Zero (CC0) license. + */ package eu.svjatoslav.imagesqueeze.codec; +import eu.svjatoslav.commons.data.BitInputStream; +import eu.svjatoslav.commons.data.BitOutputStream; + import java.io.IOException; /** - * Since it is a lossy codec, instead of storing - * exact values, approximated values are stored - * to save on bit count. + * Since it is a lossy codec, instead of storing exact values, approximated + * values are stored to save on bit count. */ -public class Approximator implements Comparable { - - public Table yTable = new Table(); - public Table uTable = new Table(); - public Table vTable = new Table(); - - public Approximator(){ - } - - public int compareTo(Approximator o) { - int result = yTable.compareTo(o.yTable); - if (result != 0) return result; - - result = uTable.compareTo(o.uTable); - if (result != 0) return result; - - result = vTable.compareTo(o.vTable); - return result; - } - - public void initialize(){ - yTable.reset(); - uTable.reset(); - vTable.reset(); - - yTable.addEntry(0, 6, 0); - yTable.addEntry(27, 30, 4); - yTable.addEntry(255, 255, 6); - - uTable.addEntry(0, 9, 0); - uTable.addEntry(27, 30, 4); - uTable.addEntry(255, 255, 6); - - vTable.addEntry(0, 9, 0); - vTable.addEntry(27, 30, 4); - vTable.addEntry(255, 255, 6); - - computeLookupTables(); - } - - public void save(BitOutputStream outputStream) throws IOException{ - yTable.save(outputStream); - uTable.save(outputStream); - vTable.save(outputStream); - } - - public void load(BitInputStream inputStream) throws IOException { - yTable.load(inputStream); - uTable.load(inputStream); - vTable.load(inputStream); - } - - public void computeLookupTables(){ - yTable.computeLookupTables(); - uTable.computeLookupTables(); - vTable.computeLookupTables(); - } - +class Approximator { + + public final Table yTable = new Table(); + public final Table uTable = new Table(); + public final Table vTable = new Table(); + + public Approximator() { + } + + + public void computeLookupTables() { + yTable.computeLookupTables(); + uTable.computeLookupTables(); + vTable.computeLookupTables(); + } + + public void initialize() { + yTable.reset(); + uTable.reset(); + vTable.reset(); + + yTable.addEntry(0, 6, 0); + yTable.addEntry(27, 30, 4); + yTable.addEntry(255, 255, 6); + + uTable.addEntry(0, 9, 0); + uTable.addEntry(27, 30, 4); + uTable.addEntry(255, 255, 6); + + vTable.addEntry(0, 9, 0); + vTable.addEntry(27, 30, 4); + vTable.addEntry(255, 255, 6); + + computeLookupTables(); + } + + public void load(final BitInputStream inputStream) throws IOException { + yTable.load(inputStream); + uTable.load(inputStream); + vTable.load(inputStream); + } + + public void save(final BitOutputStream outputStream) throws IOException { + yTable.save(outputStream); + uTable.save(outputStream); + vTable.save(outputStream); + } + }