Added configure options to disable arithmetic encoding/decoding
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@300 632fc199-4ca6-4c93-a231-07263d6284db
This commit is contained in:
@@ -18,7 +18,8 @@ packages.
|
|||||||
[6] All symbols in the libjpeg-turbo dynamic library are now versioned, even
|
[6] All symbols in the libjpeg-turbo dynamic library are now versioned, even
|
||||||
when the library is built with libjpeg v6b emulation.
|
when the library is built with libjpeg v6b emulation.
|
||||||
|
|
||||||
[7] Added arithmetic encoding and decoding support.
|
[7] Added arithmetic encoding and decoding support (can be disabled via
|
||||||
|
configure options)
|
||||||
|
|
||||||
|
|
||||||
Significant changes since 1.0.0
|
Significant changes since 1.0.0
|
||||||
|
|||||||
45
Makefile.am
45
Makefile.am
@@ -7,15 +7,32 @@ nodist_include_HEADERS = jconfig.h
|
|||||||
HDRS = jchuff.h jdct.h jdhuff.h jerror.h jinclude.h jmemsys.h jmorecfg.h \
|
HDRS = jchuff.h jdct.h jdhuff.h jerror.h jinclude.h jmemsys.h jmorecfg.h \
|
||||||
jpegint.h jpeglib.h jversion.h jsimd.h jsimddct.h jpegcomp.h
|
jpegint.h jpeglib.h jversion.h jsimd.h jsimddct.h jpegcomp.h
|
||||||
|
|
||||||
libjpeg_la_SOURCES = $(HDRS) jaricom.c jcapimin.c jcapistd.c jcarith.c \
|
libjpeg_la_SOURCES = $(HDRS) jcapimin.c jcapistd.c jccoefct.c jccolor.c \
|
||||||
jccoefct.c jccolor.c jcdctmgr.c jchuff.c jcinit.c jcmainct.c \
|
jcdctmgr.c jchuff.c jcinit.c jcmainct.c jcmarker.c jcmaster.c \
|
||||||
jcmarker.c jcmaster.c jcomapi.c jcparam.c jcphuff.c jcprepct.c \
|
jcomapi.c jcparam.c jcphuff.c jcprepct.c jcsample.c jctrans.c \
|
||||||
jcsample.c jctrans.c jdapimin.c jdapistd.c jdarith.c \
|
jdapimin.c jdapistd.c jdatadst.c jdatasrc.c jdcoefct.c jdcolor.c \
|
||||||
jdatadst.c jdatasrc.c jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c \
|
jddctmgr.c jdhuff.c jdinput.c jdmainct.c jdmarker.c jdmaster.c \
|
||||||
jdinput.c jdmainct.c jdmarker.c jdmaster.c jdmerge.c jdphuff.c \
|
jdmerge.c jdphuff.c jdpostct.c jdsample.c jdtrans.c jerror.c \
|
||||||
jdpostct.c jdsample.c jdtrans.c jerror.c jfdctflt.c jfdctfst.c \
|
jfdctflt.c jfdctfst.c jfdctint.c jidctflt.c jidctfst.c jidctint.c \
|
||||||
jfdctint.c jidctflt.c jidctfst.c jidctint.c jidctred.c \
|
jidctred.c jquant1.c jquant2.c jutils.c jmemmgr.c jmemnobs.c
|
||||||
jquant1.c jquant2.c jutils.c jmemmgr.c jmemnobs.c
|
|
||||||
|
if WITH_ARITH
|
||||||
|
|
||||||
|
libjpeg_la_SOURCES += jaricom.c
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
if WITH_ARITH_ENC
|
||||||
|
|
||||||
|
libjpeg_la_SOURCES += jcarith.c
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
if WITH_ARITH_DEC
|
||||||
|
|
||||||
|
libjpeg_la_SOURCES += jdarith.c
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
libturbojpeg_la_SOURCES = $(libjpeg_la_SOURCES) turbojpegl.c turbojpeg.h \
|
libturbojpeg_la_SOURCES = $(libjpeg_la_SOURCES) turbojpegl.c turbojpeg.h \
|
||||||
turbojpeg-mapfile
|
turbojpeg-mapfile
|
||||||
@@ -128,14 +145,18 @@ else
|
|||||||
endif
|
endif
|
||||||
./djpeg -dct int -bmp -colors 256 -outfile testout.bmp $(srcdir)/testorig.jpg
|
./djpeg -dct int -bmp -colors 256 -outfile testout.bmp $(srcdir)/testorig.jpg
|
||||||
cmp $(srcdir)/testimg.bmp testout.bmp
|
cmp $(srcdir)/testimg.bmp testout.bmp
|
||||||
|
if WITH_ARITH_ENC
|
||||||
./cjpeg -dct int -arithmetic -outfile testoutari.jpg $(srcdir)/testorig.ppm
|
./cjpeg -dct int -arithmetic -outfile testoutari.jpg $(srcdir)/testorig.ppm
|
||||||
cmp $(srcdir)/testimgari.jpg testoutari.jpg
|
cmp $(srcdir)/testimgari.jpg testoutari.jpg
|
||||||
|
./jpegtran -arithmetic -outfile testouta.jpg $(srcdir)/testimgint.jpg
|
||||||
|
cmp $(srcdir)/testimgari.jpg testouta.jpg
|
||||||
|
endif
|
||||||
|
if WITH_ARITH_DEC
|
||||||
./djpeg -dct int -fast -ppm -outfile testoutari.ppm $(srcdir)/testimgari.jpg
|
./djpeg -dct int -fast -ppm -outfile testoutari.ppm $(srcdir)/testimgari.jpg
|
||||||
cmp $(srcdir)/testimgari.ppm testoutari.ppm
|
cmp $(srcdir)/testimgari.ppm testoutari.ppm
|
||||||
./jpegtran -arithmetic -outfile testouta.jpg testoutint.jpg
|
./jpegtran -outfile testouta.jpg $(srcdir)/testimgari.jpg
|
||||||
cmp $(srcdir)/testimgari.jpg testouta.jpg
|
|
||||||
./jpegtran -outfile testouta.jpg testoutari.jpg
|
|
||||||
cmp $(srcdir)/testimgint.jpg testouta.jpg
|
cmp $(srcdir)/testimgint.jpg testouta.jpg
|
||||||
|
endif
|
||||||
./cjpeg -dct int -progressive -outfile testoutp.jpg $(srcdir)/testorig.ppm
|
./cjpeg -dct int -progressive -outfile testoutp.jpg $(srcdir)/testorig.ppm
|
||||||
cmp $(srcdir)/testimgp.jpg testoutp.jpg
|
cmp $(srcdir)/testimgp.jpg testoutp.jpg
|
||||||
./jpegtran -outfile testoutt.jpg testoutp.jpg
|
./jpegtran -outfile testoutt.jpg testoutp.jpg
|
||||||
|
|||||||
@@ -270,8 +270,5 @@ Not supported:
|
|||||||
-- libjpeg: Fancy downsampling in compressor
|
-- libjpeg: Fancy downsampling in compressor
|
||||||
cinfo.do_fancy_downsampling is silently ignored.
|
cinfo.do_fancy_downsampling is silently ignored.
|
||||||
|
|
||||||
-- libjpeg: Arithmetic coding/decoding
|
|
||||||
Not supported due to patent concerns.
|
|
||||||
|
|
||||||
-- jpegtran: Scaling
|
-- jpegtran: Scaling
|
||||||
Seems to depend on the DCT scaling feature, which isn't supported.
|
Seems to depend on the DCT scaling feature, which isn't supported.
|
||||||
|
|||||||
24
configure.ac
24
configure.ac
@@ -207,6 +207,30 @@ AM_CONDITIONAL(ANON_VERSION_SCRIPT, test "x$ANON_VERSION_SCRIPT" = "xyes")
|
|||||||
AC_SUBST(VERSION_SCRIPT_FLAG)
|
AC_SUBST(VERSION_SCRIPT_FLAG)
|
||||||
AC_SUBST(ANON_VERSION_SCRIPT_FLAG)
|
AC_SUBST(ANON_VERSION_SCRIPT_FLAG)
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([whether to use arithmetic encoding])
|
||||||
|
AC_ARG_WITH([arith-enc],
|
||||||
|
AC_HELP_STRING([--without-arith-enc], [Omit arithmetic encoding support]))
|
||||||
|
if test "x$with_arith_enc" = "xno"; then
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
else
|
||||||
|
AC_DEFINE([C_ARITH_CODING_SUPPORTED], [1], [Support arithmetic encoding])
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
fi
|
||||||
|
AM_CONDITIONAL([WITH_ARITH_ENC], [test "x$with_arith_enc" != "xno"])
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([whether to use arithmetic decoding])
|
||||||
|
AC_ARG_WITH([arith-dec],
|
||||||
|
AC_HELP_STRING([--without-arith-dec], [Omit arithmetic decoding support]))
|
||||||
|
if test "x$with_arith_dec" = "xno"; then
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
else
|
||||||
|
AC_DEFINE([D_ARITH_CODING_SUPPORTED], [1], [Support arithmetic decoding])
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
fi
|
||||||
|
AM_CONDITIONAL([WITH_ARITH_DEC], [test "x$with_arith_dec" != "xno"])
|
||||||
|
|
||||||
|
AM_CONDITIONAL([WITH_ARITH], [test "x$with_arith_dec" != "xno" -o "x$with_arith_enc" != "xno"])
|
||||||
|
|
||||||
# SIMD is optional
|
# SIMD is optional
|
||||||
AC_ARG_WITH([simd],
|
AC_ARG_WITH([simd],
|
||||||
AC_HELP_STRING([--without-simd],[Omit accelerated SIMD routines.]))
|
AC_HELP_STRING([--without-simd],[Omit accelerated SIMD routines.]))
|
||||||
|
|||||||
@@ -3,6 +3,12 @@
|
|||||||
*/
|
*/
|
||||||
#define JPEG_LIB_VERSION 62 /* Version 6b */
|
#define JPEG_LIB_VERSION 62 /* Version 6b */
|
||||||
|
|
||||||
|
/* Support arithmetic encoding */
|
||||||
|
#undef C_ARITH_CODING_SUPPORTED
|
||||||
|
|
||||||
|
/* Support arithmetic decoding */
|
||||||
|
#undef D_ARITH_CODING_SUPPORTED
|
||||||
|
|
||||||
/* Define if your compiler supports prototypes */
|
/* Define if your compiler supports prototypes */
|
||||||
#undef HAVE_PROTOTYPES
|
#undef HAVE_PROTOTYPES
|
||||||
|
|
||||||
|
|||||||
2
jerror.h
2
jerror.h
@@ -41,7 +41,7 @@ JMESSAGE(JMSG_NOMESSAGE, "Bogus message code %d") /* Must be first entry! */
|
|||||||
|
|
||||||
/* For maintenance convenience, list is alphabetical by message code name */
|
/* For maintenance convenience, list is alphabetical by message code name */
|
||||||
JMESSAGE(JERR_ARITH_NOTIMPL,
|
JMESSAGE(JERR_ARITH_NOTIMPL,
|
||||||
"Sorry, there are legal restrictions on arithmetic coding")
|
"Sorry, arithmetic coding is not implemented")
|
||||||
JMESSAGE(JERR_BAD_ALIGN_TYPE, "ALIGN_TYPE is wrong, please fix")
|
JMESSAGE(JERR_BAD_ALIGN_TYPE, "ALIGN_TYPE is wrong, please fix")
|
||||||
JMESSAGE(JERR_BAD_ALLOC_CHUNK, "MAX_ALLOC_CHUNK is wrong, please fix")
|
JMESSAGE(JERR_BAD_ALLOC_CHUNK, "MAX_ALLOC_CHUNK is wrong, please fix")
|
||||||
JMESSAGE(JERR_BAD_BUFFER_MODE, "Bogus buffer control mode")
|
JMESSAGE(JERR_BAD_BUFFER_MODE, "Bogus buffer control mode")
|
||||||
|
|||||||
@@ -265,7 +265,6 @@ typedef int boolean;
|
|||||||
|
|
||||||
/* Encoder capability options: */
|
/* Encoder capability options: */
|
||||||
|
|
||||||
#define C_ARITH_CODING_SUPPORTED /* Arithmetic coding back end? */
|
|
||||||
#define C_MULTISCAN_FILES_SUPPORTED /* Multiple-scan JPEG files? */
|
#define C_MULTISCAN_FILES_SUPPORTED /* Multiple-scan JPEG files? */
|
||||||
#define C_PROGRESSIVE_SUPPORTED /* Progressive JPEG? (Requires MULTISCAN)*/
|
#define C_PROGRESSIVE_SUPPORTED /* Progressive JPEG? (Requires MULTISCAN)*/
|
||||||
#define ENTROPY_OPT_SUPPORTED /* Optimization of entropy coding parms? */
|
#define ENTROPY_OPT_SUPPORTED /* Optimization of entropy coding parms? */
|
||||||
@@ -281,7 +280,6 @@ typedef int boolean;
|
|||||||
|
|
||||||
/* Decoder capability options: */
|
/* Decoder capability options: */
|
||||||
|
|
||||||
#define D_ARITH_CODING_SUPPORTED /* Arithmetic coding back end? */
|
|
||||||
#define D_MULTISCAN_FILES_SUPPORTED /* Multiple-scan JPEG files? */
|
#define D_MULTISCAN_FILES_SUPPORTED /* Multiple-scan JPEG files? */
|
||||||
#define D_PROGRESSIVE_SUPPORTED /* Progressive JPEG? (Requires MULTISCAN)*/
|
#define D_PROGRESSIVE_SUPPORTED /* Progressive JPEG? (Requires MULTISCAN)*/
|
||||||
#define SAVE_MARKERS_SUPPORTED /* jpeg_save_markers() needed? */
|
#define SAVE_MARKERS_SUPPORTED /* jpeg_save_markers() needed? */
|
||||||
|
|||||||
Reference in New Issue
Block a user