brotli 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +1 -1
  3. data/.travis.yml +2 -1
  4. data/README.md +1 -1
  5. data/Rakefile +1 -1
  6. data/ext/brotli/brotli.cc +1 -1
  7. data/ext/brotli/extconf.rb +72 -14
  8. data/lib/brotli/version.rb +1 -1
  9. data/vendor/brotli/LICENSE +19 -202
  10. data/vendor/brotli/dec/Makefile +1 -1
  11. data/vendor/brotli/dec/bit_reader.c +23 -30
  12. data/vendor/brotli/dec/bit_reader.h +270 -141
  13. data/vendor/brotli/dec/context.h +3 -12
  14. data/vendor/brotli/dec/decode.c +1813 -1048
  15. data/vendor/brotli/dec/decode.h +22 -16
  16. data/vendor/brotli/dec/dictionary.c +9466 -0
  17. data/vendor/brotli/dec/dictionary.h +6 -9461
  18. data/vendor/brotli/dec/huffman.c +104 -71
  19. data/vendor/brotli/dec/huffman.h +19 -28
  20. data/vendor/brotli/dec/port.h +124 -32
  21. data/vendor/brotli/dec/prefix.h +4 -13
  22. data/vendor/brotli/dec/state.c +93 -56
  23. data/vendor/brotli/dec/state.h +124 -53
  24. data/vendor/brotli/dec/streams.c +14 -11
  25. data/vendor/brotli/dec/streams.h +6 -11
  26. data/vendor/brotli/dec/transform.h +2 -11
  27. data/vendor/brotli/dec/types.h +21 -19
  28. data/vendor/brotli/enc/Makefile +4 -1
  29. data/vendor/brotli/enc/backward_references.cc +87 -94
  30. data/vendor/brotli/enc/backward_references.h +8 -18
  31. data/vendor/brotli/enc/bit_cost.h +11 -19
  32. data/vendor/brotli/enc/block_splitter.cc +43 -48
  33. data/vendor/brotli/enc/block_splitter.h +7 -16
  34. data/vendor/brotli/enc/brotli_bit_stream.cc +48 -50
  35. data/vendor/brotli/enc/brotli_bit_stream.h +7 -16
  36. data/vendor/brotli/enc/cluster.h +24 -25
  37. data/vendor/brotli/enc/command.h +34 -41
  38. data/vendor/brotli/enc/context.h +11 -18
  39. data/vendor/brotli/enc/dictionary.cc +9466 -0
  40. data/vendor/brotli/enc/dictionary.h +20 -9464
  41. data/vendor/brotli/enc/dictionary_hash.h +7 -15
  42. data/vendor/brotli/enc/encode.cc +80 -148
  43. data/vendor/brotli/enc/encode.h +19 -29
  44. data/vendor/brotli/enc/encode_parallel.cc +35 -108
  45. data/vendor/brotli/enc/encode_parallel.h +7 -16
  46. data/vendor/brotli/enc/entropy_encode.cc +33 -42
  47. data/vendor/brotli/enc/entropy_encode.h +8 -16
  48. data/vendor/brotli/enc/fast_log.h +8 -15
  49. data/vendor/brotli/enc/find_match_length.h +7 -17
  50. data/vendor/brotli/enc/hash.h +130 -150
  51. data/vendor/brotli/enc/histogram.cc +7 -16
  52. data/vendor/brotli/enc/histogram.h +11 -17
  53. data/vendor/brotli/enc/literal_cost.cc +28 -35
  54. data/vendor/brotli/enc/literal_cost.h +9 -23
  55. data/vendor/brotli/enc/metablock.cc +18 -26
  56. data/vendor/brotli/enc/metablock.h +6 -14
  57. data/vendor/brotli/enc/port.h +14 -14
  58. data/vendor/brotli/enc/prefix.h +11 -18
  59. data/vendor/brotli/enc/ringbuffer.h +18 -27
  60. data/vendor/brotli/enc/static_dict.cc +7 -1
  61. data/vendor/brotli/enc/static_dict.h +7 -15
  62. data/vendor/brotli/enc/static_dict_lut.h +7 -15
  63. data/vendor/brotli/enc/streams.cc +15 -28
  64. data/vendor/brotli/enc/streams.h +27 -35
  65. data/vendor/brotli/enc/transform.h +9 -16
  66. data/vendor/brotli/enc/types.h +27 -0
  67. data/vendor/brotli/enc/utf8_util.cc +82 -0
  68. data/vendor/brotli/enc/utf8_util.h +25 -0
  69. data/vendor/brotli/enc/write_bits.h +11 -18
  70. metadata +7 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d92a3a7993458434aaf46196d3369edca153048f
4
- data.tar.gz: a9400e59513dbaf9b759195c80c835eda9fae32d
3
+ metadata.gz: 8a84cc7be2ff8f77b71c2a257ca25211a9c3ca23
4
+ data.tar.gz: bb07eb56c3ae937a98b6cd6c80589ca773562a0f
5
5
  SHA512:
6
- metadata.gz: 6602d2c5ae2f26d3f9083a38a84fdd172e9c86e0f0cefe21fd5826c52c16c32d928c092ac91133906c9c9e18ab67142f00b010bc945b33184bbf3e87130aa8f7
7
- data.tar.gz: f5f88a8cba028b0f9048786913199d82d2b2c7405478b14980ec82f31c7e7499471f42410e956fb6c17b56ad1bdef0aa424ca794c45be49eac340d3a2b5cd805
6
+ metadata.gz: 5fe7de8328e763d815eeaf6c031998fecf3a8e1bf85130808207de71a39311eb7c5cae3abc9f0f7fd2a31c5cc93b50184b1c097f76bf9e3a35a669d959647e72
7
+ data.tar.gz: f4814c98c1066b5aa9f06125d19ccbfe6ff3828abacce332baa39da79bc3eb27bf864d157e33dcc5c30ceec0c3c060b438ffb328d97c0f6d9aab120460ab3b38
data/.gitmodules CHANGED
@@ -1,3 +1,3 @@
1
1
  [submodule "vendor/brotli"]
2
2
  path = vendor/brotli
3
- url = git@github.com:google/brotli.git
3
+ url = git://github.com/google/brotli.git
data/.travis.yml CHANGED
@@ -1,4 +1,5 @@
1
1
  language: ruby
2
2
  rvm:
3
3
  - 2.2.0
4
- before_install: gem install bundler -v 1.10.6
4
+ before_install:
5
+ - gem install bundler
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
@@ -3,7 +3,7 @@ require "rspec/core/rake_task"
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec)
5
5
 
6
- task :default => :spec
6
+ task :default => [:compile, :spec]
7
7
  require "rake/extensiontask"
8
8
 
9
9
  task :build => :compile
data/ext/brotli/brotli.cc CHANGED
@@ -3,7 +3,7 @@
3
3
  static VALUE rb_mBrotli;
4
4
  static VALUE rb_eBrotli;
5
5
 
6
- int
6
+ static int
7
7
  brotli_inflate_cb(void* data, const uint8_t* buf, size_t count)
8
8
  {
9
9
  VALUE dst = (VALUE)data;
@@ -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
- encsrc, encobj = make_srcobj 'enc', %w(backward_references block_splitter brotli_bit_stream encode encode_parallel entropy_encode histogram literal_cost metablock static_dict streams)
21
- decsrc, decobj = make_srcobj 'dec', %w(bit_reader decode huffman state streams)
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 + ' ' + (encsrc + decsrc).join(' '))
31
- .sub(/^#{obj}$/, obj + ' ' + (encobj + decobj).join(' '))
88
+ .sub(/^#{src}$/, src + ' ' + srcs.join(' '))
89
+ .sub(/^#{obj}$/, obj + ' ' + objs.join(' '))
32
90
  f.rewind
33
91
  f.write txt
34
92
  end
@@ -1,3 +1,3 @@
1
1
  module Brotli
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
@@ -1,202 +1,19 @@
1
-
2
- Apache License
3
- Version 2.0, January 2004
4
- http://www.apache.org/licenses/
5
-
6
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
-
8
- 1. Definitions.
9
-
10
- "License" shall mean the terms and conditions for use, reproduction,
11
- and distribution as defined by Sections 1 through 9 of this document.
12
-
13
- "Licensor" shall mean the copyright owner or entity authorized by
14
- the copyright owner that is granting the License.
15
-
16
- "Legal Entity" shall mean the union of the acting entity and all
17
- other entities that control, are controlled by, or are under common
18
- control with that entity. For the purposes of this definition,
19
- "control" means (i) the power, direct or indirect, to cause the
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.
@@ -4,7 +4,7 @@ include ../shared.mk
4
4
 
5
5
  CFLAGS += -Wall
6
6
 
7
- OBJS = bit_reader.o decode.o huffman.o state.o streams.o
7
+ OBJS = bit_reader.o decode.o dictionary.o huffman.o state.o streams.o
8
8
 
9
9
  all : $(OBJS)
10
10
 
@@ -1,16 +1,7 @@
1
1
  /* Copyright 2013 Google Inc. All Rights Reserved.
2
2
 
3
- Licensed under the Apache License, Version 2.0 (the "License");
4
- you may not use this file except in compliance with the License.
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, BrotliInput input) {
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_ = 0;
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
- void BrotliWarmupBitReader(BrotliBitReader* const br) {
40
- size_t i;
41
- br->val_ = 0;
42
- for (i = 0; i < sizeof(br->val_); ++i) {
43
- #if (BROTLI_64_BITS_LITTLE_ENDIAN)
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)