Background
==========
libjpeg-turbo is a JPEG image codec that uses SIMD instructions (MMX, SSE2,
NEON, AltiVec) to accelerate baseline JPEG compression and decompression on
x86, x86-64, ARM, and PowerPC systems. On such systems, libjpeg-turbo is
generally 2-6x as fast as libjpeg, all else being equal. On other types of
systems, libjpeg-turbo can still outperform libjpeg by a significant amount, by
virtue of its highly-optimized Huffman coding routines. In many cases, the
performance of libjpeg-turbo rivals that of proprietary high-speed JPEG codecs.
libjpeg-turbo implements both the traditional libjpeg API as well as the less
powerful but more straightforward TurboJPEG API. libjpeg-turbo also features
colorspace extensions that allow it to compress from/decompress to 32-bit and
big-endian pixel buffers (RGBX, XBGR, etc.), as well as a full-featured Java
interface.
libjpeg-turbo was originally based on libjpeg/SIMD, an MMX-accelerated
derivative of libjpeg v6b developed by Miyasaka Masaru. The TigerVNC and
VirtualGL projects made numerous enhancements to the codec in 2009, and in
early 2010, libjpeg-turbo spun off into an independent project, with the goal
of making high-speed JPEG compression/decompression technology available to a
broader range of users and developers.
License
=======
libjpeg-turbo is covered by three compatible BSD-style open source licenses.
Refer to [LICENSE.md](LICENSE.md) for a roll-up of license terms.
Building libjpeg-turbo
======================
Refer to [BUILDING.md](BUILDING.md) for complete instructions.
Using libjpeg-turbo
===================
libjpeg-turbo includes two APIs that can be used to compress and decompress
JPEG images:
- **TurboJPEG API**
This API provides an easy-to-use interface for compressing and decompressing
JPEG images in memory. It also provides some functionality that would not be
straightforward to achieve using the underlying libjpeg API, such as
generating planar YUV images and performing multiple simultaneous lossless
transforms on an image. The Java interface for libjpeg-turbo is written on
top of the TurboJPEG API.
- **libjpeg API**
This is the de facto industry-standard API for compressing and decompressing
JPEG images. It is more difficult to use than the TurboJPEG API but also
more powerful. The libjpeg API implementation in libjpeg-turbo is both
API/ABI-compatible and mathematically compatible with libjpeg v6b. It can
also optionally be configured to be API/ABI-compatible with libjpeg v7 and v8
(see below.)
There is no significant performance advantage to either API when both are used
to perform similar operations.
Colorspace Extensions
---------------------
libjpeg-turbo includes extensions that allow JPEG images to be compressed
directly from (and decompressed directly to) buffers that use BGR, BGRX,
RGBX, XBGR, and XRGB pixel ordering. This is implemented with ten new
colorspace constants:
JCS_EXT_RGB /* red/green/blue */
JCS_EXT_RGBX /* red/green/blue/x */
JCS_EXT_BGR /* blue/green/red */
JCS_EXT_BGRX /* blue/green/red/x */
JCS_EXT_XBGR /* x/blue/green/red */
JCS_EXT_XRGB /* x/red/green/blue */
JCS_EXT_RGBA /* red/green/blue/alpha */
JCS_EXT_BGRA /* blue/green/red/alpha */
JCS_EXT_ABGR /* alpha/blue/green/red */
JCS_EXT_ARGB /* alpha/red/green/blue */
Setting `cinfo.in_color_space` (compression) or `cinfo.out_color_space`
(decompression) to one of these values will cause libjpeg-turbo to read the
red, green, and blue values from (or write them to) the appropriate position in
the pixel when compressing from/decompressing to an RGB buffer.
Your application can check for the existence of these extensions at compile
time with:
#ifdef JCS_EXTENSIONS
At run time, attempting to use these extensions with a libjpeg implementation
that does not support them will result in a "Bogus input colorspace" error.
Applications can trap this error in order to test whether run-time support is
available for the colorspace extensions.
When using the RGBX, BGRX, XBGR, and XRGB colorspaces during decompression, the
X byte is undefined, and in order to ensure the best performance, libjpeg-turbo
can set that byte to whatever value it wishes. If an application expects the X
byte to be used as an alpha channel, then it should specify `JCS_EXT_RGBA`,
`JCS_EXT_BGRA`, `JCS_EXT_ABGR`, or `JCS_EXT_ARGB`. When these colorspace
constants are used, the X byte is guaranteed to be 0xFF, which is interpreted
as opaque.
Your application can check for the existence of the alpha channel colorspace
extensions at compile time with:
#ifdef JCS_ALPHA_EXTENSIONS
[jcstest.c](jcstest.c), located in the libjpeg-turbo source tree, demonstrates
how to check for the existence of the colorspace extensions at compile time and
run time.
libjpeg v7 and v8 API/ABI Emulation
-----------------------------------
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 were
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 not
as widely used as v6b, enough programs (including a few Linux distros) made
the switch that there was a demand to emulate the libjpeg v7 and v8 ABIs
in libjpeg-turbo. It should be noted, however, that this feature was added
primarily so that applications that had already been compiled to use libjpeg
v7+ could take advantage of accelerated baseline JPEG encoding/decoding
without recompiling. libjpeg-turbo does not claim to support all of the
libjpeg v7+ features, nor to produce identical output to libjpeg v7+ in all
cases (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 of libjpeg-turbo that emulates the libjpeg v7 or v8 ABI, so that
programs that are built against libjpeg v7 or v8 can be run with libjpeg-turbo.
The following section describes which libjpeg v7+ features are supported and
which aren't.
### Support for libjpeg v7 and v8 Features
#### Fully 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 (only 1/4
and 1/2 are SIMD-accelerated.)
- **libjpeg: Arithmetic coding**
- **libjpeg: In-memory source and destination managers**
See notes below.
- **cjpeg: Separate quality settings for luminance and chrominance**
Note that the libpjeg v7+ API was extended to accommodate this feature only
for convenience purposes. It has always been possible to implement this
feature with libjpeg v6b (see rdswitch.c for an example.)
- **cjpeg: 32-bit BMP support**
- **cjpeg: `-rgb` option**
- **jpegtran: Lossless cropping**
- **jpegtran: `-perfect` option**
- **jpegtran: Forcing width/height when performing lossless crop**
- **rdjpgcom: `-raw` option**
- **rdjpgcom: Locale awareness**
#### Not supported
NOTE: As of this writing, extensive research has been conducted into the
usefulness of DCT scaling as a means of data reduction and SmartScale as a
means of quality improvement. The reader is invited to peruse the research at
<http://www.libjpeg-turbo.org/About/SmartScale> and draw his/her own conclusions,
but it is the general belief of our project that these features have not
demonstrated sufficient usefulness to justify inclusion in libjpeg-turbo.
- **libjpeg: DCT scaling in compressor**
`cinfo.scale_num` and `cinfo.scale_denom` are silently ignored.
There is no technical reason why DCT scaling could not be supported when
emulating the libjpeg v
没有合适的资源?快使用搜索试试~ 我知道了~
UVCCAMERA_Master
共1098个文件
c:177个
h:146个
xml:127个
1星 需积分: 15 41 下载量 195 浏览量
2017-09-12
08:16:06
上传
评论
收藏 3.63MB ZIP 举报
温馨提示
通过对usb摄像头访问,可实现相机自动对焦,拍照视频记录等功能,是开发安卓USB设备的简单例程,本人已在 多个安卓平台测试成功。
资源推荐
资源详情
资源评论
收起资源包目录
UVCCAMERA_Master (1098个子文件)
cjpeg.1 13KB
djpeg.1 10KB
jpegtran.1 9KB
wrjpgcom.1 3KB
rdjpgcom.1 2KB
configure.ac 19KB
configure.ac 9KB
IUVCService.aidl 2KB
IUVCSlaveService.aidl 1KB
IUVCServiceCallback.aidl 1KB
IUVCServiceOnFrameAvailable.aidl 1KB
UsbDevice.aidl 52B
Surface.aidl 42B
Makefile.am 33KB
Makefile.am 3KB
Makefile.am 3KB
Makefile.am 2KB
Makefile.am 672B
Makefile.am 432B
Makefile.am 189B
Makefile.am 149B
Makefile.am 100B
ar-lib 6KB
jidctint-sse2.asm 35KB
jidctint-sse2-64.asm 35KB
jidctint-mmx.asm 33KB
jidctred-mmx.asm 27KB
jfdctint-sse2.asm 27KB
jdsample-sse2.asm 26KB
jfdctint-sse2-64.asm 26KB
jdsample-mmx.asm 25KB
jidctflt-sse.asm 25KB
jfdctint-mmx.asm 25KB
jidctred-sse2.asm 23KB
jdsample-sse2-64.asm 23KB
jidctred-sse2-64.asm 22KB
jidctflt-sse2.asm 21KB
jidctfst-sse2.asm 21KB
jdmrgext-sse2.asm 21KB
jidctflt-sse2-64.asm 20KB
jidctfst-sse2-64.asm 20KB
jdmrgext-sse2-64.asm 20KB
jidctfst-mmx.asm 20KB
jccolext-sse2.asm 19KB
jchuff-sse2.asm 18KB
jdcolext-sse2.asm 18KB
jccolext-sse2-64.asm 18KB
jdmrgext-mmx.asm 18KB
jfdctfst-sse2.asm 17KB
jdcolext-sse2-64.asm 17KB
jidctflt-3dn.asm 17KB
jfdctfst-sse2-64.asm 17KB
jccolext-mmx.asm 17KB
jfdctfst-mmx.asm 15KB
jdcolext-mmx.asm 15KB
jchuff-sse2-64.asm 15KB
jfdctflt-sse.asm 15KB
jfdctflt-sse-64.asm 14KB
jcgryext-sse2.asm 14KB
jcgryext-sse2-64.asm 13KB
jcgryext-mmx.asm 12KB
jfdctflt-3dn.asm 12KB
jcsample-sse2.asm 10KB
jcsample-mmx.asm 9KB
jquant-mmx.asm 9KB
jcsample-sse2-64.asm 9KB
jquant-3dn.asm 9KB
jquant-sse.asm 8KB
jquanti-sse2.asm 7KB
jquanti-sse2-64.asm 6KB
jquantf-sse2.asm 6KB
jquantf-sse2-64.asm 5KB
jdmerge-sse2-64.asm 4KB
jdmerge-sse2.asm 4KB
jdmerge-mmx.asm 4KB
jccolor-mmx.asm 4KB
jccolor-sse2-64.asm 4KB
jccolor-sse2.asm 4KB
jdcolor-sse2-64.asm 3KB
jdcolor-sse2.asm 3KB
jdcolor-mmx.asm 3KB
jcgray-mmx.asm 3KB
jcgray-sse2-64.asm 3KB
jcgray-sse2.asm 3KB
jsimdcpu.asm 3KB
AUTHORS 1KB
AUTHORS 48B
gradlew.bat 2KB
nightshot_iso_100.bmp 81KB
vgl_6548_0026a.bmp 36KB
vgl_6434_0018a.bmp 34KB
vgl_5674_0098.bmp 34KB
windows_usb.c 152KB
jidctint.c 103KB
io.c 99KB
io_original.c 97KB
android_usbfs.c 89KB
core.c 86KB
core_original.c 75KB
linux_usbfs.c 72KB
共 1098 条
- 1
- 2
- 3
- 4
- 5
- 6
- 11
资源评论
- zygcs22019-07-08太坑了,跟在github 下载的一模一样, 一个字都没改。 容易死机。
仗剑天涯111
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功