As of Firefox 157 I intend to turn JPEG XL decoding on by default on all
platforms. It has been developed behind image.jxl.enabled, which today is
on by default on Nightly only, and has had a Firefox Labs checkbox on every
channel since 152. The decoder is jxl-rs, in Rust.

Bug to turn on by default:
https://bugzilla.mozilla.org/show_bug.cgi?id=2065096

Standard: ISO/IEC 18181, https://www.iso.org/standard/85066.html

Standards body: ISO/IEC

Platform coverage: all

Preference: image.jxl.enabled

Standards position:
https://github.com/mozilla/standards-positions/issues/522 (neutral)

TAG review: https://github.com/w3ctag/design-reviews/issues/633 (satisfied
with concerns)

Intent to prototype:
https://groups.google.com/a/mozilla.org/d/msgid/dev-platform/53b4e3e0-5eee-4768-a1ba-b069e1e85244n%40mozilla.org

Other browsers: Safari shipped in 17.0 in 2023. Chrome has it behind
#enable-jxl-image-format using the same Rust library, no intent to ship yet.

Changes since the intent to prototype:

Performance was a concern raised on the intent to prototype thread. jxl-rs
0.6.0 was released with multithreaded decoding support, and our patches to
hook up and enable multithreaded decoding are expected to land soon.
Including those patches, I ran a five-format decode benchmark over the same
pictures at a range of sizes: we were slightly ahead of Safari (using C++
libjxl) on my machine. Compared to our other image format decoders, JXL is
close on large images, but shows a bigger gap on small ones.

It has feature parity with our other image formats and with Blink's JXL
implementation, including animation and progressive display. The one
exception is HDR: HDR images display as SDR, the same as every other format
we support, but our tone mapping for JXL is much better than what we do for
other image formats. Safari has neither progressive rendering nor animation.

The wpt jpegxl directory covers decode correctness across bit depths,
alpha, grayscale, CMYK, colour management, orientation and the coding
tools, plus the HTML and CSS ways an image gets used. Where wpt could not
express something I added gecko tests: about 30 gtests for chunked and
incremental decoding, animation frame counts, downscale during decode and
corrupt files, mochitests for progressive rendering and telemetry,
reftests, and decode benchmarks that report to Perfherder. The fuzzing team
already fuzzed jxl before it was enabled on nightly and they will fuzz the
decoder again before I flip the pref.


Timothy Nikkel

-- 
You received this message because you are subscribed to the Google Groups 
"[email protected]" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/a/mozilla.org/d/msgid/dev-platform/CAFALFpGcinfSoepqVyh7Fm%3DTY%2BG2wrS6XU-qtez8qb_84fRp_w%40mail.gmail.com.

Reply via email to