
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.
56 lines
1.8 KiB
C
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__ */
|