1. Computers
  2. Display Drivers
  3. Graphics Cards
  4. Memory
  5. Motherboards
  6. Processors
  7. Software
  8. Storage
  9. Operating Systems


Facebook RSS Twitter Twitter Google Plus


Phoronix Test Suite

OpenBenchmarking.org

JPEG Library Update Raises Compatibility Concerns

Free Software

Published on 15 January 2013 01:28 PM EST
Written by Michael Larabel in Free Software
13 Comments

This week brought the release of IJG's libjpeg v9 library, which brought noticeable lossless JPEG compression improvements so that it can even surpass PNG images on the compress lossless image size. While the improvements are nice, backwards incompatible changes with this JPEG library are causing concern for some users and developers.

On the libjpeg-turbo mailing list is a lengthy message about concerns over libjpeg v9 from the libjpeg-turbo maintainer. For those out of the loop, libjpeg-turbo is a fork of libjpeg that brings SIMD instructions and other performance enhancements to provide for faster JPEG encoding/decoding. The libjpeg-turbo fork isn't some uncommon fork, but it's used by Mozilla Firefox, Google Chrome, and many other software projects. This forked JPEG library also is found in use within Fedora.

The libjpeg-turbo fork has managed to maintain API/ABI compatibility with upstream libjpeg for its v6/7/8 releases, but now its maintainer is trying to decide what to do about libjpeg v9. This new libjpeg release breaks the API/ABI once more as it introduces a new field used for lossless RGB JPEG files and requires the JPEG SmartScale format. The libjpeg-turbo API/ABI emulation for libjpeg-7/8 was done as the result of a commercial software company financing the work but now for jpeg-9 the future role of libjpeg-turbo is being questioned.

The libjpeg-turbo project could deviate more from upstream libjpeg in not being API/ABI compatible but that could result in some fragmentation among JPEG files, the new field could be stubbed out but not implemented, or the new libjpeg functionality could in theory be implemented within libjpeg-turbo.

The libjpeg-turbo maintainer writes, "My personal take on it is that tracking the upstream code may no longer be a battle worth fighting. Most of the recent IJG changes (post jpeg-8b) have been related to lossless JPEG encoding or SmartScale. Best case, SmartScale is a new format that has not been adopted as a standard yet and is not widely used, and worst case, it may be a mostly useless extension. The IJG's method for generating lossless JPEG files using SmartScale is interesting, but I struggle to think of a reason why one would want to use SmartScale for any other purpose. And it hasn't been proven that the use of this extension for lossless encoding is significantly better than, for instance, PNG."

In the end, the future of libjpeg-turbo is up in the air depending upon the community's response:
I guess what I'm saying is-- libjpeg-turbo may have reached a point at which there isn't really a whole lot more we can add to it feature-wise without either adopting the unproven SmartScale technology or diverging from IJG to implement some other format, like JPEG XR. Personally, I feel that both would be out of scope for what is still, at the end of the day, a turbo baseline JPEG library. I've always believed that new formats should be implemented by a new library. The libjpeg API is dated and really ill-equipped to handle new formats, which is why these API/ABI incompatibilities keep popping up with the IJG's software.

However, I want this project to be whatever the community wants it to be. I don't think we're well-positioned to be a haven for new formats, but if enough people are interested in one that they want to either pay for the implementation or contribute code, I'm definitely open to that. "Keep things the way they are" is also a perfectly acceptable answer, as is "continue focusing on baseline and coming up with new ways to make it faster."

About The Author
Michael Larabel is the principal author of Phoronix.com and founded the web-site in 2004 with a focus on enriching the Linux hardware experience and being the largest web-site devoted to Linux hardware reviews, particularly for products relevant to Linux gamers and enthusiasts but also commonly reviewing servers/workstations and embedded Linux devices. Michael has written more than 10,000 articles covering the state of Linux hardware support, Linux performance, graphics hardware drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated testing software. He can be followed via and or contacted via .
Latest Linux Hardware Reviews
  1. AMD's New Athlon/Semprons Give Old Phenom CPUs A Big Run For The Money
  2. 13-Way Low-End GPU Comparison With AMD's AM1 Athlon
  3. ASUS AM1I-A: A Mini-ITX Board For Socketed Kabini APUs
  4. Mini-Box M350: A Simple, Affordable Mini-ITX Case
Latest Linux Articles
  1. How Much Video RAM Is Needed For Catalyst R3 Graphics?
  2. Ubuntu 12.04 LTS vs. 14.04 LTS Cloud Benchmarks
  3. Ubuntu 12.04.4 vs. 13.10 vs. 14.04 LTS Desktop Benchmarks
  4. AMD OpenCL Performance With AM1 Kabini APUs
Latest Linux News
  1. Packard Bell LM85 Now Supported By Coreboot
  2. AmazonBasics External USB 2.0 DVD Writer For Linux
  3. TP-LINK TG-3468: A $12 Linux PCI-E Gigabit Network Adapter
  4. Linux 3.15 Lands Some DRM Graphics Driver Fixes
  5. AMD Is Disabling DPM Support For RV770 GPUs
  6. ReactOS Working On A Community Windows OS
  7. eRacks Keeps Pushing Linux, Open-Source Systems After 15 Years
  8. Borderlands Is Being Considered For Linux
  9. Mesa 10.0 & 10.1 Stable Get Updated
  10. Git 2.0 Test Releases Begin With Many Changes
  11. Wine 1.7.17 Works On Its Task Scheduler, C Run-Time
  12. The Improv ARM Board Still Isn't Shipping; Riding A Dead Horse?
Latest Forum Discussions
  1. The GNOME Foundation Is Running Short On Money
  2. Updated and Optimized Ubuntu Free Graphics Drivers
  3. Catalyst 14.3 Beta
  4. Suggestions about how to make a Radeon HD 7790 work decently?
  5. Radeon 8000M problematic on Linux?
  6. Linux Kernel Developers Fed Up With Ridiculous Bugs In Systemd
  7. After Jack Keane, RuseSoft will briing Ankh 3 to Linux through Desura
  8. Suspected PHP Proxy Issue