1 package eu.svjatoslav.imagesqueeze.codec;
3 import java.io.IOException;
6 * Since it is a lossy codec, instead of storing
7 * exact values, approximated values are stored
8 * to save on bit count.
11 public class Approximator implements Comparable<Approximator> {
13 public Table yTable = new Table();
14 public Table uTable = new Table();
15 public Table vTable = new Table();
17 public Approximator(){
20 public int compareTo(Approximator o) {
21 int result = yTable.compareTo(o.yTable);
22 if (result != 0) return result;
24 result = uTable.compareTo(o.uTable);
25 if (result != 0) return result;
27 result = vTable.compareTo(o.vTable);
31 public void initialize(){
36 yTable.addEntry(0, 6, 0);
37 yTable.addEntry(27, 30, 4);
38 yTable.addEntry(255, 255, 6);
40 uTable.addEntry(0, 9, 0);
41 uTable.addEntry(27, 30, 4);
42 uTable.addEntry(255, 255, 6);
44 vTable.addEntry(0, 9, 0);
45 vTable.addEntry(27, 30, 4);
46 vTable.addEntry(255, 255, 6);
48 computeLookupTables();
51 public void save(BitOutputStream outputStream) throws IOException{
52 yTable.save(outputStream);
53 uTable.save(outputStream);
54 vTable.save(outputStream);
57 public void load(BitInputStream inputStream) throws IOException {
58 yTable.load(inputStream);
59 uTable.load(inputStream);
60 vTable.load(inputStream);
63 public void computeLookupTables(){
64 yTable.computeLookupTables();
65 uTable.computeLookupTables();
66 vTable.computeLookupTables();