JPEG XL

From HandWiki
Short description: Raster-graphics file format supporting lossy and lossless compression
JPEG XL
Filename extension.jxl
Internet media typeimage/jxl
Magic numberFF 0A or 00 00 00 0C 4A 58 4C 20 0D 0A 87 0A
Developed by
  • Authors: Jyrki Alakuijala, Jon Sneyers, Luca Versari
  • Developers: Sami Boukortt, Alex Deymo, Moritz Firsching, Thomas Fischbacher, Eugene Kliuchnikov, Robert Obryk, Alexander Rhatushnyak, Zoltán Szabadka, Lode Vandevenne, Jan Wassenberg
  • Joint Photographic Experts Group
  • Google
  • Cloudinary
Type of formatLossy/lossless bitmap image format
Extended from
StandardISO/IEC 18181
Open format?Yes (royalty-free)
Website

JPEG XL is a royalty-free raster-graphics file format that supports both lossy and lossless compression. It is designed to outperform existing raster formats and thus to become their universal replacement.[2]

Name

History

In 2017, JTC1/SC29/WG1 (JPEG) issued a Call for proposals for JPEG XL – the next generation image coding standard.[4]

The file format (bitstream) was frozen on December 25, 2020, meaning that the format is now guaranteed to be decodable by future releases.[5]

Features

The main features are:[6][7]

  • Improved functionality and efficiency compared to traditional image formats (e.g. JPEG, GIF and PNG);
  • Progressive decoding (by resolution and precision);
  • Lossless JPEG transcoding with ~20% size reduction;
  • Lossless encoding and lossless alpha encoding;
  • Support for both photographic and synthetic imagery;
  • Graceful quality degradation across a large range of bitrates;
  • Perceptually optimized reference encoder;
  • Support for wide color gamut and HDR;
  • Support for animated content,
  • Efficient encoding and decoding without requiring specialized hardware
    • In particular, JPEG XL is about as fast to encode and decode as old JPEG using libjpeg-turbo and an order of magnitude faster to encode and decode compared to HEIC with x265.[8]
  • Royalty-free format with an open-source reference implementation.[9]

Technical details

refer to caption
JPEG XL codec architecture diagram

JPEG XL is based on ideas from Google's Pik format and Cloudinary's FUIF format (which was in turn based on FLIF).[10]

The format has a variety of encoding modes. On the legacy side, it has a mode that transcodes legacy JPEG in a more compact way for storage. On the more modern side, it has a lossy mode called VarDCT (variable-blocksize DCT) and a lossless/near-lossless/responsive mode called Modular which optionally uses a modified Haar transform (called "squeeze") and which is also used to encode the DC (1:8 scale) image in VarDCT mode as well as various auxiliary images such as adaptive quantization fields or additional channels like alpha. Both modes can use separate modeling of specific image features: splines, repeating "patches" like text or dots, and noise synthesis. Lossy modes typically use the XYB color space derived from LMS.[11]

Prediction is run using a pixel-by-pixel decorrelator without side information, including a parametrized self-correcting weighted ensemble of predictors. Context modeling includes specialized static models and powerful meta-adaptive models that take local error into account, with a signalled tree structure and predictor selection per context. Entropy coding is LZ77-enabled and can use both Asymmetric Numeral Systems and Huffman coding (for low complexity encoders or for reducing overhead of short streams).[citation needed]

It defaults to a visually near-lossless setting that still provides good compression.[8]

Animated (multi-frame) images do not perform advanced inter-frame prediction, though some rudimentary inter-frame coding tools are available:

  • a frame can only update part of the canvas;
  • a frame can not just replace the contents on the canvas, but also be blended, added or multiplied to it;[12]
  • up to four frames can be 'remembered' and referenced using the "patches" coding tool in later frames.[13]

Software

Codec implementation

  • JPEG XL Reference Software (libjxl)
    • license: Apache License 2.0
    • contains (among others):
      • coder cjxl
      • decoder djxl
      • tool for benchmarking speed and quality of image codecs benchmark_xl
      • GIMP and Gtk pixbuf plugin file-jxl

Official support

  • ImageMagick[14] – toolkit for raster graphics processing
  • XnView MP[15] – viewer and editor of raster graphics
  • MConverter[16] – online media converter
  • Squoosh[17]WebAssembly-based image converter (online media converter available)
  • gThumb[18] – free Linux image viewer
  • ImageGlass[19] – free and open-source Windows image viewer

Unofficial support

Preliminary support

Standardization status

Common Name Part First public release date (First edition) ISO/IEC Number Formal Title
JPEG XL Part 1 under development, planned for 2021 ISO/IEC FDIS 18181-1 JPEG XL Image Coding System — Part 1: Core coding system
Part 2 under development, planned for 2021 ISO/IEC DIS 18181-2 JPEG XL Image Coding System — Part 2: File format
Part 3 under development, planned for 2022 ISO/IEC WD 18181-3 JPEG XL Image Coding System — Part 3: Conformance testing
Part 4 under development, planned for 2022 ISO/IEC CD 18181-4 JPEG XL Image Coding System — Part 4: Reference software

References

  1. 1.0 1.1 "fuif/README.md". GitHub. https://github.com/cloudinary/fuif/blob/3ed48249a9cbe68740aa4ea58098ab0cd4b87eaa/README.md. 
  2. https://tech.slashdot.org/story/19/08/17/1855214/can-jpeg-xl-become-the-next-free-and-open-image-format
  3. 3.0 3.1 https://gitlab.gnome.org/GNOME/gimp/-/issues/4681
  4. "JPEG - Next-Generation Image Compression (JPEG XL) Final Draft Call for Proposals". April 23, 2018. https://jpeg.org/items/20180423_cfp_jpeg_xl.html. 
  5. "v0.2 JPEG XL Reference Software" (in en). https://gitlab.com/wg1/jpeg-xl/-/tags/v0.2. 
  6. "JPEG XL reaches Committee Draft" (html). 3 August 2019. https://jpeg.org/items/20190803_press.html. "The current contributors have committed to releasing it publicly under a royalty-free and open source license." 
  7. "JPEG XL White Paper". 22 January 2021. http://ds.jpeg.org/whitepapers/jpeg-xl-whitepaper.pdf. 
  8. 8.0 8.1 Sneyers, Jon. "How JPEG XL Compares to Other Image Codecs". https://cloudinary.com/blog/how_jpeg_xl_compares_to_other_image_codecs. 
  9. "jpeg / JPEG XL Reference Software" (in en). https://gitlab.com/wg1/jpeg-xl. 
  10. https://flif.info/#update
  11. Alakuijala, Jyrki; van Asseldonk, Ruud; Boukortt, Sami; Szabadka, Zoltan; Bruse, Martin; Comsa, Iulia-Maria; Firsching, Moritz; Fischbacher, Thomas et al. (6 September 2019). Tescher, Andrew G; Ebrahimi, Touradj. eds. "JPEG XL next-generation image compression architecture and coding tools". Applications of Digital Image Processing XLII: 20. doi:10.1117/12.2529237. ISBN 9781510629677. 
  12. https://gitlab.com/wg1/jpeg-xl/-/blob/b1c6fdcd/lib/jxl/frame_header.h#L178-217
  13. https://gitlab.com/wg1/jpeg-xl/-/blob/b1c6fdcd/lib/jxl/frame_header.h#L313-315
  14. https://imagemagick.org/script/formats.php#supported
  15. https://www.xnview.com/mantisbt/view.php?id=1845
  16. https://mconverter.eu
  17. https://squoosh.app
  18. https://ubuntuhandbook.org/index.php/2021/04/gthumb-3-11-3-adds-jpeg-xl-support/
  19. https://imageglass.org/
  20. https://github.com/novomesk/qt-jpegxl-image-plugin
  21. https://github.com/mirillis/jpegxl-wic
  22. https://github.com/yllan/JXLook
  23. https://bugs.chromium.org/p/chromium/issues/detail?id=1178058
  24. https://bugzilla.mozilla.org/show_bug.cgi?id=1539075

External links