|
9c6f79e9
|
2019-11-13T14:36:37
|
|
Fix formatting issues detected by checkstyle
|
|
f60b6dd3
|
2019-11-12T17:42:39
|
|
Remove vestigial jpeg_nbits_table.inc
Not needed since 087c29e07f7533ec82fd7eb1dafc84c29e7870ec
|
|
c43a5081
|
2019-11-12T17:07:46
|
|
Merge branch 'master' into dev
|
|
bd20344b
|
2019-11-12T15:45:20
|
|
tjDecompressToYUV*(): Fix OOB write/double free
... when attempting to decompress grayscale JPEG images with sampling
factors != 1.
Fixes #387
|
|
c30b1e72
|
2019-11-12T12:27:22
|
|
64-bit tjbench: Fix signed int overflow/segfault
... that occurred when attempting to decompress images with more than
715827882 (2048*1024*1024 / 3) pixels.
Fixes #388
|
|
713c451f
|
2019-11-08T14:53:55
|
|
Enable SSE2 progressive Huffman encoder for x32
Referring to #289, I'm not sure where I arrived at the conclusion that
the SSE2 progressive Huffman encoder doesn't provide any speedup for
x32. Upon re-testing, I discovered it to be about 50% faster than the
C encoder.
This commit also re-purposes one of the CI tests (specifically, the
jpeg-7 API/ABI test) so that it tests x32 as well.
|
|
2234deee
|
2019-11-08T13:51:34
|
|
Fix MSan use-of-uninitialized-value error
... introduced by 42825b68d570fb07fe820ac62ad91017e61e9a25. In fact,
fault-tolerant multi-scan block smoothing cannot currently be used with
the arithmetic decoder, because that decoder doesn't have any way of
distinguishing a normal end of scan from an unexpected end of scan.
Thus, this commit also modifies the change log to reset the expectations
regarding the scope of the fault-tolerant multi-scan block smoothing
feature. If, at some point in the future, the arithmetic decoder can be
modified to detect an unexpected end of scan, then one would need only
set entropy->pub.insufficient_data = TRUE when the arithmetic decoder
encounters an unexpected end of scan in order to make fault-tolerant
block smoothing work properly with that decoder.
|
|
82695cfd
|
2019-11-07T15:15:36
|
|
ChangeLog: Acknowledge 2.0.3/de-acknowledge 2.0.4
It is very unlikely that there will be an official 2.0.4 release.
|
|
42825b68
|
2019-11-07T14:03:23
|
|
Fault-tolerant multi-scan block smoothing
This commit modifies the behavior of the block smoothing algorithm in
the libjpeg API library so that, if a scan in a multi-scan JPEG image is
incomplete (due to premature termination of the image stream), the block
smoothing parameters from the previous (complete) scan are used to
smooth any iMCU rows that the incomplete scan does not contain.
Closes #343
|
|
f2d4b473
|
2019-11-07T02:13:09
|
|
Travis: Use Docker tag that matches Git branch
dcommander/buildljt:dev is a CentOS 6 container with YASM 1.2.0 rather
than NASM 2.10, so it can build the new optimized SSE2 Huffman encoder.
|
|
45dff48c
|
2019-11-06T23:02:03
|
|
Merge branch 'master' into dev
|
|
622c462e
|
2019-11-06T17:24:08
|
|
Fix copyright header formatting buglets
|
|
410c028f
|
2019-11-06T14:17:10
|
|
example.txt: Avoid undefined setjmp() behavior
Modifying a locally-defined non-volatile variable below the setjmp()
return point results in undefined behavior whereby the variable may not
have the expected value after setjmp() returns.
Fixes #379
|
|
d70047fc
|
2019-11-05T17:45:10
|
|
Travis: Use GCC 6 for Mac pre-release builds
The primary impetus for this is to eliminate build warnings, such as
(32-bit only)
section "__textcoal_nt" is deprecated
object file (XXXXXX.o) was built for newer OSX version (10.XX) than
being linked (10.5)
Upgrading to GCC 6 results in neutral performance for compression,
a measured average overall decompression speedup of 2.5% for 64-bit
code, and a measured average overall decompression speedup of -4.3% for
32-bit code on a 3 GHz Core i7. The 4.3% slow-down for 32-bit code is
deemed acceptable, given that 32-bit macOS apps are deprecated.
|
|
cbf0fcc8
|
2019-11-05T11:56:06
|
|
i386 SSE2 Huffman: Fix pointer arithmetic issue
Splitting the pointer arithmetic in GET_SYM() into a separate add and
sub instruction was an attempt to work around an error ("invalid operand
type") that occurred when assembling the file with NASM. However, this
created a link error on macOS ("ld: illegal text-relocation to
'_jconst_huff_encode_one_block' in
simd/CMakeFiles/simd.dir/i386/jchuff-sse2.asm.o from
'_jsimd_huff_encode_one_block_sse2' in
simd/CMakeFiles/simd.dir/i386/jchuff-sse2.asm.o for architecture i386")
and also changed the alignment of the code in ways that might have
affected the previous benchmark results (which took a great deal of time
to obtain.) Ultimately, the path of least resistance is just to
require NASM 2.13 or later.
|
|
bbedb4b5
|
2019-11-05T15:43:21
|
|
Merge branch 'master' into dev
|
|
cf54623b
|
2019-11-05T12:21:25
|
|
Mac: Support hiding SIMD fct symbols w/ NASM 2.14+
(NASM 2.14+ now supports the private_extern section directive, which was
previously only available with YASM.)
|
|
087c29e0
|
2018-10-22T10:05:18
|
|
Optimize Huffman encoding
This commit improves the C and SSE2 Huffman encoding implementations in
the following ways:
- Avoid using xmm8-xmm15 in the x86-64 SSE2 implementation. There is no
actual need to use those registers, and avoiding them produces a
cleaner WIN64 function entry/exit-- as well as shorter code, since REX
prefixes can be avoided (this is helpful on certain CPUs, such as
Intel Atom, for which instruction fetch and decoding can be a
bottleneck.)
- Optimize register usage so that fewer REX prefixes and
register-register moves are needed.
- Use the bit counter to store the number of free bits in the bit buffer
rather than the number of bits in the bit buffer. This changes the
method for inserting a code into the bit buffer to:
(put_buffer |= code << (free_bits -= code_size));
As a result:
* Only one bit counter needs to stay in a register (we just keep it in
cl.)
* The bit buffer contents are already properly aligned to be written
out (after a byte swap.)
* Adjusting the free bits counter and checking if the bit buffer is
full can be combined into a single operation.
* We can wait to flush the bit buffer until the buffer is actually
full and not just in danger of becoming full. Thus, eight bytes can
be flushed at a time.
- Speed is quite sensitive to the alignment of branch target labels, so
insert some padding and remove branches from the flush code.
(Flushing this way isn't actually faster when compared to using
branches, but the branchless code doesn't need extra alignment and is
thus smaller.)
- Speculatively write out the bit buffer as a single 8-byte write,
falling back to a byte-by-byte write only if there are any 0xFF bytes
in the bit buffer that need to be encoded as 0xFF 0x00.
- Use MMX registers for the 32-bit implementation (so the bit buffer can
be 64 bits wide.)
- Slightly reduce overall function code size.
- Eliminate or combine a few SSE instructions.
- Make some minor improvements to instruction scheduling.
- Adjust flush_bits() in jchuff.c to handle cases in which the bit
buffer has less than 7 free bits (apparently that couldn't happen
before.)
Based on:
https://github.com/1camper/libjpeg-turbo/commit/947a09defa2ec848322b1bae050d1b57b316a32a
https://github.com/1camper/libjpeg-turbo/commit/262ebb6b816fd8a49ff4d7185f6c5153dddde02f
https://github.com/1camper/libjpeg-turbo/commit/6e9a091221bb244c8ba232a942650e94254ffcf0
See change log for performance claims.
Closes #292
|
|
d92ae5df
|
2019-11-04T18:50:45
|
|
Merge branch 'master' into dev
|
|
ac59b2c5
|
2019-11-04T18:49:46
|
|
TJBench: Fix output with -componly -quiet
|
|
6902cdb1
|
2019-10-28T14:28:29
|
|
Build: Don't require ASM_NASM if !REQUIRE_SIMD
The build system is supposed to fall back to a non-SIMD build if
WITH_SIMD==1 but REQUIRE_SIMD==0.
Based on:
https://github.com/emlix/libjpeg-turbo/commit/972df912d08b755db3ca60d93b058a42e97a79eb
Closes #384
|
|
adf9cc94
|
2019-10-16T20:11:59
|
|
j*huff.c: Remove crufty ASSIGN_STATE() macro
This macro is a relic of libjpeg's historic need to support a wide
variety of C compilers with varying degrees of compatibility. Such was
necessary during the open systems era, because C compilers were often
supplied by the system vendor. Prior to 1989, there was no C standard
per se, and even after ANSI C became a thing, there were still compilers
in use that didn't conform to it (libjpeg was first released in 1991.)
Realistically, only a handful of C compilers are in widespread use these
days, and all modern C compilers should support structure assignment.
|
|
95f4d6ef
|
2019-10-24T02:13:23
|
|
Merge branch 'master' into dev
|
|
55de9720
|
2019-10-24T01:50:35
|
|
AppVeyor: Use MinGW-builds instead of MSYS2 MinGW
... to avoid backward compatibility issues with GCC 4-6 MinGW
toolchains. Apparently GCC 7+ MinGW toolchains introduce a link-time
dependency with internal MinGW CRT functions that are meant to provide
compatibility with Microsoft's Universal CRT (ucrt) library, but those
internal functions are not available in GCC 4-6 MinGW toolchains. This
made it impossible to use the official builds of libjpeg.a and
libturbojpeg.a with GCC 4-6 MinGW toolchains (a fatal link error--
"undefined reference to '__imp___acrt_iob_func'"-- occurred.)
This problem was not immediately apparent after switching to the MSYS2
implementation of MinGW (d6d7b539682abb50b04207abd21726573c0fb845)
because, for a while, MSYS2 was still using GCC 5 and 6.
Refer to libjpeg-turbo/libjpeg-turbo#382
|
|
708f013f
|
2019-10-22T20:08:57
|
|
Win packaging: Fix 64-bit VC/GCC co-install issue
|
|
163f0b19
|
2019-10-22T19:39:38
|
|
Bump version to 2.0.4 to prepare for new commits
|
|
3a32d199
|
2019-10-17T19:59:01
|
|
x86 SIMD: Consistify capitalization of NASM types
byte, word, dword, qword, oword, and yword are all assembler keywords,
so it makes sense to use lowercase for these so as not to mistake them
for macros or constants.
|
|
9a51a87a
|
2019-10-17T11:21:32
|
|
x86 SIMD: Remove obsolete [TAB8] comments
With apologies to Richard Hendricks, our assembly code no longer uses
tabs.
|
|
74aeaddf
|
2019-10-16T21:16:43
|
|
jc*huff.c: Consistify preproc directive formatting
The rest of the libjpeg API code uses "#if defined(condition)" rather
than "#if defined condition".
|
|
2ae2bd66
|
2019-10-04T16:05:11
|
|
Remove support for Apple's Java implementation
(AKA "Java for OS X systems.") This implementation of Java 1.6 is long
obsolete and not supported on any version of macOS past High Sierra.
Oracle no longer provides a 32-bit JVM on macOS, so it is no longer
necessary to provide a 32-bit version of the TurboJPEG Java wrapper on
macOS.
|
|
b7523059
|
2019-10-04T15:53:30
|
|
Merge branch 'master' into dev
|
|
ab6c4a5d
|
2019-10-04T15:02:18
|
|
Travis: Fix macOS build
Java 6 has moved to homebrew/cask-versions.
|
|
ec4cacc1
|
2019-10-02T16:35:17
|
|
BUILDING.md: Document need for CRB/PowerTools repo
NASM and YASM are located in this non-default repository on
(respectively) RHEL and CentOS.
|
|
b4110b65
|
2019-09-04T18:58:12
|
|
Merge branch 'master' into dev
|
|
5db6a681
|
2019-08-30T12:02:50
|
|
README.md: Document memory debugger pitfalls
(more specifically, the need to disable libjpeg-turbo's SIMD extensions
when testing with valgrind, MSan, etc.)
Addresses a concern expressed in #365
|
|
f448279b
|
2019-08-30T11:15:47
|
|
README.md: Remove vestigial autotools references
|
|
ded5a504
|
2019-08-15T13:24:25
|
|
tjDecodeYUV*: Fix err if TJ inst used for prog dec
If the TurboJPEG instance passed to tjDecodeYUV[Planes]() was previously
used to decompress a progressive JPEG image, then we need to disable the
progressive decompression parameters in the underlying libjpeg instance
before calling jinit_master_decompress().
This commit also modifies the build system so that the "tjtest" target
will test for this issue, and it corrects a previous oversight in the
build system whereby tjbenchtest did not test progressive
compression/decompression unless WITH_JAVA was true.
|
|
8ef53b10
|
2019-08-14T22:08:59
|
|
Merge branch 'master' into dev
|
|
c0d0fe86
|
2019-08-14T22:08:44
|
|
ChangeLog.md: Wordsmithing
|
|
a81a8c13
|
2019-08-14T13:17:11
|
|
SSE2 SIMD: Fix prog Huffman enc. error if Sl%16==0
(regression introduced by 5b177b3cab5cfb661256c1e74df160158ec6c34e)
The SSE2 implementation of progressive Huffman encoding performed
extraneous iterations when the scan length was a multiple of 16.
Based on:
https://github.com/rouault/libjpeg-turbo/commit/bb7f1ef98305da915e581b59bd0ec2ef7bdb8468
Fixes #335
Closes #367
|
|
02f7bcdb
|
2019-08-13T16:03:48
|
|
Travis: Enable additional sanitizer tests
- Re-purpose the non-SIMD test to test with MSan as well.
- Re-purpose the ASan test to test with UBSan as well.
- Use the default Travis build environment rather than specifying Ubuntu
14.04. I think I added 'dist: trusty' back when 14.04 was newer than
the default, but now it's older than the default.
- Enable verbose output for any unit tests that fail (so we can see the
sanitizer output.)
|
|
7fbfe29c
|
2019-07-18T15:18:27
|
|
Merge branch 'master' into dev
|
|
5ced1f59
|
2019-07-18T14:25:25
|
|
Travis: Cache Homebrew downloads
... to speed up the Mac CI builds.
|
|
b98ee192
|
2019-07-18T14:14:47
|
|
Travis: Update Homebrew/fix Mac CI build
Updating Homebrew wasn't necessary when the CI build first started using
the xcode8.3 image (see c8e52741fdb623698a27a4c55cf63db93c95aa14), but
apparently it now is.
|
|
ad8330af
|
2019-07-12T17:28:55
|
|
TJBench.java: Remove space in method invocation
(to make checkstyle happy)
|
|
b25adabc
|
2019-07-12T17:27:37
|
|
tjbench.c: Fix minor code formatting errors
(introduced by 2a9e3bd7430cfda1bc812d139e0609c6aca0b884)
|
|
875e873f
|
2019-07-11T17:05:15
|
|
tjutil.c: Fix compiler warning with Visual Studio
Apparently windows.h includes stdlib.h, which defines the max() and
min() macros, so we need to ensure that tjutil.h is included after
that.
|
|
2a9e3bd7
|
2019-07-11T15:30:04
|
|
TurboJPEG: Properly handle gigapixel images
Prevent several integer overflow issues and subsequent segfaults that
occurred when attempting to compress or decompress gigapixel images with
the TurboJPEG API:
- Modify tjBufSize(), tjBufSizeYUV2(), and tjPlaneSizeYUV() to avoid
integer overflow when computing the return values and to return an
error if such an overflow is unavoidable.
- Modify tjunittest to validate the above.
- Modify tjCompress2(), tjEncodeYUVPlanes(), tjDecompress2(), and
tjDecodeYUVPlanes() to avoid integer overflow when computing the row
pointers in the 64-bit TurboJPEG C API.
- Modify TJBench (both C and Java versions) to avoid overflowing the
size argument to malloc()/new and to fail gracefully if such an
overflow is unavoidable.
In general, this allows gigapixel images to be accommodated by the
64-bit TurboJPEG C API when using automatic JPEG buffer (re)allocation.
Such images cannot currently be accommodated without automatic JPEG
buffer (re)allocation, due to the fact that tjAlloc() accepts a 32-bit
integer argument (oops.) Such images cannot be accommodated in the
TurboJPEG Java API due to the fact that Java always uses a signed 32-bit
integer as an array index.
Fixes #361
|
|
f37b7c1f
|
2019-07-02T11:28:26
|
|
Build: Fix build/install with Xcode IDE
Closes #355
|
|
509c2680
|
2019-05-09T13:46:53
|
|
Use bias pattern for 4:4:0 (h1v2) fancy upsampling
This commit modifies h1v2_fancy_upsample() so that it uses an ordered
dither pattern, similar to that of h2v1_fancy_upsample(), rounding up or
down the result for alternate pixels rather than always rounding down.
This ensures that the decompression error pattern for a 4:4:0 JPEG image
will be similar to the rotated decompression error pattern for a 4:2:2
JPEG image. Thus, the final result will be similar regardless of
whether a 4:2:2 JPEG image is rotated or transposed before or after
decompression.
Closes #356
|
|
ec5adb83
|
2019-05-18T17:58:50
|
|
Build/packaging: Support macOS package/DMG signing
|
|
051f4862
|
2019-05-09T20:46:18
|
|
Travis: Fix iOS build
The new libjpeg-turbo 2.1.x official build scripts expect Xcode to be
under /Applications/Xcode83.app.
|
|
c055c880
|
2019-05-09T20:36:51
|
|
Discontinue support for 32-bit iOS builds
|
|
85d96d44
|
2019-05-09T19:13:39
|
|
Merge branch 'master' into dev
|
|
c8e52741
|
2019-05-09T09:11:09
|
|
Travis: Use xcode8.3 image
xcode7.3 is based on El Capitan, which is EOL, and Homebrew no longer
provides El Cap bottles (pre-compiled binaries.) Thus, Homebrew was
trying to build GCC 5, YASM, and the other packages we need from source,
which caused the Mac CI builds to time out. I tried goading Homebrew
into installing GCC 5.5.0_2 and YASM 1.3.0_1, which still have El Cap
bottles available, by using the URLs of those specific versions of the
formulae (from the Homebrew GitHub repository) as package names. This
failed, however, because 'brew bundle' converted the URLs to all
lowercase. I then tried explicitly installing the old formulae by using
'brew install' with the aforementioned URLs (bypassing the Travis
Homebrew addon), but Homebrew still tried to build all of the
dependencies from source.
Upgrading to Xcode 8.3.x necessitated regression testing the performance
on iOS, but that proved less of a pain than figuring out how to install
all of the old Homebrew bottles we needed. Also, this future-proofs the
CI builds against the inevitable discontinuation of the xcode7.3 image.
Note that Xcode 8.3.x improves iOS 64-bit decompression performance
significantly relative to Xcode 7.2.x or 7.3.x. iOS 32-bit performance
unfortunately regresses by as much as 5%, but it can't be helped (32-bit
iOS apps are no longer supported on iOS 11+ anyhow, and the next major
release of libjpeg-turbo will remove support for them as well.)
|
|
f36d5315
|
2019-04-23T14:54:23
|
|
Merge branch 'master' into dev
|
|
6399d0a6
|
2019-04-23T14:10:04
|
|
Fix code formatting/style issues ...
... including, but not limited to:
- unused macros
- private functions not marked as static
- unprototyped global functions
- variable shadowing
(detected by various non-default GCC 8 warning options)
|
|
aa9db616
|
2019-04-15T17:55:47
|
|
x86 SIMD: Check for CPUID leaf 07H before using
According to Intel's manual [1], "If a value entered for CPUID.EAX is
higher than the maximum input value for basic or extended function for
that processor then the data for the highest basic information leaf is
returned."
Right now, libjpeg-turbo doesn't first check that leaf 07H is supported
before attempting to use it, so the ostensible AVX2 bit (Bit 05) of the
CPUID result might actually be Bit 05 from a lower leaf. That bit might
be set, even if the CPU doesn't support AVX2.
This commit modifies the x86 and x86-64 SIMD feature detection code so
that it first checks whether CPUID leaf 07H is supported before
attempting to use it to check for AVX2 instruction support.
DRC:
This commit should fix
https://bugzilla.mozilla.org/show_bug.cgi?id=1520760
However, I have not personally been able to reproduce that issue,
despite using a Nehalem (pre-AVX2) CPU on which the maximum CPUID leaf
has been limited via a BIOS setting.
Closes #348
[1]
"IntelĀ® 64 and IA-32 Architectures Software Developer's Manual, Volume 2 (2A, 2B, 2C & 2D): Instruction Set Reference, A-Z", https://software.intel.com/sites/default/files/managed/a4/60/325383-sdm-vol-2abcd.pdf, page 3-192.
|
|
8a0e35b2
|
2019-04-15T13:41:45
|
|
Merge branch 'master' into dev
|
|
2b05d47b
|
2019-04-15T13:38:15
|
|
ChangeLog.md: Document 33011754
|
|
7bc9fca4
|
2019-04-12T09:07:35
|
|
jdhuff.c: Silence UBSan signed int overflow err #2
Same as d3a3a73f64041c6a6905faf6f9f9832e735fd880 but in the fast decode
path. It was necessary to use a different-sized test image in order to
trigger the error in this location.
Refer to #347
|
|
bb16b944
|
2019-04-12T08:53:45
|
|
GitHub: Remove new lines from feature-request.md
(to make checkstyle happy)
|
|
33011754
|
2019-04-12T08:47:28
|
|
Android: Fix "using JNI after critical get" errors
5ea77d8b771bf7b0be7acc7fb70c255f8c9c8f77 was insufficient to fix all of
these. In particular, we need to always release the primitive arrays
before throwing an exception, because throwing an exception qualifies as
"using JNI."
Refer to #300
|
|
bce58f48
|
2019-04-12T07:49:35
|
|
Consistify formatting of macros in TurboJPEG code
|
|
ce067a6c
|
2019-04-10T15:16:55
|
|
GitHub: Template tweaks
CONTRIBUTING.md: Correct misuse of "as such" (Grammar Police)
bug-report.md: Clarify that the submitter should always test against the
latest stable code base.
|
|
d3a3a73f
|
2019-04-10T14:28:47
|
|
jdhuff.c: Silence UBSan signed int overflow error
Some pathological test images have been created that can cause s to
overflow or underflow the signed int data type during decompression.
This is technically undefined behavior according to the C spec, although
every modern implementation I'm aware of will treat the signed int as a
2's complement unsigned int, thus causing the value to wrap around to
INT_MIN if it exceeds INT_MAX. This commit simply makes that behavior
explicit in order to shut up UBSan. At least when building for x86-64
or i386 using Clang or GCC, this commit does not change the
compiler-generated assembly code at all.
The code that triggered this error has existed in the libjpeg code base
for at least 20 years (and probably much longer), so the fact that it
hasn't produced a user-visible problem in all of that time strongly
suggests that UBSan is being overly pedantic here. But if someone can
cough up a platform that doesn't wrap around to INT_MIN when 1 is added
to INT_MAX, then I'll happily change my opinion.
Fixes #347
|
|
58a3975e
|
2019-04-10T14:35:45
|
|
Bump version to 2.0.3 to prepare for new commits
|
|
5857929f
|
2019-03-05T17:48:20
|
|
GitHub: Formatting tweak to CONTRIBUTING.md
|
|
70947727
|
2019-03-01T13:13:27
|
|
GitHub: Tweak bug report template
|
|
1af712c1
|
2019-03-01T13:11:11
|
|
GitHub: Add feature request template
|
|
ec90cd0f
|
2019-03-01T12:29:41
|
|
GitHub: Add contributor guidelines
|
|
ce76ffac
|
2019-03-01T10:07:51
|
|
GitHub: Add bug report template
|
|
afbe48c2
|
2019-02-27T13:05:58
|
|
MMI: Support 32-bit Loongson architectures
|
|
98ff5507
|
2019-02-27T13:17:35
|
|
MMI: Fix bug in jsimd_h2v1_merged_upsample_mmi()
... that occurred when ((image width) & 1) != 0.
|
|
3ca6dba9
|
2019-02-17T09:33:57
|
|
Merge branch 'master' into dev
|
|
500b5ece
|
2019-02-17T09:06:42
|
|
turbojpeg.c: Fix compiler warning w/ -DNO_GETENV
|
|
87ab3360
|
2019-02-14T10:01:16
|
|
appveyor.yml: Cache NASM binary package
... since www.nasm.us seems to be down frequently. This doesn't help us
at the moment, but hopefully once the site is back up this will prevent
future build failures.
|
|
b46af82c
|
2019-02-12T17:35:10
|
|
ARMv7 NEON: #ifdef unused funcs/vars w/ -mfpu=neon
When simd/arm/jsimd.c is compiled with __ARM_NEON__ defined (which will
be the case if -mfpu=neon is passed to the compiler), the
parse_proc_cpuinfo() and check_feature() functions and the bufsize
variable are unused and thus need to be #ifdef'ed out in order to avoid
compiler warnings. Note that the bufsize variable was already #ifdef'ed
out on Linux but not on Android due to lack of parentheses (&& takes
precedence over ||.)
Closes #331
|
|
a4aa30d9
|
2019-02-13T22:03:31
|
|
ChangeLog.md: "floating-point"="floating point"
|
|
aaf58dab
|
2019-02-13T17:05:26
|
|
Merge branch 'master' into dev
|
|
0d7818d1
|
2019-02-13T16:22:18
|
|
rpm.spec.in: Fix "File listed twice" warning/error
%{_libdir}/pkgconfig is a directory and should thus be prefixed by
%{dir} (oops.) This issue caused the debuginfo build under RHEL 8
(which is apparently now enabled by default-- regardless of whether the
RPM actually contains debug info, but that's another matter) to fail
with:
RPM build errors:
File listed twice: /opt/libjpeg-turbo/lib64/pkgconfig/libjpeg.pc
File listed twice: /opt/libjpeg-turbo/lib64/pkgconfig/libturbojpeg.pc
|
|
4b67db4d
|
2019-02-13T15:20:34
|
|
rpm.spec.in: Fix doc packaging issues w/ RHEL 7+
On RHEL 7 and later (not sure exactly whether this is a product of the
newer RPM release or something distro-specific), macros are lazily
expanded, so we need to set _docdir using %global (which expands at
definition time) and prior to _prefix and _datarootdir (which affect
_defaultdocdir.) Otherwise, _docdir is set to a subdirectory of
/opt/libjpeg-turbo/share/doc or /opt/libjpeg-turbo/doc. The former
(which happens on RHEL 7) leads to incorrect documentation packaging
(the docs should be packaged under /usr/share/doc per Red Hat
standards), and the latter (which happens on RHEL 8) leads to an RPM
build error.
|
|
f70a7e1e
|
2019-02-12T15:37:21
|
|
rpm.spec.in: Update deprecated [Build]Prereq tags
AFAICT, Requires and BuildRequires subsumed the functionality of Prereq
and BuildPrereq in RPM 4.0, and none of the platforms we support with
libjpeg-turbo 2.0.x has RPM < 4.4.
|
|
a9075a17
|
2019-02-12T13:42:57
|
|
Merge branch 'master' into dev
|
|
6a8421fb
|
2019-02-12T13:30:15
|
|
GNUInstallDirs.cmake: Silence CMP0054 warning ...
in CMake 3.11 and later
|
|
031e16ec
|
2019-02-11T22:43:15
|
|
tjbench.c: Fix GCC 8 compiler warning
|
|
75be88cf
|
2019-02-11T13:10:09
|
|
Build: Optionally install PDB files for MSVC DLLs
Based on
https://github.com/Youw/libjpeg-turbo/commit/333a36ae984a52e547ddeb23848873d3cc798047
Closes #329
Closes #324
|
|
bdec9958
|
2019-02-01T01:16:13
|
|
MMI: Fix unaligned decomp. perf. for 32-bit PFs
(Oversight from db84125fcb05bbc48430b53d45b89392a8f3609e)
|
|
fa905fbf
|
2019-02-01T00:42:09
|
|
MMI: Use unaligned stores w/ merged upsampling
... when necessary. This was an oversight from
2f9e7c84d1a95c1bae8bb8d38fbc2adaeecf4d41
|
|
9aada25c
|
2019-02-01T01:01:38
|
|
Merge branch 'master' into dev
|
|
e2442e07
|
2019-02-01T00:56:02
|
|
MMI: Fix unaligned comp. perf. for 32-bit PFs also
(Oversight from 1c2d3cfaaf7324d9091ba3cc4e900f60a16fe1aa)
|
|
73fd6041
|
2019-02-01T00:24:09
|
|
MMI: Fix formatting issue detected by checkstyle
|
|
2f9e7c84
|
2019-01-31T21:24:13
|
|
Loongson MMI h2v1 and h2v2 merged upsampling
Based on:
https://github.com/zhanglixia-hf/libjpeg-turbo/commit/e8f5cee5aa83e2d1b0af3a7bd0aaa2391c930fb2
|
|
3c7199ff
|
2019-01-31T16:22:31
|
|
Loongson MMI h2v1 fancy upsampling
Based on:
https://github.com/zhanglixia-hf/libjpeg-turbo/commit/e8f5cee5aa83e2d1b0af3a7bd0aaa2391c930fb2
|
|
73b98acd
|
2019-01-31T13:54:46
|
|
Loongson MMI RGB-to-Grayscale conversion
Based on:
https://github.com/zhanglixia-hf/libjpeg-turbo/commit/e8f5cee5aa83e2d1b0af3a7bd0aaa2391c930fb2
|
|
bb0d1702
|
2019-01-30T22:41:57
|
|
Improve readability of Loongson MMI code
We have more than eight registers to work with, as well as three-operand
intrinsics, so there's no need for the implementation to be such a
literal port of the MMX code.
|
|
db84125f
|
2019-01-30T14:12:06
|
|
MMI: Use aligned store instructions when possible
This improves decompression performance by 2-5%.
|
|
ae4221f9
|
2019-01-29T19:51:08
|
|
Loongson MMI fast forward/inverse DCT
Based on:
https://github.com/zhanglixia-hf/libjpeg-turbo/commit/32a9ca222d7e4c8e01bb75cd137f204a0587b383
|
|
674343ab
|
2019-01-31T15:30:25
|
|
Merge branch 'master' into dev
|
|
1c2d3cfa
|
2019-01-30T12:43:45
|
|
MMI: Fix comp. perf. issue w/ unaligned image rows
Using ldc1 with a non-64-bit-aligned memory location causes as much as a
10x slow-down in overall compression performance.
|