brotli 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/brotli/brotli.cc +114 -24
- data/ext/brotli/brotli.h +0 -1
- data/ext/brotli/extconf.rb +30 -23
- data/lib/brotli/version.rb +1 -1
- data/vendor/brotli/LICENSE +1 -1
- data/vendor/brotli/dec/Makefile +1 -1
- data/vendor/brotli/dec/bit_reader.c +3 -3
- data/vendor/brotli/dec/bit_reader.h +25 -27
- data/vendor/brotli/dec/context.h +4 -4
- data/vendor/brotli/dec/decode.c +410 -486
- data/vendor/brotli/dec/decode.h +101 -105
- data/vendor/brotli/dec/dictionary.c +1 -1
- data/vendor/brotli/dec/dictionary.h +7 -8
- data/vendor/brotli/dec/huffman.c +103 -105
- data/vendor/brotli/dec/huffman.h +18 -18
- data/vendor/brotli/dec/port.h +52 -40
- data/vendor/brotli/dec/prefix.h +2 -0
- data/vendor/brotli/dec/state.c +13 -19
- data/vendor/brotli/dec/state.h +25 -39
- data/vendor/brotli/dec/transform.h +38 -44
- data/vendor/brotli/dec/types.h +2 -2
- data/vendor/brotli/enc/Makefile +1 -1
- data/vendor/brotli/enc/backward_references.cc +455 -359
- data/vendor/brotli/enc/backward_references.h +79 -3
- data/vendor/brotli/enc/bit_cost.h +54 -32
- data/vendor/brotli/enc/block_splitter.cc +285 -193
- data/vendor/brotli/enc/block_splitter.h +4 -12
- data/vendor/brotli/enc/brotli_bit_stream.cc +623 -324
- data/vendor/brotli/enc/brotli_bit_stream.h +76 -37
- data/vendor/brotli/enc/cluster.h +161 -120
- data/vendor/brotli/enc/command.h +60 -37
- data/vendor/brotli/enc/compress_fragment.cc +701 -0
- data/vendor/brotli/enc/compress_fragment.h +47 -0
- data/vendor/brotli/enc/compress_fragment_two_pass.cc +524 -0
- data/vendor/brotli/enc/compress_fragment_two_pass.h +40 -0
- data/vendor/brotli/enc/compressor.h +15 -0
- data/vendor/brotli/enc/context.h +1 -1
- data/vendor/brotli/enc/dictionary.h +2 -2
- data/vendor/brotli/enc/encode.cc +819 -286
- data/vendor/brotli/enc/encode.h +38 -15
- data/vendor/brotli/enc/encode_parallel.cc +40 -42
- data/vendor/brotli/enc/entropy_encode.cc +144 -147
- data/vendor/brotli/enc/entropy_encode.h +32 -8
- data/vendor/brotli/enc/entropy_encode_static.h +572 -0
- data/vendor/brotli/enc/fast_log.h +7 -40
- data/vendor/brotli/enc/find_match_length.h +9 -9
- data/vendor/brotli/enc/hash.h +462 -154
- data/vendor/brotli/enc/histogram.cc +6 -6
- data/vendor/brotli/enc/histogram.h +13 -13
- data/vendor/brotli/enc/literal_cost.cc +45 -45
- data/vendor/brotli/enc/metablock.cc +92 -89
- data/vendor/brotli/enc/metablock.h +12 -12
- data/vendor/brotli/enc/port.h +7 -16
- data/vendor/brotli/enc/prefix.h +23 -22
- data/vendor/brotli/enc/ringbuffer.h +75 -29
- data/vendor/brotli/enc/static_dict.cc +56 -48
- data/vendor/brotli/enc/static_dict.h +5 -5
- data/vendor/brotli/enc/streams.cc +1 -1
- data/vendor/brotli/enc/streams.h +5 -5
- data/vendor/brotli/enc/transform.h +40 -35
- data/vendor/brotli/enc/types.h +2 -0
- data/vendor/brotli/enc/utf8_util.cc +3 -2
- data/vendor/brotli/enc/write_bits.h +6 -6
- metadata +9 -5
- data/vendor/brotli/dec/streams.c +0 -102
- data/vendor/brotli/dec/streams.h +0 -95
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7de822751d5b3f546404565d93bc0679b0742545
|
4
|
+
data.tar.gz: 47aa47a72c5db72815ab325e832bb38e2b37934f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c33554e3f20e4fa992bb0a0730f283695c6bf83df73fb194db522de443a3b652eae7dd84d2671a2ddb8d3452c32e1f6ffa71332b4732c02094ca0fc2963d6f36
|
7
|
+
data.tar.gz: 3a07f28a8953211b2d7e6884323e8e48ef568cf1d6242de575d0e12daecb9f002921613f213b5ca6242058528eb1d9a78bcb84a4f22feaa9d197845d3a58ea60
|
data/ext/brotli/brotli.cc
CHANGED
@@ -1,14 +1,22 @@
|
|
1
1
|
#include "brotli.h"
|
2
2
|
|
3
|
+
#define CSTR2SYM(x) ID2SYM(rb_intern(x))
|
4
|
+
|
3
5
|
static VALUE rb_mBrotli;
|
4
6
|
static VALUE rb_eBrotli;
|
5
7
|
|
6
|
-
static
|
7
|
-
|
8
|
+
static void*
|
9
|
+
brotli_alloc(void* opaque, size_t size)
|
10
|
+
{
|
11
|
+
return xmalloc(size);
|
12
|
+
}
|
13
|
+
|
14
|
+
static void
|
15
|
+
brotli_free(void* opaque, void* address)
|
8
16
|
{
|
9
|
-
|
10
|
-
|
11
|
-
|
17
|
+
if (address) {
|
18
|
+
xfree(address);
|
19
|
+
}
|
12
20
|
}
|
13
21
|
|
14
22
|
static VALUE
|
@@ -16,34 +24,116 @@ brotli_inflate(VALUE self, VALUE str)
|
|
16
24
|
{
|
17
25
|
StringValue(str);
|
18
26
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
27
|
+
uint8_t output[BUFSIZ];
|
28
|
+
BrotliResult result = BROTLI_RESULT_ERROR;
|
29
|
+
size_t available_in = (size_t)RSTRING_LEN(str);
|
30
|
+
const uint8_t* next_in = (uint8_t*)RSTRING_PTR(str);
|
31
|
+
size_t available_out = BUFSIZ;
|
32
|
+
uint8_t* next_out = output;
|
33
|
+
size_t total_out = 0;
|
34
|
+
VALUE value = rb_str_buf_new(available_in);
|
35
|
+
|
36
|
+
BrotliState* s = BrotliCreateState(brotli_alloc, brotli_free, NULL);
|
37
|
+
|
38
|
+
for (;;) {
|
39
|
+
result = BrotliDecompressStream(&available_in,
|
40
|
+
&next_in,
|
41
|
+
&available_out,
|
42
|
+
&next_out,
|
43
|
+
&total_out,
|
44
|
+
s);
|
45
|
+
// success, error or needs more input
|
46
|
+
if (result != BROTLI_RESULT_NEEDS_MORE_OUTPUT) {
|
47
|
+
break;
|
48
|
+
}
|
49
|
+
rb_str_buf_cat(value, (const char*)output, BUFSIZ);
|
50
|
+
available_out = BUFSIZ;
|
51
|
+
next_out = output;
|
52
|
+
}
|
53
|
+
|
54
|
+
if (next_out != output) {
|
55
|
+
rb_str_buf_cat(value, (const char*)output, next_out - output);
|
56
|
+
}
|
57
|
+
|
58
|
+
if (result == BROTLI_RESULT_ERROR) {
|
59
|
+
const char* error = BrotliErrorString(BrotliGetErrorCode(s));
|
60
|
+
BrotliDestroyState(s);
|
61
|
+
rb_raise(rb_eBrotli, "%s", error);
|
62
|
+
}
|
63
|
+
|
64
|
+
BrotliDestroyState(s);
|
65
|
+
|
66
|
+
if (result == BROTLI_RESULT_NEEDS_MORE_INPUT) {
|
33
67
|
rb_raise(rb_eBrotli, "Needs more input");
|
34
|
-
|
35
|
-
case BROTLI_RESULT_NEEDS_MORE_OUTPUT:
|
68
|
+
} else if (result == BROTLI_RESULT_NEEDS_MORE_OUTPUT) {
|
36
69
|
rb_raise(rb_eBrotli, "Needs more output");
|
37
|
-
|
70
|
+
}
|
71
|
+
|
72
|
+
return value;
|
73
|
+
}
|
74
|
+
|
75
|
+
static void
|
76
|
+
brotli_deflate_parse_options(brotli::BrotliParams& params, VALUE opts)
|
77
|
+
{
|
78
|
+
VALUE tmp;
|
79
|
+
|
80
|
+
tmp = rb_hash_aref(opts, CSTR2SYM("mode"));
|
81
|
+
if (!NIL_P(tmp)) {
|
82
|
+
if (tmp == CSTR2SYM("generic")) {
|
83
|
+
params.mode = brotli::BrotliParams::MODE_GENERIC;
|
84
|
+
} else if (tmp == CSTR2SYM("text")) {
|
85
|
+
params.mode = brotli::BrotliParams::MODE_TEXT;
|
86
|
+
} else if (tmp == CSTR2SYM("font")) {
|
87
|
+
params.mode = brotli::BrotliParams::MODE_FONT;
|
88
|
+
} else {
|
89
|
+
rb_raise(rb_eArgError, "invalid mode");
|
90
|
+
}
|
91
|
+
}
|
92
|
+
|
93
|
+
tmp = rb_hash_aref(opts, CSTR2SYM("quality"));
|
94
|
+
if (!NIL_P(tmp)) {
|
95
|
+
int value = NUM2INT(tmp);
|
96
|
+
if (0 <= value && value <= 11) {
|
97
|
+
params.quality = value;
|
98
|
+
} else {
|
99
|
+
rb_raise(rb_eArgError, "invalid quality value. Should be 0 to 11.");
|
100
|
+
}
|
101
|
+
}
|
102
|
+
|
103
|
+
tmp = rb_hash_aref(opts, CSTR2SYM("lgwin"));
|
104
|
+
if (!NIL_P(tmp)) {
|
105
|
+
int value = NUM2INT(tmp);
|
106
|
+
if (10 <= value && value <= 24) {
|
107
|
+
params.lgwin = value;
|
108
|
+
} else {
|
109
|
+
rb_raise(rb_eArgError, "invalid lgwin value. Should be 10 to 24.");
|
110
|
+
}
|
111
|
+
}
|
112
|
+
|
113
|
+
tmp = rb_hash_aref(opts, CSTR2SYM("lgblock"));
|
114
|
+
if (!NIL_P(tmp)) {
|
115
|
+
int value = NUM2INT(tmp);
|
116
|
+
if ((value == 0) || (16 <= value && value <= 24)) {
|
117
|
+
params.lgblock = value;
|
118
|
+
} else {
|
119
|
+
rb_raise(rb_eArgError, "invalid lgblock value. Should be 0 or 16 to 24.");
|
120
|
+
}
|
38
121
|
}
|
39
122
|
}
|
40
123
|
|
41
124
|
static VALUE
|
42
|
-
brotli_deflate(VALUE
|
125
|
+
brotli_deflate(int argc, VALUE *argv, VALUE self)
|
43
126
|
{
|
127
|
+
VALUE str, opts;
|
128
|
+
rb_scan_args(argc, argv, "11", &str, &opts);
|
129
|
+
|
44
130
|
StringValue(str);
|
45
131
|
|
46
132
|
brotli::BrotliParams params;
|
133
|
+
if (!NIL_P(opts)) {
|
134
|
+
brotli_deflate_parse_options(params, opts);
|
135
|
+
}
|
136
|
+
|
47
137
|
brotli::BrotliMemIn in(RSTRING_PTR(str), RSTRING_LEN(str));
|
48
138
|
std::string buf;
|
49
139
|
buf.reserve(RSTRING_LEN(str) * 2 + 1);
|
@@ -61,7 +151,7 @@ Init_brotli(void)
|
|
61
151
|
{
|
62
152
|
rb_mBrotli = rb_define_module("Brotli");
|
63
153
|
rb_eBrotli = rb_define_class_under(rb_mBrotli, "Error", rb_eStandardError);
|
64
|
-
rb_define_singleton_method(rb_mBrotli, "deflate", RUBY_METHOD_FUNC(brotli_deflate), 1);
|
154
|
+
rb_define_singleton_method(rb_mBrotli, "deflate", RUBY_METHOD_FUNC(brotli_deflate), -1);
|
65
155
|
rb_define_singleton_method(rb_mBrotli, "inflate", RUBY_METHOD_FUNC(brotli_inflate), 1);
|
66
156
|
}
|
67
157
|
}
|
data/ext/brotli/brotli.h
CHANGED
data/ext/brotli/extconf.rb
CHANGED
@@ -13,61 +13,68 @@ FileUtils.mkdir_p File.join(__dir__, 'dec')
|
|
13
13
|
srcs = []
|
14
14
|
objs = []
|
15
15
|
[
|
16
|
-
'enc/backward_references.cc',
|
17
|
-
'enc/block_splitter.cc',
|
18
|
-
'enc/brotli_bit_stream.cc',
|
19
|
-
'enc/encode.cc',
|
20
|
-
'enc/entropy_encode.cc',
|
21
|
-
'enc/histogram.cc',
|
22
|
-
'enc/literal_cost.cc',
|
23
|
-
'enc/metablock.cc',
|
24
|
-
'enc/static_dict.cc',
|
25
|
-
'enc/streams.cc',
|
26
|
-
'enc/utf8_util.cc',
|
27
16
|
'dec/bit_reader.c',
|
17
|
+
'dec/bit_reader.h',
|
18
|
+
'dec/context.h',
|
28
19
|
'dec/decode.c',
|
20
|
+
'dec/decode.h',
|
29
21
|
'dec/dictionary.c',
|
22
|
+
'dec/dictionary.h',
|
30
23
|
'dec/huffman.c',
|
31
|
-
'dec/
|
24
|
+
'dec/huffman.h',
|
25
|
+
'dec/port.h',
|
26
|
+
'dec/prefix.h',
|
32
27
|
'dec/state.c',
|
28
|
+
'dec/state.h',
|
29
|
+
'dec/transform.h',
|
30
|
+
'dec/types.h',
|
31
|
+
'enc/backward_references.cc',
|
33
32
|
'enc/backward_references.h',
|
34
33
|
'enc/bit_cost.h',
|
34
|
+
'enc/block_splitter.cc',
|
35
35
|
'enc/block_splitter.h',
|
36
|
+
'enc/brotli_bit_stream.cc',
|
36
37
|
'enc/brotli_bit_stream.h',
|
37
38
|
'enc/cluster.h',
|
38
39
|
'enc/command.h',
|
40
|
+
'enc/compress_fragment.cc',
|
41
|
+
'enc/compress_fragment.h',
|
42
|
+
'enc/compress_fragment_two_pass.cc',
|
43
|
+
'enc/compress_fragment_two_pass.h',
|
44
|
+
'enc/compressor.h',
|
39
45
|
'enc/context.h',
|
46
|
+
#'enc/dictionary.cc',
|
40
47
|
'enc/dictionary.h',
|
41
48
|
'enc/dictionary_hash.h',
|
49
|
+
'enc/encode.cc',
|
42
50
|
'enc/encode.h',
|
51
|
+
'enc/encode_parallel.cc',
|
52
|
+
'enc/encode_parallel.h',
|
53
|
+
'enc/entropy_encode.cc',
|
43
54
|
'enc/entropy_encode.h',
|
55
|
+
'enc/entropy_encode_static.h',
|
44
56
|
'enc/fast_log.h',
|
45
57
|
'enc/find_match_length.h',
|
46
58
|
'enc/hash.h',
|
59
|
+
'enc/histogram.cc',
|
47
60
|
'enc/histogram.h',
|
61
|
+
'enc/literal_cost.cc',
|
48
62
|
'enc/literal_cost.h',
|
63
|
+
'enc/metablock.cc',
|
49
64
|
'enc/metablock.h',
|
50
65
|
'enc/port.h',
|
51
66
|
'enc/prefix.h',
|
52
67
|
'enc/ringbuffer.h',
|
68
|
+
'enc/static_dict.cc',
|
53
69
|
'enc/static_dict.h',
|
54
70
|
'enc/static_dict_lut.h',
|
71
|
+
'enc/streams.cc',
|
55
72
|
'enc/streams.h',
|
56
73
|
'enc/transform.h',
|
57
74
|
'enc/types.h',
|
75
|
+
'enc/utf8_util.cc',
|
58
76
|
'enc/utf8_util.h',
|
59
77
|
'enc/write_bits.h',
|
60
|
-
'dec/bit_reader.h',
|
61
|
-
'dec/context.h',
|
62
|
-
'dec/decode.h',
|
63
|
-
'dec/dictionary.h',
|
64
|
-
'dec/huffman.h',
|
65
|
-
'dec/prefix.h',
|
66
|
-
'dec/port.h',
|
67
|
-
'dec/streams.h',
|
68
|
-
'dec/transform.h',
|
69
|
-
'dec/types.h',
|
70
|
-
'dec/state.h',
|
71
78
|
].each do |file|
|
72
79
|
FileUtils.cp(File.expand_path(File.join(__dir__, '..', '..', 'vendor', 'brotli', file)),
|
73
80
|
File.expand_path(File.join(__dir__, file)),
|
data/lib/brotli/version.rb
CHANGED
data/vendor/brotli/LICENSE
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Copyright (c) 2009, 2010, 2013-
|
1
|
+
Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors.
|
2
2
|
|
3
3
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
4
|
of this software and associated documentation files (the "Software"), to deal
|
data/vendor/brotli/dec/Makefile
CHANGED
@@ -6,10 +6,10 @@
|
|
6
6
|
|
7
7
|
/* Bit reading helpers */
|
8
8
|
|
9
|
-
#include <stdlib.h>
|
10
|
-
|
11
9
|
#include "./bit_reader.h"
|
10
|
+
|
12
11
|
#include "./port.h"
|
12
|
+
#include "./types.h"
|
13
13
|
|
14
14
|
#if defined(__cplusplus) || defined(c_plusplus)
|
15
15
|
extern "C" {
|
@@ -44,5 +44,5 @@ int BrotliWarmupBitReader(BrotliBitReader* const br) {
|
|
44
44
|
}
|
45
45
|
|
46
46
|
#if defined(__cplusplus) || defined(c_plusplus)
|
47
|
-
}
|
47
|
+
} /* extern "C" */
|
48
48
|
#endif
|
@@ -9,8 +9,8 @@
|
|
9
9
|
#ifndef BROTLI_DEC_BIT_READER_H_
|
10
10
|
#define BROTLI_DEC_BIT_READER_H_
|
11
11
|
|
12
|
-
#include <
|
13
|
-
|
12
|
+
#include <string.h> /* memcpy */
|
13
|
+
|
14
14
|
#include "./port.h"
|
15
15
|
#include "./types.h"
|
16
16
|
|
@@ -48,27 +48,27 @@ static BROTLI_INLINE uint32_t BitMask(uint32_t n) {
|
|
48
48
|
}
|
49
49
|
|
50
50
|
typedef struct {
|
51
|
-
reg_t
|
52
|
-
uint32_t
|
53
|
-
const uint8_t* next_in;
|
54
|
-
size_t
|
51
|
+
reg_t val_; /* pre-fetched bits */
|
52
|
+
uint32_t bit_pos_; /* current bit-reading position in val_ */
|
53
|
+
const uint8_t* next_in; /* the byte we're reading from */
|
54
|
+
size_t avail_in;
|
55
55
|
} BrotliBitReader;
|
56
56
|
|
57
57
|
typedef struct {
|
58
|
-
reg_t
|
58
|
+
reg_t val_;
|
59
59
|
uint32_t bit_pos_;
|
60
60
|
const uint8_t* next_in;
|
61
|
-
size_t
|
61
|
+
size_t avail_in;
|
62
62
|
} BrotliBitReaderState;
|
63
63
|
|
64
64
|
/* Initializes the bitreader fields. */
|
65
|
-
void BrotliInitBitReader(BrotliBitReader* const br);
|
65
|
+
BROTLI_INTERNAL void BrotliInitBitReader(BrotliBitReader* const br);
|
66
66
|
|
67
67
|
/* Ensures that accumulator is not empty. May consume one byte of input.
|
68
68
|
Returns 0 if data is required but there is no input available.
|
69
|
-
For
|
69
|
+
For BROTLI_ALIGNED_READ this function also prepares bit reader for aligned
|
70
70
|
reading. */
|
71
|
-
int BrotliWarmupBitReader(BrotliBitReader* const br);
|
71
|
+
BROTLI_INTERNAL int BrotliWarmupBitReader(BrotliBitReader* const br);
|
72
72
|
|
73
73
|
static BROTLI_INLINE void BrotliBitReaderSaveState(
|
74
74
|
BrotliBitReader* const from, BrotliBitReaderState* to) {
|
@@ -109,9 +109,7 @@ static BROTLI_INLINE uint16_t BrotliLoad16LE(const uint8_t* in) {
|
|
109
109
|
return *((const uint16_t*)in);
|
110
110
|
} else if (BROTLI_BIG_ENDIAN) {
|
111
111
|
uint16_t value = *((const uint16_t*)in);
|
112
|
-
return (uint16_t)(
|
113
|
-
((value & 0xFFU) << 8) |
|
114
|
-
((value & 0xFF00U) >> 8));
|
112
|
+
return (uint16_t)(((value & 0xFFU) << 8) | ((value & 0xFF00U) >> 8));
|
115
113
|
} else {
|
116
114
|
return (uint16_t)(in[0] | (in[1] << 8));
|
117
115
|
}
|
@@ -228,9 +226,9 @@ static BROTLI_INLINE int BrotliPullByte(BrotliBitReader* const br) {
|
|
228
226
|
}
|
229
227
|
br->val_ >>= 8;
|
230
228
|
#if (BROTLI_64_BITS)
|
231
|
-
|
229
|
+
br->val_ |= ((uint64_t)*br->next_in) << 56;
|
232
230
|
#else
|
233
|
-
|
231
|
+
br->val_ |= ((uint32_t)*br->next_in) << 24;
|
234
232
|
#endif
|
235
233
|
br->bit_pos_ -= 8;
|
236
234
|
--br->avail_in;
|
@@ -262,7 +260,7 @@ static BROTLI_INLINE uint32_t BrotliGetBits(
|
|
262
260
|
/* Tries to peek the specified amount of bits. Returns 0, if there is not
|
263
261
|
enough input. */
|
264
262
|
static BROTLI_INLINE int BrotliSafeGetBits(
|
265
|
-
|
263
|
+
BrotliBitReader* const br, uint32_t n_bits, uint32_t* val) {
|
266
264
|
while (BrotliGetAvailableBits(br) < n_bits) {
|
267
265
|
if (!BrotliPullByte(br)) {
|
268
266
|
return 0;
|
@@ -283,7 +281,11 @@ static BROTLI_INLINE void BrotliBitReaderUnload(BrotliBitReader* br) {
|
|
283
281
|
uint32_t unused_bits = unused_bytes << 3;
|
284
282
|
br->avail_in += unused_bytes;
|
285
283
|
br->next_in -= unused_bytes;
|
286
|
-
br->val_
|
284
|
+
if (unused_bits == sizeof(br->val_) << 3) {
|
285
|
+
br->val_ = 0;
|
286
|
+
} else {
|
287
|
+
br->val_ <<= unused_bits;
|
288
|
+
}
|
287
289
|
br->bit_pos_ += unused_bits;
|
288
290
|
}
|
289
291
|
|
@@ -292,10 +294,8 @@ static BROTLI_INLINE void BrotliBitReaderUnload(BrotliBitReader* br) {
|
|
292
294
|
static BROTLI_INLINE void BrotliTakeBits(
|
293
295
|
BrotliBitReader* const br, uint32_t n_bits, uint32_t* val) {
|
294
296
|
*val = (uint32_t)BrotliGetBitsUnmasked(br) & BitMask(n_bits);
|
295
|
-
|
296
|
-
|
297
|
-
(int)br->avail_in, (int)br->bit_pos_, n_bits, (int)*val);
|
298
|
-
#endif
|
297
|
+
BROTLI_LOG(("[BrotliReadBits] %d %d %d val: %6x\n",
|
298
|
+
(int)br->avail_in, (int)br->bit_pos_, n_bits, (int)*val));
|
299
299
|
BrotliDropBits(br, n_bits);
|
300
300
|
}
|
301
301
|
|
@@ -322,7 +322,7 @@ static BROTLI_INLINE uint32_t BrotliReadBits(
|
|
322
322
|
/* Tries to read the specified amount of bits. Returns 0, if there is not
|
323
323
|
enough input. n_bits MUST be positive. */
|
324
324
|
static BROTLI_INLINE int BrotliSafeReadBits(
|
325
|
-
|
325
|
+
BrotliBitReader* const br, uint32_t n_bits, uint32_t* val) {
|
326
326
|
while (BrotliGetAvailableBits(br) < n_bits) {
|
327
327
|
if (!BrotliPullByte(br)) {
|
328
328
|
return 0;
|
@@ -349,9 +349,7 @@ static BROTLI_INLINE int BrotliJumpToByteBoundary(BrotliBitReader* br) {
|
|
349
349
|
static BROTLI_INLINE int BrotliPeekByte(BrotliBitReader* br, size_t offset) {
|
350
350
|
uint32_t available_bits = BrotliGetAvailableBits(br);
|
351
351
|
size_t bytes_left = available_bits >> 3;
|
352
|
-
|
353
|
-
return -1;
|
354
|
-
}
|
352
|
+
BROTLI_DCHECK((available_bits & 7) == 0);
|
355
353
|
if (offset < bytes_left) {
|
356
354
|
return (BrotliGetBitsUnmasked(br) >> (unsigned)(offset << 3)) & 0xFF;
|
357
355
|
}
|
@@ -379,7 +377,7 @@ static BROTLI_INLINE void BrotliCopyBytes(uint8_t* dest,
|
|
379
377
|
}
|
380
378
|
|
381
379
|
#if defined(__cplusplus) || defined(c_plusplus)
|
382
|
-
}
|
380
|
+
} /* extern "C" */
|
383
381
|
#endif
|
384
382
|
|
385
383
|
#endif /* BROTLI_DEC_BIT_READER_H_ */
|
data/vendor/brotli/dec/context.h
CHANGED
@@ -102,10 +102,10 @@
|
|
102
102
|
#include "./types.h"
|
103
103
|
|
104
104
|
enum ContextType {
|
105
|
-
CONTEXT_LSB6
|
106
|
-
CONTEXT_MSB6
|
107
|
-
CONTEXT_UTF8
|
108
|
-
CONTEXT_SIGNED
|
105
|
+
CONTEXT_LSB6 = 0,
|
106
|
+
CONTEXT_MSB6 = 1,
|
107
|
+
CONTEXT_UTF8 = 2,
|
108
|
+
CONTEXT_SIGNED = 3
|
109
109
|
};
|
110
110
|
|
111
111
|
/* Common context lookup table for all context modes. */
|