Compare commits
16 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
585a0172e7 | ||
|
|
5263a8044f | ||
|
|
50503c7ac3 | ||
|
|
c21e538bfb | ||
|
|
babb815cc0 | ||
|
|
c06073a949 | ||
|
|
bdb1288e9e | ||
|
|
ae7fe0b9ab | ||
|
|
025a279ce6 | ||
|
|
3da06c794e | ||
|
|
30959719ad | ||
|
|
231a43fc68 | ||
|
|
0fbb28ec39 | ||
|
|
bab2941338 | ||
|
|
575c3425ad | ||
|
|
f1372d29eb |
@@ -150,7 +150,8 @@ Add
|
||||
LDFLAGS='-isysroot /Developer/SDKs/MacOSX10.4u.sdk \
|
||||
-mmacosx-version-min=10.4'
|
||||
|
||||
to the configure command line. The OS X 10.4 SDK must be installed.
|
||||
to the configure command line. The OS X 10.4 SDK, and NASM 2.07 or later from
|
||||
MacPorts, must be installed.
|
||||
|
||||
|
||||
32-bit Backward-Compatible Library Build on OS/X
|
||||
|
||||
@@ -1,3 +1,17 @@
|
||||
Significant changes since 1.0.0
|
||||
===============================
|
||||
|
||||
[1] The Huffman decoder will now handle erroneous Huffman codes (for instance,
|
||||
from a corrupt JPEG image.) Previously, these would cause libjpeg-turbo to
|
||||
crash under certain circumstances.
|
||||
|
||||
[2] Fixed typo in SIMD dispatch routines which was causing 4:2:2 upsampling to
|
||||
be used instead of 4:2:0 when decompressing JPEG images using SSE2 code.
|
||||
|
||||
[3] configure script will now automatically determine whether the
|
||||
INCOMPLETE_TYPES_BROKEN macro should be defined.
|
||||
|
||||
|
||||
Significant changes since 0.0.93
|
||||
================================
|
||||
|
||||
|
||||
34
Makefile.am
@@ -87,10 +87,8 @@ DOCS= README install.doc usage.doc wizard.doc example.c libjpeg.doc \
|
||||
ChangeLog.txt
|
||||
|
||||
TESTFILES= testorig.jpg testorig.ppm testimg.bmp testimgflt.jpg \
|
||||
testimgfst.jpg testimgint.jpg testimgp.jpg testimgfst.ppm testimgint.ppm \
|
||||
testimg-nosimd.bmp testimgfst-nosimd.ppm testorig-nosimd.ppm \
|
||||
testimgflt-nosimd.jpg testimgint-nosimd.jpg testimgfst-nosimd.jpg \
|
||||
testimgp-nosimd.jpg
|
||||
testimgfst.jpg testimgint.jpg testimgp.jpg testimgflt.ppm testimgfst.ppm \
|
||||
testimgint.ppm testimgflt-nosimd.jpg
|
||||
|
||||
EXTRA_DIST = win release $(DOCS) $(TESTFILES)
|
||||
|
||||
@@ -100,7 +98,7 @@ dist-hook:
|
||||
|
||||
if WITH_SIMD
|
||||
|
||||
test: testclean cjpeg djpeg jpegtran jpegut
|
||||
test: testclean all
|
||||
./jpegut
|
||||
./cjpeg -dct int -outfile testoutint.jpg $(srcdir)/testorig.ppm
|
||||
./cjpeg -dct fast -opt -outfile testoutfst.jpg $(srcdir)/testorig.ppm
|
||||
@@ -113,7 +111,7 @@ test: testclean cjpeg djpeg jpegtran jpegut
|
||||
./djpeg -dct float -ppm -outfile testoutflt.ppm $(srcdir)/testorig.jpg
|
||||
cmp $(srcdir)/testimgint.ppm testoutint.ppm
|
||||
cmp $(srcdir)/testimgfst.ppm testoutfst.ppm
|
||||
cmp $(srcdir)/testorig.ppm testoutflt.ppm
|
||||
cmp $(srcdir)/testimgflt.ppm testoutflt.ppm
|
||||
./djpeg -dct int -bmp -colors 256 -outfile testout.bmp $(srcdir)/testorig.jpg
|
||||
cmp $(srcdir)/testimg.bmp testout.bmp
|
||||
./cjpeg -dct int -progressive -outfile testoutp.jpg $(srcdir)/testorig.ppm
|
||||
@@ -123,26 +121,26 @@ test: testclean cjpeg djpeg jpegtran jpegut
|
||||
|
||||
else
|
||||
|
||||
test: testclean cjpeg djpeg jpegtran jpegut
|
||||
test: testclean all
|
||||
./jpegut
|
||||
./cjpeg -dct int -outfile testoutint.jpg $(srcdir)/testorig-nosimd.ppm
|
||||
./cjpeg -dct fast -opt -outfile testoutfst.jpg $(srcdir)/testorig-nosimd.ppm
|
||||
./cjpeg -dct float -outfile testoutflt.jpg $(srcdir)/testorig-nosimd.ppm
|
||||
cmp $(srcdir)/testimgint-nosimd.jpg testoutint.jpg
|
||||
cmp $(srcdir)/testimgfst-nosimd.jpg testoutfst.jpg
|
||||
./cjpeg -dct int -outfile testoutint.jpg $(srcdir)/testorig.ppm
|
||||
./cjpeg -dct fast -opt -outfile testoutfst.jpg $(srcdir)/testorig.ppm
|
||||
./cjpeg -dct float -outfile testoutflt.jpg $(srcdir)/testorig.ppm
|
||||
cmp $(srcdir)/testimgint.jpg testoutint.jpg
|
||||
cmp $(srcdir)/testimgfst.jpg testoutfst.jpg
|
||||
cmp $(srcdir)/testimgflt-nosimd.jpg testoutflt.jpg
|
||||
./djpeg -dct int -fast -ppm -outfile testoutint.ppm $(srcdir)/testorig.jpg
|
||||
./djpeg -dct fast -ppm -outfile testoutfst.ppm $(srcdir)/testorig.jpg
|
||||
./djpeg -dct float -ppm -outfile testoutflt.ppm $(srcdir)/testorig.jpg
|
||||
cmp $(srcdir)/testimgint.ppm testoutint.ppm
|
||||
cmp $(srcdir)/testimgfst-nosimd.ppm testoutfst.ppm
|
||||
cmp $(srcdir)/testorig-nosimd.ppm testoutflt.ppm
|
||||
cmp $(srcdir)/testimgfst.ppm testoutfst.ppm
|
||||
cmp $(srcdir)/testorig.ppm testoutflt.ppm
|
||||
./djpeg -dct int -bmp -colors 256 -outfile testout.bmp $(srcdir)/testorig.jpg
|
||||
cmp $(srcdir)/testimg-nosimd.bmp testout.bmp
|
||||
./cjpeg -dct int -progressive -outfile testoutp.jpg $(srcdir)/testorig-nosimd.ppm
|
||||
cmp $(srcdir)/testimgp-nosimd.jpg testoutp.jpg
|
||||
cmp $(srcdir)/testimg.bmp testout.bmp
|
||||
./cjpeg -dct int -progressive -outfile testoutp.jpg $(srcdir)/testorig.ppm
|
||||
cmp $(srcdir)/testimgp.jpg testoutp.jpg
|
||||
./jpegtran -outfile testoutt.jpg testoutp.jpg
|
||||
cmp $(srcdir)/testimgint-nosimd.jpg testoutt.jpg
|
||||
cmp $(srcdir)/testimgint.jpg testoutt.jpg
|
||||
|
||||
endif
|
||||
|
||||
|
||||
@@ -25,16 +25,21 @@ libraries can be used as drop-in replacements for libjpeg on most systems.
|
||||
** License
|
||||
*******************************************************************************
|
||||
|
||||
Some of the optimizations to the Huffman encoder/decoder were borrowed from
|
||||
VirtualGL, and thus the libjpeg-turbo distribution, as a whole, falls under the
|
||||
wxWindows Library Licence, Version 3.1. A copy of this license can be found in
|
||||
this directory under LICENSE.txt. The wxWindows Library License is based on
|
||||
the LGPL but includes provisions which allow the Library to be statically
|
||||
linked into proprietary libraries and applications without requiring the
|
||||
resulting binaries to be distributed under the terms of the LGPL.
|
||||
Some of the optimizations to the Huffman encoder (jchuff.c) and decoder
|
||||
(jdhuff.c) were borrowed from VirtualGL, and thus any distribution of
|
||||
libjpeg-turbo which includes those optimizations must, as a whole, be subject
|
||||
to the terms of the wxWindows Library Licence, Version 3.1. A copy of this
|
||||
license can be found in this directory under LICENSE.txt. The wxWindows
|
||||
Library License is based on the LGPL but includes provisions which allow the
|
||||
Library to be statically linked into proprietary libraries and applications
|
||||
without requiring the resulting binaries to be distributed under the terms of
|
||||
the LGPL.
|
||||
|
||||
The rest of the source code, apart from these modifications, falls under a less
|
||||
restrictive, BSD-style license (see README.)
|
||||
The rest of the source code, apart from the Huffman codec optimizations, falls
|
||||
under a less restrictive, BSD-style license (see README.) You can choose to
|
||||
distribute libjpeg-turbo, as a whole, under this BSD-style license by simply
|
||||
replacing the optimized jchuff.c and jdhuff.c with their unoptimized
|
||||
counterparts from the libjpeg v6b source.
|
||||
|
||||
|
||||
*******************************************************************************
|
||||
|
||||
12
configure.ac
@@ -2,7 +2,7 @@
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ([2.56])
|
||||
AC_INIT([libjpeg-turbo], [1.0.0])
|
||||
AC_INIT([libjpeg-turbo], [1.0.1])
|
||||
BUILD=`date +%Y%m%d`
|
||||
|
||||
AM_INIT_AUTOMAKE([-Wall foreign dist-bzip2])
|
||||
@@ -10,8 +10,6 @@ AC_PREFIX_DEFAULT(/opt/libjpeg-turbo)
|
||||
|
||||
# Always build with prototypes
|
||||
AC_DEFINE([HAVE_PROTOTYPES], 1, [Define if your compiler supports prototypes])
|
||||
# Don't use undefined types
|
||||
AC_DEFINE([INCOMPLETE_TYPES_BROKEN], 1, [Define if you want use complete types])
|
||||
|
||||
# Checks for programs.
|
||||
SAVED_CFLAGS=${CFLAGS}
|
||||
@@ -23,6 +21,13 @@ AC_PROG_INSTALL
|
||||
AC_PROG_LIBTOOL
|
||||
AC_PROG_LN_S
|
||||
|
||||
# Check whether compiler supports pointers to undefined structures
|
||||
AC_MSG_CHECKING(whether compiler supports pointers to undefined structures)
|
||||
AC_TRY_COMPILE([ typedef struct undefined_structure * undef_struct_ptr; ], ,
|
||||
AC_MSG_RESULT(yes),
|
||||
[AC_MSG_RESULT(no)
|
||||
AC_DEFINE([INCOMPLETE_TYPES_BROKEN],[1],[Compiler does not support pointers to undefined structures.])])
|
||||
|
||||
AC_MSG_CHECKING([whether the linker supports version scripts])
|
||||
VERSION_SCRIPT=no
|
||||
LDVER=`$LD --help </dev/null 2>&1 | grep "\-\-version-script"`
|
||||
@@ -174,7 +179,6 @@ esac
|
||||
AC_SUBST(RPMARCH)
|
||||
AC_SUBST(DEBARCH)
|
||||
AC_SUBST(BUILD)
|
||||
AC_SUBST(RM)
|
||||
|
||||
# jconfig.h is the file we use, but we have another before that to
|
||||
# fool autoheader. the reason is that we include this header in our
|
||||
|
||||
3
jdhuff.c
@@ -16,7 +16,7 @@
|
||||
|
||||
/* Modifications:
|
||||
* Copyright (C)2007 Sun Microsystems, Inc.
|
||||
* Copyright (C)2009 D. R. Commander
|
||||
* Copyright (C)2009-2010 D. R. Commander
|
||||
*
|
||||
* This library is free software and may be redistributed and/or modified under
|
||||
* the terms of the wxWindows Library License, Version 3.1 or (at your option)
|
||||
@@ -240,6 +240,7 @@ jpeg_make_d_derived_tbl (j_decompress_ptr cinfo, boolean isDC, int tblno,
|
||||
dtbl->maxcode[l] = -1; /* -1 if no codes of this length */
|
||||
}
|
||||
}
|
||||
dtbl->valoffset[17] = 0;
|
||||
dtbl->maxcode[17] = 0xFFFFFL; /* ensures jpeg_huff_decode terminates */
|
||||
|
||||
/* Compute lookahead tables to speed up decoding.
|
||||
|
||||
3
jdhuff.h
@@ -2,6 +2,7 @@
|
||||
* jdhuff.h
|
||||
*
|
||||
* Copyright (C) 1991-1997, Thomas G. Lane.
|
||||
* Copyright (C) 2010, D. R. Commander.
|
||||
* This file is part of the Independent JPEG Group's software.
|
||||
* For conditions of distribution and use, see the accompanying README file.
|
||||
*
|
||||
@@ -27,7 +28,7 @@ typedef struct {
|
||||
/* Basic tables: (element [0] of each array is unused) */
|
||||
INT32 maxcode[18]; /* largest code of length k (-1 if none) */
|
||||
/* (maxcode[17] is a sentinel to ensure jpeg_huff_decode terminates) */
|
||||
INT32 valoffset[17]; /* huffval[] offset for codes of length k */
|
||||
INT32 valoffset[18]; /* huffval[] offset for codes of length k */
|
||||
/* valoffset[k] = huffval[] index of 1st symbol of code length k, less
|
||||
* the smallest code of length k; so given a code of length k, the
|
||||
* corresponding symbol is huffval[code + valoffset[k]]
|
||||
|
||||
@@ -95,7 +95,7 @@ EXTN(jsimd_h2v1_downsample_mmx):
|
||||
|
||||
mov eax, JDIMENSION [v_samp(ebp)] ; rowctr
|
||||
test eax,eax
|
||||
jle short .return
|
||||
jle near .return
|
||||
|
||||
mov edx, 0x00010000 ; bias pattern
|
||||
movd mm7,edx
|
||||
|
||||
@@ -253,7 +253,7 @@ EXTN(jsimd_h2v1_merged_upsample_mmx):
|
||||
movq MMWORD [edi+2*SIZEOF_MMWORD], mmC
|
||||
|
||||
sub ecx, byte SIZEOF_MMWORD
|
||||
jz short .endcolumn
|
||||
jz near .endcolumn
|
||||
|
||||
add edi, byte RGB_PIXELSIZE*SIZEOF_MMWORD ; outptr
|
||||
add esi, byte SIZEOF_MMWORD ; inptr0
|
||||
|
||||
@@ -382,7 +382,7 @@ jsimd_h2v2_fancy_upsample (j_decompress_ptr cinfo,
|
||||
{
|
||||
if ((simd_support & JSIMD_SSE2) &&
|
||||
IS_ALIGNED_SSE(jconst_fancy_upsample_sse2))
|
||||
jsimd_h2v1_fancy_upsample_sse2(cinfo->max_v_samp_factor,
|
||||
jsimd_h2v2_fancy_upsample_sse2(cinfo->max_v_samp_factor,
|
||||
compptr->downsampled_width, input_data, output_data_ptr);
|
||||
else if (simd_support & JSIMD_MMX)
|
||||
jsimd_h2v2_fancy_upsample_mmx(cinfo->max_v_samp_factor,
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
#include "../jsimd.h"
|
||||
#include "../jdct.h"
|
||||
#include "../jsimddct.h"
|
||||
#include "simd/jsimd.h"
|
||||
#include "jsimd.h"
|
||||
|
||||
/*
|
||||
* In the PIC cases, we have no guarantee that constants will keep
|
||||
@@ -260,7 +260,7 @@ jsimd_h2v2_fancy_upsample (j_decompress_ptr cinfo,
|
||||
JSAMPARRAY input_data,
|
||||
JSAMPARRAY * output_data_ptr)
|
||||
{
|
||||
jsimd_h2v1_fancy_upsample_sse2(cinfo->max_v_samp_factor,
|
||||
jsimd_h2v2_fancy_upsample_sse2(cinfo->max_v_samp_factor,
|
||||
compptr->downsampled_width,
|
||||
input_data, output_data_ptr);
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 34 KiB |
BIN
testimg.bmp
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
BIN
testimgflt.jpg
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 5.6 KiB |
4
testimgflt.ppm
Normal file
|
Before Width: | Height: | Size: 5.3 KiB |
BIN
testimgfst.jpg
|
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 5.6 KiB |
BIN
testimgint.jpg
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 5.5 KiB |
BIN
testimgp.jpg
|
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 5.5 KiB |
@@ -243,7 +243,6 @@ nsi: all
|
||||
-DPLATFORM="Visual C++" release/libjpeg-turbo.nsi
|
||||
endif
|
||||
|
||||
|
||||
test: testclean $(ODIR)/cjpeg.exe $(ODIR)/djpeg.exe $(ODIR)/jpegtran.exe \
|
||||
$(ODIR)/jpegut.exe
|
||||
cd $(ODIR); ./jpegut
|
||||
@@ -258,7 +257,7 @@ test: testclean $(ODIR)/cjpeg.exe $(ODIR)/djpeg.exe $(ODIR)/jpegtran.exe \
|
||||
$(ODIR)/djpeg -dct float -ppm -outfile $(ODIR)/testoutflt.ppm testorig.jpg
|
||||
cmp testimgint.ppm $(ODIR)/testoutint.ppm
|
||||
cmp testimgfst.ppm $(ODIR)/testoutfst.ppm
|
||||
cmp testorig.ppm $(ODIR)/testoutflt.ppm
|
||||
cmp testimgflt.ppm $(ODIR)/testoutflt.ppm
|
||||
$(ODIR)/djpeg -dct int -bmp -colors 256 -outfile $(ODIR)/testout.bmp testorig.jpg
|
||||
cmp testimg.bmp $(ODIR)/testout.bmp
|
||||
$(ODIR)/cjpeg -dct int -progressive -outfile $(ODIR)/testoutp.jpg testorig.ppm
|
||||
|
||||
@@ -13,7 +13,7 @@ endif
|
||||
|
||||
_DUMMY := $(shell mkdir -p $(ODIR))
|
||||
|
||||
VERSION = 1.0.0
|
||||
VERSION = 1.0.1
|
||||
|
||||
CC = "cl" -nologo
|
||||
CXX = "cl" -EHsc -nologo
|
||||
|
||||