Skip to main content

jxl_encoder/entropy_coding/
mod.rs

1// Copyright (c) Imazen LLC and the JPEG XL Project Authors.
2// Algorithms and constants derived from libjxl (BSD-3-Clause).
3// Licensed under AGPL-3.0-or-later. Commercial licenses at https://www.imazen.io/pricing
4
5//! Entropy coding for JPEG XL encoder.
6//!
7//! This module provides ANS (Asymmetric Numeral Systems) and Huffman
8//! encoding implementations for compressing symbols in the JXL bitstream.
9
10pub mod ans;
11pub mod ans_decode;
12pub(crate) mod cluster;
13pub(crate) mod context_map;
14pub(crate) mod encode;
15pub mod histogram;
16pub(crate) mod huffman_tree;
17pub(crate) mod hybrid_uint;
18pub(crate) mod lz77;
19pub(crate) mod token;
20
21pub use ans::{
22    ANS_LOG_TAB_SIZE, ANS_MAX_ALPHABET_SIZE, ANS_SIGNATURE, ANS_TAB_MASK, ANS_TAB_SIZE,
23    ANSEncodingHistogram, ANSHistogramStrategy, AnsEncoder, get_population_count_precision,
24};
25pub use cluster::{
26    ClusterResult, ClusteringType, EntropyType, cluster_histograms, fast_cluster_histograms,
27};
28pub use context_map::{
29    encode_context_map, inverse_move_to_front_transform, move_to_front_transform,
30};
31pub use histogram::{
32    HISTOGRAM_ROUNDING, Histogram, MIN_DISTANCE_FOR_DISTINCT, histogram_distance,
33    histogram_kl_divergence,
34};
35pub use huffman_tree::{
36    HuffmanTable, build_and_store_huffman_tree, convert_bit_depths_to_symbols, create_huffman_tree,
37    store_huffman_tree, write_huffman_tree,
38};
39pub use lz77::Lz77Method;