From 06dbf4fc110d7415d7909a6d4e769852d30d51b6 Mon Sep 17 00:00:00 2001 From: Rdataflow Date: Wed, 8 Jan 2025 17:53:11 +0100 Subject: [PATCH] feat: add zstd compression Closes: https://github.com/geotiffjs/geotiff.js/issues/372 --- src/compression/index.js | 7 +++++++ src/compression/zstd.js | 10 ++++++++++ 2 files changed, 17 insertions(+) create mode 100644 src/compression/zstd.js diff --git a/src/compression/index.js b/src/compression/index.js index 81c53b01..7a1b51e7 100644 --- a/src/compression/index.js +++ b/src/compression/index.js @@ -32,4 +32,11 @@ addDecoder(34887, () => import('./lerc.js') }) .then((m) => m.default), ); +addDecoder(50000, () => import('./zstd.js') + .then(async (m) => { + await m.zstd.init(); + return m; + }) + .then((m) => m.default), +); addDecoder(50001, () => import('./webimage.js').then((m) => m.default)); diff --git a/src/compression/zstd.js b/src/compression/zstd.js new file mode 100644 index 00000000..09d7730e --- /dev/null +++ b/src/compression/zstd.js @@ -0,0 +1,10 @@ +import { ZSTDDecoder } from 'zstddec'; +import BaseDecoder from './basedecoder.js'; + +export const zstd = new ZSTDDecoder(); + +export default class ZstdDecoder extends BaseDecoder { + decodeBlock(buffer) { + return zstd.decode(new Uint8Array(buffer)).buffer; + } +}