mirror of
https://github.com/aaru-dps/Aaru.Compression.Native.git
synced 2026-07-08 18:06:12 +00:00
7a6c85b44f33c9913751f7db024f851a1403d319
- Introduced dd.h header file with function declarations for various DiskDoubler decompression methods including ADn, DDn, Method 2, Stac LZS, Compact Pro, and LZW. - Implemented wrapper functions in library.c to expose DiskDoubler decompression methods to the Aaru API. - Updated library.h to declare the new DiskDoubler functions. - Added test cases for DiskDoubler decompression methods in dd.cpp, covering ADn and DDn methods with corresponding binary test data. - Included necessary test data files for ADn and DDn methods in the tests/data directory.
Aaru.Compression.Native
This repository contains the Aaru.Compression.Native library for Aaru.
The purpose of this library is to provide compression and de-compression algorithms for Aaru.
No archiver processing code should fall here, those go in Aaru.Compression.
To build you just need Docker on Linux and run build.sh, that will generate a NuGet package for use with
Aaru.Compression.
Currently implemented algorithms are:
General-purpose codecs
- Apple Data Compression (RLE with sliding dictionary created for Apple Disk Copy's NDIF)
- Apple RLE (Run Length Encoding created for Apple DART)
- BZIP2
- FLAC
- LZ4
- LZFSE
- LZIP
- LZMA / LZMA2 / XZ
- LZO
- Zstandard
Archive decompressors
- ACE v1 (LZ77) and v2 (blocked with delta/EXE/sound/picture modes)
- ARC methods 3–9 (pack, squeeze, crunch, squash) and PAK methods 10–11 (crush, distill)
- ARJ methods 1–4 and ARJZ (standard LZH and extended DEFLATE)
- HA (ASC and HSC)
- LHA (LH1–LH7, LArc LZS/LZ5, PMarc PM1/PM2)
- RAR 1.5 (custom LZ77 with fixed Huffman tables)
- RAR 2.0 (block Huffman LZ77 with optional multichannel audio)
- RAR 3.0 (Huffman LZ77 / PPMd Variant H with VM-based post-filters)
- RAR 5.0 (Huffman LZ77 with native Delta/E8/E8E9/ARM filters)
- ZIP methods 1–6, 9, 96–98 (Shrink, Reduce, Implode, Deflate64, WinZip JPEG, WavPack, PPMd)
- Zoo (LZD, LH5)
Each of these algorithms have a corresponding license, that can be found in their corresponding folder.
The resulting output of build.sh falls under the LGPL 2.1 license as stated in the LICENSE file.
Any new algorithm added should be under a license compatible with the LGPL 2.1 license to be accepted.
© 2021-2026 Natalia Portillo
Languages
C
93.9%
C++
4.8%
CMake
0.8%
Shell
0.5%