3 package com.pixelmed.codec.jpeg;
14 private static final String identString =
"@(#) $Header: /userland/cvs/codec/com/pixelmed/codec/jpeg/MarkerSegmentDHT.java,v 1.2 2014/03/21 21:46:20 dclunie Exp $";
18 private int[] TableClass;
19 private int[] HuffmanTableIdentifier;
20 private int[][] nHuffmanCodesOfLengthI;
21 private int[][][] ValueOfHuffmanCodeIJ;
24 TableClass =
new int [4];
25 HuffmanTableIdentifier =
new int [4];
26 nHuffmanCodesOfLengthI =
new int [4][];
27 ValueOfHuffmanCodeIJ =
new int [4][][];
33 throw new Exception(
"Only 4 tables are permitted");
39 nHuffmanCodesOfLengthI[nTables] =
new int[16];
40 for (
int i=0; i<16; ++i) {
45 ValueOfHuffmanCodeIJ[nTables] =
new int[16][];
46 for (
int i=0; i<16; ++i) {
47 ValueOfHuffmanCodeIJ[nTables][i] =
new int[nHuffmanCodesOfLengthI[nTables][i]];
48 for (
int j=0; j<nHuffmanCodesOfLengthI[nTables][i]; ++j) {
58 for (
int t=0; t<nTables; ++t) {
59 int cl = TableClass[t];
60 int id = HuffmanTableIdentifier[t];
61 String key = Integer.toString(cl) +
"+" + Integer.toString(
id);
62 htByClassAndIdentifer.put(key,
new HuffmanTable(cl,
id,nHuffmanCodesOfLengthI[t],ValueOfHuffmanCodeIJ[t]));
67 StringBuffer buf =
new StringBuffer();
68 buf.append(
"\n\tDHT:\n");
69 for (
int t=0; t<nTables; ++t) {
70 buf.append(
"\t\t TableClass = " +TableClass[t]+
"\n");
71 buf.append(
"\t\t HuffmanTableIdentifier = "+HuffmanTableIdentifier[t]+
"\n");
72 for (
int i=0; i<16; ++i) {
73 buf.append(
"\t\t\t nHuffmanCodesOfLength "+i+
" = "+nHuffmanCodesOfLengthI[t][i]+
"\n");
74 for (
int j=0; j<nHuffmanCodesOfLengthI[t][i];++j) {
75 buf.append(
"\t\t\t\t ValueOfHuffmanCode "+j+
" = "+ValueOfHuffmanCodeIJ[t][i][j]+
"\n");
79 return buf.toString();
MarkerSegmentDHT(byte[] b, int length)
static final int extract8(byte[] b, int offset)
void addToMapByClassAndIdentifier(Map< String, HuffmanTable > htByClassAndIdentifer)