Files
gimp/plug-ins/file-jpeg/jpeg-save.h
Mukund Sivaraman 7a6b8f0e69 file-jpeg: Add support for arithmetic coding
Arithmetic coding is a feature of the JPEG standard. Although libjpeg
had always implemented arithmetic coding, it was compiled out by default
due to patents.

Those patents have now expired.

libjpeg 8 now enables arithmetic coding by default. Distributions which
use libjpeg < 8 can also support arithmetic coding by using the
appropriate CFLAGS to enable it. libjpeg-turbo 1.3.1 also has support
for arithmetic coding and is in popular shipping distributions.

Software such as jpegtran can losslessly convert Huffman compressed
images to arithmetic coding and vice versa. The lossy behavior of JPEG
does not happen at this (bit coding) layer of the format.

This initial patch provides a checkbox (disabled by default) to create
files which use arithmetic coding. It also has a tooltip warning that
such files may not be compatible with older decoders.
2014-05-15 00:57:42 +05:30

56 lines
1.8 KiB
C

/* GIMP - The GNU Image Manipulation Program
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __JPEG_SAVE_H__
#define __JPEG_SAVE_H__
typedef struct
{
gdouble quality;
gdouble smoothing;
gboolean optimize;
gboolean arithmetic_coding;
gboolean progressive;
gboolean baseline;
JpegSubsampling subsmp;
gint restart;
gint dct;
gboolean preview;
gboolean save_exif;
gboolean save_thumbnail;
gboolean save_xmp;
gboolean save_iptc;
gboolean use_orig_quality;
} JpegSaveVals;
extern JpegSaveVals jsvals;
extern gint32 orig_image_ID_global;
extern gint32 drawable_ID_global;
gboolean save_image (const gchar *filename,
gint32 image_ID,
gint32 drawable_ID,
gint32 orig_image_ID,
gboolean preview,
GError **error);
gboolean save_dialog (void);
void load_defaults (void);
#endif /* __JPEG_SAVE_H__ */