Add zstd with low compression quality

This commit is contained in:
Arpad Müller
2024-06-07 17:35:41 +02:00
parent 843d996cb1
commit e6a0e7ec61
3 changed files with 10 additions and 2 deletions

View File

@@ -469,6 +469,7 @@ pub enum CompactionAlgorithm {
)]
#[strum(serialize_all = "kebab-case")]
pub enum ImageCompressionAlgorithm {
ZstdLow,
Zstd,
ZstdHigh,
LZ4,

View File

@@ -266,10 +266,16 @@ impl<const BUFFERED: bool> BlobWriter<BUFFERED> {
const UNCOMPRESSED: u8 = 0x80;
const ZSTD: u8 = UNCOMPRESSED | 0x10;
const LZ4: u8 = UNCOMPRESSED | 0x20;
use ImageCompressionAlgorithm::*;
let (high_bit_mask, len_written, srcbuf) = match algorithm {
Some(ImageCompressionAlgorithm::Zstd | ImageCompressionAlgorithm::ZstdHigh) => {
Some(ZstdLow | Zstd | ZstdHigh) => {
let mut encoder =
if matches!(algorithm, Some(ImageCompressionAlgorithm::ZstdHigh)) {
if matches!(algorithm, Some(ZstdLow)) {
async_compression::tokio::write::ZstdEncoder::with_quality(
Vec::new(),
Level::Precise(1),
)
} else if matches!(algorithm, Some(ZstdHigh)) {
async_compression::tokio::write::ZstdEncoder::with_quality(
Vec::new(),
Level::Precise(6),

View File

@@ -381,6 +381,7 @@ impl ImageLayer {
}
let image_compressions = [
None,
Some(ImageCompressionAlgorithm::ZstdLow),
Some(ImageCompressionAlgorithm::Zstd),
Some(ImageCompressionAlgorithm::ZstdHigh),
Some(ImageCompressionAlgorithm::LZ4),