Skip to main content

j2k_jpeg/
lib.rs

1// SPDX-License-Identifier: MIT OR Apache-2.0
2
3//! JPEG decoder optimized for whole-slide images.
4//!
5//! See the top-level README for project positioning. The primary entry point
6//! is [`Decoder`] — start with [`Decoder::inspect`] for header-only parsing.
7
8#![deny(unsafe_op_in_unsafe_fn)]
9#![warn(unreachable_pub)]
10// `missing_docs` remains staged crate-by-crate; see Cargo.toml for rationale.
11
12#[cfg(not(any(target_arch = "x86_64", target_arch = "aarch64")))]
13compile_error!("j2k-jpeg currently supports only x86_64 and aarch64 targets");
14
15extern crate alloc;
16
17mod info;
18pub use info::{
19    ColorSpace, ColorTransform, DecodeOptions, Info, McuGeometry, Rect, RestartIndex,
20    RestartSegment, SamplingFactors, SamplingFactorsError, SofKind,
21};
22pub use j2k_core::{
23    BatchDecodeError, BatchInfrastructureError, CacheStats, CodecContext, CompressedPayloadKind,
24    CompressedTransferSyntax, DecodeRowsError, Downscale, ImageCodec, ImageDecode, ImageDecodeRows,
25    PassthroughCandidate, PassthroughDecision, PassthroughRejectReason, PassthroughRequirements,
26    PixelFormat, PixelLayout, RowSink, Sample, SampleType, TileBatchDecode, TileDecompress,
27};
28
29mod context;
30pub use context::DecoderContext;
31
32mod batch_session;
33pub use batch_session::JpegBatchSession;
34
35mod capabilities;
36pub use capabilities::{
37    JpegBackendEligibility, JpegCapabilityReport, JpegCapabilityRequest, JpegDecodeOp,
38    JpegDecodeRequest, JpegResolvedDecode, JpegResolvedDecodePath,
39};
40
41mod output_buffer;
42pub use output_buffer::JpegOutputBuffer;
43
44mod segment;
45pub use segment::{
46    find_scan_ranges, is_sof_marker, iter_segments, parse_dri, parse_sof_info,
47    prepare_tiff_jpeg_tile, rewrite_sof_dimensions, DuplicateTablePolicy, JpegScanRanges,
48    JpegSegment, JpegSegmentIter, JpegSofInfo, JpegTilePrepareOptions, PreparedJpeg,
49};
50
51#[doc(hidden)]
52pub mod adapter;
53pub use adapter::DeviceBatchSummary;
54
55mod error;
56pub use error::{
57    BuilderConflictReason, HuffmanFailure, JpegError, MarkerKind, ProgressiveScanStateError,
58    ProgressiveScanTerminationError, TableKind, UnsupportedReason, Warning,
59};
60
61mod allocation;
62
63pub(crate) mod parse;
64
65pub(crate) mod entropy;
66
67pub(crate) mod idct;
68
69pub(crate) mod lossless;
70
71pub(crate) mod internal;
72
73pub(crate) mod color;
74
75pub(crate) mod backend;
76
77pub(crate) mod output;
78
79pub(crate) mod profile;
80
81pub(crate) mod encoded_output;
82
83mod baseline_encode_contract;
84mod baseline_entropy;
85mod dct_contract;
86
87/// Baseline JPEG encoder API.
88mod encoder;
89pub use encoder::{
90    encode_jpeg_baseline, EncodedJpeg, JpegBackend, JpegEncodeError, JpegEncodeOptions,
91    JpegSamples, JpegSubsampling,
92};
93
94#[doc(hidden)]
95pub mod transcode;
96
97mod decoder;
98pub use decoder::{
99    decode_prepared_jpeg_tiles_rgb8, decode_tile_into, decode_tile_into_in_context,
100    decode_tile_into_in_context_with_options, decode_tile_region_into_in_context,
101    decode_tile_region_into_in_context_with_options, decode_tile_region_scaled_into_in_context,
102    decode_tile_region_scaled_into_in_context_with_options, decode_tile_scaled_into_in_context,
103    decode_tile_scaled_into_in_context_with_options, decode_tiles_into,
104    decode_tiles_into_with_options, decode_tiles_region_scaled_into,
105    decode_tiles_region_scaled_into_with_options, decode_tiles_scaled_into,
106    decode_tiles_scaled_into_with_options, ComponentRowWriter, DecodeOutcome, DecodeRequest,
107    DecodedTile, Decoder, JpegView, PreparedJpegTileJob, PreparedTileBatchError, TileBatchError,
108    TileBatchOptions, TileDecodeJob, TileDecodeOutput, TileRegionScaledDecodeJob,
109    TileScaledDecodeJob,
110};
111
112pub use internal::scratch::ScratchPool;
113
114#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
115/// JPEG codec marker type for `j2k-core` trait integrations.
116pub struct JpegCodec;
117
118#[cfg(feature = "bench-internals")]
119#[doc(hidden)]
120pub mod bench_support;