Skip to main content

j2k_cuda/
lib.rs

1// SPDX-License-Identifier: Apache-2.0
2
3//! NVIDIA CUDA GPU device-output adapter for Rust JPEG 2000 / HTJ2K in `j2k`.
4//!
5//! This crate intentionally exposes the same backend-selection surface as the
6//! Metal adapter. CPU and auto requests return host-backed surfaces. Strict
7//! CUDA requests are reserved for CUDA-resident HTJ2K codestream decode and
8//! CUDA-resident HTJ2K encode inputs; the CPU-decode-then-upload path is
9//! exposed through explicit CPU-staged APIs.
10
11#![deny(missing_docs)]
12#![warn(unreachable_pub)]
13
14mod codec;
15mod decoder;
16mod direct_plan;
17mod encode;
18mod error;
19mod profile;
20mod runtime;
21mod session;
22mod surface;
23
24pub use codec::Codec;
25pub use decoder::J2kDecoder;
26pub use direct_plan::{
27    CudaHtj2kBandId, CudaHtj2kCodeBlock, CudaHtj2kDecodePlan, CudaHtj2kIdwtStep, CudaHtj2kRect,
28    CudaHtj2kStoreStep, CudaHtj2kSubband, CudaHtj2kTransform,
29};
30#[cfg(feature = "cuda-runtime")]
31#[doc(hidden)]
32pub use encode::cuda_dwt53_output_to_j2k_for_test;
33pub use encode::{
34    encode_j2k_lossless_with_cuda, encode_j2k_lossless_with_cuda_and_profile,
35    CudaEncodeStageAccelerator, CudaEncodeStageTimings,
36};
37#[cfg(feature = "cuda-runtime")]
38pub use encode::{
39    encode_lossless_from_cuda_buffer, encode_lossless_from_cuda_buffer_with_report,
40    encode_lossless_from_cuda_buffers, encode_lossless_from_cuda_buffers_with_report,
41    submit_lossless_from_cuda_buffer, submit_lossless_from_cuda_buffers, CudaLosslessEncodeOutcome,
42    CudaLosslessEncodeResidency, CudaLosslessEncodeTile, SubmittedJ2kLosslessCudaEncode,
43    SubmittedJ2kLosslessCudaEncodeBatch,
44};
45pub use error::Error;
46pub use j2k::{J2kContext, J2kScratchPool};
47pub use profile::{
48    CudaHtj2kDecodeProfileDetail, CudaHtj2kEncodeProfileReport, CudaHtj2kProfileReport,
49};
50pub use session::CudaSession;
51pub use surface::{CudaSurface, CudaSurfaceStats, Surface, SurfaceResidency};