1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//! `ndic-zarr` — Zarr v3 codecs and the codec-series builder.
//!
//! nd-image-codecs contributes two registered Zarr v3 codecs and composes a
//! third family from existing codecs:
//!
//! | Codec | Kind | Crate |
//! | --- | --- | --- |
//! | [`ndic_lift::CODEC_NAME`] (`nd_lift`) | array → array | `ndic-lift` |
//! | [`HTJ2K_CODEC_NAME`] (`htj2k`) | array → bytes | `ndic-htj2k` + `ndic-codestream` |
//! | [`ndic_zfp::CODEC_NAME`] (`zfp`) | array → bytes | `ndic-zfp` |
//!
//! The [`series`] module builds complete codec **pipelines** ("series") from
//! axis metadata — `transpose` → decorrelation → plane/block codec — for the
//! three families **nd-delta**, **nd-lift-ht**, and **nd-zfp**. See
//! `docs/architecture/codec-series.md`.
//!
//! Codecs register into the `zarrs` plugin registry via `inventory` when the
//! `zarrs` feature is enabled: `nd_lift` in `lift_codec` (Phase 2), `htj2k`
//! in `htj2k_codec` (Phase 4), `nd_zfp` in `zfp_codec` (Phase 5), and — for
//! the nd-delta family, which `zarrs` cannot otherwise run —
//! `numcodecs.delta` in [`delta_codec`] (Phase 6).
/// The registered Zarr v3 array-to-bytes codec identifier for the HTJ2K
/// coefficient-plane codec (independent Part 1 / Part 15 codestreams per
/// trailing 2D plane, plus a coefficient-plane byte index for range access).
pub const HTJ2K_CODEC_NAME: &str = "htj2k";
pub use CODEC_NAME as ND_LIFT_CODEC_NAME;
pub use CODEC_NAME as ZFP_CODEC_NAME;
pub use LEGACY_CODEC_NAME as ND_ZFP_LEGACY_CODEC_NAME;