tinyimg 1.1.1
Lightweight image manipulation library for WebAssembly
Loading...
Searching...
No Matches
deflate.h
Go to the documentation of this file.
1
11#pragma once
12
13#include <stddef.h>
14#include <stdint.h>
15
16#include "tinyimg/tinyimg.h"
17#include "tinyimg/util.h"
18
19#ifdef __cplusplus
20extern "C" {
21#endif
22
27#define TINY_DEFLATE_WINDOW 32768u
28
49#define TINY_DEFLATE_FAST_BITS 11u
50
58#define TINY_DEFLATE_MAX_READ (TINY_DEFLATE_WINDOW - 258u)
59
66typedef struct {
68 uint16_t counts[16];
70 uint16_t symbols[288];
75
88typedef struct {
91
93 uint8_t* window;
95 size_t head;
97 size_t pending;
99 size_t tail;
109 size_t produced;
110
115
117 int done;
121 int final;
123 int mode;
125 size_t stored;
127 int zlib;
129 uint32_t adler_a;
131 uint32_t adler_b;
133 int error;
135
153 TinyInflate* state, const uint8_t* data, size_t size, int zlib
154);
155
168long tiny_inflate_read(TinyInflate* state, uint8_t* out, size_t size);
169
179
192 const uint8_t* data, size_t size, int zlib, TinyWriter* out
193);
194
227
246 const uint8_t* data, size_t size, TinyDeflateLevel level, int zlib,
247 TinyWriter* out
248);
249
250#ifdef __cplusplus
251}
252#endif
TinyDeflateLevel
How hard the compressor should look for matches.
Definition deflate.h:205
@ TINYIMG_DEFLATE_FAST
One hash chain probe per position, no lazy matching.
Definition deflate.h:217
@ TINYIMG_DEFLATE_BEST
A long chain walk, for when output size matters more than time.
Definition deflate.h:225
@ TINYIMG_DEFLATE_HUFFMAN
Entropy code the input without searching for matches at all.
Definition deflate.h:213
@ TINYIMG_DEFLATE_DEFAULT
A bounded chain walk with lazy matching, which is the default.
Definition deflate.h:221
int tiny_inflate_all(const uint8_t *data, size_t size, int zlib, TinyWriter *out)
Decompresses a whole stream into a growing sink.
int tiny_inflate_init(TinyInflate *state, const uint8_t *data, size_t size, int zlib)
Prepares a stream for reading.
#define TINY_DEFLATE_FAST_BITS
Bits the Huffman decoder resolves from one table lookup.
Definition deflate.h:49
long tiny_inflate_read(TinyInflate *state, uint8_t *out, size_t size)
Reads decompressed bytes, producing only as many as are asked for.
int tiny_deflate(const uint8_t *data, size_t size, TinyDeflateLevel level, int zlib, TinyWriter *out)
Compresses a buffer into a growing sink.
int tiny_inflate_finish(TinyInflate *state)
Checks the stream ended cleanly, including a zlib trailer if there was a header.
Reads a bitstream out of a byte buffer.
Definition util.h:570
A canonical Huffman decode table.
Definition deflate.h:66
uint16_t counts[16]
Definition deflate.h:68
uint16_t fast[1u<< TINY_DEFLATE_FAST_BITS]
Definition deflate.h:73
uint16_t symbols[288]
Definition deflate.h:70
A DEFLATE stream being read.
Definition deflate.h:88
uint32_t adler_a
Definition deflate.h:129
int inside
Definition deflate.h:119
int zlib
Definition deflate.h:127
uint32_t adler_b
Definition deflate.h:131
int mode
Definition deflate.h:123
size_t produced
Definition deflate.h:109
size_t stored
Definition deflate.h:125
size_t head
Definition deflate.h:95
uint8_t * window
Definition deflate.h:93
TinyHuffman * distances
Definition deflate.h:114
size_t tail
Definition deflate.h:99
TinyHuffman * literals
Definition deflate.h:112
int error
Definition deflate.h:133
int done
Definition deflate.h:117
size_t pending
Definition deflate.h:97
TinyBitReader bits
Definition deflate.h:90
A grow on demand byte sink.
Definition util.h:412
Umbrella header, version and error codes.
Math shims, lookup table builders, checksums and bit level IO.