IJG JPEG LIBRARY:  FILE LIST

This file was part of the Independent JPEG Group's software:
Copyright (C) 1994-1998, Thomas G. Lane.
Lossless JPEG Modifications:
Copyright (C) 1999, Ken Murchison.
Copyright (C) 2022, D. R. Commander.
For conditions of distribution and use, see the accompanying README file.


Here is a road map to the files in the IJG JPEG distribution.  The
distribution includes the JPEG library proper, plus two application
programs ("cjpeg" and "djpeg") which use the library to convert JPEG
files to and from some other popular image formats.  A third application
"jpegtran" uses the library to do lossless conversion between different
variants of JPEG.  There are also two stand-alone applications,
"rdjpgcom" and "wrjpgcom".


THE JPEG LIBRARY
================

Include files:

jpeglib.h	JPEG library's exported data and function declarations.
jconfig.h	Configuration declarations.  Note: this file is not present
		in the distribution; it is generated during installation.
jmorecfg.h	Additional configuration declarations; need not be changed
		for a standard installation.
jerror.h	Declares JPEG library's error and trace message codes.
jinclude.h	Central include file used by all IJG .c files to reference
		system include files.
jpegint.h	JPEG library's internal data structures.
jlossls.h	JPEG library's lossless codec data structures.
jchuff.h	Private declarations for Huffman encoder modules.
jdhuff.h	Private declarations for Huffman decoder modules.
jdct.h		Private declarations for forward & reverse DCT subsystems.
jmemsys.h	Private declarations for memory management subsystem.
jversion.h	Version information.

Applications using the library should include jpeglib.h (which in turn
includes jconfig.h and jmorecfg.h).  Optionally, jerror.h may be included
if the application needs to reference individual JPEG error codes.  The
other include files are intended for internal use and would not normally
be included by an application program.  (cjpeg/djpeg/etc do use jinclude.h,
since its function is to improve portability of the whole IJG distribution.
Most other applications will directly include the system include files they
want, and hence won't need jinclude.h.)


C source code files:

These files contain most of the functions intended to be called directly by
an application program:

jcapimin.c	Application program interface: core routines for compression.
jcapistd.c	Application program interface: standard compression.
jdapimin.c	Application program interface: core routines for decompression.
jdapistd.c	Application program interface: standard decompression.
jcomapi.c	Application program interface routines common to compression
		and decompression.
jcparam.c	Compression parameter setting helper routines.
jctrans.c	API and library routines for transcoding compression.
jdtrans.c	API and library routines for transcoding decompression.

Compression side of the library:

jcinit.c	Initialization: determines which other modules to use.
jcmaster.c	Master control: setup and inter-pass sequencing logic.
jcmainct.c	Main buffer controller (preprocessor => JPEG compressor).
jcprepct.c	Preprocessor buffer controller.
jccolor.c	Color space conversion.
jcsample.c	Downsampling.
jchuff.c	Shared Huffman entropy encoding routines.
jcmarker.c	JPEG marker writing.
jdatadst.c	Data destination manager for stdio output.

Lossy (DCT) codec:

jccoefct.c	Buffer controller for DCT coefficient buffer.
jcdctmgr.c	DCT manager (DCT implementation selection & control).
jfdctint.c	Forward DCT using slow-but-accurate integer method.
jfdctfst.c	Forward DCT using faster, less accurate integer method.
jfdctflt.c	Forward DCT using floating-point arithmetic.
jchuff.c	Huffman entropy coding for sequential JPEG.
jcphuff.c	Huffman entropy coding for progressive JPEG.

Lossless (spatial) codec:

jcdiffct.c	Buffer controller for difference buffer.
jclossls.c	Prediction, sample differencing, and point transform
jclhuff.c	Huffman entropy encoding for lossless JPEG.

Decompression side of the library:

jdmaster.c	Master control: determines which other modules to use.
jdinput.c	Input controller: controls input processing modules.
jdmainct.c	Main buffer controller (JPEG decompressor => postprocessor).
jdpostct.c	Postprocessor buffer controller.
jdmarker.c	JPEG marker reading.
jdhuff.c	Shared Huffman entropy decoding routines.
jdsample.c	Upsampling.
jdcolor.c	Color space conversion.
jdmerge.c	Merged upsampling/color conversion (faster, lower quality).
jquant1.c	One-pass color quantization using a fixed-spacing colormap.
jquant2.c	Two-pass color quantization using a custom-generated colormap.
		Also handles one-pass quantization to an externally given map.
jdatasrc.c	Data source manager for stdio input.

Lossy (DCT) codec:

jdcoefct.c	Buffer controller for DCT coefficient buffer.
jdhuff.c	Huffman entropy decoding for sequential JPEG.
jdphuff.c	Huffman entropy decoding for progressive JPEG.
jddctmgr.c	IDCT manager (IDCT implementation selection & control).
jidctint.c	Inverse DCT using slow-but-accurate integer method.
jidctfst.c	Inverse DCT using faster, less accurate integer method.
jidctflt.c	Inverse DCT using floating-point arithmetic.
jidctred.c	Inverse DCTs with reduced-size outputs.

Lossless (spatial) codec:

jddiffct.c	Buffer controller for difference buffer.
jdlossls.c	Prediction, sample undifferencing, point transform, and sample
		scaling
jdlhuff.c	Huffman entropy decoding for lossless JPEG.

Support files for both compression and decompression:

jerror.c	Standard error handling routines (application replaceable).
jmemmgr.c	System-independent (more or less) memory management code.
jutils.c	Miscellaneous utility routines.

jmemmgr.c relies on a system-dependent memory management module.  The IJG
distribution includes the following implementations of the system-dependent
module:

jmemnobs.c	"No backing store": assumes adequate virtual memory exists.
jmemansi.c	Makes temporary files with ANSI-standard routine tmpfile().
jmemname.c	Makes temporary files with program-generated file names.
jmemdos.c	Custom implementation for MS-DOS (16-bit environment only):
		can use extended and expanded memory as well as temp files.
jmemmac.c	Custom implementation for Apple Macintosh.

Exactly one of the system-dependent modules should be configured into an
installed JPEG library (see install.doc for hints about which one to use).
On unusual systems you may find it worthwhile to make a special
system-dependent memory manager.


Non-C source code files:

jmemdosa.asm	80x86 assembly code support for jmemdos.c; used only in
		MS-DOS-specific configurations of the JPEG library.


CJPEG/DJPEG/JPEGTRAN
====================

Include files:

cdjpeg.h	Declarations shared by cjpeg/djpeg/jpegtran modules.
cderror.h	Additional error and trace message codes for cjpeg et al.
transupp.h	Declarations for jpegtran support routines in transupp.c.

C source code files:

cjpeg.c		Main program for cjpeg.
djpeg.c		Main program for djpeg.
jpegtran.c	Main program for jpegtran.
cdjpeg.c	Utility routines used by all three programs.
rdcolmap.c	Code to read a colormap file for djpeg's "-map" switch.
rdswitch.c	Code to process some of cjpeg's more complex switches.
		Also used by jpegtran.
transupp.c	Support code for jpegtran: lossless image manipulations.

Image file reader modules for cjpeg:

rdbmp.c		BMP file input.
rdgif.c		GIF file input (now just a stub).
rdppm.c		PPM/PGM file input.
rdrle.c		Utah RLE file input.
rdtarga.c	Targa file input.

Image file writer modules for djpeg:

wrbmp.c		BMP file output.
wrgif.c		GIF file output (a mere shadow of its former self).
wrppm.c		PPM/PGM file output.
wrrle.c		Utah RLE file output.
wrtarga.c	Targa file output.


RDJPGCOM/WRJPGCOM
=================

C source code files:

rdjpgcom.c	Stand-alone rdjpgcom application.
wrjpgcom.c	Stand-alone wrjpgcom application.

These programs do not depend on the IJG library.  They do use
jconfig.h and jinclude.h, only to improve portability.


ADDITIONAL FILES
================

Documentation (see README for a guide to the documentation files):

README		Master documentation file.
*.doc		Other documentation files.
*.1		Documentation in Unix man page format.
change.log	Version-to-version change highlights.
example.c	Sample code for calling JPEG library.

Configuration/installation files and programs (see install.doc for more info):

configure	Unix shell script to perform automatic configuration.
ltconfig	Support scripts for configure (from GNU libtool).
ltmain.sh
config.guess
config.sub
install-sh	Install shell script for those Unix systems lacking one.
ckconfig.c	Program to generate jconfig.h on non-Unix systems.
jconfig.doc	Template for making jconfig.h by hand.
makefile.*	Sample makefiles for particular systems.
jconfig.*	Sample jconfig.h for particular systems.
ansi2knr.c	De-ANSIfier for pre-ANSI C compilers (courtesy of
		L. Peter Deutsch and Aladdin Enterprises).

Test files (see install.doc for test procedure):

test*.*		Source and comparison files for confidence test.
		These are binary image files, NOT text files.
