Skip to main content

j2k_jpeg/
lib.rs

1// SPDX-License-Identifier: 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
17pub mod info;
18pub use info::{
19    ColorSpace, ColorTransform, DecodeOptions, Info, McuGeometry, Rect, RestartIndex,
20    RestartSegment, SamplingFactors, SamplingFactorsError, SofKind,
21};
22pub use j2k_core::{
23    CacheStats, CodecContext, CompressedPayloadKind, CompressedTransferSyntax, DecodeRowsError,
24    Downscale, ImageCodec, ImageDecode, ImageDecodeRows, PassthroughCandidate, PassthroughDecision,
25    PassthroughRejectReason, PassthroughRequirements, PixelFormat, PixelLayout, RowSink, Sample,
26    SampleType, TileBatchDecode, TileDecompress,
27};
28
29pub mod context;
30pub use context::DecoderContext;
31
32pub mod batch_session;
33pub use batch_session::JpegBatchSession;
34
35pub mod capabilities;
36pub use capabilities::{
37    JpegBackendEligibility, JpegCapabilityReport, JpegCapabilityRequest, JpegDecodeOp,
38    JpegDecodeRequest, JpegResolvedDecode, JpegResolvedDecodePath,
39};
40
41pub mod output_buffer;
42pub use output_buffer::JpegOutputBuffer;
43
44pub mod 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
51pub mod adapter;
52
53pub mod error;
54pub use error::{
55    BuilderConflictReason, HuffmanFailure, JpegError, MarkerKind, TableKind, UnsupportedReason,
56    Warning,
57};
58
59pub(crate) mod parse;
60
61pub(crate) mod entropy;
62
63pub(crate) mod idct;
64
65pub(crate) mod lossless;
66
67pub(crate) mod internal;
68
69pub(crate) mod color;
70
71pub(crate) mod backend;
72
73pub(crate) mod output;
74
75pub(crate) mod profile;
76
77/// Baseline JPEG encoder API.
78pub mod encoder;
79pub use encoder::{
80    encode_jpeg_baseline, EncodedJpeg, JpegBackend, JpegEncodeError, JpegEncodeOptions,
81    JpegSamples, JpegSubsampling,
82};
83
84pub mod transcode;
85
86pub mod decoder;
87pub use decoder::{
88    decode_prepared_jpeg_tiles_rgb8, decode_tile_into, decode_tile_into_in_context,
89    decode_tile_into_in_context_with_options, decode_tile_region_into_in_context,
90    decode_tile_region_into_in_context_with_options, decode_tile_region_scaled_into_in_context,
91    decode_tile_region_scaled_into_in_context_with_options, decode_tile_scaled_into_in_context,
92    decode_tile_scaled_into_in_context_with_options, decode_tiles_into,
93    decode_tiles_into_with_options, decode_tiles_region_scaled_into,
94    decode_tiles_region_scaled_into_with_options, decode_tiles_scaled_into,
95    decode_tiles_scaled_into_with_options, ComponentRowWriter, DecodeOutcome, DecodedTile, Decoder,
96    JpegView, PreparedJpegTileJob, TileBatchError, TileBatchOptions, TileDecodeJob,
97    TileRegionScaledDecodeJob, TileScaledDecodeJob,
98};
99
100pub use internal::scratch::ScratchPool;
101
102#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
103/// JPEG codec marker type for `j2k-core` trait integrations.
104pub struct JpegCodec;
105
106#[cfg(feature = "bench-internals")]
107#[doc(hidden)]
108pub mod bench_support;