Provided by: libjxl-devtools_0.11.1-6ubuntu1.1_amd64 

NAME
jxl_from_tree - jxl_from_tree
SYNOPSIS
jxl_from_tree tree_in.txt out.jxl [tree_drawing]
DESCRIPTION
jxl_from_tree originated as a debug/test tool to produce handcrafted JPEG XL bitstreams directly (as
opposed to using the libjxl encoder in the usual way by giving it pixels as input). These handcrafted
bitstreams are very small since they consist of just a context model for the entropy coding (this context
model is described by means of a MA tree, hence the name jxl_from_tree), with the actual entropy-coded
residuals simply being all zeroes, which compress to zero bits.
MA stands for "meta-adaptive" and it refers to the fact that we are not using a fixed context model
(which is the usual approach) but a context model that can adapt to the image contents itself. The
context model itself is signaled in the bitstream, allowing an encoder to use a context model that works
well for the image it is encoding. Context modeling itself is "adaptive" in the sense that it adapts
entropy coding to local context; by allowing the context model itself to be changed too, we made
something "meta".
EXAMPLES
% jxl_from_tree /usr/share/libjxl-testdata/jxl/splines.tree splines.jxl
% jxlinfo splines.jxl
JPEG XL image, 320x320, (possibly) lossless, 8-bit RGB
Color space: RGB, D65, sRGB primaries, sRGB transfer function, rendering intent: Relative
% md5sum splines.jxl
222fcf2d528904bc796a7c3a3c64cd76 splines.jxl
However:
% djxl splines.jxl splines.ppm
% md5sum splines.ppm
may produce either:
77c4ccf6f23b320819610ebd5e1b2af0 splines.ppm
or
9ca111503859edaa6c3b1cb92ff657b7 splines.ppm
Splines are not currently used by the encoder at all, this is a test bitstream that was artificially
produced. Splines are additional image features that are represented internally in a vector form (control
points for catmull-rom splines) and painted by the decoder on top of (added numerically) the underlying
pixels. The jxlinfo tool only inspects the image header and sees that the pixels were encoded in RGB (not
XYB), so it offers the suggestion that the image is possibly lossless, but this is in any case just a
possibility (there is no way for it to know the history and workflow that was used to produce the image).
In this case the pixels themselves are encoded losslessly using Modular, but they are just all black. The
rest is painted with splines.
Spline rendering is defined mathematically in the spec and with infinite precision it is precisely
defined; however practical implementations do things with limited precision and there can be tiny
differences caused by rounding errors (which can be platform dependent and compiler dependent). The same
is true for other coding tools like the DCT. For that reason we have conformance tolerances.
AUTHOR
This manual page was written by Mathieu Malaterre <malat@debian.org> for the Debian GNU/Linux system (but
may be used by others).
jxl_from_tree 0.11.1 March 2026 JXL_FROM_TREE(1)