Skip to main content

j2k_types/
lib.rs

1// j2k-coverage: shared-accelerator-host
2//! Shared JPEG 2000 and HTJ2K codec contracts for j2k.
3//!
4//! Stable codec value types are grouped by transform, Tier-1, packetization,
5//! and prepared-plan ownership. The crate's dispatch contracts form the
6//! explicit low-level integration surface for encode-stage accelerators.
7
8#![no_std]
9#![forbid(unsafe_code)]
10#![forbid(missing_docs)]
11extern crate alloc;
12
13mod decode_payload;
14pub use decode_payload::{
15    HtCodeBlockPayloadRanges, J2kClassicCodeBlockPayload, J2kCodestreamRange,
16};
17
18mod decode_plan;
19pub use decode_plan::{
20    DecodePlanAllocationError, HtOwnedCodeBlockBatchJob, HtOwnedSubBandPlan, J2kDirectBandId,
21    J2kDirectColorPlan, J2kDirectGrayscalePlan, J2kDirectGrayscaleStep, J2kDirectIdwtStep,
22    J2kDirectRgbaPlan, J2kDirectStoreStep, J2kOwnedCodeBlockBatchJob, J2kOwnedSubBandPlan, J2kRect,
23    J2kReferencedClassicPlan, J2kReferencedHtj2kPlan, J2kReferencedImageGeometry,
24    J2kReferencedPayloadRecordSpan, J2kReferencedTileGeometry, J2kReferencedTilePlan,
25    J2kWaveletTransform, DEFAULT_MAX_CODEC_BYTES, DEFAULT_MAX_DECODE_BYTES,
26};
27
28mod dispatch;
29pub use dispatch::{
30    CpuOnlyJ2kEncodeStageAccelerator, J2kDeinterleaveMctToF32Job, J2kDeinterleaveToF32Job,
31    J2kEncodeContext, J2kEncodeDispatchReport, J2kEncodeStageAccelerator, J2kEncodeStageError,
32    J2kEncodeStageErrorKind, J2kEncodeStageResult, J2kHtj2kTileEncodeJob,
33};
34
35#[doc(hidden)]
36pub mod encode_geometry;
37
38/// Sort packet descriptors in the requested progression order.
39///
40/// This helper compares descriptor fields without image geometry. For
41/// position-major progressions, the compared precinct indices must share the
42/// same spatial ordering across components and resolutions, as with one
43/// precinct per resolution. Encoders with differing precinct grids must order
44/// descriptors by reference-grid coordinates before packetization instead.
45pub fn sort_packet_descriptors_for_progression(
46    descriptors: &mut [J2kPacketizationPacketDescriptor],
47    progression_order: J2kPacketizationProgressionOrder,
48) {
49    encode_geometry::sort_packet_descriptors_for_progression(descriptors, progression_order);
50}
51
52mod limits;
53#[doc(hidden)]
54pub use limits::{MAX_JPEG2000_PART1_COMPONENTS, MAX_JPEG2000_PART1_SAMPLE_BIT_DEPTH};
55mod move_only;
56
57mod packetization;
58pub use packetization::{
59    J2kPacketizationBlockCodingMode, J2kPacketizationCodeBlock, J2kPacketizationEncodeJob,
60    J2kPacketizationPacketDescriptor, J2kPacketizationProgressionOrder, J2kPacketizationResolution,
61    J2kPacketizationSubband,
62};
63
64mod prepared_plan;
65pub use prepared_plan::{
66    PrecomputedHtj2k53Component, PrecomputedHtj2k53Image, PrecomputedHtj2k97Component,
67    PrecomputedHtj2k97Image, PreencodedHtj2k97CodeBlock, PreencodedHtj2k97CompactCodeBlock,
68    PreencodedHtj2k97CompactComponent, PreencodedHtj2k97CompactImage,
69    PreencodedHtj2k97CompactResolution, PreencodedHtj2k97CompactSubband,
70    PreencodedHtj2k97Component, PreencodedHtj2k97Image, PreencodedHtj2k97Resolution,
71    PreencodedHtj2k97Subband, PrequantizedHtj2k97CodeBlock, PrequantizedHtj2k97Component,
72    PrequantizedHtj2k97Image, PrequantizedHtj2k97Resolution, PrequantizedHtj2k97Subband,
73};
74
75mod resident;
76#[doc(hidden)]
77pub use resident::{
78    J2kResidentEncodeInput, J2kResidentEncodeInputError, J2kResidentHtj2kTileEncodeJob,
79};
80mod tier1;
81pub use tier1::{
82    EncodedHtJ2kCodeBlock, EncodedHtJ2kCodeBlockSet, EncodedJ2kCodeBlock, J2kCodeBlockSegment,
83    J2kCodeBlockStyle, J2kHtCodeBlockEncodeJob, J2kHtCodeBlockSetEncodeJob, J2kHtSubbandEncodeJob,
84    J2kSubBandType, J2kTier1CodeBlockEncodeJob,
85};
86
87mod transform;
88pub use transform::{
89    IrreversibleQuantizationStep, IrreversibleQuantizationSubbandScales, J2kForwardDwt53Job,
90    J2kForwardDwt53Level, J2kForwardDwt53Output, J2kForwardDwt97Job, J2kForwardDwt97Level,
91    J2kForwardDwt97Output, J2kForwardIctJob, J2kForwardRctJob, J2kQuantizeSubbandJob,
92};
93
94mod wavelet;
95pub use wavelet::{
96    WaveletBand, WaveletBandKind, WaveletComponent, WaveletImage, WaveletRect, WaveletSamples,
97    WaveletSelection, WaveletTile, WaveletTransform,
98};