summaryrefslogtreecommitdiffstats
path: root/baseline/source/cjpeg_wrbmp
diff options
context:
space:
mode:
authorJoshua Bakita <bakitajoshua@gmail.com>2019-10-07 19:13:39 -0400
committerJoshua Bakita <bakitajoshua@gmail.com>2019-10-07 19:13:39 -0400
commit386b7d3366f1359a265da207a9cafa3edf553b64 (patch)
treec76120c2c138faed822e4ae386be6ef22a738a78 /baseline/source/cjpeg_wrbmp
parent54a3f7091a2146b29c73a6fdc4b62a5c4ad7a3d8 (diff)
Reorganize and commit all the modified TACLeBench code and run scripts
Diffstat (limited to 'baseline/source/cjpeg_wrbmp')
-rw-r--r--baseline/source/cjpeg_wrbmp/ChangeLog.txt104
-rw-r--r--baseline/source/cjpeg_wrbmp/README383
-rw-r--r--baseline/source/cjpeg_wrbmp/cderror.h140
-rw-r--r--baseline/source/cjpeg_wrbmp/cdjpeg.h105
-rw-r--r--baseline/source/cjpeg_wrbmp/cjpeg_wrbmp.c225
-rw-r--r--baseline/source/cjpeg_wrbmp/input.c79
-rw-r--r--baseline/source/cjpeg_wrbmp/jconfig.h65
-rw-r--r--baseline/source/cjpeg_wrbmp/jerror.h203
-rw-r--r--baseline/source/cjpeg_wrbmp/jmorecfg.h95
-rw-r--r--baseline/source/cjpeg_wrbmp/jpeglib.h869
10 files changed, 2268 insertions, 0 deletions
diff --git a/baseline/source/cjpeg_wrbmp/ChangeLog.txt b/baseline/source/cjpeg_wrbmp/ChangeLog.txt
new file mode 100644
index 0000000..df21770
--- /dev/null
+++ b/baseline/source/cjpeg_wrbmp/ChangeLog.txt
@@ -0,0 +1,104 @@
1File: cjpeg_jpeg6b_wrbmp.c
2Original provenience:
3
42017-04-18:
5- Annotated cjpeg_wrbmp_main as entry-point for timing analysis
6
72015-10-14:
8- Remove comment on line 1
9- Added generic TACLeBench header to line 1
10- Changed struct name to cjpeg_jpeg6b_wrbmp_name
11- Changed the global variable from {name} to cjpeg_jpeg6b_wrbmp_{name}
12- Changed the functions from {name} to cjpeg_jpeg6b_wrbmp_{name}
13- Removed code in comment
14- Added cjpeg_jpeg6b_wrbmp_main()
15- Added cjpeg_jpeg6b_wrbmp_return()
16- Added cjpeg_jpeg6b_wrbmp_init()
17- Added forward declaration of the functions
18- Removed unused variables: test_image[] and color_map[]
19- Applied Code Style
20
21File: input.c
22Original provenience:
23
242015-10-12:
25- Remove comment on line 1
26- Added generic TACLeBench header to line 1
27- Removed _jpeg6b_ from the prefix
28- Changed the global variable from colormap to cjpeg_jpeg6b_wrbmp_colormap
29- Removed unused variables: test_image[] and color_map[]
30- Moved initialization of cjpeg_jpeg6b_wrbmp_colormap to function. This function is called from cjpeg_jpeg6b_wrbmp_init function
31- Applied Code Style
32
33File: cderror.h
34Original provenience:
35
362015-10-12:
37- Remove comment on line 1
38- Added generic TACLeBench header to line 1
39- Removed _jpeg6b_ from the prefix
40- Changed JMESSAGE to CJPEG_JPEG6B_WRBMP_JMESSAGE
41- Changed JMAKE_ENUM_LIST to CJPEG_JPEG6B_WRBMP_JMAKE_ENUM_LIST
42- Applied Code Style
43
44
45File: cdjpeg.h
46Original provenience:
47
482015-10-12:
49- Remove comment on line 1
50- Added generic TACLeBench header to line 1
51- Rename structs and typedef to cjpeg_jpeg6b_wrbmp_{name}
52- Removed unused defines
53
54File: jconfig.h
55Original provenience:
56
572015-10-12:
58- Remove comment on line 1
59- Added generic TACLeBench header to line 1
60- Change defines to CJPEG_JPEG6B_WRBMP_{NAME}
61- Removed _jpeg6b_ from the prefix
62- Applied Code Style
63
64
65File: jerror.h
66Original provenience:
67
682015-10-12:
69- Remove comment on line 1
70- Added generic TACLeBench header to line 1
71- Removed error and warning defines
72- Removed _jpeg6b_ from the prefix
73- Applied Code Style
74
75
76File: jmorecfg.h
77Original provenience:
78
792015-10-12:
80- Remove comment on line 1
81- Added generic TACLeBench header to line 1
82- Removed unused comments
83- Removed _jpeg6b_ from the prefix
84- Removed unused defines
85- Removed unused typedefs
86- Applied Code Style
87
88
89File: jpeglib.h
90Original provenience:
91
922015-10-12:
93- Remove comment on line 1
94- Used define value directly
95- Remove unused typedefs, defines
96- Removed _jpeg6b_ from the prefix
97- Changed struct name to cjpeg_jpeg6b_wrbmp_{name}
98- Changed define {name} to cjpeg_jpeg6b_wrbmp_{name}
99- Added generic TACLeBench header to line 1
100- Applied Code Style
101
102
103
104
diff --git a/baseline/source/cjpeg_wrbmp/README b/baseline/source/cjpeg_wrbmp/README
new file mode 100644
index 0000000..fa69a18
--- /dev/null
+++ b/baseline/source/cjpeg_wrbmp/README
@@ -0,0 +1,383 @@
1The Independent JPEG Group's JPEG software
2==========================================
3
4README for release 6a of 7-Feb-96
5=================================
6
7This distribution contains the sixth public release of the Independent JPEG
8Group's free JPEG software. You are welcome to redistribute this software and
9to use it for any purpose, subject to the conditions under LEGAL ISSUES, below.
10
11Serious users of this software (particularly those incorporating it into
12larger programs) should contact IJG at jpeg-info@uunet.uu.net to be added to
13our electronic mailing list. Mailing list members are notified of updates
14and have a chance to participate in technical discussions, etc.
15
16This software is the work of Tom Lane, Philip Gladstone, Luis Ortiz, Jim
17Boucher, Lee Crocker, Julian Minguillon, George Phillips, Davide Rossi,
18Ge' Weijers, and other members of the Independent JPEG Group.
19
20IJG is not affiliated with the official ISO JPEG standards committee.
21
22
23DOCUMENTATION ROADMAP
24=====================
25
26This file contains the following sections:
27
28OVERVIEW General description of JPEG and the IJG software.
29LEGAL ISSUES Copyright, lack of warranty, terms of distribution.
30REFERENCES Where to learn more about JPEG.
31ARCHIVE LOCATIONS Where to find newer versions of this software.
32RELATED SOFTWARE Other stuff you should get.
33FILE FORMAT WARS Software *not* to get.
34TO DO Plans for future IJG releases.
35
36Other documentation files in the distribution are:
37
38User documentation:
39 install.doc How to configure and install the IJG software.
40 usage.doc Usage instructions for cjpeg, djpeg, jpegtran,
41 rdjpgcom, and wrjpgcom.
42 *.1 Unix-style man pages for programs (same info as usage.doc).
43 wizard.doc Advanced usage instructions for JPEG wizards only.
44 change.log Version-to-version change highlights.
45Programmer and internal documentation:
46 libjpeg.doc How to use the JPEG library in your own programs.
47 example.c Sample code for calling the JPEG library.
48 structure.doc Overview of the JPEG library's internal structure.
49 filelist.doc Road map of IJG files.
50 coderules.doc Coding style rules --- please read if you contribute code.
51
52Please read at least the files install.doc and usage.doc. Useful information
53can also be found in the JPEG FAQ (Frequently Asked Questions) article. See
54ARCHIVE LOCATIONS below to find out where to obtain the FAQ article.
55
56If you want to understand how the JPEG code works, we suggest reading one or
57more of the REFERENCES, then looking at the documentation files (in roughly
58the order listed) before diving into the code.
59
60
61OVERVIEW
62========
63
64This package contains C software to implement JPEG image compression and
65decompression. JPEG (pronounced "jay-peg") is a standardized compression
66method for full-color and gray-scale images. JPEG is intended for compressing
67"real-world" scenes; line drawings, cartoons and other non-realistic images
68are not its strong suit. JPEG is lossy, meaning that the output image is not
69exactly identical to the input image. Hence you must not use JPEG if you
70have to have identical output bits. However, on typical photographic images,
71very good compression levels can be obtained with no visible change, and
72remarkably high compression levels are possible if you can tolerate a
73low-quality image. For more details, see the references, or just experiment
74with various compression settings.
75
76This software implements JPEG baseline, extended-sequential, and progressive
77compression processes. Provision is made for supporting all variants of these
78processes, although some uncommon parameter settings aren't implemented yet.
79For legal reasons, we are not distributing code for the arithmetic-coding
80variants of JPEG; see LEGAL ISSUES. We have made no provision for supporting
81the hierarchical or lossless processes defined in the standard.
82
83We provide a set of library routines for reading and writing JPEG image files,
84plus two sample applications "cjpeg" and "djpeg", which use the library to
85perform conversion between JPEG and some other popular image file formats.
86The library is intended to be reused in other applications.
87
88In order to support file conversion and viewing software, we have included
89considerable functionality beyond the bare JPEG coding/decoding capability;
90for example, the color quantization modules are not strictly part of JPEG
91decoding, but they are essential for output to colormapped file formats or
92colormapped displays. These extra functions can be compiled out of the
93library if not required for a particular application. We have also included
94"jpegtran", a utility for lossless transcoding between different JPEG
95processes, and "rdjpgcom" and "wrjpgcom", two simple applications for
96inserting and extracting textual comments in JFIF files.
97
98The emphasis in designing this software has been on achieving portability and
99flexibility, while also making it fast enough to be useful. In particular,
100the software is not intended to be read as a tutorial on JPEG. (See the
101REFERENCES section for introductory material.) Rather, it is intended to
102be reliable, portable, industrial-strength code. We do not claim to have
103achieved that goal in every aspect of the software, but we strive for it.
104
105We welcome the use of this software as a component of commercial products.
106No royalty is required, but we do ask for an acknowledgement in product
107documentation, as described under LEGAL ISSUES.
108
109
110LEGAL ISSUES
111============
112
113In plain English:
114
1151. We don't promise that this software works. (But if you find any bugs,
116 please let us know!)
1172. You can use this software for whatever you want. You don't have to pay us.
1183. You may not pretend that you wrote this software. If you use it in a
119 program, you must acknowledge somewhere in your documentation that
120 you've used the IJG code.
121
122In legalese:
123
124The authors make NO WARRANTY or representation, either express or implied,
125with respect to this software, its quality, accuracy, merchantability, or
126fitness for a particular purpose. This software is provided "AS IS", and you,
127its user, assume the entire risk as to its quality and accuracy.
128
129This software is copyright (C) 1991-1996, Thomas G. Lane.
130All Rights Reserved except as specified below.
131
132Permission is hereby granted to use, copy, modify, and distribute this
133software (or portions thereof) for any purpose, without fee, subject to these
134conditions:
135(1) If any part of the source code for this software is distributed, then this
136README file must be included, with this copyright and no-warranty notice
137unaltered; and any additions, deletions, or changes to the original files
138must be clearly indicated in accompanying documentation.
139(2) If only executable code is distributed, then the accompanying
140documentation must state that "this software is based in part on the work of
141the Independent JPEG Group".
142(3) Permission for use of this software is granted only if the user accepts
143full responsibility for any undesirable consequences; the authors accept
144NO LIABILITY for damages of any kind.
145
146These conditions apply to any software derived from or based on the IJG code,
147not just to the unmodified library. If you use our work, you ought to
148acknowledge us.
149
150Permission is NOT granted for the use of any IJG author's name or company name
151in advertising or publicity relating to this software or products derived from
152it. This software may be referred to only as "the Independent JPEG Group's
153software".
154
155We specifically permit and encourage the use of this software as the basis of
156commercial products, provided that all warranty or liability claims are
157assumed by the product vendor.
158
159
160ansi2knr.c is included in this distribution by permission of L. Peter Deutsch,
161sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA.
162ansi2knr.c is NOT covered by the above copyright and conditions, but instead
163by the usual distribution terms of the Free Software Foundation; principally,
164that you must include source code if you redistribute it. (See the file
165ansi2knr.c for full details.) However, since ansi2knr.c is not needed as part
166of any program generated from the IJG code, this does not limit you more than
167the foregoing paragraphs do.
168
169The configuration script "configure" was produced with GNU Autoconf. It
170is copyright by the Free Software Foundation but is freely distributable.
171
172It appears that the arithmetic coding option of the JPEG spec is covered by
173patents owned by IBM, AT&T, and Mitsubishi. Hence arithmetic coding cannot
174legally be used without obtaining one or more licenses. For this reason,
175support for arithmetic coding has been removed from the free JPEG software.
176(Since arithmetic coding provides only a marginal gain over the unpatented
177Huffman mode, it is unlikely that very many implementations will support it.)
178So far as we are aware, there are no patent restrictions on the remaining
179code.
180
181WARNING: Unisys has begun to enforce their patent on LZW compression against
182GIF encoders and decoders. You will need a license from Unisys to use the
183included rdgif.c or wrgif.c files in a commercial or shareware application.
184At this time, Unisys is not enforcing their patent against freeware, so
185distribution of this package remains legal. However, we intend to remove
186GIF support from the IJG package as soon as a suitable replacement format
187becomes reasonably popular.
188
189We are required to state that
190 "The Graphics Interchange Format(c) is the Copyright property of
191 CompuServe Incorporated. GIF(sm) is a Service Mark property of
192 CompuServe Incorporated."
193
194
195REFERENCES
196==========
197
198We highly recommend reading one or more of these references before trying to
199understand the innards of the JPEG software.
200
201The best short technical introduction to the JPEG compression algorithm is
202 Wallace, Gregory K. "The JPEG Still Picture Compression Standard",
203 Communications of the ACM, April 1991 (vol. 34 no. 4), pp. 30-44.
204(Adjacent articles in that issue discuss MPEG motion picture compression,
205applications of JPEG, and related topics.) If you don't have the CACM issue
206handy, a PostScript file containing a revised version of Wallace's article
207is available at ftp.uu.net, graphics/jpeg/wallace.ps.gz. The file (actually
208a preprint for an article that appeared in IEEE Trans. Consumer Electronics)
209omits the sample images that appeared in CACM, but it includes corrections
210and some added material. Note: the Wallace article is copyright ACM and
211IEEE, and it may not be used for commercial purposes.
212
213A somewhat less technical, more leisurely introduction to JPEG can be found in
214"The Data Compression Book" by Mark Nelson, published by M&T Books (Redwood
215City, CA), 1991, ISBN 1-55851-216-0. This book provides good explanations and
216example C code for a multitude of compression methods including JPEG. It is
217an excellent source if you are comfortable reading C code but don't know much
218about data compression in general. The book's JPEG sample code is far from
219industrial-strength, but when you are ready to look at a full implementation,
220you've got one here...
221
222The best full description of JPEG is the textbook "JPEG Still Image Data
223Compression Standard" by William B. Pennebaker and Joan L. Mitchell, published
224by Van Nostrand Reinhold, 1993, ISBN 0-442-01272-1. Price US$59.95, 638 pp.
225The book includes the complete text of the ISO JPEG standards (DIS 10918-1
226and draft DIS 10918-2). This is by far the most complete exposition of JPEG
227in existence, and we highly recommend it.
228
229The JPEG standard itself is not available electronically; you must order a
230paper copy through ISO or ITU. (Unless you feel a need to own a certified
231official copy, we recommend buying the Pennebaker and Mitchell book instead;
232it's much cheaper and includes a great deal of useful explanatory material.)
233In the USA, copies of the standard may be ordered from ANSI Sales at (212)
234642-4900, or from Global Engineering Documents at (800) 854-7179. (ANSI
235doesn't take credit card orders, but Global does.) It's not cheap: as of
2361992, ANSI was charging $95 for Part 1 and $47 for Part 2, plus 7%
237shipping/handling. The standard is divided into two parts, Part 1 being the
238actual specification, while Part 2 covers compliance testing methods. Part 1
239is titled "Digital Compression and Coding of Continuous-tone Still Images,
240Part 1: Requirements and guidelines" and has document numbers ISO/IEC IS
24110918-1, ITU-T T.81. Part 2 is titled "Digital Compression and Coding of
242Continuous-tone Still Images, Part 2: Compliance testing" and has document
243numbers ISO/IEC IS 10918-2, ITU-T T.83.
244
245Extensions to the original JPEG standard are defined in JPEG Part 3, a new ISO
246document. Part 3 is undergoing ISO balloting and is expected to be approved
247by the end of 1995; it will have document numbers ISO/IEC IS 10918-3, ITU-T
248T.84. IJG currently does not support any Part 3 extensions.
249
250The JPEG standard does not specify all details of an interchangeable file
251format. For the omitted details we follow the "JFIF" conventions, revision
2521.02. A copy of the JFIF spec is available from:
253 Literature Department
254 C-Cube Microsystems, Inc.
255 1778 McCarthy Blvd.
256 Milpitas, CA 95035
257 phone (408) 944-6300, fax (408) 944-6314
258A PostScript version of this document is available at ftp.uu.net, file
259graphics/jpeg/jfif.ps.gz. It can also be obtained by e-mail from the C-Cube
260mail server, netlib@c3.pla.ca.us. Send the message "send jfif_ps from jpeg"
261to the server to obtain the JFIF document; send the message "help" if you have
262trouble.
263
264The TIFF 6.0 file format specification can be obtained by FTP from sgi.com
265(192.48.153.1), file graphics/tiff/TIFF6.ps.Z; or you can order a printed
266copy from Aldus Corp. at (206) 628-6593. The JPEG incorporation scheme
267found in the TIFF 6.0 spec of 3-June-92 has a number of serious problems.
268IJG does not recommend use of the TIFF 6.0 design (TIFF Compression tag 6).
269Instead, we recommend the JPEG design proposed by TIFF Technical Note #2
270(Compression tag 7). Copies of this Note can be obtained from sgi.com or
271from ftp.uu.net:/graphics/jpeg/. It is expected that the next revision of
272the TIFF spec will replace the 6.0 JPEG design with the Note's design.
273Although IJG's own code does not support TIFF/JPEG, the free libtiff library
274uses our library to implement TIFF/JPEG per the Note. libtiff is available
275from sgi.com:/graphics/tiff/.
276
277
278ARCHIVE LOCATIONS
279=================
280
281The "official" archive site for this software is ftp.uu.net (Internet
282address 192.48.96.9). The most recent released version can always be found
283there in directory graphics/jpeg. This particular version will be archived
284as graphics/jpeg/jpegsrc.v6a.tar.gz. If you are on the Internet, you
285can retrieve files from ftp.uu.net by standard anonymous FTP. If you don't
286have FTP access, UUNET's archives are also available via UUCP; contact
287help@uunet.uu.net for information on retrieving files that way.
288
289Numerous Internet sites maintain copies of the UUNET files. However, only
290ftp.uu.net is guaranteed to have the latest official version.
291
292You can also obtain this software in DOS-compatible "zip" archive format from
293the SimTel archives (ftp.coast.net:/SimTel/msdos/graphics/), or on CompuServe
294in the Graphics Support forum (GO CIS:GRAPHSUP), library 12 "JPEG Tools".
295Again, these versions may sometimes lag behind the ftp.uu.net release.
296
297The JPEG FAQ (Frequently Asked Questions) article is a useful source of
298general information about JPEG. It is updated constantly and therefore is
299not included in this distribution. The FAQ is posted every two weeks to
300Usenet newsgroups comp.graphics.misc, news.answers, and other groups.
301You can always obtain the latest version from the news.answers archive at
302rtfm.mit.edu. By FTP, fetch /pub/usenet/news.answers/jpeg-faq/part1 and
303.../part2. If you don't have FTP, send e-mail to mail-server@rtfm.mit.edu
304with body
305 send usenet/news.answers/jpeg-faq/part1
306 send usenet/news.answers/jpeg-faq/part2
307
308
309RELATED SOFTWARE
310================
311
312Numerous viewing and image manipulation programs now support JPEG. (Quite a
313few of them use this library to do so.) The JPEG FAQ described above lists
314some of the more popular free and shareware viewers, and tells where to
315obtain them on Internet.
316
317If you are on a Unix machine, we highly recommend Jef Poskanzer's free
318PBMPLUS image software, which provides many useful operations on PPM-format
319image files. In particular, it can convert PPM images to and from a wide
320range of other formats. You can obtain this package by FTP from ftp.x.org
321(contrib/pbmplus*.tar.Z) or ftp.ee.lbl.gov (pbmplus*.tar.Z). There is also
322a newer update of this package called NETPBM, available from
323wuarchive.wustl.edu under directory /graphics/graphics/packages/NetPBM/.
324Unfortunately PBMPLUS/NETPBM is not nearly as portable as the IJG software
325is; you are likely to have difficulty making it work on any non-Unix machine.
326
327A different free JPEG implementation, written by the PVRG group at Stanford,
328is available from havefun.stanford.edu in directory pub/jpeg. This program
329is designed for research and experimentation rather than production use;
330it is slower, harder to use, and less portable than the IJG code, but it
331is easier to read and modify. Also, the PVRG code supports lossless JPEG,
332which we do not.
333
334
335FILE FORMAT WARS
336================
337
338Some JPEG programs produce files that are not compatible with our library.
339The root of the problem is that the ISO JPEG committee failed to specify a
340concrete file format. Some vendors "filled in the blanks" on their own,
341creating proprietary formats that no one else could read. (For example, none
342of the early commercial JPEG implementations for the Macintosh were able to
343exchange compressed files.)
344
345The file format we have adopted is called JFIF (see REFERENCES). This format
346has been agreed to by a number of major commercial JPEG vendors, and it has
347become the de facto standard. JFIF is a minimal or "low end" representation.
348We recommend the use of TIFF/JPEG (TIFF revision 6.0 as modified by TIFF
349Technical Note #2) for "high end" applications that need to record a lot of
350additional data about an image. TIFF/JPEG is fairly new and not yet widely
351supported, unfortunately.
352
353The upcoming JPEG Part 3 standard defines a file format called SPIFF.
354SPIFF is interoperable with JFIF, in the sense that most JFIF decoders should
355be able to read the most common variant of SPIFF. SPIFF has some technical
356advantages over JFIF, but its major claim to fame is simply that it is an
357official standard rather than an informal one. At this point it is unclear
358whether SPIFF will supersede JFIF or whether JFIF will remain the de-facto
359standard. IJG intends to support SPIFF once the standard is frozen, but we
360have not decided whether it should become our default output format or not.
361(In any case, our decoder will remain capable of reading JFIF indefinitely.)
362
363Various proprietary file formats incorporating JPEG compression also exist.
364We have little or no sympathy for the existence of these formats. Indeed,
365one of the original reasons for developing this free software was to help
366force convergence on common, open format standards for JPEG files. Don't
367use a proprietary file format!
368
369
370TO DO
371=====
372
373In future versions, we are considering supporting some of the upcoming JPEG
374Part 3 extensions --- principally, variable quantization and the SPIFF file
375format.
376
377Tuning the software for better behavior at low quality/high compression
378settings is also of interest. The current method for scaling the
379quantization tables is known not to be very good at low Q values.
380
381As always, speeding things up is high on our priority list.
382
383Please send bug reports, offers of help, etc. to jpeg-info@uunet.uu.net.
diff --git a/baseline/source/cjpeg_wrbmp/cderror.h b/baseline/source/cjpeg_wrbmp/cderror.h
new file mode 100644
index 0000000..e479834
--- /dev/null
+++ b/baseline/source/cjpeg_wrbmp/cderror.h
@@ -0,0 +1,140 @@
1
2/*
3
4 This program is part of the TACLeBench benchmark suite.
5 Version V 1.x
6
7 Name: cderror.h
8
9 Author: Thomas G. Lane.
10
11 This file is part of the Independent JPEG Group's software.
12 For conditions of distribution and use, see the accompanying README file.
13
14 This file defines the error and message codes for the cjpeg/djpeg
15 applications. These strings are not needed as part of the JPEG library
16 proper.
17 Edit this file to add new codes, or to translate the message strings to
18 some other language.
19
20 Source: Independent JPEG Group's software
21
22 Changes: no major functional changes
23
24 License: See the accompanying README file
25
26 */
27
28#ifndef CJPEG_WRBMP_JMESSAGE
29#ifndef CDERROR_H
30#define CDERROR_H
31/*First time through, define the enum list*/
32#define CJPEG_WRBMP_JMAKE_ENUM_LIST
33#else
34/* Repeated inclusions of this file are no-ops unless JMESSAGE is defined*/
35#define CJPEG_WRBMP_JMESSAGE(code,string)
36#endif
37#endif
38
39#ifdef CJPEG_WRBMP_JMAKE_ENUM_LIST
40
41typedef enum {
42
43#define CJPEG_WRBMP_JMESSAGE(code,string) code ,
44
45#endif
46
47 CJPEG_WRBMP_JMESSAGE( JMSG_FIRSTADDONCODE = 1000, NULL ) //Must be first entry!
48
49 #ifdef CJPEG_WRBMP_BMP_SUPPORTED
50 CJPEG_WRBMP_JMESSAGE( JERR_BMP_BADCMAP, "Unsupported BMP colormap format" )
51 CJPEG_WRBMP_JMESSAGE( JERR_BMP_BADDEPTH, "Only 8- and 24-bit BMP files are supported" )
52 CJPEG_WRBMP_JMESSAGE( JERR_BMP_BADHEADER, "Invalid BMP file: bad header length" )
53 CJPEG_WRBMP_JMESSAGE( JERR_BMP_BADPLANES, "Invalid BMP file: biPlanes not equal to 1" )
54 CJPEG_WRBMP_JMESSAGE( JERR_BMP_COLORSPACE, "BMP output must be grayscale or RGB" )
55 CJPEG_WRBMP_JMESSAGE( JERR_BMP_COMPRESSED, "Sorry, compressed BMPs not yet supported" )
56 CJPEG_WRBMP_JMESSAGE( JERR_BMP_NOT, "Not a BMP file - does not start with BM" )
57 CJPEG_WRBMP_JMESSAGE( JTRC_BMP, "%ux%u 24-bit BMP image" )
58 CJPEG_WRBMP_JMESSAGE( JTRC_BMP_MAPPED, "%ux%u 8-bit colormapped BMP image" )
59 CJPEG_WRBMP_JMESSAGE( JTRC_BMP_OS2, "%ux%u 24-bit OS2 BMP image" )
60 CJPEG_WRBMP_JMESSAGE( JTRC_BMP_OS2_MAPPED, "%ux%u 8-bit colormapped OS2 BMP image" )
61 #endif
62
63 #ifdef CJPEG_WRBMP_GIF_SUPPORTED
64 CJPEG_WRBMP_JMESSAGE( JERR_GIF_BUG, "GIF output got confused" )
65 CJPEG_WRBMP_JMESSAGE( JERR_GIF_CODESIZE, "Bogus GIF codesize %d" )
66 CJPEG_WRBMP_JMESSAGE( JERR_GIF_COLORSPACE, "GIF output must be grayscale or RGB" )
67 CJPEG_WRBMP_JMESSAGE( JERR_GIF_IMAGENOTFOUND, "Too few images in GIF file" )
68 CJPEG_WRBMP_JMESSAGE( JERR_GIF_NOT, "Not a GIF file" )
69 CJPEG_WRBMP_JMESSAGE( JTRC_GIF, "%ux%ux%d GIF image" )
70 CJPEG_WRBMP_JMESSAGE( JTRC_GIF_BADVERSION,
71 "Warning: unexpected GIF version number '%c%c%c'" )
72 CJPEG_WRBMP_JMESSAGE( JTRC_GIF_EXTENSION, "Ignoring GIF extension block of type 0x%02x" )
73 CJPEG_WRBMP_JMESSAGE( JTRC_GIF_NONSQUARE, "Caution: nonsquare pixels in input" )
74 CJPEG_WRBMP_JMESSAGE( JWRN_GIF_BADDATA, "Corrupt data in GIF file" )
75 CJPEG_WRBMP_JMESSAGE( JWRN_GIF_CHAR, "Bogus char 0x%02x in GIF file, ignoring" )
76 CJPEG_WRBMP_JMESSAGE( JWRN_GIF_ENDCODE, "Premature end of GIF image" )
77 CJPEG_WRBMP_JMESSAGE( JWRN_GIF_NOMOREDATA, "Ran out of GIF bits" )
78 #endif
79
80 #ifdef CJPEG_WRBMP_PPM_SUPPORTED
81 CJPEG_WRBMP_JMESSAGE( JERR_PPM_COLORSPACE, "PPM output must be grayscale or RGB" )
82 CJPEG_WRBMP_JMESSAGE( JERR_PPM_NONNUMERIC, "Nonnumeric data in PPM file" )
83 CJPEG_WRBMP_JMESSAGE( JERR_PPM_NOT, "Not a PPM/PGM file" )
84 CJPEG_WRBMP_JMESSAGE( JTRC_PGM, "%ux%u PGM image" )
85 CJPEG_WRBMP_JMESSAGE( JTRC_PGM_TEXT, "%ux%u text PGM image" )
86 CJPEG_WRBMP_JMESSAGE( JTRC_PPM, "%ux%u PPM image" )
87 CJPEG_WRBMP_JMESSAGE( JTRC_PPM_TEXT, "%ux%u text PPM image" )
88 #endif
89
90 #ifdef RLE_SUPPORTED
91 CJPEG_WRBMP_JMESSAGE( JERR_RLE_BADERROR, "Bogus error code from RLE library" )
92 CJPEG_WRBMP_JMESSAGE( JERR_RLE_COLORSPACE, "RLE output must be grayscale or RGB" )
93 CJPEG_WRBMP_JMESSAGE( JERR_RLE_DIMENSIONS, "Image dimensions (%ux%u) too large for RLE" )
94 CJPEG_WRBMP_JMESSAGE( JERR_RLE_EMPTY, "Empty RLE file" )
95 CJPEG_WRBMP_JMESSAGE( JERR_RLE_EOF, "Premature EOF in RLE header" )
96 CJPEG_WRBMP_JMESSAGE( JERR_RLE_MEM, "Insufficient memory for RLE header" )
97 CJPEG_WRBMP_JMESSAGE( JERR_RLE_NOT, "Not an RLE file" )
98 CJPEG_WRBMP_JMESSAGE( JERR_RLE_TOOMANYCHANNELS, "Cannot handle %d output channels for RLE" )
99 CJPEG_WRBMP_JMESSAGE( JERR_RLE_UNSUPPORTED, "Cannot handle this RLE setup" )
100 CJPEG_WRBMP_JMESSAGE( JTRC_RLE, "%ux%u full-color RLE file" )
101 CJPEG_WRBMP_JMESSAGE( JTRC_RLE_FULLMAP, "%ux%u full-color RLE file with map of length %d" )
102 CJPEG_WRBMP_JMESSAGE( JTRC_RLE_GRAY, "%ux%u grayscale RLE file" )
103 CJPEG_WRBMP_JMESSAGE( JTRC_RLE_MAPGRAY, "%ux%u grayscale RLE file with map of length %d" )
104 CJPEG_WRBMP_JMESSAGE( JTRC_RLE_MAPPED, "%ux%u colormapped RLE file with map of length %d" )
105 #endif
106
107 #ifdef CJPEG_WRBMP_TARGA_SUPPORTED
108 CJPEG_WRBMP_JMESSAGE( JERR_TGA_BADCMAP, "Unsupported Targa colormap format" )
109 CJPEG_WRBMP_JMESSAGE( JERR_TGA_BADPARMS, "Invalid or unsupported Targa file" )
110 CJPEG_WRBMP_JMESSAGE( JERR_TGA_COLORSPACE, "Targa output must be grayscale or RGB" )
111 CJPEG_WRBMP_JMESSAGE( JTRC_TGA, "%ux%u RGB Targa image" )
112 CJPEG_WRBMP_JMESSAGE( JTRC_TGA_GRAY, "%ux%u grayscale Targa image" )
113 CJPEG_WRBMP_JMESSAGE( JTRC_TGA_MAPPED, "%ux%u colormapped Targa image" )
114 #else
115 CJPEG_WRBMP_JMESSAGE( JERR_TGA_NOTCOMP, "Targa support was not compiled" )
116 #endif
117
118 CJPEG_WRBMP_JMESSAGE( JERR_BAD_CMAP_FILE,
119 "Color map file is invalid or of unsupported format" )
120 CJPEG_WRBMP_JMESSAGE( JERR_TOO_MANY_COLORS,
121 "Output file format cannot handle %d colormap entries" )
122 CJPEG_WRBMP_JMESSAGE( JERR_UNGETC_FAILED, "ungetc failed" )
123 #ifdef CJPEG_WRBMP_TARGA_SUPPORTED
124 CJPEG_WRBMP_JMESSAGE( JERR_UNKNOWN_FORMAT,
125 "Unrecognized input file format --- perhaps you need -targa" )
126 #else
127 CJPEG_WRBMP_JMESSAGE( JERR_UNKNOWN_FORMAT, "Unrecognized input file format" )
128 #endif
129 CJPEG_WRBMP_JMESSAGE( JERR_UNSUPPORTED_FORMAT, "Unsupported output file format" )
130
131 #ifdef CJPEG_WRBMP_JMAKE_ENUM_LIST
132
133 JMSG_LASTADDONCODE
134} CJPEG_WRBMP_ADDON_MESSAGE_CODE;
135
136#undef CJPEG_WRBMP_JMAKE_ENUM_LIST
137 #endif
138
139/* Zap JMESSAGE macro so that future re-inclusions do nothing by default*/
140#undef CJPEG_WRBMP_JMESSAGE
diff --git a/baseline/source/cjpeg_wrbmp/cdjpeg.h b/baseline/source/cjpeg_wrbmp/cdjpeg.h
new file mode 100644
index 0000000..6c3fc7b
--- /dev/null
+++ b/baseline/source/cjpeg_wrbmp/cdjpeg.h
@@ -0,0 +1,105 @@
1/*
2
3 This program is part of the TACLeBench benchmark suite.
4 Version V 1.x
5
6 Name: cdjpeg.h
7
8 Author: Thomas G. Lane.
9
10 This file is part of the Independent JPEG Group's software.
11 For conditions of distribution and use, see the accompanying README file.
12
13 This file contains common declarations for the sample applications
14 cjpeg and djpeg. It is NOT used by the core JPEG library.
15
16 Source: Independent JPEG Group's software
17
18 Changes: no major functional changes
19
20 License: See the accompanying README file
21
22*/
23#ifndef CDJPEG_H
24#define CDJPEG_H
25
26#define CJPEG_WRBMP_JPEG_CJPEG_DJPEG /* define proper options in jconfig.h */
27#define CJPEG_WRBMP_JPEG_INTERNAL_OPTIONS /* cjpeg.c,djpeg.c need to see xxx_SUPPORTED */
28
29#include "jpeglib.h"
30#include "jerror.h" /* get library error codes too */
31#include "cderror.h" /* get application-specific error codes */
32
33typedef struct cjpeg_wrbmp_cjpeg_source_struct
34 *cjpeg_wrbmp_cjpeg_source_ptr;
35
36struct cjpeg_wrbmp_cjpeg_source_struct {
37 CJPEG_WRBMP_JMETHOD( void, start_input,
38 ( cjpeg_wrbmp_j_compress_ptr cinfo,
39 cjpeg_wrbmp_cjpeg_source_ptr sinfo ) );
40 CJPEG_WRBMP_JMETHOD( CJPEG_WRBMP_JDIMENSION, get_pixel_rows,
41 ( cjpeg_wrbmp_j_compress_ptr cinfo,
42 cjpeg_wrbmp_cjpeg_source_ptr sinfo ) );
43 CJPEG_WRBMP_JMETHOD( void, finish_input,
44 ( cjpeg_wrbmp_j_compress_ptr cinfo,
45 cjpeg_wrbmp_cjpeg_source_ptr sinfo ) );
46
47 CJPEG_WRBMP_FILE *input_file;
48
49 CJPEG_WRBMP_JSAMPARRAY buffer;
50 CJPEG_WRBMP_JDIMENSION buffer_height;
51};
52
53
54typedef struct cjpeg_wrbmp_djpeg_dest_struct
55 *cjpeg_wrbmp_djpeg_dest_ptr;
56
57struct cjpeg_wrbmp_djpeg_dest_struct {
58 CJPEG_WRBMP_JMETHOD( void, start_output,
59 ( cjpeg_wrbmp_j_decompress_ptr cinfo,
60 cjpeg_wrbmp_djpeg_dest_ptr dinfo ) );
61 /* Emit the specified number of pixel rows from the buffer. */
62 CJPEG_WRBMP_JMETHOD( void, put_pixel_rows,
63 ( cjpeg_wrbmp_j_decompress_ptr cinfo,
64 cjpeg_wrbmp_djpeg_dest_ptr dinfo,
65 CJPEG_WRBMP_JDIMENSION rows_supplied ) );
66 /* Finish up at the end of the image. */
67 CJPEG_WRBMP_JMETHOD( void, finish_output,
68 ( cjpeg_wrbmp_j_decompress_ptr cinfo,
69 cjpeg_wrbmp_djpeg_dest_ptr dinfo ) );
70
71 /* Target file spec; filled in by djpeg.c after object is created. */
72 CJPEG_WRBMP_FILE *output_file;
73
74 /* Output pixel-row buffer. Created by module init or start_output.
75 Width is cinfo->output_width * cinfo->output_components;
76 height is buffer_height.
77 */
78 CJPEG_WRBMP_JSAMPARRAY buffer;
79 CJPEG_WRBMP_JDIMENSION buffer_height;
80} ;
81
82
83
84/*
85 cjpeg/djpeg may need to perform extra passes to convert to or from
86 the source/destination file format. The JPEG library does not know
87 about these passes, but we'd like them to be counted by the progress
88 monitor. We use an expanded progress monitor object to hold the
89 additional pass count.
90*/
91
92struct cjpeg_wrbmp_cdjpeg_progress_mgr {
93 struct cjpeg_wrbmp_jpeg_progress_mgr
94 pub; /* fields known to JPEG library */
95 int completed_extra_passes; /* extra passes completed */
96 int total_extra_passes; /* total extra */
97 /* last printed percentage stored here to avoid multiple printouts */
98 int percent_done;
99};
100
101typedef struct cjpeg_wrbmp_cdjpeg_progress_mgr
102 *cjpeg_wrbmp_cd_progress_ptr;
103
104#endif
105
diff --git a/baseline/source/cjpeg_wrbmp/cjpeg_wrbmp.c b/baseline/source/cjpeg_wrbmp/cjpeg_wrbmp.c
new file mode 100644
index 0000000..7bef7ab
--- /dev/null
+++ b/baseline/source/cjpeg_wrbmp/cjpeg_wrbmp.c
@@ -0,0 +1,225 @@
1/*
2
3 This program is part of the TACLeBench benchmark suite.
4 Version V 1.x
5
6 Name: cjpeg_jpeg6b_wrbmp.c
7
8 Author: Thomas G. Lane.
9
10 Function: This file contains routines to write output images in Microsoft "BMP"
11 format (MS Windows 3.x and OS/2 1.x flavors).
12 Either 8-bit colormapped or 24-bit full-color format can be written.
13 No compression is supported.
14
15 These routines may need modification for non-Unix environments or
16 specialized applications. As they stand, they assume output to
17 an ordinary stdio stream.
18
19 Source: Independent JPEG Group's software
20
21 Changes: a brief summary of major functional changes (not formatting)
22
23 License: See the accompanying README file
24
25*/
26
27#include "../extra.h"
28#include "cdjpeg.h"
29
30#ifdef CJPEG_WRBMP_BMP_SUPPORTED
31
32/*
33 Declaration of global variables
34*/
35typedef struct {
36 struct cjpeg_wrbmp_djpeg_dest_struct pub; /* public fields */
37 cjpeg_wrbmp_boolean is_os2; /* saves the OS2 format request flag */
38 cjpeg_wrbmp_jvirt_sarray_ptr
39 whole_image; /* needed to reverse row order */
40 CJPEG_WRBMP_JDIMENSION data_width; /* JSAMPLEs per row */
41 CJPEG_WRBMP_JDIMENSION
42 row_width; /* physical width of one row in the BMP file */
43 int pad_bytes; /* number of padding bytes needed per row */
44 CJPEG_WRBMP_JDIMENSION
45 cur_output_row; /* next row# to write to virtual array */
46} cjpeg_wrbmp_bmp_dest_struct;
47
48typedef cjpeg_wrbmp_bmp_dest_struct *cjpeg_wrbmp_bmp_dest_ptr;
49extern unsigned char cjpeg_wrbmp_colormap[3][256];
50unsigned char cjpeg_wrbmp_output_array[6144];
51unsigned char *cjpeg_wrbmp_jpeg_stream /*= cjpeg_jpeg6b_wrbmp_output_array*/;
52int cjpeg_wrbmp_checksum;
53
54struct cjpeg_wrbmp_jpeg_decompress_struct
55 cjpeg_wrbmp_jpeg_dec_1;
56struct cjpeg_wrbmp_jpeg_decompress_struct
57 cjpeg_wrbmp_jpeg_dec_2;
58struct cjpeg_wrbmp_djpeg_dest_struct
59 cjpeg_wrbmp_djpeg_dest;
60cjpeg_wrbmp_bmp_dest_struct cjpeg_wrbmp_bmp_dest;
61
62/*
63 Forward declaration of functions
64*/
65void cjpeg_wrbmp_initInput( void );
66void cjpeg_wrbmp_finish_output_bmp( cjpeg_wrbmp_j_decompress_ptr cinfo);
67void cjpeg_wrbmp_write_colormap( cjpeg_wrbmp_j_decompress_ptr
68 cinfo,
69 int map_colors, int map_entry_size,
70 int cMap );
71int cjpeg_wrbmp_putc_modified( int character );
72void cjpeg_wrbmp_init();
73void cjpeg_wrbmp_main();
74int cjpeg_wrbmp_return();
75//int main();
76
77/*
78 Initialization functions
79*/
80void cjpeg_wrbmp_init()
81{
82 cjpeg_wrbmp_initInput();
83
84 cjpeg_wrbmp_jpeg_dec_1.progress = 0;
85 cjpeg_wrbmp_jpeg_dec_1.output_height = 30;
86 cjpeg_wrbmp_jpeg_dec_1.actual_number_of_colors = 256;
87 cjpeg_wrbmp_jpeg_dec_1.out_color_components = 2;
88
89 cjpeg_wrbmp_jpeg_dec_2.progress = 0;
90 cjpeg_wrbmp_jpeg_dec_2.output_height = 30;
91 cjpeg_wrbmp_jpeg_dec_2.actual_number_of_colors = 256;
92 cjpeg_wrbmp_jpeg_dec_2.out_color_components = 3;
93
94 cjpeg_wrbmp_jpeg_stream = cjpeg_wrbmp_output_array;
95
96 cjpeg_wrbmp_checksum = 0;
97}
98
99/*
100 Calculation functions
101*/
102int cjpeg_wrbmp_putc_modified( int character )
103{
104 *( cjpeg_wrbmp_jpeg_stream ) = character;
105
106 ++cjpeg_wrbmp_jpeg_stream;
107
108 cjpeg_wrbmp_checksum += character;
109
110 return character;
111}
112
113void cjpeg_wrbmp_finish_output_bmp( cjpeg_wrbmp_j_decompress_ptr cinfo )
114{
115 CJPEG_WRBMP_JDIMENSION row;
116 cjpeg_wrbmp_cd_progress_ptr progress =
117 ( cjpeg_wrbmp_cd_progress_ptr ) cinfo->progress;
118
119 // Write the file body from our virtual array
120 _Pragma( "loopbound min 30 max 30" )
121 for ( row = cinfo->output_height; row > 0; --row ) {
122 if ( progress != 0 ) {
123 progress->pub.pass_counter = ( long )( cinfo->output_height - row );
124 progress->pub.pass_limit = ( long ) cinfo->output_height;
125 }
126 }
127
128 if ( progress != 0 )
129 progress->completed_extra_passes++;
130 }
131
132void cjpeg_wrbmp_write_colormap( cjpeg_wrbmp_j_decompress_ptr
133 cinfo,
134 int map_colors, int map_entry_size, int cMap )
135{
136
137 int num_colors = cinfo->actual_number_of_colors;
138 int i;
139
140 if ( cMap != 0 ) {
141
142 if ( cinfo->out_color_components == 3 ) {
143 // Normal case with RGB colormap
144 _Pragma( "loopbound min 256 max 256" )
145 for ( i = 0; i < num_colors; i++ ) {
146 cjpeg_wrbmp_putc_modified( CJPEG_WRBMP_GETJSAMPLE(
147 cjpeg_wrbmp_colormap[2][i] ) );
148 cjpeg_wrbmp_putc_modified( CJPEG_WRBMP_GETJSAMPLE(
149 cjpeg_wrbmp_colormap[1][i] ) );
150 cjpeg_wrbmp_putc_modified( CJPEG_WRBMP_GETJSAMPLE(
151 cjpeg_wrbmp_colormap[0][i] ) );
152
153 if ( map_entry_size == 4 )
154 cjpeg_wrbmp_putc_modified( 0 );
155 }
156 } else {
157 // Grayscale colormap (only happens with grayscale quantization)
158 _Pragma( "loopbound min 256 max 256" )
159 for ( i = 0; i < num_colors; i++ ) {
160
161 cjpeg_wrbmp_putc_modified( CJPEG_WRBMP_GETJSAMPLE(
162 cjpeg_wrbmp_colormap[2][i] ) );
163 cjpeg_wrbmp_putc_modified( CJPEG_WRBMP_GETJSAMPLE(
164 cjpeg_wrbmp_colormap[1][i] ) );
165 cjpeg_wrbmp_putc_modified( CJPEG_WRBMP_GETJSAMPLE(
166 cjpeg_wrbmp_colormap[0][i] ) );
167
168 if ( map_entry_size == 4 )
169 cjpeg_wrbmp_putc_modified( 0 );
170 }
171 }
172 } else {
173 // If no colormap, must be grayscale data. Generate a linear "map".
174 _Pragma( "loopbound min 256 max 256" )
175 for ( i = 0; i < 256; i++ ) {
176 cjpeg_wrbmp_putc_modified( i );
177 cjpeg_wrbmp_putc_modified( i );
178 cjpeg_wrbmp_putc_modified( i );
179
180 if ( map_entry_size == 4 )
181 cjpeg_wrbmp_putc_modified( 0 );
182 }
183 }
184
185 // Pad colormap with zeros to ensure specified number of colormap entries.
186 _Pragma( "loopbound min 512 max 512" )
187 for ( ; i < map_colors; i++ ) {
188 cjpeg_wrbmp_putc_modified( 0 );
189 cjpeg_wrbmp_putc_modified( 0 );
190 cjpeg_wrbmp_putc_modified( 0 );
191
192 if ( map_entry_size == 4 )
193 cjpeg_wrbmp_putc_modified( 0 );
194 }
195}
196
197void _Pragma( "entrypoint" ) cjpeg_wrbmp_main()
198{
199 cjpeg_wrbmp_finish_output_bmp( &cjpeg_wrbmp_jpeg_dec_1);
200 cjpeg_wrbmp_write_colormap( &cjpeg_wrbmp_jpeg_dec_1, 768, 4, 1 );
201
202 cjpeg_wrbmp_finish_output_bmp( &cjpeg_wrbmp_jpeg_dec_2 );
203 cjpeg_wrbmp_write_colormap( &cjpeg_wrbmp_jpeg_dec_2, 768, 4, 1 );
204}
205
206int cjpeg_wrbmp_return()
207{
208 return (cjpeg_wrbmp_checksum + (-209330) ) != 0;
209}
210
211int main(int argc, char **argv)
212{
213 SET_UP
214 for (jobsComplete=-1; jobsComplete<maxJobs; jobsComplete++){
215 START_LOOP
216 cjpeg_wrbmp_init();
217 cjpeg_wrbmp_main();
218 STOP_LOOP
219 }
220 WRITE_TO_FILE
221 return ( cjpeg_wrbmp_return() );
222}
223
224#endif /* BMP_SUPPORTED */
225
diff --git a/baseline/source/cjpeg_wrbmp/input.c b/baseline/source/cjpeg_wrbmp/input.c
new file mode 100644
index 0000000..08dec28
--- /dev/null
+++ b/baseline/source/cjpeg_wrbmp/input.c
@@ -0,0 +1,79 @@
1/*
2
3 This program is part of the TACLeBench benchmark suite.
4 Version V 1.x
5
6 Name: input.c
7
8 Author: Thomas G. Lane.
9
10 Function: Input variables for the cjpeg_jpeg6b_wrbmp.c
11
12 Source: Independent JPEG Group's software
13
14 Changes: no major functional changes
15
16 License: See the accompanying README file
17
18*/
19
20unsigned char cjpeg_wrbmp_colormap[3][256];
21
22void cjpeg_wrbmp_initInput( void )
23{
24 int i, j;
25 volatile unsigned char tmp[3][256] = {{44 , 105 , 153 , 71 , 151 , 160 , 188 , 90 , 209 , 131 ,
26 221 , 114 , 93 , 124 , 208 , 207 , 218 , 54 , 145 , 113 , 153 , 239 , 226 , 83 , 243 , 151 ,
27 98 , 67 , 114 , 153 , 83 , 186 , 116 , 72 , 188 , 190 , 109 , 162 , 218 , 133 , 208 , 209,
28 115 , 251 , 135 , 89 , 143 , 226 , 230 , 246 , 152 , 243 , 152 , 115 , 180 , 78 , 246 , 164,
29 250 , 117 , 76 , 150 , 152 , 188 , 251 , 195 , 127 , 111 , 225 , 208 , 94 , 93 , 143 , 131,
30 201 , 211 , 99 , 93 , 190 , 157 , 121 , 240 , 117 , 185 , 167 , 137 , 152 , 188 , 250 , 59,
31 248 , 245 , 115 , 240 , 192 , 209 , 143 , 136 , 98 , 224 , 167 , 135 , 132 , 189 , 72 , 249,
32 205 , 44 , 106 , 96 , 147 , 247 , 249 , 228 , 224 , 249 , 190 , 112 , 135 , 168 , 95 , 205,
33 171 , 58 , 112 , 79 , 206 , 75 , 242 , 188 , 189 , 225 , 185 , 81 , 221 , 153 , 244 , 198,
34 171 , 163 , 159 , 209 , 240 , 138 , 148 , 207 , 166 , 192 , 188 , 151 , 98 , 190 , 209 , 154,
35 225 , 72 , 96 , 249 , 191 , 223 , 207 , 163 , 207 , 133 , 251 , 183 , 135 , 137 , 159 , 247,
36 167 , 83 , 123 , 199 , 203 , 144 , 142 , 237 , 77 , 128 , 117 , 169 , 202 , 136 , 128 , 188,
37 168 , 55 , 222 , 169 , 116 , 60 , 75 , 175 , 102 , 217 , 168 , 185 , 189 , 225 , 125 , 192,
38 112 , 111 , 168 , 239 , 225 , 168 , 97 , 129 , 190 , 175 , 169 , 225 , 170 , 226 , 225 , 226,
39 224 , 134 , 106 , 250 , 222 , 148 , 241 , 168 , 166 , 160 , 95 , 190 , 102 , 180 , 193 , 111,
40 151 , 165 , 171 , 200 , 52 , 134 , 169 , 223 , 166 , 225 , 169 , 111 , 185 , 109 , 56 , 244,
41 157 , 250 , 226 , 231 , 119 , 188 },{42 , 143 , 46 , 91 , 84 , 201 , 140 , 91 , 82 , 140 , 31,
42 88 , 44 , 171 , 57 , 115 , 206 , 59 , 145 , 117 , 116 , 53 , 232 , 117 , 80 , 60 , 66 , 64,
43 117 , 174 , 89 , 178 , 147 , 63 , 83 , 59 , 103 , 139 , 211 , 64 , 68 , 98 , 118 , 53 , 119,
44 90 , 161 , 232 , 171 , 98 , 176 , 236 , 118 , 157 , 180 , 77 , 114 , 88 , 28 , 119 , 40 , 97,
45 69 , 189 , 252 , 225 , 119 , 96 , 219 , 84 , 82 , 105 , 158 , 49 , 200 , 61 , 117 , 78 , 63,
46 147 , 140 , 69 , 108 , 90 , 161 , 105 , 190 , 114 , 84 , 76 , 70 , 43 , 156 , 222 , 96 , 72,
47 143 , 90 , 105 , 56 , 144 , 78 , 129 , 35 , 66 , 101 , 100 , 49 , 105 , 130 , 160 , 239 , 129,
48 141 , 83 , 43 , 68 , 106 , 132 , 83 , 92 , 130 , 175 , 63 , 131 , 79 , 192 , 105 , 57 , 160,
49 118 , 162 , 141 , 78 , 192 , 128 , 206 , 201 , 203 , 162 , 159 , 163 , 221 , 183 , 157 , 177,
50 189 , 192 , 129 , 130 , 54 , 104 , 45 , 101 , 252 , 52 , 91 , 177 , 49 , 221 , 116 , 111 , 143,
51 92 , 142 , 159 , 131 , 173 , 61 , 159 , 173 , 81 , 129 , 214 , 213 , 145 , 143 , 232 , 67,
52 145 , 130 , 99 , 237 , 110 , 160 , 131 , 67 , 50 , 129 , 131 , 127 , 76 , 92 , 203 , 96 , 206,
53 176 , 180 , 85 , 99 , 162 , 118 , 64 , 78 , 190 , 191 , 45 , 101 , 129 , 58 , 72 , 211 , 49,
54 115 , 115 , 85 , 61 , 100 , 116 , 107 , 143 , 117 , 219 , 154 , 225 , 174 , 160 , 163 , 119,
55 190 , 106 , 186 , 49 , 45 , 177 , 147 , 85 , 138 , 42 , 174 , 59 , 68 , 120 , 71 , 129 , 56,
56 149 , 97 , 68 , 88 , 148 , 60 , 239 , 179 , 149 , 104},{44 , 76 , 37 , 56 , 76 , 152 , 122,
57 153 , 77 , 191 , 41 , 76 , 39 , 97 , 46 , 109 , 172 , 43 , 116 , 91 , 102 , 49 , 201 , 68 , 88,
58 45 , 53 , 95 , 160 , 175 , 102 , 164 , 116 , 50 , 76 , 45 , 86 , 189 , 216 , 50 , 61 , 93 , 196,
59 91 , 100 , 58 , 116 , 223 , 166 , 102 , 126 , 221 , 158 , 86 , 235 , 55 , 113 , 120 , 52 , 115,
60 42 , 86 , 55 , 165 , 247 , 194 , 160 , 108 , 170 , 108 , 98 , 77 , 168 , 42 , 179 , 70 , 96,
61 62 , 71 , 216 , 100 , 71 , 155 , 121 , 146 , 86 , 134 , 105 , 114 , 49 , 100 , 50 , 119 , 218,
62 95 , 81 , 220 , 78 , 102 , 50 , 125 , 68 , 170 , 36 , 62 , 119 , 129 , 44 , 151 , 72 , 143,
63 241 , 131 , 137 , 79 , 73 , 55 , 122 , 204 , 73 , 74 , 131 , 221 , 53 , 89 , 72 , 178 , 60 , 64,
64 145 , 157 , 156 , 177 , 101 , 180 , 112 , 194 , 206 , 178 , 168 , 221 , 153 , 201 , 119 , 222,
65 165 , 188 , 212 , 117 , 180 , 45 , 134 , 42 , 130 , 229 , 47 , 107 , 172 , 40 , 221 , 146,
66 132 , 138 , 110 , 144 , 188 , 112 , 132 , 64 , 162 , 145 , 140 , 200 , 181 , 215 , 139 , 197,
67 183 , 106 , 126 , 116 , 89 , 204 , 152 , 123 , 161 , 52 , 46 , 131 , 167 , 173 , 62 , 70 , 151,
68 151 , 197 , 177 , 184 , 96 , 97 , 101 , 130 , 54 , 63 , 141 , 185 , 45 , 126 , 96 , 46 , 71,
69 172 , 38 , 114 , 100 , 106 , 69 , 118 , 138 , 127 , 99 , 127 , 198 , 204 , 242 , 248 , 197,
70 241 , 74 , 189 , 178 , 252 , 65 , 45 , 148 , 145 , 97 , 168 , 45 , 111 , 43 , 64 , 164 , 80,
71 113 , 47 , 136 , 83 , 42 , 91 , 197 , 95 , 222 , 167 , 92 , 98}};
72
73 for ( i = 0; i < 3; i++ ) {
74 for ( j = 0; j < 256; j++ )
75 {
76 cjpeg_wrbmp_colormap[i][j] = tmp[i][j];
77 }
78 }
79}
diff --git a/baseline/source/cjpeg_wrbmp/jconfig.h b/baseline/source/cjpeg_wrbmp/jconfig.h
new file mode 100644
index 0000000..9c73988
--- /dev/null
+++ b/baseline/source/cjpeg_wrbmp/jconfig.h
@@ -0,0 +1,65 @@
1/*
2
3 This program is part of the TACLeBench benchmark suite.
4 Version V 1.x
5
6 Name: cderror.h
7
8 Author: Thomas G. Lane.
9
10 This file is part of the Independent JPEG Group's software.
11 For conditions of distribution and use, see the accompanying README file.
12
13 Source: Independent JPEG Group's software
14
15 Changes: no major functional changes
16
17 License: See the accompanying README files
18*/
19
20#ifndef JCONFIG_H
21#define JCONFIG_H
22
23#define CJPEG_WRBMP_HAVE_PROTOTYPES
24#define CJPEG_WRBMP_HAVE_UNSIGNED_CHAR
25#define CJPEG_WRBMP_HAVE_UNSIGNED_SHORT
26#undef void
27#undef const
28#undef CHAR_IS_UNSIGNED
29#define CJPEG_WRBMP_HAVE_STDDEF_H
30#define CJPEG_WRBMP_HAVE_STDLIB_H
31#undef NEED_BSD_STRINGS
32#undef NEED_SYS_TYPES_H
33#undef CJPEG_JPEG6B_WRBMP_NEED_FAR_POINTERS
34#undef NEED_SHORT_EXTERNAL_NAMES
35/* Define this if you get warnings about undefined structures. */
36#undef INCOMPLETE_TYPES_BROKEN
37
38#ifdef CJPEG_JPEG6B_WRBMP_JPEG_INTERNALS
39
40#undef RIGHT_SHIFT_IS_UNSIGNED
41#define INLINE __inline__
42/* These are for configuring the JPEG memory manager. */
43#undef DEFAULT_MAX_MEM
44#undef NO_MKTEMP
45
46#endif /* JPEG_INTERNALS */
47
48#ifdef CJPEG_WRBMP_JPEG_CJPEG_DJPEG
49
50#define CJPEG_WRBMP_BMP_SUPPORTED /* BMP image file format */
51#define CJPEG_WRBMP_GIF_SUPPORTED /* GIF image file format */
52#define CJPEG_WRBMP_PPM_SUPPORTED /* PBMPLUS PPM/PGM image file format */
53#undef RLE_SUPPORTED /* Utah RLE image file format */
54#define CJPEG_WRBMP_TARGA_SUPPORTED /* Targa image file format */
55
56#undef TWO_FILE_COMMANDLINE
57#undef NEED_SIGNAL_CATCHER
58#undef DONT_USE_B_MODE
59
60/* Define this if you want percent-done progress reports from cjpeg/djpeg. */
61#undef PROGRESS_REPORT
62
63#endif /* JPEG_CJPEG_DJPEG */
64
65#endif
diff --git a/baseline/source/cjpeg_wrbmp/jerror.h b/baseline/source/cjpeg_wrbmp/jerror.h
new file mode 100644
index 0000000..1dc2798
--- /dev/null
+++ b/baseline/source/cjpeg_wrbmp/jerror.h
@@ -0,0 +1,203 @@
1/*
2
3 This program is part of the TACLeBench benchmark suite.
4 Version V 1.x
5
6 Name: jerror.h
7
8 Author: Thomas G. Lane.
9
10 This file defines the error and message codes for the JPEG library.
11 Edit this file to add new codes, or to translate the message strings to
12 some other language.
13 A set of error-reporting macros are defined too. Some applications using
14 the JPEG library may wish to include this file to get the error codes
15 sand/or the macros.
16
17 Source: Independent JPEG Group's software
18
19 Changes: no major functional changes
20
21 License: See the accompanying README file
22 */
23
24/*
25 To define the enum list of message codes, include this file without
26 defining macro JMESSAGE. To create a message string table, include it
27 again with a suitable JMESSAGE definition (see jerror.c for an example).
28*/
29#ifndef CJPEG_WRBMP_JMESSAGE
30#ifndef JERROR_H
31/* First time through, define the enum list */
32#define CJPEG_WRBMP_JMAKE_ENUM_LIST
33#else
34/* Repeated inclusions of this file are no-ops unless JMESSAGE is defined */
35#define CJPEG_WRBMP_JMESSAGE(code,string)
36#endif /* JERROR_H */
37#endif /* JMESSAGE */
38
39#ifdef CJPEG_WRBMP_JMAKE_ENUM_LIST
40
41typedef enum {
42
43#define CJPEG_WRBMP_JMESSAGE(code,string) code ,
44
45#endif /* JMAKE_ENUM_LIST */
46
47 CJPEG_WRBMP_JMESSAGE( JMSG_NOMESSAGE, "Bogus message code %d" ) /* Must be first entry! */
48
49 /* For maintenance convenience, list is alphabetical by message code name */
50 CJPEG_WRBMP_JMESSAGE( JERR_ARITH_NOTIMPL,
51 "Sorry, there are legal restrictions on arithmetic coding" )
52 CJPEG_WRBMP_JMESSAGE( JERR_BAD_ALIGN_TYPE, "ALIGN_TYPE is wrong, please fix" )
53 CJPEG_WRBMP_JMESSAGE( JERR_BAD_ALLOC_CHUNK, "MAX_ALLOC_CHUNK is wrong, please fix" )
54 CJPEG_WRBMP_JMESSAGE( JERR_BAD_BUFFER_MODE, "Bogus buffer control mode" )
55 CJPEG_WRBMP_JMESSAGE( JERR_BAD_COMPONENT_ID, "Invalid component ID %d in SOS" )
56 CJPEG_WRBMP_JMESSAGE( JERR_BAD_DCT_COEF, "DCT coefficient out of range" )
57 CJPEG_WRBMP_JMESSAGE( JERR_BAD_DCTSIZE, "IDCT output block size %d not supported" )
58 CJPEG_WRBMP_JMESSAGE( JERR_BAD_HUFF_TABLE, "Bogus Huffman table definition" )
59 CJPEG_WRBMP_JMESSAGE( JERR_BAD_IN_COLORSPACE, "Bogus input colorspace" )
60 CJPEG_WRBMP_JMESSAGE( JERR_BAD_J_COLORSPACE, "Bogus JPEG colorspace" )
61 CJPEG_WRBMP_JMESSAGE( JERR_BAD_LENGTH, "Bogus marker length" )
62 CJPEG_WRBMP_JMESSAGE( JERR_BAD_LIB_VERSION,
63 "Wrong JPEG library version: library is %d, caller expects %d" )
64 CJPEG_WRBMP_JMESSAGE( JERR_BAD_MCU_SIZE, "Sampling factors too large for interleaved scan" )
65 CJPEG_WRBMP_JMESSAGE( JERR_BAD_POOL_ID, "Invalid memory pool code %d" )
66 CJPEG_WRBMP_JMESSAGE( JERR_BAD_PRECISION, "Unsupported JPEG data precision %d" )
67 CJPEG_WRBMP_JMESSAGE( JERR_BAD_PROGRESSION,
68 "Invalid progressive parameters Ss=%d Se=%d Ah=%d Al=%d" )
69 CJPEG_WRBMP_JMESSAGE( JERR_BAD_PROG_SCRIPT,
70 "Invalid progressive parameters at scan script entry %d" )
71 CJPEG_WRBMP_JMESSAGE( JERR_BAD_SAMPLING, "Bogus sampling factors" )
72 CJPEG_WRBMP_JMESSAGE( JERR_BAD_SCAN_SCRIPT, "Invalid scan script at entry %d" )
73 CJPEG_WRBMP_JMESSAGE( JERR_BAD_STATE, "Improper call to JPEG library in state %d" )
74 CJPEG_WRBMP_JMESSAGE( JERR_BAD_STRUCT_SIZE,
75 "JPEG parameter struct mismatch: library thinks size is %u, caller expects %u" )
76 CJPEG_WRBMP_JMESSAGE( JERR_BAD_VIRTUAL_ACCESS, "Bogus virtual array access" )
77 CJPEG_WRBMP_JMESSAGE( JERR_BUFFER_SIZE, "Buffer passed to JPEG library is too small" )
78 CJPEG_WRBMP_JMESSAGE( JERR_CANT_SUSPEND, "Suspension not allowed here" )
79 CJPEG_WRBMP_JMESSAGE( JERR_CCIR601_NOTIMPL, "CCIR601 sampling not implemented yet" )
80 CJPEG_WRBMP_JMESSAGE( JERR_COMPONENT_COUNT, "Too many color components: %d, max %d" )
81 CJPEG_WRBMP_JMESSAGE( JERR_CONVERSION_NOTIMPL, "Unsupported color conversion request" )
82 CJPEG_WRBMP_JMESSAGE( JERR_DAC_INDEX, "Bogus DAC index %d" )
83 CJPEG_WRBMP_JMESSAGE( JERR_DAC_VALUE, "Bogus DAC value 0x%x" )
84 CJPEG_WRBMP_JMESSAGE( JERR_DHT_INDEX, "Bogus DHT index %d" )
85 CJPEG_WRBMP_JMESSAGE( JERR_DQT_INDEX, "Bogus DQT index %d" )
86 CJPEG_WRBMP_JMESSAGE( JERR_EMPTY_IMAGE, "Empty JPEG image (DNL not supported)" )
87 CJPEG_WRBMP_JMESSAGE( JERR_EMS_READ, "Read from EMS failed" )
88 CJPEG_WRBMP_JMESSAGE( JERR_EMS_WRITE, "Write to EMS failed" )
89 CJPEG_WRBMP_JMESSAGE( JERR_EOI_EXPECTED, "Didn't expect more than one scan" )
90 CJPEG_WRBMP_JMESSAGE( JERR_FILE_READ, "Input file read error" )
91 CJPEG_WRBMP_JMESSAGE( JERR_FILE_WRITE, "Output file write error --- out of disk space?" )
92 CJPEG_WRBMP_JMESSAGE( JERR_FRACT_SAMPLE_NOTIMPL, "Fractional sampling not implemented yet" )
93 CJPEG_WRBMP_JMESSAGE( JERR_HUFF_CLEN_OVERFLOW, "Huffman code size table overflow" )
94 CJPEG_WRBMP_JMESSAGE( JERR_HUFF_MISSING_CODE, "Missing Huffman code table entry" )
95 CJPEG_WRBMP_JMESSAGE( JERR_IMAGE_TOO_BIG, "Maximum supported image dimension is %u pixels" )
96 CJPEG_WRBMP_JMESSAGE( JERR_INPUT_EMPTY, "Empty input file" )
97 CJPEG_WRBMP_JMESSAGE( JERR_INPUT_EOF, "Premature end of input file" )
98 CJPEG_WRBMP_JMESSAGE( JERR_MISMATCHED_QUANT_TABLE,
99 "Cannot transcode due to multiple use of quantization table %d" )
100 CJPEG_WRBMP_JMESSAGE( JERR_MISSING_DATA, "Scan script does not transmit all data" )
101 CJPEG_WRBMP_JMESSAGE( JERR_MODE_CHANGE, "Invalid color quantization mode change" )
102 CJPEG_WRBMP_JMESSAGE( JERR_NOTIMPL, "Not implemented yet" )
103 CJPEG_WRBMP_JMESSAGE( JERR_NOT_COMPILED, "Requested feature was omitted at compile time" )
104 CJPEG_WRBMP_JMESSAGE( JERR_NO_BACKING_STORE, "Backing store not supported" )
105 CJPEG_WRBMP_JMESSAGE( JERR_NO_HUFF_TABLE, "Huffman table 0x%02x was not defined" )
106 CJPEG_WRBMP_JMESSAGE( JERR_NO_IMAGE, "JPEG datastream contains no image" )
107 CJPEG_WRBMP_JMESSAGE( JERR_NO_QUANT_TABLE, "Quantization table 0x%02x was not defined" )
108 CJPEG_WRBMP_JMESSAGE( JERR_NO_SOI, "Not a JPEG file: starts with 0x%02x 0x%02x" )
109 CJPEG_WRBMP_JMESSAGE( JERR_OUT_OF_MEMORY, "Insufficient memory (case %d)" )
110 CJPEG_WRBMP_JMESSAGE( JERR_QUANT_COMPONENTS,
111 "Cannot quantize more than %d color components" )
112 CJPEG_WRBMP_JMESSAGE( JERR_QUANT_FEW_COLORS, "Cannot quantize to fewer than %d colors" )
113 CJPEG_WRBMP_JMESSAGE( JERR_QUANT_MANY_COLORS, "Cannot quantize to more than %d colors" )
114 CJPEG_WRBMP_JMESSAGE( JERR_SOF_DUPLICATE, "Invalid JPEG file structure: two SOF markers" )
115 CJPEG_WRBMP_JMESSAGE( JERR_SOF_NO_SOS, "Invalid JPEG file structure: missing SOS marker" )
116 CJPEG_WRBMP_JMESSAGE( JERR_SOF_UNSUPPORTED, "Unsupported JPEG process: SOF type 0x%02x" )
117 CJPEG_WRBMP_JMESSAGE( JERR_SOI_DUPLICATE, "Invalid JPEG file structure: two SOI markers" )
118 CJPEG_WRBMP_JMESSAGE( JERR_SOS_NO_SOF, "Invalid JPEG file structure: SOS before SOF" )
119 CJPEG_WRBMP_JMESSAGE( JERR_TFILE_CREATE, "Failed to create temporary file %s" )
120 CJPEG_WRBMP_JMESSAGE( JERR_TFILE_READ, "Read failed on temporary file" )
121 CJPEG_WRBMP_JMESSAGE( JERR_TFILE_SEEK, "Seek failed on temporary file" )
122 CJPEG_WRBMP_JMESSAGE( JERR_TFILE_WRITE,
123 "Write failed on temporary file --- out of disk space?" )
124 CJPEG_WRBMP_JMESSAGE( JERR_TOO_LITTLE_DATA, "Application transferred too few scanlines" )
125 CJPEG_WRBMP_JMESSAGE( JERR_UNKNOWN_MARKER, "Unsupported marker type 0x%02x" )
126 CJPEG_WRBMP_JMESSAGE( JERR_VIRTUAL_BUG, "Virtual array controller messed up" )
127 CJPEG_WRBMP_JMESSAGE( JERR_WIDTH_OVERFLOW, "Image too wide for this implementation" )
128 CJPEG_WRBMP_JMESSAGE( JERR_XMS_READ, "Read from XMS failed" )
129 CJPEG_WRBMP_JMESSAGE( JERR_XMS_WRITE, "Write to XMS failed" )
130 CJPEG_WRBMP_JMESSAGE( JMSG_COPYRIGHT, JCOPYRIGHT )
131 CJPEG_WRBMP_JMESSAGE( JMSG_VERSION, JVERSION )
132 CJPEG_WRBMP_JMESSAGE( JTRC_16BIT_TABLES,
133 "Caution: quantization tables are too coarse for baseline JPEG" )
134 CJPEG_WRBMP_JMESSAGE( JTRC_ADOBE,
135 "Adobe APP14 marker: version %d, flags 0x%04x 0x%04x, transform %d" )
136 CJPEG_WRBMP_JMESSAGE( JTRC_APP0, "Unknown APP0 marker (not JFIF), length %u" )
137 CJPEG_WRBMP_JMESSAGE( JTRC_APP14, "Unknown APP14 marker (not Adobe), length %u" )
138 CJPEG_WRBMP_JMESSAGE( JTRC_DAC, "Define Arithmetic Table 0x%02x: 0x%02x" )
139 CJPEG_WRBMP_JMESSAGE( JTRC_DHT, "Define Huffman Table 0x%02x" )
140 CJPEG_WRBMP_JMESSAGE( JTRC_DQT, "Define Quantization Table %d precision %d" )
141 CJPEG_WRBMP_JMESSAGE( JTRC_DRI, "Define Restart Interval %u" )
142 CJPEG_WRBMP_JMESSAGE( JTRC_EMS_CLOSE, "Freed EMS handle %u" )
143 CJPEG_WRBMP_JMESSAGE( JTRC_EMS_OPEN, "Obtained EMS handle %u" )
144 CJPEG_WRBMP_JMESSAGE( JTRC_EOI, "End Of Image" )
145 CJPEG_WRBMP_JMESSAGE( JTRC_HUFFBITS, " %3d %3d %3d %3d %3d %3d %3d %3d" )
146 CJPEG_WRBMP_JMESSAGE( JTRC_JFIF, "JFIF APP0 marker: version %d.%02d, density %dx%d %d" )
147 CJPEG_WRBMP_JMESSAGE( JTRC_JFIF_BADTHUMBNAILSIZE,
148 "Warning: thumbnail image size does not match data length %u" )
149 CJPEG_WRBMP_JMESSAGE( JTRC_JFIF_EXTENSION,
150 "JFIF extension marker: type 0x%02x, length %u" )
151 CJPEG_WRBMP_JMESSAGE( JTRC_JFIF_THUMBNAIL, " with %d x %d thumbnail image" )
152 CJPEG_WRBMP_JMESSAGE( JTRC_MISC_MARKER, "Miscellaneous marker 0x%02x, length %u" )
153 CJPEG_WRBMP_JMESSAGE( JTRC_PARMLESS_MARKER, "Unexpected marker 0x%02x" )
154 CJPEG_WRBMP_JMESSAGE( JTRC_QUANTVALS, " %4u %4u %4u %4u %4u %4u %4u %4u" )
155 CJPEG_WRBMP_JMESSAGE( JTRC_QUANT_3_NCOLORS, "Quantizing to %d = %d*%d*%d colors" )
156 CJPEG_WRBMP_JMESSAGE( JTRC_QUANT_NCOLORS, "Quantizing to %d colors" )
157 CJPEG_WRBMP_JMESSAGE( JTRC_QUANT_SELECTED, "Selected %d colors for quantization" )
158 CJPEG_WRBMP_JMESSAGE( JTRC_RECOVERY_ACTION, "At marker 0x%02x, recovery action %d" )
159 CJPEG_WRBMP_JMESSAGE( JTRC_RST, "RST%d" )
160 CJPEG_WRBMP_JMESSAGE( JTRC_SMOOTH_NOTIMPL,
161 "Smoothing not supported with nonstandard sampling ratios" )
162 CJPEG_WRBMP_JMESSAGE( JTRC_SOF, "Start Of Frame 0x%02x: width=%u, height=%u, components=%d" )
163 CJPEG_WRBMP_JMESSAGE( JTRC_SOF_COMPONENT, " Component %d: %dhx%dv q=%d" )
164 CJPEG_WRBMP_JMESSAGE( JTRC_SOI, "Start of Image" )
165 CJPEG_WRBMP_JMESSAGE( JTRC_SOS, "Start Of Scan: %d components" )
166 CJPEG_WRBMP_JMESSAGE( JTRC_SOS_COMPONENT, " Component %d: dc=%d ac=%d" )
167 CJPEG_WRBMP_JMESSAGE( JTRC_SOS_PARAMS, " Ss=%d, Se=%d, Ah=%d, Al=%d" )
168 CJPEG_WRBMP_JMESSAGE( JTRC_TFILE_CLOSE, "Closed temporary file %s" )
169 CJPEG_WRBMP_JMESSAGE( JTRC_TFILE_OPEN, "Opened temporary file %s" )
170 CJPEG_WRBMP_JMESSAGE( JTRC_THUMB_JPEG,
171 "JFIF extension marker: JPEG-compressed thumbnail image, length %u" )
172 CJPEG_WRBMP_JMESSAGE( JTRC_THUMB_PALETTE,
173 "JFIF extension marker: palette thumbnail image, length %u" )
174 CJPEG_WRBMP_JMESSAGE( JTRC_THUMB_RGB,
175 "JFIF extension marker: RGB thumbnail image, length %u" )
176 CJPEG_WRBMP_JMESSAGE( JTRC_UNKNOWN_IDS,
177 "Unrecognized component IDs %d %d %d, assuming YCbCr" )
178 CJPEG_WRBMP_JMESSAGE( JTRC_XMS_CLOSE, "Freed XMS handle %u" )
179 CJPEG_WRBMP_JMESSAGE( JTRC_XMS_OPEN, "Obtained XMS handle %u" )
180 CJPEG_WRBMP_JMESSAGE( JWRN_ADOBE_XFORM, "Unknown Adobe color transform code %d" )
181 CJPEG_WRBMP_JMESSAGE( JWRN_BOGUS_PROGRESSION,
182 "Inconsistent progression sequence for component %d coefficient %d" )
183 CJPEG_WRBMP_JMESSAGE( JWRN_EXTRANEOUS_DATA,
184 "Corrupt JPEG data: %u extraneous bytes before marker 0x%02x" )
185 CJPEG_WRBMP_JMESSAGE( JWRN_HIT_MARKER, "Corrupt JPEG data: premature end of data segment" )
186 CJPEG_WRBMP_JMESSAGE( JWRN_HUFF_BAD_CODE, "Corrupt JPEG data: bad Huffman code" )
187 CJPEG_WRBMP_JMESSAGE( JWRN_JFIF_MAJOR, "Warning: unknown JFIF revision number %d.%02d" )
188 CJPEG_WRBMP_JMESSAGE( JWRN_JPEG_EOF, "Premature end of JPEG file" )
189 CJPEG_WRBMP_JMESSAGE( JWRN_MUST_RESYNC,
190 "Corrupt JPEG data: found marker 0x%02x instead of RST%d" )
191 CJPEG_WRBMP_JMESSAGE( JWRN_NOT_SEQUENTIAL, "Invalid SOS parameters for sequential JPEG" )
192 CJPEG_WRBMP_JMESSAGE( JWRN_TOO_MUCH_DATA, "Application transferred too many scanlines" )
193
194 #ifdef CJPEG_WRBMP_JMAKE_ENUM_LIST
195
196 JMSG_LASTMSGCODE
197} CJPEG_WRBMP_J_MESSAGE_CODE;
198
199#undef CJPEG_WRBMP_JMAKE_ENUM_LIST
200 #endif /* JMAKE_ENUM_LIST */
201
202/* Zap JMESSAGE macro so that future re-inclusions do nothing by default */
203#undef CJPEG_WRBMP_JMESSAGE
diff --git a/baseline/source/cjpeg_wrbmp/jmorecfg.h b/baseline/source/cjpeg_wrbmp/jmorecfg.h
new file mode 100644
index 0000000..84ee16a
--- /dev/null
+++ b/baseline/source/cjpeg_wrbmp/jmorecfg.h
@@ -0,0 +1,95 @@
1/*
2
3 This program is part of the TACLeBench benchmark suite.
4 Version V 1.x
5
6 Name: jmorecfg.h
7
8 Author: Thomas G. Lane.
9
10 This file is part of the Independent JPEG Group's software.
11 For conditions of distribution and use, see the accompanying README file.
12
13 This file contains additional configuration options that customize the
14 JPEG software for special applications or support machine-dependent
15 optimizations. Most users will not need to touch this file.
16
17 Source: Independent JPEG Group's software
18
19 Changes: no major functional changes
20
21 License: See the accompanying README file
22*/
23
24#ifndef JMORECFG_H
25#define JMORECFG_H
26
27
28#define CJPEG_WRBMP_GETJSAMPLE(value) ((int) (value))
29
30typedef unsigned char CJPEG_WRBMP_JSAMPLE;
31typedef short CJPEG_WRBMP_JCOEF;
32typedef unsigned char CJPEG_WRBMP_JOCTET;
33
34/* These typedefs are used for various table entries and so forth.
35 They must be at least as wide as specified; but making them too big
36 won't cost a huge amount of memory, so we don't provide special
37 extraction code like we did for JSAMPLE. (In other words, these
38 typedefs live at a different point on the speed/space tradeoff curve.)
39*/
40
41/* UINT8 must hold at least the values 0..255. */
42
43typedef unsigned char CJPEG_WRBMP_UINT8;
44
45
46/* UINT16 must hold at least the values 0..65535. */
47
48typedef unsigned short CJPEG_WRBMP_UINT16;
49
50
51/* INT16 must hold at least the values -32768..32767. */
52
53#ifndef XMD_H /* X11/xmd.h correctly defines INT16 */
54typedef short INT16;
55#endif
56
57/* INT32 must hold at least signed 32-bit values. */
58
59#ifndef XMD_H /* X11/xmd.h correctly defines INT32 */
60typedef long INT32;
61#endif
62
63typedef unsigned int CJPEG_WRBMP_JDIMENSION;
64
65/* This macro is used to declare a "method", that is, a function pointer.
66 We want to supply prototype parameters if the compiler can cope.
67 Note that the arglist parameter must be parenthesized!
68 Again, you can customize this if you need special linkage keywords.
69*/
70
71#define EXTERN(type) extern type
72
73#ifdef CJPEG_WRBMP_HAVE_PROTOTYPES
74#define CJPEG_WRBMP_JMETHOD(type,methodname,arglist) type (*methodname) arglist
75#else
76#define CJPEG_WRBMP_JMETHOD(type,methodname,arglist) type (*methodname) ()
77#endif
78
79
80/* Here is the pseudo-keyword for declaring pointers that must be "far"
81 on 80x86 machines. Most of the specialized coding for 80x86 is handled
82 by just saying "FAR *" where such a pointer is needed. In a few places
83 explicit coding is needed; see uses of the NEED_FAR_POINTERS symbol.
84*/
85
86#ifdef CJPEG_JPEG6B_WRBMP_NEED_FAR_POINTERS
87#define CJPEG_WRBMP_FAR far
88#else
89#define CJPEG_WRBMP_FAR
90#endif
91
92#ifndef CJPEG_JPEG6B_WRBMP_HAVE_BOOLEAN
93typedef int cjpeg_wrbmp_boolean;
94#endif
95#endif
diff --git a/baseline/source/cjpeg_wrbmp/jpeglib.h b/baseline/source/cjpeg_wrbmp/jpeglib.h
new file mode 100644
index 0000000..ab3fba3
--- /dev/null
+++ b/baseline/source/cjpeg_wrbmp/jpeglib.h
@@ -0,0 +1,869 @@
1/*
2
3 This program is part of the TACLeBench benchmark suite.
4 Version V 1.x
5
6 Name: jpeglib.h
7
8 Author: Thomas G. Lane.
9
10 This file is part of the Independent JPEG Group's software.
11 For conditions of distribution and use, see the accompanying README file.
12
13 This file defines the application interface for the JPEG library.
14 Most applications using the library need only include this file,
15 and perhaps jerror.h if they want to know the exact error codes.
16
17 Source: Independent JPEG Group's software
18
19 Changes: no major functional changes
20
21 License: See the accompanying README file
22*/
23
24
25#ifndef JPEGLIB_H
26#define JPEGLIB_H
27
28typedef int CJPEG_WRBMP_FILE;
29typedef unsigned int cjpeg_wrbmp_size_x;
30
31/*
32 First we include the configuration files that record how this
33 installation of the JPEG library is set up. jconfig.h can be
34 generated automatically for many systems. jmorecfg.h contains
35 manual configuration options that most people need not worry about.
36*/
37
38#ifndef JCONFIG_INCLUDED /* in case jinclude.h already did */
39#include "jconfig.h" /* widely used configuration options */
40#endif
41#include "jmorecfg.h" /* seldom changed options */
42
43/* Data structures for images (arrays of samples and of DCT coefficients).
44 On 80x86 machines, the image arrays are too big for near pointers,
45 but the pointer arrays can fit in near memory.
46*/
47
48typedef CJPEG_WRBMP_JSAMPLE CJPEG_WRBMP_FAR
49*CJPEG_WRBMP_JSAMPROW; /* ptr to one image row of pixel samples. */
50typedef CJPEG_WRBMP_JSAMPROW
51*CJPEG_WRBMP_JSAMPARRAY; /* ptr to some rows (a 2-D sample array) */
52typedef CJPEG_WRBMP_JSAMPARRAY
53*CJPEG_WRBMP_JSAMPIMAGE; /* a 3-D sample array: top index is color */
54
55typedef CJPEG_WRBMP_JCOEF
56CJPEG_WRBMP_JBLOCK[64]; /* one block of coefficients */
57typedef CJPEG_WRBMP_JBLOCK CJPEG_WRBMP_FAR
58*CJPEG_WRBMP_JBLOCKROW; /* pointer to one row of coefficient blocks */
59typedef CJPEG_WRBMP_JBLOCKROW
60*CJPEG_WRBMP_JBLOCKARRAY; /* a 2-D array of coefficient blocks */
61typedef CJPEG_WRBMP_JBLOCKARRAY
62*CJPEG_WRBMP_JBLOCKIMAGE; /* a 3-D array of coefficient blocks */
63
64typedef CJPEG_WRBMP_JCOEF CJPEG_WRBMP_FAR
65*JCOEFPTR; /* useful in a couple of places */
66
67
68/* Types for JPEG compression parameters and working tables. */
69
70
71/* DCT coefficient quantization tables. */
72
73typedef struct {
74 /* This array gives the coefficient quantizers in natural array order
75 (not the zigzag order in which they are stored in a JPEG DQT marker).
76 CAUTION: IJG versions prior to v6a kept this array in zigzag order.
77 */
78 CJPEG_WRBMP_UINT16
79 quantval[64]; /* quantization step for each coefficient */
80 /* This field is used only during compression. It's initialized FALSE when
81 the table is created, and set TRUE when it's been output to the file.
82 You could suppress output of a table by setting this to TRUE.
83 (See jpeg_suppress_tables for an example.)
84 */
85 cjpeg_wrbmp_boolean sent_table; /* TRUE when table has been output */
86} CJPEG_WRBMP_JQUANT_TBL;
87
88
89/* Huffman coding tables. */
90
91typedef struct {
92 /* These two fields directly represent the contents of a JPEG DHT marker */
93 CJPEG_WRBMP_UINT8 bits[17]; /* bits[k] = # of symbols with codes of */
94 /* length k bits; bits[0] is unused */
95 CJPEG_WRBMP_UINT8
96 huffval[256]; /* The symbols, in order of incr code length */
97 /* This field is used only during compression. It's initialized FALSE when
98 the table is created, and set TRUE when it's been output to the file.
99 You could suppress output of a table by setting this to TRUE.
100 (See jpeg_suppress_tables for an example.)
101 */
102 cjpeg_wrbmp_boolean sent_table; /* TRUE when table has been output */
103} CJPEG_WRBMP_JHUFF_TBL;
104
105
106/* Basic info about one component (color channel). */
107
108typedef struct {
109 /* These values are fixed over the whole image. */
110 /* For compression, they must be supplied by parameter setup; */
111 /* for decompression, they are read from the SOF marker. */
112 int component_id; /* identifier for this component (0..255) */
113 int component_index; /* its index in SOF or cinfo->comp_info[] */
114 int h_samp_factor; /* horizontal sampling factor (1..4) */
115 int v_samp_factor; /* vertical sampling factor (1..4) */
116 int quant_tbl_no; /* quantization table selector (0..3) */
117 /* These values may vary between scans. */
118 /* For compression, they must be supplied by parameter setup; */
119 /* for decompression, they are read from the SOS marker. */
120 /* The decompressor output side may not use these variables. */
121 int dc_tbl_no; /* DC entropy table selector (0..3) */
122 int ac_tbl_no; /* AC entropy table selector (0..3) */
123
124 /* Remaining fields should be treated as private by applications. */
125
126 /* These values are computed during compression or decompression startup: */
127 /* Component's size in DCT blocks.
128 Any dummy blocks added to complete an MCU are not counted; therefore
129 these values do not depend on whether a scan is interleaved or not.
130 */
131 CJPEG_WRBMP_JDIMENSION width_in_blocks;
132 CJPEG_WRBMP_JDIMENSION height_in_blocks;
133 /* Size of a DCT block in samples. Always DCTSIZE for compression.
134 For decompression this is the size of the output from one DCT block,
135 reflecting any scaling we choose to apply during the IDCT step.
136 Values of 1,2,4,8 are likely to be supported. Note that different
137 components may receive different IDCT scalings.
138 */
139 int DCT_scaled_size;
140 /* The downsampled dimensions are the component's actual, unpadded number
141 of samples at the main buffer (preprocessing/compression interface), thus
142 downsampled_width = ceil(image_width * Hi/Hmax)
143 and similarly for height. For decompression, IDCT scaling is included, so
144 downsampled_width = ceil(image_width * Hi/Hmax * DCT_scaled_size/DCTSIZE)
145 */
146 CJPEG_WRBMP_JDIMENSION downsampled_width; /* actual width in samples */
147 CJPEG_WRBMP_JDIMENSION downsampled_height; /* actual height in samples */
148 /* This flag is used only for decompression. In cases where some of the
149 components will be ignored (eg grayscale output from YCbCr image),
150 we can skip most computations for the unused components.
151 */
152 cjpeg_wrbmp_boolean
153 component_needed; /* do we need the value of this component? */
154
155 /* These values are computed before starting a scan of the component. */
156 /* The decompressor output side may not use these variables. */
157 int MCU_width; /* number of blocks per MCU, horizontally */
158 int MCU_height; /* number of blocks per MCU, vertically */
159 int MCU_blocks; /* MCU_width * MCU_height */
160 int MCU_sample_width; /* MCU width in samples, MCU_width*DCT_scaled_size */
161 int last_col_width; /* # of non-dummy blocks across in last MCU */
162 int last_row_height; /* # of non-dummy blocks down in last MCU */
163
164 /* Saved quantization table for component; NULL if none yet saved.
165 See jdinput.c comments about the need for this information.
166 This field is currently used only for decompression.
167 */
168 CJPEG_WRBMP_JQUANT_TBL *quant_table;
169
170 /* Private per-component storage for DCT or IDCT subsystem. */
171 void *dct_table;
172} cjpeg_wrbmp_jpeg_component_info;
173
174
175/* The script for encoding a multiple-scan file is an array of these: */
176
177typedef struct {
178 int comps_in_scan; /* number of components encoded in this scan */
179 int component_index[4]; /* their SOF/comp_info[] indexes */
180 int Ss, Se; /* progressive JPEG spectral selection parms */
181 int Ah, Al; /* progressive JPEG successive approx. parms */
182} cjpeg_wrbmp_jpeg_scan_info;
183
184/* The decompressor can save APPn and COM markers in a list of these: */
185
186typedef struct cjpeg_wrbmp_jpeg_marker_struct CJPEG_WRBMP_FAR
187 *jpeg_saved_marker_ptr;
188
189struct cjpeg_wrbmp_jpeg_marker_struct {
190 jpeg_saved_marker_ptr next; /* next in list, or NULL */
191 CJPEG_WRBMP_UINT8 marker; /* marker code: JPEG_COM, or JPEG_APP0+n */
192 unsigned int original_length; /* # bytes of data in the file */
193 unsigned int data_length; /* # bytes of data saved at data[] */
194 CJPEG_WRBMP_JOCTET CJPEG_WRBMP_FAR
195 *data; /* the data contained in the marker */
196 /* the marker length word is not counted in data_length or original_length */
197};
198
199/* Known color spaces. */
200
201typedef enum {
202 JCS_UNKNOWN, /* error/unspecified */
203 JCS_GRAYSCALE, /* monochrome */
204 JCS_RGB, /* red/green/blue */
205 JCS_YCbCr, /* Y/Cb/Cr (also known as YUV) */
206 JCS_CMYK, /* C/M/Y/K */
207 JCS_YCCK /* Y/Cb/Cr/K */
208} CJPEG_WRBMP_J_COLOR_SPACE;
209
210/* DCT/IDCT algorithm options. */
211
212typedef enum {
213 JDCT_ISLOW, /* slow but accurate integer algorithm */
214 JDCT_IFAST, /* faster, less accurate integer method */
215 JDCT_FLOAT /* floating-point: accurate, fast on fast HW */
216} CJPEG_WRBMP_J_DCT_METHOD;
217
218/* Dithering options for decompression. */
219
220typedef enum {
221 JDITHER_NONE, /* no dithering */
222 JDITHER_ORDERED, /* simple ordered dither */
223 JDITHER_FS /* Floyd-Steinberg error diffusion dither */
224} CJPEG_WRBMP_J_DITHER_MODE;
225
226
227/* Common fields between JPEG compression and decompression master structs. */
228
229#define cjpeg_wrbmp_jpeg_common_fields \
230 struct cjpeg_wrbmp_jpeg_error_mgr * err; /* Error handler module */\
231 struct cjpeg_wrbmp_jpeg_memory_mgr * mem; /* Memory manager module */\
232 struct cjpeg_wrbmp_jpeg_progress_mgr * progress; /* Progress monitor, or NULL if none */\
233 void * client_data; /* Available for use by application */\
234 cjpeg_wrbmp_boolean is_decompressor; /* So common code can tell which is which */\
235 int global_state /* For checking call sequence validity */
236
237/* Routines that are to be used by both halves of the library are declared
238 to receive a pointer to this structure. There are no actual instances of
239 jpeg_common_struct, only of jpeg_compress_struct and jpeg_decompress_struct.
240*/
241struct cjpeg_wrbmp_jpeg_common_struct {
242 cjpeg_wrbmp_jpeg_common_fields; /* Fields common to both master struct types */
243 /* Additional fields follow in an actual jpeg_compress_struct or
244 jpeg_decompress_struct. All three structs must agree on these
245 initial fields! (This would be a lot cleaner in C++.)
246 */
247};
248
249typedef struct cjpeg_wrbmp_jpeg_common_struct
250 *cjpeg_wrbmp_j_common_ptr;
251typedef struct cjpeg_wrbmp_jpeg_compress_struct
252 *cjpeg_wrbmp_j_compress_ptr;
253typedef struct cjpeg_wrbmp_jpeg_decompress_struct
254 *cjpeg_wrbmp_j_decompress_ptr;
255
256
257/* Master record for a compression instance */
258
259struct cjpeg_wrbmp_jpeg_compress_struct {
260 cjpeg_wrbmp_jpeg_common_fields; /* Fields shared with jpeg_decompress_struct */
261
262 /* Destination for compressed data */
263 struct cjpeg_wrbmp_jpeg_destination_mgr *dest;
264
265 /* Description of source image --- these fields must be filled in by
266 outer application before starting compression. in_color_space must
267 be correct before you can even call jpeg_set_defaults().
268 */
269
270 CJPEG_WRBMP_JDIMENSION image_width; /* input image width */
271 CJPEG_WRBMP_JDIMENSION image_height; /* input image height */
272 int input_components; /* # of color components in input image */
273 CJPEG_WRBMP_J_COLOR_SPACE in_color_space; /* colorspace of input image */
274
275 float input_gamma; /* image gamma of input image */
276
277 /* Compression parameters --- these fields must be set before calling
278 jpeg_start_compress(). We recommend calling jpeg_set_defaults() to
279 initialize everything to reasonable defaults, then changing anything
280 the application specifically wants to change. That way you won't get
281 burnt when new parameters are added. Also note that there are several
282 helper routines to simplify changing parameters.
283 */
284
285 int data_precision; /* bits of precision in image data */
286
287 int num_components; /* # of color components in JPEG image */
288 CJPEG_WRBMP_J_COLOR_SPACE
289 jpeg_color_space; /* colorspace of JPEG image */
290
291 cjpeg_wrbmp_jpeg_component_info *comp_info;
292 /* comp_info[i] describes component that appears i'th in SOF */
293
294 CJPEG_WRBMP_JQUANT_TBL *quant_tbl_ptrs[4];
295 /* ptrs to coefficient quantization tables, or NULL if not defined */
296
297 CJPEG_WRBMP_JHUFF_TBL *dc_huff_tbl_ptrs[4];
298 CJPEG_WRBMP_JHUFF_TBL *ac_huff_tbl_ptrs[4];
299 /* ptrs to Huffman coding tables, or NULL if not defined */
300
301 CJPEG_WRBMP_UINT8
302 arith_dc_L[16]; /* L values for DC arith-coding tables */
303 CJPEG_WRBMP_UINT8
304 arith_dc_U[16]; /* U values for DC arith-coding tables */
305 CJPEG_WRBMP_UINT8
306 arith_ac_K[16]; /* Kx values for AC arith-coding tables */
307
308 int num_scans; /* # of entries in scan_info array */
309 const cjpeg_wrbmp_jpeg_scan_info
310 *scan_info; /* script for multi-scan file, or NULL */
311 /* The default value of scan_info is NULL, which causes a single-scan
312 sequential JPEG file to be emitted. To create a multi-scan file,
313 set num_scans and scan_info to point to an array of scan definitions.
314 */
315
316 cjpeg_wrbmp_boolean
317 raw_data_in; /* TRUE=caller supplies downsampled data */
318 cjpeg_wrbmp_boolean
319 arith_code; /* TRUE=arithmetic coding, FALSE=Huffman */
320 cjpeg_wrbmp_boolean
321 optimize_coding; /* TRUE=optimize entropy encoding parms */
322 cjpeg_wrbmp_boolean
323 CCIR601_sampling; /* TRUE=first samples are cosited */
324 int smoothing_factor; /* 1..100, or 0 for no input smoothing */
325 CJPEG_WRBMP_J_DCT_METHOD dct_method; /* DCT algorithm selector */
326
327 /* The restart interval can be specified in absolute MCUs by setting
328 restart_interval, or in MCU rows by setting restart_in_rows
329 (in which case the correct restart_interval will be figured
330 for each scan).
331 */
332 unsigned int restart_interval; /* MCUs per restart, or 0 for no restart */
333 int restart_in_rows; /* if > 0, MCU rows per restart interval */
334
335 /* Parameters controlling emission of special markers. */
336
337 cjpeg_wrbmp_boolean
338 write_JFIF_header; /* should a JFIF marker be written? */
339 CJPEG_WRBMP_UINT8
340 JFIF_major_version; /* What to write for the JFIF version number */
341 CJPEG_WRBMP_UINT8 JFIF_minor_version;
342 /* These three values are not used by the JPEG code, merely copied */
343 /* into the JFIF APP0 marker. density_unit can be 0 for unknown, */
344 /* 1 for dots/inch, or 2 for dots/cm. Note that the pixel aspect */
345 /* ratio is defined by X_density/Y_density even when density_unit=0. */
346 CJPEG_WRBMP_UINT8 density_unit; /* JFIF code for pixel size units */
347 CJPEG_WRBMP_UINT16 X_density; /* Horizontal pixel density */
348 CJPEG_WRBMP_UINT16 Y_density; /* Vertical pixel density */
349 cjpeg_wrbmp_boolean
350 write_Adobe_marker; /* should an Adobe marker be written? */
351
352 /* State variable: index of next scanline to be written to
353 jpeg_write_scanlines(). Application may use this to control its
354 processing loop, e.g., "while (next_scanline < image_height)".
355 */
356
357 CJPEG_WRBMP_JDIMENSION next_scanline; /* 0 .. image_height-1 */
358
359 /* Remaining fields are known throughout compressor, but generally
360 should not be touched by a surrounding application.
361 */
362
363 /*
364 These fields are computed during compression startup
365 */
366 cjpeg_wrbmp_boolean
367 progressive_mode; /* TRUE if scan script uses progressive mode */
368 int max_h_samp_factor; /* largest h_samp_factor */
369 int max_v_samp_factor; /* largest v_samp_factor */
370
371 CJPEG_WRBMP_JDIMENSION
372 total_iMCU_rows; /* # of iMCU rows to be input to coef ctlr */
373 /* The coefficient controller receives data in units of MCU rows as defined
374 for fully interleaved scans (whether the JPEG file is interleaved or not).
375 There are v_samp_factor * DCTSIZE sample rows of each component in an
376 "iMCU" (interleaved MCU) row.
377 */
378
379 /*
380 These fields are valid during any one scan.
381 They describe the components and MCUs actually appearing in the scan.
382 */
383 int comps_in_scan; /* # of JPEG components in this scan */
384 cjpeg_wrbmp_jpeg_component_info *cur_comp_info[4];
385 /* *cur_comp_info[i] describes component that appears i'th in SOS */
386
387 CJPEG_WRBMP_JDIMENSION MCUs_per_row; /* # of MCUs across the image */
388 CJPEG_WRBMP_JDIMENSION
389 MCU_rows_in_scan; /* # of MCU rows in the image */
390
391 int blocks_in_MCU; /* # of DCT blocks per MCU */
392 int MCU_membership[10];
393 /* MCU_membership[i] is index in cur_comp_info of component owning */
394 /* i'th block in an MCU */
395
396 int Ss, Se, Ah, Al; /* progressive JPEG parameters for scan */
397
398 cjpeg_wrbmp_jpeg_scan_info
399 *script_space; /* workspace for jpeg_simple_progression */
400 int script_space_size;
401};
402
403
404/* Master record for a decompression instance */
405
406struct cjpeg_wrbmp_jpeg_decompress_struct {
407 cjpeg_wrbmp_jpeg_common_fields; /* Fields shared with jpeg_compress_struct */
408
409 /* Source of compressed data */
410 struct cjpeg_wrbmp_jpeg_source_mgr *src;
411
412 /* Basic description of image --- filled in by jpeg_read_header(). */
413 /* Application may inspect these values to decide how to process image. */
414
415 CJPEG_WRBMP_JDIMENSION
416 image_width; /* nominal image width (from SOF marker) */
417 CJPEG_WRBMP_JDIMENSION image_height; /* nominal image height */
418 int num_components; /* # of color components in JPEG image */
419 CJPEG_WRBMP_J_COLOR_SPACE
420 jpeg_color_space; /* colorspace of JPEG image */
421
422 /* Decompression processing parameters --- these fields must be set before
423 calling jpeg_start_decompress(). Note that jpeg_read_header() initializes
424 them to default values.
425 */
426
427 CJPEG_WRBMP_J_COLOR_SPACE out_color_space; /* colorspace for output */
428
429 unsigned int scale_num, scale_denom; /* fraction by which to scale image */
430
431 float output_gamma; /* image gamma wanted in output */
432
433 cjpeg_wrbmp_boolean buffered_image; /* TRUE=multiple output passes */
434 cjpeg_wrbmp_boolean raw_data_out; /* TRUE=downsampled data wanted */
435
436 CJPEG_WRBMP_J_DCT_METHOD dct_method; /* IDCT algorithm selector */
437 cjpeg_wrbmp_boolean
438 do_fancy_upsampling; /* TRUE=apply fancy upsampling */
439 cjpeg_wrbmp_boolean
440 do_block_smoothing; /* TRUE=apply interblock smoothing */
441
442 cjpeg_wrbmp_boolean
443 quantize_colors; /* TRUE=colormapped output wanted */
444 /* the following are ignored if not quantize_colors: */
445 CJPEG_WRBMP_J_DITHER_MODE
446 dither_mode; /* type of color dithering to use */
447 cjpeg_wrbmp_boolean
448 two_pass_quantize; /* TRUE=use two-pass color quantization */
449 int desired_number_of_colors; /* max # colors to use in created colormap */
450 /* these are significant only in buffered-image mode: */
451 cjpeg_wrbmp_boolean
452 enable_1pass_quant; /* enable future use of 1-pass quantizer */
453 cjpeg_wrbmp_boolean
454 enable_EXTERNal_quant;/* enable future use of EXTERNal colormap */
455 cjpeg_wrbmp_boolean
456 enable_2pass_quant; /* enable future use of 2-pass quantizer */
457
458 /* Description of actual output image that will be returned to application.
459 These fields are computed by jpeg_start_decompress().
460 You can also use jpeg_calc_output_dimensions() to determine these values
461 in advance of calling jpeg_start_decompress().
462 */
463
464 CJPEG_WRBMP_JDIMENSION output_width; /* scaled image width */
465 CJPEG_WRBMP_JDIMENSION output_height; /* scaled image height */
466 int out_color_components; /* # of color components in out_color_space */
467 int output_components; /* # of color components returned */
468 /* output_components is 1 (a colormap index) when quantizing colors;
469 otherwise it equals out_color_components.
470 */
471 int rec_outbuf_height; /* min recommended height of scanline buffer */
472 /* If the buffer passed to jpeg_read_scanlines() is less than this many rows
473 high, space and time will be wasted due to unnecessary data copying.
474 Usually rec_outbuf_height will be 1 or 2, at most 4.
475 */
476
477 /* When quantizing colors, the output colormap is described by these fields.
478 The application can supply a colormap by setting colormap non-NULL before
479 calling jpeg_start_decompress; otherwise a colormap is created during
480 jpeg_start_decompress or jpeg_start_output.
481 The map has out_color_components rows and actual_number_of_colors columns.
482 */
483 int actual_number_of_colors; /* number of entries in use */
484 CJPEG_WRBMP_JSAMPARRAY
485 colormap; /* The color map as a 2-D pixel array */
486
487 /* State variables: these variables indicate the progress of decompression.
488 The application may examine these but must not modify them.
489 */
490
491 /* Row index of next scanline to be read from jpeg_read_scanlines().
492 Application may use this to control its processing loop, e.g.,
493 "while (output_scanline < output_height)".
494 */
495 CJPEG_WRBMP_JDIMENSION output_scanline; /* 0 .. output_height-1 */
496
497 /* Current input scan number and number of iMCU rows completed in scan.
498 These indicate the progress of the decompressor input side.
499 */
500 int input_scan_number; /* Number of SOS markers seen so far */
501 CJPEG_WRBMP_JDIMENSION
502 input_iMCU_row; /* Number of iMCU rows completed */
503
504 /* The "output scan number" is the notional scan being displayed by the
505 output side. The decompressor will not allow output scan/row number
506 to get ahead of input scan/row, but it can fall arbitrarily far behind.
507 */
508 int output_scan_number; /* Nominal scan number being displayed */
509 CJPEG_WRBMP_JDIMENSION output_iMCU_row; /* Number of iMCU rows read */
510
511 /* Current progression status. coef_bits[c][i] indicates the precision
512 with which component c's DCT coefficient i (in zigzag order) is known.
513 It is -1 when no data has yet been received, otherwise it is the point
514 transform (shift) value for the most recent scan of the coefficient
515 (thus, 0 at completion of the progression).
516 This pointer is NULL when reading a non-progressive file.
517 */
518 int ( *coef_bits )[64]; /* -1 or current Al value for each coef */
519
520 /* Internal JPEG parameters --- the application usually need not look at
521 these fields. Note that the decompressor output side may not use
522 any parameters that can change between scans.
523 */
524
525 /* Quantization and Huffman tables are carried forward across input
526 datastreams when processing abbreviated JPEG datastreams.
527 */
528
529 CJPEG_WRBMP_JQUANT_TBL *quant_tbl_ptrs[4];
530 /* ptrs to coefficient quantization tables, or NULL if not defined */
531
532 CJPEG_WRBMP_JHUFF_TBL *dc_huff_tbl_ptrs[4];
533 CJPEG_WRBMP_JHUFF_TBL *ac_huff_tbl_ptrs[4];
534 /* ptrs to Huffman coding tables, or NULL if not defined */
535
536 /* These parameters are never carried across datastreams, since they
537 are given in SOF/SOS markers or defined to be reset by SOI.
538 */
539
540 int data_precision; /* bits of precision in image data */
541
542 cjpeg_wrbmp_jpeg_component_info *comp_info;
543 /* comp_info[i] describes component that appears i'th in SOF */
544
545 cjpeg_wrbmp_boolean
546 progressive_mode; /* TRUE if SOFn specifies progressive mode */
547 cjpeg_wrbmp_boolean
548 arith_code; /* TRUE=arithmetic coding, FALSE=Huffman */
549
550 CJPEG_WRBMP_UINT8
551 arith_dc_L[16]; /* L values for DC arith-coding tables */
552 CJPEG_WRBMP_UINT8
553 arith_dc_U[16]; /* U values for DC arith-coding tables */
554 CJPEG_WRBMP_UINT8
555 arith_ac_K[16]; /* Kx values for AC arith-coding tables */
556
557 unsigned int
558 restart_interval; /* MCUs per restart interval, or 0 for no restart */
559
560 /* These fields record data obtained from optional markers recognized by
561 the JPEG library.
562 */
563 cjpeg_wrbmp_boolean
564 saw_JFIF_marker; /* TRUE iff a JFIF APP0 marker was found */
565 /* Data copied from JFIF marker; only valid if saw_JFIF_marker is TRUE: */
566 CJPEG_WRBMP_UINT8 JFIF_major_version; /* JFIF version number */
567 CJPEG_WRBMP_UINT8 JFIF_minor_version;
568 CJPEG_WRBMP_UINT8 density_unit; /* JFIF code for pixel size units */
569 CJPEG_WRBMP_UINT16 X_density; /* Horizontal pixel density */
570 CJPEG_WRBMP_UINT16 Y_density; /* Vertical pixel density */
571 cjpeg_wrbmp_boolean
572 saw_Adobe_marker; /* TRUE iff an Adobe APP14 marker was found */
573 CJPEG_WRBMP_UINT8
574 Adobe_transform; /* Color transform code from Adobe marker */
575
576 cjpeg_wrbmp_boolean
577 CCIR601_sampling; /* TRUE=first samples are cosited */
578
579 /* Aside from the specific data retained from APPn markers known to the
580 library, the uninterpreted contents of any or all APPn and COM markers
581 can be saved in a list for examination by the application.
582 */
583 jpeg_saved_marker_ptr marker_list; /* Head of list of saved markers */
584
585 /* Remaining fields are known throughout decompressor, but generally
586 should not be touched by a surrounding application.
587 */
588
589 /*
590 These fields are computed during decompression startup
591 */
592 int max_h_samp_factor; /* largest h_samp_factor */
593 int max_v_samp_factor; /* largest v_samp_factor */
594
595 int min_DCT_scaled_size; /* smallest DCT_scaled_size of any component */
596
597 CJPEG_WRBMP_JDIMENSION total_iMCU_rows; /* # of iMCU rows in image */
598 /* The coefficient controller's input and output progress is measured in
599 units of "iMCU" (interleaved MCU) rows. These are the same as MCU rows
600 in fully interleaved JPEG scans, but are used whether the scan is
601 interleaved or not. We define an iMCU row as v_samp_factor DCT block
602 rows of each component. Therefore, the IDCT output contains
603 v_samp_factor*DCT_scaled_size sample rows of a component per iMCU row.
604 */
605
606 CJPEG_WRBMP_JSAMPLE
607 *sample_range_limit; /* table for fast range-limiting */
608
609 /*
610 These fields are valid during any one scan.
611 They describe the components and MCUs actually appearing in the scan.
612 Note that the decompressor output side must not use these fields.
613 */
614 int comps_in_scan; /* # of JPEG components in this scan */
615 cjpeg_wrbmp_jpeg_component_info *cur_comp_info[4];
616 /* *cur_comp_info[i] describes component that appears i'th in SOS */
617
618 CJPEG_WRBMP_JDIMENSION MCUs_per_row; /* # of MCUs across the image */
619 CJPEG_WRBMP_JDIMENSION
620 MCU_rows_in_scan; /* # of MCU rows in the image */
621
622 int blocks_in_MCU; /* # of DCT blocks per MCU */
623 int MCU_membership[10];
624 /* MCU_membership[i] is index in cur_comp_info of component owning */
625 /* i'th block in an MCU */
626
627 int Ss, Se, Ah, Al; /* progressive JPEG parameters for scan */
628
629 /* This field is shared between entropy decoder and marker parser.
630 It is either zero or the code of a JPEG marker that has been
631 read from the data source, but has not yet been processed.
632 */
633 int unread_marker;
634
635 /*
636 Links to decompression subobjects (methods, private variables of modules)
637 */
638 struct jpeg_decomp_master *master;
639 struct jpeg_d_main_controller *main;
640 struct jpeg_d_coef_controller *coef;
641 struct jpeg_d_post_controller *post;
642 struct jpeg_input_controller *inputctl;
643 struct jpeg_marker_reader *marker;
644 struct jpeg_entropy_decoder *entropy;
645 struct jpeg_inverse_dct *idct;
646 struct jpeg_upsampler *upsample;
647 struct jpeg_color_deconverter *cconvert;
648 struct jpeg_color_quantizer *cquantize;
649};
650
651
652/* "Object" declarations for JPEG modules that may be supplied or called
653 directly by the surrounding application.
654 As with all objects in the JPEG library, these structs only define the
655 publicly visible methods and state variables of a module. Additional
656 private fields may exist after the public ones.
657*/
658
659
660/* Error handler object */
661
662struct cjpeg_wrbmp_jpeg_error_mgr {
663 /* Error exit handler: does not return to caller */
664 CJPEG_WRBMP_JMETHOD( void, error_exit,
665 ( cjpeg_wrbmp_j_common_ptr cinfo ) );
666 /* Conditionally emit a trace or warning message */
667 CJPEG_WRBMP_JMETHOD( void, emit_message,
668 ( cjpeg_wrbmp_j_common_ptr cinfo, int msg_level ) );
669 /* Routine that actually outputs a trace or error message */
670 CJPEG_WRBMP_JMETHOD( void, output_message,
671 ( cjpeg_wrbmp_j_common_ptr cinfo ) );
672 /* Format a message string for the most recent JPEG error or message */
673 CJPEG_WRBMP_JMETHOD( void, format_message,
674 ( cjpeg_wrbmp_j_common_ptr cinfo, char *buffer ) );
675#define JMSG_LENGTH_MAX 200 /* recommended size of format_message buffer */
676 /* Reset error state variables at start of a new image */
677 CJPEG_WRBMP_JMETHOD( void, reset_error_mgr,
678 ( cjpeg_wrbmp_j_common_ptr cinfo ) );
679
680 /* The message ID code and any parameters are saved here.
681 A message can have one string parameter or up to 8 int parameters.
682 */
683 int msg_code;
684#define JMSG_STR_PARM_MAX 80
685 /*
686 union {
687 int i[8];
688 char s[JMSG_STR_PARM_MAX];
689 } msg_parm;
690 */
691 /* Standard state variables for error facility */
692
693 int trace_level; /* max msg_level that will be displayed */
694
695 /* For recoverable corrupt-data errors, we emit a warning message,
696 but keep going unless emit_message chooses to abort. emit_message
697 should count warnings in num_warnings. The surrounding application
698 can check for bad data by seeing if num_warnings is nonzero at the
699 end of processing.
700 */
701 long num_warnings; /* number of corrupt-data warnings */
702
703 /* These fields point to the table(s) of error message strings.
704 An application can change the table pointer to switch to a different
705 message list (typically, to change the language in which errors are
706 reported). Some applications may wish to add additional error codes
707 that will be handled by the JPEG library error mechanism; the second
708 table pointer is used for this purpose.
709
710 First table includes all errors generated by JPEG library itself.
711 Error code 0 is reserved for a "no such error string" message.
712 */
713 const char *const *jpeg_message_table; /* Library errors */
714 int last_jpeg_message; /* Table contains strings 0..last_jpeg_message */
715 /* Second table can be added by application (see cjpeg/djpeg for example).
716 It contains strings numbered first_addon_message..last_addon_message.
717 */
718 const char *const *addon_message_table; /* Non-library errors */
719 int first_addon_message; /* code for first string in addon table */
720 int last_addon_message; /* code for last string in addon table */
721};
722
723
724/* Progress monitor object */
725
726struct cjpeg_wrbmp_jpeg_progress_mgr {
727 CJPEG_WRBMP_JMETHOD( void, progress_monitor,
728 ( cjpeg_wrbmp_j_common_ptr cinfo ) );
729
730 long pass_counter; /* work units completed in this pass */
731 long pass_limit; /* total number of work units in this pass */
732 int completed_passes; /* passes completed so far */
733 int total_passes; /* total number of passes expected */
734};
735
736
737/* Data destination object for compression */
738
739struct cjpeg_wrbmp_jpeg_destination_mgr {
740 CJPEG_WRBMP_JOCTET
741 *next_output_byte; /* => next byte to write in buffer */
742 cjpeg_wrbmp_size_x
743 free_in_buffer; /* # of byte spaces remaining in buffer */
744
745 CJPEG_WRBMP_JMETHOD( void, init_destination,
746 ( cjpeg_wrbmp_j_compress_ptr cinfo ) );
747 CJPEG_WRBMP_JMETHOD( cjpeg_wrbmp_boolean, empty_output_buffer,
748 ( cjpeg_wrbmp_j_compress_ptr cinfo ) );
749 CJPEG_WRBMP_JMETHOD( void, term_destination,
750 ( cjpeg_wrbmp_j_compress_ptr cinfo ) );
751};
752
753
754/* Data source object for decompression */
755
756struct cjpeg_wrbmp_jpeg_source_mgr {
757 const CJPEG_WRBMP_JOCTET
758 *next_input_byte; /* => next byte to read from buffer */
759 cjpeg_wrbmp_size_x bytes_in_buffer; /* # of bytes remaining in buffer */
760
761 CJPEG_WRBMP_JMETHOD( void, init_source,
762 ( cjpeg_wrbmp_j_decompress_ptr cinfo ) );
763 CJPEG_WRBMP_JMETHOD( cjpeg_wrbmp_boolean, fill_input_buffer,
764 ( cjpeg_wrbmp_j_decompress_ptr cinfo ) );
765 CJPEG_WRBMP_JMETHOD( void, skip_input_data,
766 ( cjpeg_wrbmp_j_decompress_ptr cinfo, long num_bytes ) );
767 CJPEG_WRBMP_JMETHOD( cjpeg_wrbmp_boolean, resync_to_restart,
768 ( cjpeg_wrbmp_j_decompress_ptr cinfo, int desired ) );
769 CJPEG_WRBMP_JMETHOD( void, term_source,
770 ( cjpeg_wrbmp_j_decompress_ptr cinfo ) );
771};
772
773
774/* Memory manager object.
775 Allocates "small" objects (a few K total), "large" objects (tens of K),
776 and "really big" objects (virtual arrays with backing store if needed).
777 The memory manager does not allow individual objects to be freed; rather,
778 each created object is assigned to a pool, and whole pools can be freed
779 at once. This is faster and more convenient than remembering exactly what
780 to free, especially where malloc()/free() are not too speedy.
781 NB: alloc routines never return NULL. They exit to error_exit if not
782 successful.
783*/
784
785typedef struct jvirt_sarray_control *cjpeg_wrbmp_jvirt_sarray_ptr;
786typedef struct jvirt_barray_control *cjpeg_wrbmp_jvirt_barray_ptr;
787
788
789struct cjpeg_wrbmp_jpeg_memory_mgr {
790 /* Method pointers */
791 CJPEG_WRBMP_JMETHOD( void *, alloc_small,
792 ( cjpeg_wrbmp_j_common_ptr cinfo, int pool_id,
793 cjpeg_wrbmp_size_x sizeofobject ) );
794 CJPEG_WRBMP_JMETHOD( void CJPEG_WRBMP_FAR *, alloc_large,
795 ( cjpeg_wrbmp_j_common_ptr cinfo, int pool_id,
796 cjpeg_wrbmp_size_x sizeofobject ) );
797 CJPEG_WRBMP_JMETHOD( CJPEG_WRBMP_JSAMPARRAY, alloc_sarray,
798 ( cjpeg_wrbmp_j_common_ptr cinfo, int pool_id,
799 CJPEG_WRBMP_JDIMENSION samplesperrow,
800 CJPEG_WRBMP_JDIMENSION numrows ) );
801 CJPEG_WRBMP_JMETHOD( CJPEG_WRBMP_JBLOCKARRAY, alloc_barray,
802 ( cjpeg_wrbmp_j_common_ptr cinfo, int pool_id,
803 CJPEG_WRBMP_JDIMENSION blocksperrow,
804 CJPEG_WRBMP_JDIMENSION numrows ) );
805 CJPEG_WRBMP_JMETHOD( cjpeg_wrbmp_jvirt_sarray_ptr,
806 request_virt_sarray, ( cjpeg_wrbmp_j_common_ptr cinfo,
807 int pool_id,
808 cjpeg_wrbmp_boolean pre_zero,
809 CJPEG_WRBMP_JDIMENSION samplesperrow,
810 CJPEG_WRBMP_JDIMENSION numrows,
811 CJPEG_WRBMP_JDIMENSION maxaccess ) );
812 CJPEG_WRBMP_JMETHOD( cjpeg_wrbmp_jvirt_barray_ptr,
813 request_virt_barray, ( cjpeg_wrbmp_j_common_ptr cinfo,
814 int pool_id,
815 cjpeg_wrbmp_boolean pre_zero,
816 CJPEG_WRBMP_JDIMENSION blocksperrow,
817 CJPEG_WRBMP_JDIMENSION numrows,
818 CJPEG_WRBMP_JDIMENSION maxaccess ) );
819 CJPEG_WRBMP_JMETHOD( void, realize_virt_arrays,
820 ( cjpeg_wrbmp_j_common_ptr cinfo ) );
821 CJPEG_WRBMP_JMETHOD( CJPEG_WRBMP_JSAMPARRAY, access_virt_sarray,
822 ( cjpeg_wrbmp_j_common_ptr cinfo,
823 cjpeg_wrbmp_jvirt_sarray_ptr ptr,
824 CJPEG_WRBMP_JDIMENSION start_row,
825 CJPEG_WRBMP_JDIMENSION num_rows,
826 cjpeg_wrbmp_boolean writable ) );
827 CJPEG_WRBMP_JMETHOD( CJPEG_WRBMP_JBLOCKARRAY, access_virt_barray,
828 ( cjpeg_wrbmp_j_common_ptr cinfo,
829 cjpeg_wrbmp_jvirt_barray_ptr ptr,
830 CJPEG_WRBMP_JDIMENSION start_row,
831 CJPEG_WRBMP_JDIMENSION num_rows,
832 cjpeg_wrbmp_boolean writable ) );
833 CJPEG_WRBMP_JMETHOD( void, free_pool,
834 ( cjpeg_wrbmp_j_common_ptr cinfo, int pool_id ) );
835 CJPEG_WRBMP_JMETHOD( void, self_destruct,
836 ( cjpeg_wrbmp_j_common_ptr cinfo ) );
837
838 /* Limit on memory allocation for this JPEG object. (Note that this is
839 merely advisory, not a guaranteed maximum; it only affects the space
840 used for virtual-array buffers.) May be changed by outer application
841 after creating the JPEG object.
842 */
843 long max_memory_to_use;
844
845 /* Maximum allocation request accepted by alloc_large. */
846 long max_alloc_chunk;
847};
848
849
850/* Routine signature for application-supplied marker processing methods.
851 Need not pass marker code since it is stored in cinfo->unread_marker.
852*/
853typedef CJPEG_WRBMP_JMETHOD( cjpeg_wrbmp_boolean,
854 jpeg_marker_parser_method,
855 ( cjpeg_wrbmp_j_decompress_ptr cinfo ) );
856
857/*
858 The JPEG library modules define JPEG_INTERNALS before including this file.
859 The internal structure declarations are read only when that is true.
860 Applications using the library should not include jpegint.h, but may wish
861 to include jerror.h.
862*/
863
864#ifdef CJPEG_JPEG6B_WRBMP_JPEG_INTERNALS
865#include "jpegint.h" /* fetch private declarations */
866#include "jerror.h" /* fetch error codes too */
867#endif
868
869#endif /* JPEGLIB_H */