[package]
edition = "2024"
rust-version = "1.89"
name = "jxl-encoder"
version = "0.1.3"
authors = ["Lilith River"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "JPEG XL encoder in pure Rust"
homepage = "https://github.com/imazen/jxl-encoder"
documentation = "https://docs.rs/jxl-encoder"
readme = "README.md"
keywords = [
"jpeg-xl",
"encoder",
"image",
]
categories = [
"multimedia::images",
"multimedia::encoding",
]
license = "AGPL-3.0-or-later"
repository = "https://github.com/imazen/jxl-encoder"
resolver = "2"
[features]
butteraugli-loop = [
"dep:butteraugli",
"dep:imgref",
"dep:rgb",
]
debug-ac-strategy = []
debug-dc = []
debug-tokens = []
default = [
"std",
"safe-mode",
"butteraugli-loop",
]
jpeg-reencoding = [
"dep:zenjpeg",
"dep:brotli",
]
rate-control = [
"dep:jxl-oxide",
"dep:butteraugli",
"dep:imgref",
"dep:rgb",
]
safe-mode = []
std = [
"thiserror/std",
"archmage/std",
"jxl_simd/std",
]
trace-bitstream = []
[lib]
name = "jxl_encoder"
path = "src/lib.rs"
[[example]]
name = "distance_sweep"
path = "examples/distance_sweep.rs"
[[example]]
name = "fresh_encode"
path = "examples/fresh_encode.rs"
[[example]]
name = "multigroup_gallery"
path = "examples/multigroup_gallery.rs"
[[example]]
name = "test_300_debug"
path = "examples/test_300_debug.rs"
[[example]]
name = "test_multi_group"
path = "examples/test_multi_group.rs"
[[example]]
name = "test_ssim2"
path = "examples/test_ssim2.rs"
[[example]]
name = "test_ssim2_300"
path = "examples/test_ssim2_300.rs"
[[example]]
name = "test_ssim2_exact"
path = "examples/test_ssim2_exact.rs"
[[example]]
name = "wasm_bench"
path = "examples/wasm_bench.rs"
[[test]]
name = "animation"
path = "tests/animation.rs"
[[test]]
name = "ans_roundtrip"
path = "tests/ans_roundtrip.rs"
[[test]]
name = "clic2025"
path = "tests/clic2025.rs"
[[test]]
name = "dct4x8_diagnostic"
path = "tests/dct4x8_diagnostic.rs"
[[test]]
name = "hash_lock_features"
path = "tests/hash_lock_features.rs"
[[test]]
name = "jpeg_reencoding"
path = "tests/jpeg_reencoding.rs"
[[test]]
name = "llf_invariants"
path = "tests/llf_invariants.rs"
[[test]]
name = "minimal_ans"
path = "tests/minimal_ans.rs"
[[test]]
name = "rate_control"
path = "tests/rate_control.rs"
[[test]]
name = "sixteenbit_metadata"
path = "tests/sixteenbit_metadata.rs"
[dependencies.archmage]
version = "0.7"
features = [
"macros",
"safe_unaligned_simd",
]
default-features = false
[dependencies.brotli]
version = "8.0"
features = ["std"]
optional = true
default-features = false
[dependencies.butteraugli]
version = "0.7"
optional = true
[dependencies.bytemuck]
version = "1.25"
features = ["derive"]
[dependencies.enough]
version = "0.3.1"
[dependencies.hashbrown]
version = "0.16"
features = ["default-hasher"]
default-features = false
[dependencies.imgref]
version = "1.12"
optional = true
[dependencies.jxl-oxide]
version = "0.12.5"
optional = true
default-features = false
[dependencies.jxl_simd]
version = "0.1.1"
default-features = false
package = "jxl-encoder-simd"
[dependencies.once_cell]
version = "1.21"
features = [
"race",
"alloc",
]
default-features = false
[dependencies.rgb]
version = "0.8"
optional = true
[dependencies.thiserror]
version = "2.0"
default-features = false
[dependencies.whereat]
version = "0.1.3"
[dependencies.zenjpeg]
version = "0.6.1"
features = [
"std",
"decoder",
]
optional = true
default-features = false
[dev-dependencies.butteraugli]
version = "0.7"
[dev-dependencies.fast-ssim2]
version = "0.6.5"
features = ["imgref"]
[dev-dependencies.image]
version = "0.25"
[dev-dependencies.imgref]
version = "1.12"
[dev-dependencies.jxl]
version = "0.3.0"
[dev-dependencies.jxl-jbr]
version = "0.2.1"
[dev-dependencies.jxl-oxide]
version = "0.12.5"
[dev-dependencies.jxl_transforms]
version = "0.3.0"
[dev-dependencies.rgb]
version = "0.8"
[dev-dependencies.walkdir]
version = "2.5"
[dev-dependencies.yuvxyb]
version = "0.4.1"
[target.'cfg(not(target_family = "wasm"))'.dev-dependencies.codec-corpus]
version = "1.0.1"
[lints.clippy]
missing_safety_doc = "deny"
undocumented_unsafe_blocks = "deny"
[lints.rust]
unsafe_op_in_unsafe_fn = "deny"