Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 1999-2101 Alibaba Group.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package com.alibaba.simpleimage.codec.jpeg;
 
 
 
 public class HuffmanTable {
 
     public static final int TYPE_DC  = 0;
     public static final int TYPE_AC  = 1;
 
     // raw data
     private int             Lh;                                                                                   // Huffman
     private int             Tc;                                                                                   // Table
     private int             Th;                                                                                   // Huffman
     private int[]           L;                                                                                    // bits
     private int[]           V;                                                                                    // huffval
 
     // general data
     private int[]           mincode  = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };
     private int[]           maxcode  = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };
     private int[]           valptr   = new int[16 + 1];
     private int[]           huffcode = new int[256 + 1];
     private int[]           huffsize = new int[256 + 1];
 
     public HuffmanTable(int Tcint Thint[] bitsint[] huffval){
         this. = Tc;
         this. = Th;
         this. = bits;
         this. = huffval;
 
         init();
     }

    
TODO JPEG Specification 112
 
     private void init() {
         generalHuffsize();
         generalHuffcode();
 
         int i = 0, j = 0;
         for (;;) {
             i++;
 
             if (i > 16) {
                 break;
             }
 
             if ([i] == 0) {
                 [i] = -1;
                 continue;
             } else {
                 [i] = j;
                 [i] = [j];
                 j = j + [i] - 1;
                 [i] = [j];
                 j++;
             }
         }
 
         [17] = 0xFFFFFF;
     }
 
     private void generalHuffcode() {
         int k = 0, code = 0, si = [0];
 
         for (;;) {
             do {
                 [k] = code;
                 code++;
                 k++;
             } while ([k] == si);
 
             if ([k] == 0) {
                 break;
             }
 
             do {
                 code = code << 1;
                 si++;
             } while ([k] != si);
         }
     }
    private void generalHuffsize() {
        int k = 0, i = 1, j = 1;
        do {
            while (j <= [i]) {
                [k] = i;
                k++;
                j++;
            }
            i++;
            j = 1;
        } while (i <= 16);
        [k] = 0;
    }
    public int decode(ImageInputStream inthrows IOExceptionJPEGMarkerException {
        int i = 1, j = 0, code = 0, value = 0;
        code = in.readBit();
        for (;;) {
            if (code > [i]) {
                i++;
                code = (code << 1) | in.readBit();
            } else {
                break;
            }
        }
        j = [i];
        j = j + code - [i];
        value = [j];
        return value;
    }
    public int extend(int diffint t) {
        int Vt = 1 << (t - 1); // source logic is Vt = Math.pow(2, t-1);
        if (diff < Vt) {
            Vt = (-1 << t) + 1;
            diff = diff + Vt;
        }
        return diff;
    }
    public int getLh() {
        return ;
    }
    public void setLh(int lh) {
         = lh;
    }
    public int getTc() {
        return ;
    }
    public void setTc(int tc) {
         = tc;
    }
    public int getTh() {
        return ;
    }
    public void setTh(int th) {
         = th;
    }
    public int[] getL() {
        return ;
    }
    public void setL(int[] l) {
         = l;
    }
    public int[] getV() {
        return ;
    }
    public void setV(int[] v) {
         = v;
    }
New to GrepCode? Check out our FAQ X