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 release policy and crates.io for the current published version.

Why J2K exists

Safety

Safe public Rust APIs

The public codec surface is safe Rust. Audited unsafe code is isolated at FFI, GPU integration, architecture-specific SIMD/intrinsic, allocation, and bounded pointer or buffer boundaries; the unsafe audit is authoritative.

Routing

GPU-accelerated backends

Applications keep a portable CPU path while routing supported workloads to CUDA or Apple Metal under explicit backend policy.

Evidence

Permissive integration

The workspace is dual-licensed MIT or Apache-2.0, with benchmark claims gated by reproducible evidence instead of broad speed marketing.

Architecture

Still-image J2K/JP2 and HTJ2K/JPH surfaces meet in one public crate. CPU stays the portable correctness baseline; CUDA and Metal accelerate supported shapes under explicit policy.

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.
Automatic routing may return CPU output when a device path is unavailable, unsupported, or not benchmarked for the requested shape. Explicit CUDA and Metal requests are strict.

Support boundary

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.

Boundary

Wrappers and limits

JP2 and JPH still-image metadata paths are covered. JPX / JPEG 2000 Part 2 extensions and public speed claims require separate evidence.

Exact row-by-row support status lives in docs/public-support.md. Published benchmark notes live in docs/benchmark-evidence.md; broader adoption reports require pinned external corpora and comparator evidence.

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