summaryrefslogtreecommitdiff
path: root/trunk
diff options
context:
space:
mode:
authordcommander <dcommander@3789f03b-4d11-0410-bbf8-ca57d06f2519>2012-02-03 08:55:36 +0000
committerdcommander <dcommander@3789f03b-4d11-0410-bbf8-ca57d06f2519>2012-02-03 08:55:36 +0000
commit1d8904a3ffc1e2af9b2f3326b1032883ca570d0a (patch)
treeb70ae653025f11af8012219be8e7438e91f5d52f /trunk
parent1f5eea799034d9d79d92f0182b672aa7a0f70070 (diff)
Several clarifications regarding v7/v8 API/ABI support
git-svn-id: https://libjpeg-turbo.svn.sourceforge.net/svnroot/libjpeg-turbo@775 3789f03b-4d11-0410-bbf8-ca57d06f2519
Diffstat (limited to 'trunk')
-rwxr-xr-xtrunk/README-turbo.txt51
1 files changed, 28 insertions, 23 deletions
diff --git a/trunk/README-turbo.txt b/trunk/README-turbo.txt
index 489c344..7c063fd 100755
--- a/trunk/README-turbo.txt
+++ b/trunk/README-turbo.txt
@@ -256,24 +256,17 @@ for the existence of the colorspace extensions at compile time and run time.
libjpeg v7 and v8 API/ABI support
=================================
-libjpeg v7 and v8 added new features to the API/ABI, and, unfortunately, the
-compression and decompression structures were extended in a backward-
-incompatible manner to accommodate these features. Thus, programs that are
+With libjpeg v7 and v8, new features were added that necessitated extending the
+compression and decompression structures. Unfortunately, due to the exposed
+nature of those structures, extending them also necessitated breaking backward
+ABI compatibility with previous libjpeg releases. Thus, programs that are
built to use libjpeg v7 or v8 did not work with libjpeg-turbo, since it is
based on the libjpeg v6b code base. Although libjpeg v7 and v8 are still not
as widely used as v6b, enough programs (including a few Linux distros) have
made the switch that it was desirable to provide support for the libjpeg v7/v8
-API/ABI in libjpeg-turbo.
-
-Some of the libjpeg v7 and v8 features -- DCT scaling, to name one -- involve
-deep modifications to the code that cannot be accommodated by libjpeg-turbo
-without either breaking compatibility with libjpeg v6b or producing an
-unsupportable mess. In order to fully support libjpeg v8 with all of its
-features, we would have to essentially port the SIMD extensions to the libjpeg
-v8 code base and maintain two separate code trees. We are hesitant to do this
-until/unless the newer libjpeg code bases garner more community support and
-involvement and until/unless we have some notion of whether future libjpeg
-releases will also be backward-incompatible.
+API/ABI in libjpeg-turbo. Although libjpeg-turbo can now be configured as a
+drop-in replacement for libjpeg v7 or v8, it should be noted that not all of
+the features in libjpeg v7 and v8 are supported (see below.)
By passing an argument of --with-jpeg7 or --with-jpeg8 to configure, or an
argument of -DWITH_JPEG7=1 or -DWITH_JPEG8=1 to cmake, you can build a version
@@ -292,6 +285,11 @@ Fully supported:
for convenience purposes. It has always been possible to implement this
feature with libjpeg v6b (see rdswitch.c for an example.)
+-- libjpeg: IDCT scaling extensions in decompressor
+ libjpeg-turbo supports IDCT scaling with scaling factors of 1/8, 1/4, 3/8,
+ 1/2, 5/8, 3/4, 7/8, 9/8, 5/4, 11/8, 3/2, 13/8, 7/4, 15/8, and 2/1 (only 1/4
+ and 1/2 are SIMD-accelerated.)
+
-- cjpeg: 32-bit BMP support
-- jpegtran: lossless cropping
@@ -303,14 +301,6 @@ Fully supported:
-- rdjpgcom: locale awareness
-Partially supported:
-
--- libjpeg: IDCT scaling extensions in decompressor
- libjpeg-turbo supports IDCT scaling with scaling factors of 1/8, 1/4, 3/8,
- 1/2, 5/8, 3/4, 7/8, 9/8, 5/4, 11/8, 3/2, 13/8, 7/4, 15/8, and 2/1, but only
- 1/4 and 1/2 are SIMD-accelerated.
-
-
Fully supported when using libjpeg v7/v8 emulation:
-- libjpeg: In-memory source and destination managers
@@ -320,12 +310,27 @@ Not supported:
-- libjpeg: DCT scaling in compressor
cinfo.scale_num and cinfo.scale_denom are silently ignored.
+ There is no technical reason why DCT scaling cannot be supported, but
+ without the SmartScale extension (see below), it would only be able to
+ down-scale using ratios of 1/2, 8/15, 4/7, 8/13, 2/3, 8/11, 4/5, and 8/9,
+ which is of limited usefulness.
+
+-- libjpeg: SmartScale
+ cinfo.block_size is silently ignored.
+ SmartScale is an extension to the JPEG format that allows for DCT block
+ sizes other than 8x8. It would be difficult to support this feature while
+ retaining backward compatibility with libjpeg v6b.
-- libjpeg: Fancy downsampling in compressor
cinfo.do_fancy_downsampling is silently ignored.
+ This requires the DCT scaling feature, which is not supported.
-- jpegtran: Scaling
- Seems to depend on the DCT scaling feature, which isn't supported.
+ This requires both the DCT scaling and SmartScale features, which are not
+ supported.
+
+-- Lossless RGB JPEG files
+ This requires the SmartScale feature, which is not supported.
*******************************************************************************