pub struct LzmaCodec { /* private fields */ }
Available on
codec_api
only.Expand description
LZMA (lzma) decompression codec.
§Format Details
CHD compresses LZMA hunks without an xz stream header using the default compression settings for LZMA 19.0. These settings are
- Literal Context Bits (
lc
): 3 - Literal Position Bits (
lp
): 0 - Position Bits (
pb
): 2
The dictionary size is determined via the following algorithm with a level of 9, and a reduction size of hunk size.
fn get_lzma_dict_size(level: u32, reduce_size: u32) -> u32 {
let mut dict_size = if level <= 5 {
1 << (level * 2 + 14)
} else if level <= 7 {
1 << 25
} else {
1 << 26
};
// This does the same thing as LzmaEnc.c when determining dict_size
if dict_size > reduce_size {
for i in 11..=30 {
if reduce_size <= (2u32 << i) {
dict_size = 2u32 << i;
break;
}
if reduce_size <= (3u32 << i) {
dict_size = 3u32 << i;
break;
}
}
}
dict_size
}
§Buffer Restrictions
Each compressed LZMA hunk decompresses to a hunk-sized chunk. The input buffer must contain exactly enough data to fill the output buffer when decompressed.
Trait Implementations§
source§impl CodecImplementation for LzmaCodec
impl CodecImplementation for LzmaCodec
source§impl CompressionCodecType for LzmaCodec
impl CompressionCodecType for LzmaCodec
impl CompressionCodec for LzmaCodec
Auto Trait Implementations§
impl RefUnwindSafe for LzmaCodec
impl Send for LzmaCodec
impl Sync for LzmaCodec
impl Unpin for LzmaCodec
impl UnwindSafe for LzmaCodec
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more