leodos_protocols/application/compression/mod.rs
1//! CCSDS data compression algorithms.
2
3/// CCSDS 121.0-B-3 Lossless Data Compression (Rice coding).
4pub mod rice;
5/// CCSDS 122.0-B-2 Image Data Compression (wavelet-based).
6pub mod ccsds122;
7/// CCSDS 123.0-B-2 Low-Complexity Lossless Multispectral &
8/// Hyperspectral Image Compression.
9pub mod ccsds123;
10/// CCSDS 122.1-B-1 Spectral Preprocessing Transform for
11/// Multispectral and Hyperspectral Image Compression.
12pub mod spectral;
13
14/// Lossless or lossy data compression (applied to payload, not frames).
15pub trait Compressor {
16 /// Error type for compression operations.
17 type Error;
18 /// Compresses `input` into `output`.
19 fn compress(&self, input: &[u8], output: &mut [u8]) -> Result<usize, Self::Error>;
20}
21
22/// Decompresses previously compressed data.
23pub trait Decompressor {
24 /// Error type for decompression operations.
25 type Error;
26 /// Decompresses `input` into `output`.
27 fn decompress(&self, input: &[u8], output: &mut [u8]) -> Result<usize, Self::Error>;
28}