Commit Graph

549 Commits

Author SHA1 Message Date
Zoltan Szabadka
12eb9bfd70 Align distance code meaning in the brotli encoder.
Two different definitions (offset by 1) were used in
command.h and hash.h. Now they have been made the same,
also consistent with the spec (e.g. 0 means use previous dist, etc...)
2015-05-07 17:40:00 +02:00
szabadka
fa2c6df4f5 Merge pull request #97 from szabadka/master
Faster encoding for low quality settings.
2015-05-07 17:36:37 +02:00
Zoltan Szabadka
7cde616c9e Faster encoding for low quality settings.
With this commit, the encoder will skip some
compression optimization steps for quality <= 4,
which results in faster compression but higher
compressed sizes.
2015-05-07 17:30:10 +02:00
szabadka
e4a309ac07 Merge pull request #96 from szabadka/master
Use a static context map with two buckets for UTF8 data.
2015-05-07 17:24:12 +02:00
Zoltan Szabadka
945b0d025f Use a static context map with two buckets for UTF8 data.
Enabled for quality >= 4, and if there are no obvious
UTF8 violations detected.
For each block, we gather two separate histograms, one
for continuation bytes and one for ASCII or lead bytes.
2015-05-07 17:23:07 +02:00
szabadka
762f9ba5a0 Merge pull request #95 from szabadka/master
Decoder optimizations for ARM architecture.
2015-05-07 17:13:06 +02:00
Zoltan Szabadka
5f39d607ef Decoder optimizations for ARM architecture. 2015-05-07 17:10:27 +02:00
szabadka
500c85acae Merge pull request #94 from szabadka/master
Speed and memory usage improvements for the decoder.
2015-05-07 17:00:58 +02:00
Zoltan Szabadka
83aa24dc86 Speed and memory usage improvements for the decoder.
* Change order of members of bit reader state structure.

* Remove unused includes for assert. Add BROTLI_DCHECK
  macros and use it instead of assert.

* Do not calculate nbits in common case of ReadSymbol.

* Introduce and use PREDICT_TRUE / PREDICT_FALSE macros.

* Allocate less memory in the brotli decoder if it knows
  the result size beforehand. Before this, the decoder
  would always allocate 16MB if the encoder annotated the
  window size as 22 bit (which is the default), even if the
  file is only a few KB uncompressed. Now, it'll only
  allocate a ringbuffer as large as needed for the result file.
  But only if it can know the filesize, it's not possible
  to know that if there are multiple metablocks or too large
  uncompressed metablock.
2015-05-07 16:53:43 +02:00
szabadka
47ea761869 Merge pull request #93 from szabadka/master
Don't do any block splitting for quality 1.
2015-04-28 10:14:55 +02:00
Zoltan Szabadka
0f726df1f1 Don't do any block splitting for quality 1. 2015-04-28 10:12:47 +02:00
szabadka
344ea8edb3 Merge pull request #92 from szabadka/master
Fix an error propagation bug in the decoder.
2015-04-28 10:08:52 +02:00
Zoltan Szabadka
fe14d7b32a Fix an error propagation bug in the decoder. 2015-04-28 10:07:12 +02:00
szabadka
4f902dccf4 Merge pull request #91 from szabadka/master
Fix the year on the copyright message.
2015-04-27 18:27:00 +02:00
Zoltan Szabadka
94bc27d87a Fix the year on the copyright message. 2015-04-27 18:25:59 +02:00
szabadka
5a1cf14116 Merge pull request #90 from szabadka/master
Change the expiration date and title of the -03 draft.
2015-04-27 18:12:55 +02:00
Zoltan Szabadka
fd4a048171 Change the expiration date and title of the -03 draft. 2015-04-27 18:12:09 +02:00
szabadka
29a72665c3 Merge pull request #89 from szabadka/master
Create -03 version of the internet draft.
2015-04-27 18:04:12 +02:00
Zoltan Szabadka
98bd88413a Create -03 version of the internet draft. 2015-04-27 17:52:21 +02:00
szabadka
f8bfe06821 Merge pull request #88 from szabadka/master
Remove the 'override' keyword from ~BrotliFileIn().
2015-04-23 16:44:35 +02:00
Zoltan Szabadka
99af4df8ea Remove the 'override' keyword from ~BrotliFileIn().
Apparently MSVS 2010 does not support this.
2015-04-23 16:43:38 +02:00
szabadka
977bec5159 Merge pull request #87 from szabadka/master
Remove quality parameter from bitstream writing functions.
2015-04-23 16:23:36 +02:00
Zoltan Szabadka
98539223f5 Remove quality parameter from bitstream writing functions.
Fix a few crashes related to some quality and param combinations.
2015-04-23 16:20:29 +02:00
szabadka
e94bddd013 Merge pull request #86 from szabadka/master
Add a static hash table based dictionary lookup to fast brotli.
2015-04-23 15:56:54 +02:00
Zoltan Szabadka
e91a4492c7 Add dictionary_hash.h to setup.py. 2015-04-23 15:55:43 +02:00
Zoltan Szabadka
fdfb19806b Add a static hash table based dictionary lookup to fast brotli. 2015-04-23 15:52:32 +02:00
szabadka
16a219bbc2 Merge pull request #85 from szabadka/master
Encoder support for new empty meta-block format.
2015-04-23 15:45:48 +02:00
Zoltan Szabadka
2fd80cdc9a Encoder support for new empty meta-block format.
Changed the parallel implementation to sync meta-blocks
to byte boundary by emitting empty meta-blocks.
2015-04-23 15:43:37 +02:00
szabadka
098c928864 Merge pull request #84 from szabadka/master
Fix entropy calculation.
2015-04-23 15:36:03 +02:00
Zoltan Szabadka
6d80610f03 Fix entropy calculation. 2015-04-23 15:35:16 +02:00
szabadka
5ea92475af Merge pull request #83 from szabadka/master
Encoder implementation using input/output classes.
2015-04-23 15:30:51 +02:00
Zoltan Szabadka
3dbe2e03e7 Encoder implementation using input/output classes.
Add a BrotliCompress() method to the public encoder API
that uses the BrotliIn and BrotliOut classes and use
that in the 'bro' command-line tool.

Use the streaming api in BrotliCompressBuffer() and
BrotliCompressor::WriteMetaBlock().

Use the appropiate hashers for quality <= 9.
2015-04-23 15:26:08 +02:00
szabadka
e42eaa097c Merge pull request #82 from szabadka/master
Add input and output classes for streaming compression.
2015-04-23 14:37:50 +02:00
Zoltan Szabadka
09aa9ca410 Add the streams.* files to Makefile and setup.py 2015-04-23 14:35:43 +02:00
Zoltan Szabadka
6a5303304e Add input and output classes for streaming compression. 2015-04-23 14:29:01 +02:00
szabadka
ec03509d6d Merge pull request #81 from szabadka/master
Add params to disable static dictionary and context modeling.
2015-04-23 13:55:38 +02:00
Zoltan Szabadka
89a6fb85fb Add params to disable static dictionary and context modeling.
Disable all slow features for quality <= 9 (literal cost modeling,
dictionary, context modeling, advanced block splitting).

Change vector<Command> arguments of internal functions
to Command* and size_t.
2015-04-23 13:15:42 +02:00
szabadka
0c81a1360b Merge pull request #35 from mitya57/master
Makefile fixes and cleanups
2015-04-23 12:05:39 +02:00
szabadka
2492f171c7 Merge pull request #80 from anthrotype/test_brotli_py
[python] prepend build/lib folder to PYTHONPATH before running tests
2015-04-23 10:44:35 +02:00
Cosimo Lupo
cdde52ef63 [python] refactored tests and import shared utilities from module 2015-04-22 17:54:56 +01:00
Cosimo Lupo
906f4f52ab [python] prepend build/lib folder to PYTHONPATH before running tests 2015-04-22 16:50:38 +01:00
szabadka
7fa4586079 Merge pull request #79 from szabadka/master
Add partial output support to the decoder.
2015-04-22 17:34:55 +02:00
Zoltan Szabadka
64c261113f Add partial output support to the decoder. 2015-04-22 17:33:21 +02:00
szabadka
5ded136348 Merge pull request #78 from szabadka/master
Implement some stricter format checks in the decoder.
2015-04-22 14:43:06 +02:00
Zoltan Szabadka
84a7687453 Merge remote-tracking branch 'upstream/master' 2015-04-22 14:38:26 +02:00
Zoltan Szabadka
28b1f7a6b1 Implement some stricter format checks in the decoder.
- Reject brotli streams where the number of
    nibbles is too large for the size of the
    meta-block
  - Reject brotli streams where the padding
    bits after a meta-block are not all zero
  - Reject brotli streams where the symbol
    in the simple prefix code is not in
    the symbol alphabet
2015-04-22 14:35:21 +02:00
szabadka
42b8c74d98 Merge pull request #77 from szabadka/master
Decoder support for new empty meta-block format.
2015-04-22 14:29:05 +02:00
Zoltan Szabadka
a81f2ef433 Decoder support for new empty meta-block format.
This change enforces the new 16MB limit on the
size of the meta-blocks and adds support for
empty meta-blocks with optional ignored metadata.
2015-04-22 14:25:08 +02:00
szabadka
f393bff2e3 Merge pull request #76 from szabadka/master
Support empty meta-blocks with optional ignored metadata.
2015-04-22 13:18:52 +02:00
Zoltan Szabadka
2d8b2ec12b Support empty meta-blocks with optional ignored metadata.
This is a partially backward incompatible format change,
that makes previously valid brotli streams that contain
larger than 16MB meta-blocks invalid.

The impact of this should be minimal, since the 'bro'
command-line tool does not create larger than 2MB
meta-blocks, so the only streams this change could
break are those created by a custom brotli encoder.

This commit contains only the specification update,
implementation in the decoder and encoder will
follow in later commits.
2015-04-22 12:41:57 +02:00