* commit '93ddfcfc1a814789ed64d967a6118616753bb9d5': (65 commits)
Use clz/bsr instructions on ARM for bit counting rather than the lookup table (reduces memory footprint and can improve performance in some cases.)
Make iOS build instructions more generic and applicable to all versions of Xcode; modify iOS build procedure for Xcode 5.0 and later to fix a build issue with Xcode 5.1.
Update build instructions to reflect the use of pkgbuild/productbuild
Remove any claims of support for OS X 10.4 "Tiger" (the packaging system overhaul produces packages that require Leopard or later, and I haven't been able to test Tiger for years anyhow.) Update TurboJPEG shared library version.
Migrate Mac packaging system to pkgbuild, since PackageMaker is no longer supported.
Remove the sections about replacing libjpeg at run time and compile time. These were written before O/S distributions started shipping libjpeg-turbo, and they are either pedantic or no longer relevant. Also remove any text that assumes the use of our official project binaries. Notes specific to the official binaries have been moved into the project wiki.
Fix Windows build
Since we're now maintaining our own Cygwin pseudo-repository directories instead of recommending that users install these packages from a local source, it makes more sense to name the packages according to Cygwin specs, so they can be copied as-is into the pseudo-repository.
39dbc2db9718f9af2f62eb486fd73328fe8bf5e8
Fix 'make dist'
RHEL 6 (and probably other platforms as well) sets _defaultdocdir=%{_datadir}/doc, which screws things up, since we're overriding _datadir. Since we intend _defaultdocdir to be /usr/share/doc, just be explicit about it.
Fix compiler warning about unused function when building with the libjpeg v6b API/ABI
Fix compiler warning ("always_inline function might not be inlinable") when building with recent versions of GCC
Enable silent build (can be overridden with 'make V=1') if the version of autotools being used is new enough.
Extend YUVImage class to allow reuse of the same buffer with different metadata; port TJBench changes that treat YUV encoding/decoding as an intermediate step of the JPEG compression/decompression pipeline rather than a separate test case; add YUV encode/decode tests to the Java version of tjbenchtest
formatting tweaks
Fix an error that occurred when trying to use the lossless transform feature without specifying -quiet; formatting tweak
Move the garbage collection of the JPEG tiles into the decompression function to increase the chances that tiled decompression of large images will succeed without an OutOfMemoryError.
Generate the Java documentation using javadoc 7, to improve readability.
This should have been checked in with the previous commit.
...
Conflicts:
BUILDING.txt
configure.ac
jversion.h
release/Info.plist.in
release/ReadMe.rtf
tjbench.c
turbojpeg.c
130 lines
3.9 KiB
C
130 lines
3.9 KiB
C
/*
|
|
* Copyright (C)2011 D. R. Commander. All Rights Reserved.
|
|
* mozjpeg Modifications:
|
|
* Copyright (C) 2014, Mozilla Corporation.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are met:
|
|
*
|
|
* - Redistributions of source code must retain the above copyright notice,
|
|
* this list of conditions and the following disclaimer.
|
|
* - Redistributions in binary form must reproduce the above copyright notice,
|
|
* this list of conditions and the following disclaimer in the documentation
|
|
* and/or other materials provided with the distribution.
|
|
* - Neither the name of the libjpeg-turbo Project nor the names of its
|
|
* contributors may be used to endorse or promote products derived from this
|
|
* software without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS",
|
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
|
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
* POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
/* This program demonstrates how to check for the colorspace extension
|
|
capabilities of libjpeg-turbo at both compile time and run time. */
|
|
|
|
#include <stdio.h>
|
|
#include <jpeglib.h>
|
|
#include <jerror.h>
|
|
#include <setjmp.h>
|
|
|
|
#ifndef JCS_EXTENSIONS
|
|
#define JCS_EXT_RGB 6
|
|
#endif
|
|
#if !defined(JCS_EXTENSIONS) || !defined(JCS_ALPHA_EXTENSIONS)
|
|
#define JCS_EXT_RGBA 12
|
|
#endif
|
|
|
|
static char lasterror[JMSG_LENGTH_MAX] = "No error";
|
|
|
|
typedef struct _error_mgr {
|
|
struct jpeg_error_mgr pub;
|
|
jmp_buf jb;
|
|
} error_mgr;
|
|
|
|
static void my_error_exit(j_common_ptr cinfo)
|
|
{
|
|
error_mgr *myerr = (error_mgr *)cinfo->err;
|
|
(*cinfo->err->output_message)(cinfo);
|
|
longjmp(myerr->jb, 1);
|
|
}
|
|
|
|
static void my_output_message(j_common_ptr cinfo)
|
|
{
|
|
(*cinfo->err->format_message)(cinfo, lasterror);
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
int jcs_valid = -1, jcs_alpha_valid = -1;
|
|
struct jpeg_compress_struct cinfo;
|
|
error_mgr jerr;
|
|
|
|
printf("libjpeg-turbo colorspace extensions:\n");
|
|
#if JCS_EXTENSIONS
|
|
printf(" Present at compile time\n");
|
|
#else
|
|
printf(" Not present at compile time\n");
|
|
#endif
|
|
|
|
cinfo.err = jpeg_std_error(&jerr.pub);
|
|
jerr.pub.error_exit = my_error_exit;
|
|
jerr.pub.output_message = my_output_message;
|
|
|
|
if(setjmp(jerr.jb)) {
|
|
/* this will execute if libjpeg has an error */
|
|
jcs_valid = 0;
|
|
goto done;
|
|
}
|
|
|
|
jpeg_create_compress(&cinfo);
|
|
cinfo.input_components = 3;
|
|
cinfo.use_moz_defaults = TRUE;
|
|
jpeg_set_defaults(&cinfo);
|
|
cinfo.in_color_space = JCS_EXT_RGB;
|
|
jpeg_default_colorspace(&cinfo);
|
|
jcs_valid = 1;
|
|
|
|
done:
|
|
if (jcs_valid)
|
|
printf(" Working properly\n");
|
|
else
|
|
printf(" Not working properly. Error returned was:\n %s\n",
|
|
lasterror);
|
|
|
|
printf("libjpeg-turbo alpha colorspace extensions:\n");
|
|
#if JCS_ALPHA_EXTENSIONS
|
|
printf(" Present at compile time\n");
|
|
#else
|
|
printf(" Not present at compile time\n");
|
|
#endif
|
|
|
|
if(setjmp(jerr.jb)) {
|
|
/* this will execute if libjpeg has an error */
|
|
jcs_alpha_valid = 0;
|
|
goto done2;
|
|
}
|
|
|
|
cinfo.in_color_space = JCS_EXT_RGBA;
|
|
jpeg_default_colorspace(&cinfo);
|
|
jcs_alpha_valid = 1;
|
|
|
|
done2:
|
|
if (jcs_alpha_valid)
|
|
printf(" Working properly\n");
|
|
else
|
|
printf(" Not working properly. Error returned was:\n %s\n",
|
|
lasterror);
|
|
|
|
jpeg_destroy_compress(&cinfo);
|
|
return 0;
|
|
}
|