Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4RTJpegCoderTables.hh
Go to the documentation of this file.
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration. *
20 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
26 //
27 // $Id: G4RTJpegCoderTables.hh 66373 2012-12-18 09:41:34Z gcosmo $
28 //
29 
30 // class description:
31 //
32 // This header file defines some hard coded numbers used by G4RTJpegCoder
33 // to convert 8 bits RGB to JPEG.
34 //
35 
36 #ifndef G4RTJpegCoderTable_H
37 #define G4RTJpegCoderTable_H 1
38 
39 #include "G4RTJpeg.hh"
40 
41 //QuantumTable
42 
43 static const int YQuantumT[] = {
44 
45  1, 1, 1, 1, 1, 1, 1, 1,
46  1, 1, 1, 1, 1, 1, 1, 1,
47  1, 1, 1, 1, 1, 1, 1, 1,
48  1, 1, 1, 1, 1, 1, 1, 1,
49  1, 1, 1, 1, 1, 1, 1, 1,
50  1, 1, 1, 1, 1, 1, 1, 1,
51  1, 1, 1, 1, 1, 1, 1, 1,
52  1, 1, 1, 1, 1, 1, 1, 1,
53 };
54 
55 static const int CQuantumT[] = {
56 
57  1, 1, 1, 1, 1, 1, 1, 1,
58  1, 1, 1, 1, 1, 1, 1, 1,
59  1, 1, 1, 1, 1, 1, 1, 1,
60  1, 1, 1, 1, 1, 1, 1, 1,
61  1, 1, 1, 1, 1, 1, 1, 1,
62  1, 1, 1, 1, 1, 1, 1, 1,
63  1, 1, 1, 1, 1, 1, 1, 1,
64  1, 1, 1, 1, 1, 1, 1, 1,
65 };
66 
67 //HuffmanCode
68 
69 static const int YDcSizeT[] = {
70  0x0002, 0x0003, 0x0003, 0x0003,
71  0x0003, 0x0003, 0x0004, 0x0005,
72  0x0006, 0x0007, 0x0008, 0x0009 };
73 static const int YDcCodeT[] = {
74  0x0000, 0x0002, 0x0003, 0x0004,
75  0x0005, 0x0006, 0x000e, 0x001e,
76  0x003e, 0x007e, 0x00fe, 0x01fe };
77 static const G4HuffmanCodeTable YDcHuffmanT = {
78  12,
79  (int*)YDcSizeT,
80  (int*)YDcCodeT
81 };
82 
83 
84 static const int CDcSizeT[] = {
85  0x0002, 0x0002, 0x0002, 0x0003,
86  0x0004, 0x0005, 0x0006, 0x0007,
87  0x0008, 0x0009, 0x000a, 0x000b };
88 static const int CDcCodeT[] = {
89  0x0000, 0x0001, 0x0002, 0x0006,
90  0x000e, 0x001e, 0x003e, 0x007e,
91  0x00fe, 0x01fe, 0x03fe, 0x07fe };
92 static const G4HuffmanCodeTable CDcHuffmanT = {
93  12,
94  (int*)CDcSizeT,
95  (int*)CDcCodeT
96 };
97 
98 
99 static const int YAcSizeT[] = {
100  4, 2, 2, 3, 4, 5, 7, 8,
101  10, 16, 16, 4, 5, 7, 9, 11,
102  16, 16, 16, 16, 16, 5, 8, 10,
103  12, 16, 16, 16, 16, 16, 16, 6,
104  9, 12, 16, 16, 16, 16, 16, 16,
105  16, 6, 10, 16, 16, 16, 16, 16,
106  16, 16, 16, 7, 11, 16, 16, 16,
107  16, 16, 16, 16, 16, 7, 12, 16,
108  16, 16, 16, 16, 16, 16, 16, 8,
109  12, 16, 16, 16, 16, 16, 16, 16,
110  16, 9, 15, 16, 16, 16, 16, 16,
111  16, 16, 16, 9, 16, 16, 16, 16,
112  16, 16, 16, 16, 16, 9, 16, 16,
113  16, 16, 16, 16, 16, 16, 16, 10,
114  16, 16, 16, 16, 16, 16, 16, 16,
115  16, 10, 16, 16, 16, 16, 16, 16,
116  16, 16, 16, 11, 16, 16, 16, 16,
117  16, 16, 16, 16, 16, 16, 16, 16,
118  16, 16, 16, 16, 16, 16, 16, 11,
119  16, 16, 16, 16, 16, 16, 16, 16,
120  16, 16 };
121 static const int YAcCodeT[] = {
122  0x000a, 0x0000, 0x0001, 0x0004,
123  0x000b, 0x001a, 0x0078, 0x00f8,
124  0x03f6, 0xff82, 0xff83, 0x000c,
125  0x001b, 0x0079, 0x01f6, 0x07f6,
126  0xff84, 0xff85, 0xff86, 0xff87,
127  0xff88, 0x001c, 0x00f9, 0x03f7,
128  0x0ff4, 0xff89, 0xff8a, 0xff8b,
129  0xff8c, 0xff8d, 0xff8e, 0x003a,
130  0x01f7, 0x0ff5, 0xff8f, 0xff90,
131  0xff91, 0xff92, 0xff93, 0xff94,
132  0xff95, 0x003b, 0x03f8, 0xff96,
133  0xff97, 0xff98, 0xff99, 0xff9a,
134  0xff9b, 0xff9c, 0xff9d, 0x007a,
135  0x07f7, 0xff9e, 0xff9f, 0xffa0,
136  0xffa1, 0xffa2, 0xffa3, 0xffa4,
137  0xffa5, 0x007b, 0x0ff6, 0xffa6,
138  0xffa7, 0xffa8, 0xffa9, 0xffaa,
139  0xffab, 0xffac, 0xffad, 0x00fa,
140  0x0ff7, 0xffae, 0xffaf, 0xffb0,
141  0xffb1, 0xffb2, 0xffb3, 0xffb4,
142  0xffb5, 0x01f8, 0x7fc0, 0xffb6,
143  0xffb7, 0xffb8, 0xffb9, 0xffba,
144  0xffbb, 0xffbc, 0xffbd, 0x01f9,
145  0xffbe, 0xffbf, 0xffc0, 0xffc1,
146  0xffc2, 0xffc3, 0xffc4, 0xffc5,
147  0xffc6, 0x01fa, 0xffc7, 0xffc8,
148  0xffc9, 0xffca, 0xffcb, 0xffcc,
149  0xffcd, 0xffce, 0xffcf, 0x03f9,
150  0xffd0, 0xffd1, 0xffd2, 0xffd3,
151  0xffd4, 0xffd5, 0xffd6, 0xffd7,
152  0xffd8, 0x03fa, 0xffd9, 0xffda,
153  0xffdb, 0xffdc, 0xffdd, 0xffde,
154  0xffdf, 0xffe0, 0xffe1, 0x07f8,
155  0xffe2, 0xffe3, 0xffe4, 0xffe5,
156  0xffe6, 0xffe7, 0xffe8, 0xffe9,
157  0xffea, 0xffeb, 0xffec, 0xffed,
158  0xffee, 0xffef, 0xfff0, 0xfff1,
159  0xfff2, 0xfff3, 0xfff4, 0x07f9,
160  0xfff5, 0xfff6, 0xfff7, 0xfff8,
161  0xfff9, 0xfffa, 0xfffb, 0xfffc,
162  0xfffd, 0xfffe };
163 static const G4HuffmanCodeTable YAcHuffmanT = {
164  162,
165  (int*)YAcSizeT,
166  (int*)YAcCodeT
167 };
168 
169 static const int YEOBidx = 0;
170 static const int YZRLidx = 151;
171 
172 
173 static const int CAcSizeT[] = {
174  2, 2, 3, 4, 5, 5, 6, 7,
175  9, 10, 12, 4, 6, 8, 9, 11,
176  12, 16, 16, 16, 16, 5, 8, 10,
177  12, 15, 16, 16, 16, 16, 16, 5,
178  8, 10, 12, 16, 16, 16, 16, 16,
179  16, 6, 9, 16, 16, 16, 16, 16,
180  16, 16, 16, 6, 10, 16, 16, 16,
181  16, 16, 16, 16, 16, 7, 11, 16,
182  16, 16, 16, 16, 16, 16, 16, 7,
183  11, 16, 16, 16, 16, 16, 16, 16,
184  16, 8, 16, 16, 16, 16, 16, 16,
185  16, 16, 16, 9, 16, 16, 16, 16,
186  16, 16, 16, 16, 16, 9, 16, 16,
187  16, 16, 16, 16, 16, 16, 16, 9,
188  16, 16, 16, 16, 16, 16, 16, 16,
189  16, 9, 16, 16, 16, 16, 16, 16,
190  16, 16, 16, 11, 16, 16, 16, 16,
191  16, 16, 16, 16, 16, 14, 16, 16,
192  16, 16, 16, 16, 16, 16, 16, 10,
193  15, 16, 16, 16, 16, 16, 16, 16,
194  16, 16 };
195 static const int CAcCodeT[] = {
196  0x0000, 0x0001, 0x0004, 0x000a,
197  0x0018, 0x0019, 0x0038, 0x0078,
198  0x01f4, 0x03f6, 0x0ff4, 0x000b,
199  0x0039, 0x00f6, 0x01f5, 0x07f6,
200  0x0ff5, 0xff88, 0xff89, 0xff8a,
201  0xff8b, 0x001a, 0x00f7, 0x03f7,
202  0x0ff6, 0x7fc2, 0xff8c, 0xff8d,
203  0xff8e, 0xff8f, 0xff90, 0x001b,
204  0x00f8, 0x03f8, 0x0ff7, 0xff91,
205  0xff92, 0xff93, 0xff94, 0xff95,
206  0xff96, 0x003a, 0x01f6, 0xff97,
207  0xff98, 0xff99, 0xff9a, 0xff9b,
208  0xff9c, 0xff9d, 0xff9e, 0x003b,
209  0x03f9, 0xff9f, 0xffa0, 0xffa1,
210  0xffa2, 0xffa3, 0xffa4, 0xffa5,
211  0xffa6, 0x0079, 0x07f7, 0xffa7,
212  0xffa8, 0xffa9, 0xffaa, 0xffab,
213  0xffac, 0xffad, 0xffae, 0x007a,
214  0x07f8, 0xffaf, 0xffb0, 0xffb1,
215  0xffb2, 0xffb3, 0xffb4, 0xffb5,
216  0xffb6, 0x00f9, 0xffb7, 0xffb8,
217  0xffb9, 0xffba, 0xffbb, 0xffbc,
218  0xffbd, 0xffbe, 0xffbf, 0x01f7,
219  0xffc0, 0xffc1, 0xffc2, 0xffc3,
220  0xffc4, 0xffc5, 0xffc6, 0xffc7,
221  0xffc8, 0x01f8, 0xffc9, 0xffca,
222  0xffcb, 0xffcc, 0xffcd, 0xffce,
223  0xffcf, 0xffd0, 0xffd1, 0x01f9,
224  0xffd2, 0xffd3, 0xffd4, 0xffd5,
225  0xffd6, 0xffd7, 0xffd8, 0xffd9,
226  0xffda, 0x01fa, 0xffdb, 0xffdc,
227  0xffdd, 0xffde, 0xffdf, 0xffe0,
228  0xffe1, 0xffe2, 0xffe3, 0x07f9,
229  0xffe4, 0xffe5, 0xffe6, 0xffe7,
230  0xffe8, 0xffe9, 0xffea, 0xffeb,
231  0xffec, 0x3fe0, 0xffed, 0xffee,
232  0xffef, 0xfff0, 0xfff1, 0xfff2,
233  0xfff3, 0xfff4, 0xfff5, 0x03fa,
234  0x7fc3, 0xfff6, 0xfff7, 0xfff8,
235  0xfff9, 0xfffa, 0xfffb, 0xfffc,
236  0xfffd, 0xfffe };
237 static const G4HuffmanCodeTable CAcHuffmanT = {
238  162,
239  (int*)CAcSizeT,
240  (int*)CAcCodeT
241 };
242 
243 static const int CEOBidx = 0;
244 static const int CZRLidx = 151;
245 
246 //HuffmanCode
247 
248 static const int DcDhtLength = 0x21;
249 static const int AcDhtLength = 0xb7;
250 
251 static const u_char YDcDht[] = {
252  0xff, 0xc4,
253  0x00, 0x1f,
254  0x00,
255  0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01,
256  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
257  0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
258  0x08, 0x09, 0x0a, 0x0b
259 };
260 
261 static const u_char CDcDht[] = {
262  0xff, 0xc4,
263  0x00, 0x1f,
264  0x01,
265  0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
266  0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
267  0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
268  0x08, 0x09, 0x0a, 0x0b
269 };
270 
271 static const u_char YAcDht[] = {
272  0xff, 0xc4,
273  0x00, 0xb5,
274  0x10,
275 
276  0x00, 0x02, 0x01, 0x03, 0x03, 0x02, 0x04, 0x03,
277  0x05, 0x05, 0x04, 0x04, 0x00, 0x00, 0x01, 0x7d,
278 
279  0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12,
280  0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07,
281  0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xa1, 0x08,
282  0x23, 0x42, 0xb1, 0xc1, 0x15, 0x52, 0xd1, 0xf0,
283  0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16,
284  0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28,
285  0x29, 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
286  0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49,
287  0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59,
288  0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69,
289  0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79,
290  0x7a, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89,
291  0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98,
292  0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
293  0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6,
294  0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5,
295  0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4,
296  0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe1, 0xe2,
297  0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea,
298  0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
299  0xf9, 0xfa
300 };
301 
302 static const u_char CAcDht[] = {
303  0xff, 0xc4,
304  0x00, 0xb5,
305  0x11,
306 
307  0x00, 0x02, 0x01, 0x02, 0x04, 0x04, 0x03, 0x04,
308  0x07, 0x05, 0x04, 0x04, 0x00, 0x01, 0x02, 0x77,
309 
310  0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21,
311  0x31, 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, 0x71,
312  0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91,
313  0xa1, 0xb1, 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0,
314  0x15, 0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34,
315  0xe1, 0x25, 0xf1, 0x17, 0x18, 0x19, 0x1a, 0x26,
316  0x27, 0x28, 0x29, 0x2a, 0x35, 0x36, 0x37, 0x38,
317  0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
318  0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
319  0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
320  0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
321  0x79, 0x7a, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
322  0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96,
323  0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5,
324  0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4,
325  0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3,
326  0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2,
327  0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda,
328  0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
329  0xea, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
330  0xf9, 0xfa
331 };
332 
333 #endif
334 
unsigned char u_char
Definition: G4RTJpeg.hh:40