JPEG XL

From Infogalactic: the planetary knowledge core
Jump to: navigation, search
JPEG XL
64px
Filename extension .jxl
Internet media type image/jxl
Magic number FF 0A or 00 00 00 0C 4A 58 4C 20 0D 0A 87 0A
Developed by <templatestyles src="Plainlist/styles.css"/>
Type of format Lossy/lossless bitmap image format
Extended from <templatestyles src="Plainlist/styles.css"/>
Standard ISO/IEC 18181
Open format? Yes (royalty-free)
Website <templatestyles src="Plainlist/styles.css"/>

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);
  • Image dimensions of over a billion (230-1) pixels on each side;[8]
  • Up to 4100 channels i.e grayscale or RGB, optional alpha, and up to 4096 "extra" channels;[8]
  • Progressive decoding (by resolution and precision);
  • Lossless JPEG transcoding with ~20% size reduction;
    • CMYK JPEGs are not supported for transcoding, but they are very rare;[9]
    • Transcoding of progressive JPEGs is supported by the format but not yet implemented in the reference software;[10]
  • 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] It is also parallelizable.
  • Royalty-free format with an open-source reference implementation.[11]

Technical details

File:JPEG XL codec architecture.svg
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).[12]

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.[13]

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;[14]
  • up to four frames[15] can be 'remembered' and referenced using the "patches" coding tool in later frames.[16]

Software

Codec implementation

JPEG XL Reference Software (libjxl)
Initial release December 27, 2019; 5 years ago (2019-12-27)
Stable release 0.3.7 / March 29, 2021; 3 years ago (2021-03-29)
Written in C++
Operating system <templatestyles src="Cslist/styles.css" />
License New BSD License (previously Apache License 2.0)
Website {{#property:P856}}
  • JPEG XL Reference Software (libjxl)
    • license: New BSD License (previously 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

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 FDIS 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 DIS 18181-4 JPEG XL Image Coding System — Part 4: Reference software

References

<templatestyles src="Reflist/styles.css" />

Cite error: Invalid <references> tag; parameter "group" is allowed only.

Use <references />, or <references group="..." />

External links

  1. 1.0 1.1 Lua error in package.lua at line 80: module 'strict' not found.
  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. Lua error in package.lua at line 80: module 'strict' not found.
  5. Lua error in package.lua at line 80: module 'strict' not found.
  6. Lua error in package.lua at line 80: module 'strict' not found.
  7. Lua error in package.lua at line 80: module 'strict' not found.
  8. 8.0 8.1 8.2 8.3 Lua error in package.lua at line 80: module 'strict' not found.
  9. Lua error in package.lua at line 80: module 'strict' not found.
  10. Lua error in package.lua at line 80: module 'strict' not found.
  11. Lua error in package.lua at line 80: module 'strict' not found.
  12. https://flif.info/#update
  13. Lua error in package.lua at line 80: module 'strict' not found.
  14. https://github.com/libjxl/libjxl/blob/95eea7e/lib/jxl/frame_header.h#L168-L207
  15. https://github.com/libjxl/libjxl/blob/95eea7e/lib/jxl/common.h#L85-L86
  16. https://github.com/libjxl/libjxl/blob/95eea7e/lib/jxl/frame_header.h#L303-L305
  17. https://imagemagick.org/script/formats.php#supported
  18. https://www.xnview.com/mantisbt/view.php?id=1845
  19. https://mconverter.eu
  20. https://squoosh.app
  21. https://nomacs.org/
  22. https://ubuntuhandbook.org/index.php/2021/04/gthumb-3-11-3-adds-jpeg-xl-support/
  23. https://imageglass.org/
  24. https://github.com/novomesk/qt-jpegxl-image-plugin
  25. https://github.com/mirillis/jpegxl-wic
  26. https://github.com/yllan/JXLook
  27. https://bugs.chromium.org/p/chromium/issues/detail?id=1178058
  28. https://bugzilla.mozilla.org/show_bug.cgi?id=1539075