tinyimg 1.0.0
Lightweight image manipulation library for Cloudflare Workers
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
38#define TINY_DEFLATE_FAST_BITS 9u
39
47#define TINY_DEFLATE_MAX_READ (TINY_DEFLATE_WINDOW - 258u)
48
55typedef struct {
57 uint16_t counts[16];
59 uint16_t symbols[288];
64
77typedef struct {
80
82 uint8_t* window;
84 size_t head;
86 size_t pending;
88 size_t tail;
89
94
96 int done;
98 int inside;
100 int final;
102 int mode;
104 size_t stored;
106 int zlib;
108 uint32_t adler_a;
110 uint32_t adler_b;
112 int error;
114
132 TinyInflate* state, const uint8_t* data, size_t size, int zlib
133);
134
147long tiny_inflate_read(TinyInflate* state, uint8_t* out, size_t size);
148
158
171 const uint8_t* data, size_t size, int zlib, TinyWriter* out
172);
173
206
225 const uint8_t* data, size_t size, TinyDeflateLevel level, int zlib,
226 TinyWriter* out
227);
228
229#ifdef __cplusplus
230}
231#endif
TinyDeflateLevel
How hard the compressor should look for matches.
Definition deflate.h:184
@ TINYIMG_DEFLATE_FAST
One hash chain probe per position, no lazy matching.
Definition deflate.h:196
@ TINYIMG_DEFLATE_BEST
A long chain walk, for when output size matters more than time.
Definition deflate.h:204
@ TINYIMG_DEFLATE_HUFFMAN
Entropy code the input without searching for matches at all.
Definition deflate.h:192
@ TINYIMG_DEFLATE_DEFAULT
A bounded chain walk with lazy matching, which is the default.
Definition deflate.h:200
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:38
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:547
A canonical Huffman decode table.
Definition deflate.h:55
uint16_t counts[16]
Definition deflate.h:57
uint16_t fast[1u<< TINY_DEFLATE_FAST_BITS]
Definition deflate.h:62
uint16_t symbols[288]
Definition deflate.h:59
A DEFLATE stream being read.
Definition deflate.h:77
uint32_t adler_a
Definition deflate.h:108
int inside
Definition deflate.h:98
int zlib
Definition deflate.h:106
uint32_t adler_b
Definition deflate.h:110
int mode
Definition deflate.h:102
size_t stored
Definition deflate.h:104
size_t head
Definition deflate.h:84
uint8_t * window
Definition deflate.h:82
TinyHuffman * distances
Definition deflate.h:93
size_t tail
Definition deflate.h:88
TinyHuffman * literals
Definition deflate.h:91
int error
Definition deflate.h:112
int done
Definition deflate.h:96
size_t pending
Definition deflate.h:86
TinyBitReader bits
Definition deflate.h:79
A grow on demand byte sink.
Definition util.h:389
Umbrella header, version and error codes.
Math shims, lookup table builders, checksums and bit level IO.