Pure Rust / JPEG 2000 / HTJ2K

GPU AcceleratedJ2K Codec

Safe public Rust APIs for JPEG 2000 Part 1 and HTJ2K Part 15 inspection, decode, encode, recode, and coefficient-domain JPEG-to-HTJ2K transcode workflows.

CPU is the correctness baseline. CUDA and Apple Metal backends accelerate supported paths.

Release statusSee the changelog and crates.io for the current published version.

Why J2K exists

Safety

Safe public Rust APIs

The public codec surface is safe Rust. Unsafe code is limited to FFI, GPU integration, architecture-specific SIMD/intrinsic, allocation, and bounded pointer or buffer boundaries, and every host-side unsafe block explains why it is sound.

Routing

GPU-accelerated backends

Applications keep a portable CPU path and can send supported workloads to CUDA or Apple Metal.

Benchmarks

Permissive integration

The workspace is dual-licensed MIT or Apache-2.0. Published speed numbers come with the commands, hardware, and inputs needed to reproduce them.

Architecture

J2K/JP2 and HTJ2K/JPH still images are handled by one crate. The CPU path is the reference implementation; CUDA and Metal speed up the shapes they support.

System map / static topology
J2K pipeline: JPEG 2000, HTJ2K, and JPEG inputs flow through the j2k crate, which routes to CPU baseline, CUDA, and Metal backends.
Auto returns CPU output when no GPU path is available, supported, or measured faster for the shape. Explicit CUDA and Metal requests never fall back.

Supported formats

Exact coverage is maintained in the public support matrix.

In scope

JPEG 2000 Part 1

Raw J2K/J2C codestream parse, inspect, decode, encode, ROI, progression, tile-part, packet-marker, signed, high-bit, and component-plane surfaces are tracked by the public support matrix.

In scope

HTJ2K Part 15

HT cleanup and refinement decode/encode, quality layers, rate behavior, raw HT codestreams, and JPH still-image wrapping are in scope.

Limits

Wrappers and limits

JP2 and JPH still-image metadata is supported. JPX / JPEG 2000 Part 2 extensions are not.

The full support table is in docs/public-support.md. Benchmark results are in docs/benchmark-evidence.md; comparisons with other codecs use pinned external corpora.

Install

Most applications should start with the public facade crate. The CLI is useful for inspection and conservative JPEG-to-HTJ2K transcode smoke tests.

Library01
$ cargo add j2k

Safe public APIs for inspection, decode, encode, recode, JP2, and JPH.

CLI smoke test02
$ cargo install j2k-cli
$ j2k inspect input.jp2
$ j2k transcode input.jpg output.j2k \
    --htj2k --lossless-53

Package map

CrateRoleLayer
j2kPublic API for JPEG 2000 Part 1 / HTJ2K Part 15 inspection, decode, encode, recode, JP2, and JPH.Public
j2k-cudaNVIDIA CUDA backend for supported JPEG 2000 and HTJ2K paths.Backend
j2k-metalApple Metal backend for supported macOS GPU paths.Backend
j2k-transcodeJPEG-to-HTJ2K coefficient-domain transcode primitives and shared transcode contracts.Core
j2k-cliCommand-line inspection and JPEG-to-HTJ2K transcode smoke tests.Tool

Topic pages