Coder Social home page Coder Social logo

mcmilk / zstdmt Goto Github PK

View Code? Open in Web Editor NEW
172.0 16.0 33.0 967 KB

Multithreading Library for Brotli, Lizard, LZ4, LZ5, Snappy and Zstandard

License: Other

C 96.52% Makefile 3.48%
brotli lz4 lz5 lizard snappy zstd zstandard skippables-frame multithreading-library

zstdmt's Introduction

Multithreading Library for Brotli, Lizard, LZ4, LZ5, Snappy-c, LZFSE and Zstandard

Description

  • works with skippables frame id 0x184D2A50 (12 bytes per compressed frame)
  • brotli is supported the same way, it will encapsulate the real brotli stream within an 16 byte frame header

Generic skippable frame definition

size value description
4 bytes 0x184D2A50U magic for skippable frame
4 bytes 4 size of skippable frame
4 bytes compressed size size of the following frame (compressed data)

Brotli frame definition

  • the frame header for brotli is defined a bit different:
size value description
4 bytes 0x184D2A50U magic for skippable frame (like zstd)
4 bytes 8 size of skippable frame
4 bytes compressed size size of the following frame (compressed data)
2 bytes 0x5242U magic for brotli "BR"
2 bytes uncompressed size allocation hint for decompressor (64KB * this size)

Snappy-c frame definition

  • the frame header for Snappy-c is defined a bit different:
size value description
4 bytes 0x184D2A50U magic for skippable frame (like zstd)
4 bytes 8 size of skippable frame
4 bytes compressed size size of the following frame (compressed data)
2 bytes 0x5053U magic for Snappy-c "SP"
2 bytes uncompressed size allocation hint for decompressor (64KB * this size)

LZFSE frame definition

  • the frame header for Lzfse is defined a bit different:
size value description
4 bytes 0x184D2A50U magic for skippable frame (like zstd)
4 bytes 8 size of skippable frame
4 bytes compressed size size of the following frame (compressed data)
2 bytes 0x464CU magic for Lzfse "LF"
2 bytes uncompressed size allocation hint for decompressor (64KB * this size)

Usage of the Testutils

Usage of the Library

/TR 2020-10-15

zstdmt's People

Contributors

2i3r avatar derijkp avatar jinfeihan57 avatar mcmilk avatar tansy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

zstdmt's Issues

brotli-mt window size option

There is an option in brotli to use the window size. I couldn't find window option in brotli-mt.

Is there a way to specify the window size for brotli-mt and does it use LZ77?

  -w NUM, --lgwin=NUM         set LZ77 window size (0, 10-24)
                              window size = 2**NUM - 16
                              0 lets compressor choose the optimal value

And what does frame refer to in your code?

Thanks!

Version information

Version information is somewhat confusing. It says: zstd-mt version v1.5.5, zstdmt v0.8, where 1.5.5 is in fact zstd version, and 0.8 is zstd-mt.
In my opinion it should be program version first, then libzstd version second. Perfectly in next line.

zstd-mt 0.8
libzstd 1.5.5

Copyright...

It's logical to display actual program version first, then its library.

Other program/s, using external library in same/similar way do it like that:

plzip 1.10
Using lzlib 1.14
Copyright...

Same would apply to the other programs from suite.

snappy multithreading

Are there plans to add compression algorithms? I want to help. And I made snappy multithreading.

Checksum

Is it possible to add checksum to the archive? At least optionally.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.