brotli 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitmodules +1 -1
- data/.travis.yml +2 -1
- data/README.md +1 -1
- data/Rakefile +1 -1
- data/ext/brotli/brotli.cc +1 -1
- data/ext/brotli/extconf.rb +72 -14
- data/lib/brotli/version.rb +1 -1
- data/vendor/brotli/LICENSE +19 -202
- data/vendor/brotli/dec/Makefile +1 -1
- data/vendor/brotli/dec/bit_reader.c +23 -30
- data/vendor/brotli/dec/bit_reader.h +270 -141
- data/vendor/brotli/dec/context.h +3 -12
- data/vendor/brotli/dec/decode.c +1813 -1048
- data/vendor/brotli/dec/decode.h +22 -16
- data/vendor/brotli/dec/dictionary.c +9466 -0
- data/vendor/brotli/dec/dictionary.h +6 -9461
- data/vendor/brotli/dec/huffman.c +104 -71
- data/vendor/brotli/dec/huffman.h +19 -28
- data/vendor/brotli/dec/port.h +124 -32
- data/vendor/brotli/dec/prefix.h +4 -13
- data/vendor/brotli/dec/state.c +93 -56
- data/vendor/brotli/dec/state.h +124 -53
- data/vendor/brotli/dec/streams.c +14 -11
- data/vendor/brotli/dec/streams.h +6 -11
- data/vendor/brotli/dec/transform.h +2 -11
- data/vendor/brotli/dec/types.h +21 -19
- data/vendor/brotli/enc/Makefile +4 -1
- data/vendor/brotli/enc/backward_references.cc +87 -94
- data/vendor/brotli/enc/backward_references.h +8 -18
- data/vendor/brotli/enc/bit_cost.h +11 -19
- data/vendor/brotli/enc/block_splitter.cc +43 -48
- data/vendor/brotli/enc/block_splitter.h +7 -16
- data/vendor/brotli/enc/brotli_bit_stream.cc +48 -50
- data/vendor/brotli/enc/brotli_bit_stream.h +7 -16
- data/vendor/brotli/enc/cluster.h +24 -25
- data/vendor/brotli/enc/command.h +34 -41
- data/vendor/brotli/enc/context.h +11 -18
- data/vendor/brotli/enc/dictionary.cc +9466 -0
- data/vendor/brotli/enc/dictionary.h +20 -9464
- data/vendor/brotli/enc/dictionary_hash.h +7 -15
- data/vendor/brotli/enc/encode.cc +80 -148
- data/vendor/brotli/enc/encode.h +19 -29
- data/vendor/brotli/enc/encode_parallel.cc +35 -108
- data/vendor/brotli/enc/encode_parallel.h +7 -16
- data/vendor/brotli/enc/entropy_encode.cc +33 -42
- data/vendor/brotli/enc/entropy_encode.h +8 -16
- data/vendor/brotli/enc/fast_log.h +8 -15
- data/vendor/brotli/enc/find_match_length.h +7 -17
- data/vendor/brotli/enc/hash.h +130 -150
- data/vendor/brotli/enc/histogram.cc +7 -16
- data/vendor/brotli/enc/histogram.h +11 -17
- data/vendor/brotli/enc/literal_cost.cc +28 -35
- data/vendor/brotli/enc/literal_cost.h +9 -23
- data/vendor/brotli/enc/metablock.cc +18 -26
- data/vendor/brotli/enc/metablock.h +6 -14
- data/vendor/brotli/enc/port.h +14 -14
- data/vendor/brotli/enc/prefix.h +11 -18
- data/vendor/brotli/enc/ringbuffer.h +18 -27
- data/vendor/brotli/enc/static_dict.cc +7 -1
- data/vendor/brotli/enc/static_dict.h +7 -15
- data/vendor/brotli/enc/static_dict_lut.h +7 -15
- data/vendor/brotli/enc/streams.cc +15 -28
- data/vendor/brotli/enc/streams.h +27 -35
- data/vendor/brotli/enc/transform.h +9 -16
- data/vendor/brotli/enc/types.h +27 -0
- data/vendor/brotli/enc/utf8_util.cc +82 -0
- data/vendor/brotli/enc/utf8_util.h +25 -0
- data/vendor/brotli/enc/write_bits.h +11 -18
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8a84cc7be2ff8f77b71c2a257ca25211a9c3ca23
|
4
|
+
data.tar.gz: bb07eb56c3ae937a98b6cd6c80589ca773562a0f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5fe7de8328e763d815eeaf6c031998fecf3a8e1bf85130808207de71a39311eb7c5cae3abc9f0f7fd2a31c5cc93b50184b1c097f76bf9e3a35a669d959647e72
|
7
|
+
data.tar.gz: f4814c98c1066b5aa9f06125d19ccbfe6ff3828abacce332baa39da79bc3eb27bf864d157e33dcc5c30ceec0c3c060b438ffb328d97c0f6d9aab120460ab3b38
|
data/.gitmodules
CHANGED
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Brotli
|
1
|
+
# Brotli ![](https://travis-ci.org/miyucy/brotli.svg)
|
2
2
|
|
3
3
|
Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/brotli`. To experiment with that code, run `bin/console` for an interactive prompt.
|
4
4
|
|
data/Rakefile
CHANGED
data/ext/brotli/brotli.cc
CHANGED
data/ext/brotli/extconf.rb
CHANGED
@@ -2,23 +2,81 @@ require 'mkmf'
|
|
2
2
|
require 'fileutils'
|
3
3
|
require 'rbconfig'
|
4
4
|
|
5
|
-
$CXXFLAGS << ' -std=c++11'
|
6
5
|
$CPPFLAGS << ' -DOS_MACOSX' if RbConfig::CONFIG['host_os'] =~ /darwin|mac os/
|
7
6
|
$INCFLAGS << ' -I./enc -I./dec'
|
8
7
|
|
9
|
-
def make_srcobj(prefix, files)
|
10
|
-
FileUtils.mkdir_p File.join(__dir__, prefix)
|
11
|
-
FileUtils.cp(Dir[File.expand_path(File.join('..', '..', 'vendor', 'brotli', prefix, '*.{c,cc,h}'), __dir__)], File.join(__dir__, prefix))
|
12
|
-
[
|
13
|
-
files.flat_map { |e| Dir[File.join(__dir__, prefix, e + '.{c,cc}')] }.map { |e| e.sub(__dir__ + '/', '') },
|
14
|
-
files.map { |e| File.join(prefix, e + '.' + $OBJEXT) },
|
15
|
-
]
|
16
|
-
end
|
17
|
-
|
18
8
|
FileUtils.mkdir_p 'enc'
|
19
9
|
FileUtils.mkdir_p 'dec'
|
20
|
-
|
21
|
-
|
10
|
+
FileUtils.mkdir_p File.join(__dir__, 'enc')
|
11
|
+
FileUtils.mkdir_p File.join(__dir__, 'dec')
|
12
|
+
|
13
|
+
srcs = []
|
14
|
+
objs = []
|
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
|
+
'dec/bit_reader.c',
|
28
|
+
'dec/decode.c',
|
29
|
+
'dec/dictionary.c',
|
30
|
+
'dec/huffman.c',
|
31
|
+
'dec/streams.c',
|
32
|
+
'dec/state.c',
|
33
|
+
'enc/backward_references.h',
|
34
|
+
'enc/bit_cost.h',
|
35
|
+
'enc/block_splitter.h',
|
36
|
+
'enc/brotli_bit_stream.h',
|
37
|
+
'enc/cluster.h',
|
38
|
+
'enc/command.h',
|
39
|
+
'enc/context.h',
|
40
|
+
'enc/dictionary.h',
|
41
|
+
'enc/dictionary_hash.h',
|
42
|
+
'enc/encode.h',
|
43
|
+
'enc/entropy_encode.h',
|
44
|
+
'enc/fast_log.h',
|
45
|
+
'enc/find_match_length.h',
|
46
|
+
'enc/hash.h',
|
47
|
+
'enc/histogram.h',
|
48
|
+
'enc/literal_cost.h',
|
49
|
+
'enc/metablock.h',
|
50
|
+
'enc/port.h',
|
51
|
+
'enc/prefix.h',
|
52
|
+
'enc/ringbuffer.h',
|
53
|
+
'enc/static_dict.h',
|
54
|
+
'enc/static_dict_lut.h',
|
55
|
+
'enc/streams.h',
|
56
|
+
'enc/transform.h',
|
57
|
+
'enc/types.h',
|
58
|
+
'enc/utf8_util.h',
|
59
|
+
'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
|
+
].each do |file|
|
72
|
+
FileUtils.cp(File.expand_path(File.join(__dir__, '..', '..', 'vendor', 'brotli', file)),
|
73
|
+
File.expand_path(File.join(__dir__, file)),
|
74
|
+
verbose: true)
|
75
|
+
if file.end_with?('.c') or file.end_with?('.cc')
|
76
|
+
srcs.push file
|
77
|
+
objs.push file.sub(/\.cc?\z/, '.' + $OBJEXT)
|
78
|
+
end
|
79
|
+
end
|
22
80
|
|
23
81
|
have_library('stdc++')
|
24
82
|
create_makefile('brotli/brotli')
|
@@ -27,8 +85,8 @@ File.open('Makefile', 'r+') do |f|
|
|
27
85
|
src = 'ORIG_SRCS = brotli.cc'
|
28
86
|
obj = 'OBJS = brotli.o'
|
29
87
|
txt = f.read
|
30
|
-
.sub(/^#{src}$/, src + ' ' +
|
31
|
-
.sub(/^#{obj}$/, obj + ' ' +
|
88
|
+
.sub(/^#{src}$/, src + ' ' + srcs.join(' '))
|
89
|
+
.sub(/^#{obj}$/, obj + ' ' + objs.join(' '))
|
32
90
|
f.rewind
|
33
91
|
f.write txt
|
34
92
|
end
|
data/lib/brotli/version.rb
CHANGED
data/vendor/brotli/LICENSE
CHANGED
@@ -1,202 +1,19 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
direction or management of such entity, whether by contract or
|
21
|
-
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
22
|
-
outstanding shares, or (iii) beneficial ownership of such entity.
|
23
|
-
|
24
|
-
"You" (or "Your") shall mean an individual or Legal Entity
|
25
|
-
exercising permissions granted by this License.
|
26
|
-
|
27
|
-
"Source" form shall mean the preferred form for making modifications,
|
28
|
-
including but not limited to software source code, documentation
|
29
|
-
source, and configuration files.
|
30
|
-
|
31
|
-
"Object" form shall mean any form resulting from mechanical
|
32
|
-
transformation or translation of a Source form, including but
|
33
|
-
not limited to compiled object code, generated documentation,
|
34
|
-
and conversions to other media types.
|
35
|
-
|
36
|
-
"Work" shall mean the work of authorship, whether in Source or
|
37
|
-
Object form, made available under the License, as indicated by a
|
38
|
-
copyright notice that is included in or attached to the work
|
39
|
-
(an example is provided in the Appendix below).
|
40
|
-
|
41
|
-
"Derivative Works" shall mean any work, whether in Source or Object
|
42
|
-
form, that is based on (or derived from) the Work and for which the
|
43
|
-
editorial revisions, annotations, elaborations, or other modifications
|
44
|
-
represent, as a whole, an original work of authorship. For the purposes
|
45
|
-
of this License, Derivative Works shall not include works that remain
|
46
|
-
separable from, or merely link (or bind by name) to the interfaces of,
|
47
|
-
the Work and Derivative Works thereof.
|
48
|
-
|
49
|
-
"Contribution" shall mean any work of authorship, including
|
50
|
-
the original version of the Work and any modifications or additions
|
51
|
-
to that Work or Derivative Works thereof, that is intentionally
|
52
|
-
submitted to Licensor for inclusion in the Work by the copyright owner
|
53
|
-
or by an individual or Legal Entity authorized to submit on behalf of
|
54
|
-
the copyright owner. For the purposes of this definition, "submitted"
|
55
|
-
means any form of electronic, verbal, or written communication sent
|
56
|
-
to the Licensor or its representatives, including but not limited to
|
57
|
-
communication on electronic mailing lists, source code control systems,
|
58
|
-
and issue tracking systems that are managed by, or on behalf of, the
|
59
|
-
Licensor for the purpose of discussing and improving the Work, but
|
60
|
-
excluding communication that is conspicuously marked or otherwise
|
61
|
-
designated in writing by the copyright owner as "Not a Contribution."
|
62
|
-
|
63
|
-
"Contributor" shall mean Licensor and any individual or Legal Entity
|
64
|
-
on behalf of whom a Contribution has been received by Licensor and
|
65
|
-
subsequently incorporated within the Work.
|
66
|
-
|
67
|
-
2. Grant of Copyright License. Subject to the terms and conditions of
|
68
|
-
this License, each Contributor hereby grants to You a perpetual,
|
69
|
-
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
70
|
-
copyright license to reproduce, prepare Derivative Works of,
|
71
|
-
publicly display, publicly perform, sublicense, and distribute the
|
72
|
-
Work and such Derivative Works in Source or Object form.
|
73
|
-
|
74
|
-
3. Grant of Patent License. Subject to the terms and conditions of
|
75
|
-
this License, each Contributor hereby grants to You a perpetual,
|
76
|
-
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
77
|
-
(except as stated in this section) patent license to make, have made,
|
78
|
-
use, offer to sell, sell, import, and otherwise transfer the Work,
|
79
|
-
where such license applies only to those patent claims licensable
|
80
|
-
by such Contributor that are necessarily infringed by their
|
81
|
-
Contribution(s) alone or by combination of their Contribution(s)
|
82
|
-
with the Work to which such Contribution(s) was submitted. If You
|
83
|
-
institute patent litigation against any entity (including a
|
84
|
-
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
85
|
-
or a Contribution incorporated within the Work constitutes direct
|
86
|
-
or contributory patent infringement, then any patent licenses
|
87
|
-
granted to You under this License for that Work shall terminate
|
88
|
-
as of the date such litigation is filed.
|
89
|
-
|
90
|
-
4. Redistribution. You may reproduce and distribute copies of the
|
91
|
-
Work or Derivative Works thereof in any medium, with or without
|
92
|
-
modifications, and in Source or Object form, provided that You
|
93
|
-
meet the following conditions:
|
94
|
-
|
95
|
-
(a) You must give any other recipients of the Work or
|
96
|
-
Derivative Works a copy of this License; and
|
97
|
-
|
98
|
-
(b) You must cause any modified files to carry prominent notices
|
99
|
-
stating that You changed the files; and
|
100
|
-
|
101
|
-
(c) You must retain, in the Source form of any Derivative Works
|
102
|
-
that You distribute, all copyright, patent, trademark, and
|
103
|
-
attribution notices from the Source form of the Work,
|
104
|
-
excluding those notices that do not pertain to any part of
|
105
|
-
the Derivative Works; and
|
106
|
-
|
107
|
-
(d) If the Work includes a "NOTICE" text file as part of its
|
108
|
-
distribution, then any Derivative Works that You distribute must
|
109
|
-
include a readable copy of the attribution notices contained
|
110
|
-
within such NOTICE file, excluding those notices that do not
|
111
|
-
pertain to any part of the Derivative Works, in at least one
|
112
|
-
of the following places: within a NOTICE text file distributed
|
113
|
-
as part of the Derivative Works; within the Source form or
|
114
|
-
documentation, if provided along with the Derivative Works; or,
|
115
|
-
within a display generated by the Derivative Works, if and
|
116
|
-
wherever such third-party notices normally appear. The contents
|
117
|
-
of the NOTICE file are for informational purposes only and
|
118
|
-
do not modify the License. You may add Your own attribution
|
119
|
-
notices within Derivative Works that You distribute, alongside
|
120
|
-
or as an addendum to the NOTICE text from the Work, provided
|
121
|
-
that such additional attribution notices cannot be construed
|
122
|
-
as modifying the License.
|
123
|
-
|
124
|
-
You may add Your own copyright statement to Your modifications and
|
125
|
-
may provide additional or different license terms and conditions
|
126
|
-
for use, reproduction, or distribution of Your modifications, or
|
127
|
-
for any such Derivative Works as a whole, provided Your use,
|
128
|
-
reproduction, and distribution of the Work otherwise complies with
|
129
|
-
the conditions stated in this License.
|
130
|
-
|
131
|
-
5. Submission of Contributions. Unless You explicitly state otherwise,
|
132
|
-
any Contribution intentionally submitted for inclusion in the Work
|
133
|
-
by You to the Licensor shall be under the terms and conditions of
|
134
|
-
this License, without any additional terms or conditions.
|
135
|
-
Notwithstanding the above, nothing herein shall supersede or modify
|
136
|
-
the terms of any separate license agreement you may have executed
|
137
|
-
with Licensor regarding such Contributions.
|
138
|
-
|
139
|
-
6. Trademarks. This License does not grant permission to use the trade
|
140
|
-
names, trademarks, service marks, or product names of the Licensor,
|
141
|
-
except as required for reasonable and customary use in describing the
|
142
|
-
origin of the Work and reproducing the content of the NOTICE file.
|
143
|
-
|
144
|
-
7. Disclaimer of Warranty. Unless required by applicable law or
|
145
|
-
agreed to in writing, Licensor provides the Work (and each
|
146
|
-
Contributor provides its Contributions) on an "AS IS" BASIS,
|
147
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
148
|
-
implied, including, without limitation, any warranties or conditions
|
149
|
-
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
150
|
-
PARTICULAR PURPOSE. You are solely responsible for determining the
|
151
|
-
appropriateness of using or redistributing the Work and assume any
|
152
|
-
risks associated with Your exercise of permissions under this License.
|
153
|
-
|
154
|
-
8. Limitation of Liability. In no event and under no legal theory,
|
155
|
-
whether in tort (including negligence), contract, or otherwise,
|
156
|
-
unless required by applicable law (such as deliberate and grossly
|
157
|
-
negligent acts) or agreed to in writing, shall any Contributor be
|
158
|
-
liable to You for damages, including any direct, indirect, special,
|
159
|
-
incidental, or consequential damages of any character arising as a
|
160
|
-
result of this License or out of the use or inability to use the
|
161
|
-
Work (including but not limited to damages for loss of goodwill,
|
162
|
-
work stoppage, computer failure or malfunction, or any and all
|
163
|
-
other commercial damages or losses), even if such Contributor
|
164
|
-
has been advised of the possibility of such damages.
|
165
|
-
|
166
|
-
9. Accepting Warranty or Additional Liability. While redistributing
|
167
|
-
the Work or Derivative Works thereof, You may choose to offer,
|
168
|
-
and charge a fee for, acceptance of support, warranty, indemnity,
|
169
|
-
or other liability obligations and/or rights consistent with this
|
170
|
-
License. However, in accepting such obligations, You may act only
|
171
|
-
on Your own behalf and on Your sole responsibility, not on behalf
|
172
|
-
of any other Contributor, and only if You agree to indemnify,
|
173
|
-
defend, and hold each Contributor harmless for any liability
|
174
|
-
incurred by, or claims asserted against, such Contributor by reason
|
175
|
-
of your accepting any such warranty or additional liability.
|
176
|
-
|
177
|
-
END OF TERMS AND CONDITIONS
|
178
|
-
|
179
|
-
APPENDIX: How to apply the Apache License to your work.
|
180
|
-
|
181
|
-
To apply the Apache License to your work, attach the following
|
182
|
-
boilerplate notice, with the fields enclosed by brackets "[]"
|
183
|
-
replaced with your own identifying information. (Don't include
|
184
|
-
the brackets!) The text should be enclosed in the appropriate
|
185
|
-
comment syntax for the file format. We also recommend that a
|
186
|
-
file or class name and description of purpose be included on the
|
187
|
-
same "printed page" as the copyright notice for easier
|
188
|
-
identification within third-party archives.
|
189
|
-
|
190
|
-
Copyright [yyyy] [name of copyright owner]
|
191
|
-
|
192
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
193
|
-
you may not use this file except in compliance with the License.
|
194
|
-
You may obtain a copy of the License at
|
195
|
-
|
196
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
197
|
-
|
198
|
-
Unless required by applicable law or agreed to in writing, software
|
199
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
200
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
201
|
-
See the License for the specific language governing permissions and
|
202
|
-
limitations under the License.
|
1
|
+
Copyright (c) 2009, 2010, 2013-2015 by the Brotli Authors.
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
5
|
+
in the Software without restriction, including without limitation the rights
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
8
|
+
furnished to do so, subject to the following conditions:
|
9
|
+
|
10
|
+
The above copyright notice and this permission notice shall be included in
|
11
|
+
all copies or substantial portions of the Software.
|
12
|
+
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
+
THE SOFTWARE.
|
data/vendor/brotli/dec/Makefile
CHANGED
@@ -1,16 +1,7 @@
|
|
1
1
|
/* Copyright 2013 Google Inc. All Rights Reserved.
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
You may obtain a copy of the License at
|
6
|
-
|
7
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
|
9
|
-
Unless required by applicable law or agreed to in writing, software
|
10
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
See the License for the specific language governing permissions and
|
13
|
-
limitations under the License.
|
3
|
+
Distributed under MIT license.
|
4
|
+
See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
|
14
5
|
*/
|
15
6
|
|
16
7
|
/* Bit reading helpers */
|
@@ -24,30 +15,32 @@
|
|
24
15
|
extern "C" {
|
25
16
|
#endif
|
26
17
|
|
27
|
-
void BrotliInitBitReader(BrotliBitReader* const br
|
28
|
-
BROTLI_DCHECK(br != NULL);
|
29
|
-
|
30
|
-
br->input_ = input;
|
18
|
+
void BrotliInitBitReader(BrotliBitReader* const br) {
|
31
19
|
br->val_ = 0;
|
32
|
-
br->bit_pos_ =
|
33
|
-
br->avail_in = 0;
|
34
|
-
br->eos_ = 0;
|
35
|
-
br->next_in = br->buf_;
|
20
|
+
br->bit_pos_ = sizeof(br->val_) << 3;
|
36
21
|
}
|
37
22
|
|
23
|
+
int BrotliWarmupBitReader(BrotliBitReader* const br) {
|
24
|
+
size_t aligned_read_mask = (sizeof(br->val_) >> 1) - 1;
|
25
|
+
/* Fixing alignment after unaligned BrotliFillWindow would result accumulator
|
26
|
+
overflow. If unalignment is caused by BrotliSafeReadBits, then there is
|
27
|
+
enough space in accumulator to fix aligment. */
|
28
|
+
if (!BROTLI_ALIGNED_READ) {
|
29
|
+
aligned_read_mask = 0;
|
30
|
+
}
|
31
|
+
if (BrotliGetAvailableBits(br) == 0) {
|
32
|
+
if (!BrotliPullByte(br)) {
|
33
|
+
return 0;
|
34
|
+
}
|
35
|
+
}
|
38
36
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
br->val_ |= ((uint64_t)*br->next_in) << (8 * i);
|
45
|
-
#else
|
46
|
-
br->val_ |= ((uint32_t)*br->next_in) << (8 * i);
|
47
|
-
#endif
|
48
|
-
++br->next_in;
|
49
|
-
--br->avail_in;
|
37
|
+
while ((((size_t)br->next_in) & aligned_read_mask) != 0) {
|
38
|
+
if (!BrotliPullByte(br)) {
|
39
|
+
/* If we consumed all the input, we don't care about the alignment. */
|
40
|
+
return 1;
|
41
|
+
}
|
50
42
|
}
|
43
|
+
return 1;
|
51
44
|
}
|
52
45
|
|
53
46
|
#if defined(__cplusplus) || defined(c_plusplus)
|