[webkit-dev] JPEG XL support?

Michael Catanzaro mcatanzaro at gnome.org
Wed May 5 11:53:01 PDT 2021


Hi Sami,

I don't have any strong opinion on JPEG XL, asides from the general 
observation that adding more image decoders written in memory-unsafe 
languages is a generally sad thing to do. (I'm still not happy about 
how we were forced to support JPEG 2000 a couple years back due to 
websites using Akamai Image Manager.) In particular, I notice that 
libjxl is quite a lot of C++ code. On the other hand, given that WebKit 
is itself all C++, you could reasonably say something about "people in 
glass houses should not throw stones." :) So even though image decoders 
are quite sensitive, that shouldn't be a blocker IMO.

The most important point you need to know is that Safari doesn't use 
WebKit's image decoders at all, so if you want JPEG XL to work in 
Safari, contributing JPEG XL support to WebKit is not likely going to 
achieve your goal. Even if Safari did use our image decoders, which it 
doesn't, we don't copy third-party projects into the WebKit source 
without a *very* exceptional reason to do so (as for ANGLE or 
libwebrtc), so OS support for JPEG XL is going to be key. There are two 
cases:

(1) Non-Apple platforms use image decoders under 
Source/WebCore/platform/image-decoders. Depending on libjxl if it is 
installed as a system library, and using it to implement a JPEG XL 
image decoder under Source/WebCore/platform/images-decoders/jpegxl, 
seems OK to me. (Whereas copying libjxl into the WebKit source repo 
would certainly not be OK. That's way too much code.) There would need 
to be a CMake build option to disable the dependency for systems where 
libjxl is not available as a system library. It would only make sense 
to do this if somebody makes an effort to package libjxl for at least a 
few major Linux distros, otherwise it won't be used in practice. 
PlayStation and Windows ports can then build libjxl themselves if they 
so choose.

(2) Apple platforms use CoreGraphics for image decoding, see 
Source/WebCore/platform/graphics/cg/ImageDecoderCG.[cpp,h]. I don't 
know much about this, but I don't think it's open source, so I would 
guess that contributions are probably not possible. I'm not sure what 
to tell you here. Hopefully somebody from Apple will comment.

Good luck,

Michael




More information about the webkit-dev mailing list