Commit Graph

10 Commits

Author SHA1 Message Date
Cosimo Lupo
e88fe7b248 [setup.py] pass extra compiler flags on OS X to enable support for C++11: -stdlib=libc++ -mmacosx-version-min=10.7 2015-08-14 11:06:59 +01:00
Cosimo Lupo
d2c8b2777d [setup.py] retrieve version string from brotlimodule.cc so we don't need to modify it more than once 2015-08-11 11:12:58 +01:00
Cosimo Lupo
54baf43c70 [setup.py] support MINGW32 compiler: fix clashing 'hypot' definition; statically link libgcc and libstdc++ 2015-08-11 11:12:52 +01:00
Cosimo Lupo
c3540e2b7a [setup.py] use MSVC 10.0 when compiling for Windows Python 2.7
Python 2.7 for Windows is compiled using MS Visaul C++ 9.0 (Visual Studio 2008).
However the latter does not support many modern C++ features which are
required to compile the Brotli encoder. So we monkey-patch distutils
to always look for MSVC version 10.0 instead of 9.0.
2015-08-11 11:12:49 +01:00
Zoltan Szabadka
4b2fd00e24 Use a single lookup table for insert/copy offsets and extra bits.
Remove safe_malloc.c since all the bounds checking is done inside
decode.c now.
2015-08-10 16:39:50 +02:00
Zoltan Szabadka
66098830a2 Use a static hash table to look up dictionary words and transforms.
This is used for quality 11, for qualities <= 9 we already
have a simpler hash table.

The static data size is 252 kB, and this removes the
need to initialize a huge hash map at startup, which was
the reason why transforms had to be disabled by default.
In comparison, the static dictionary itself is 120 kB.
This supports every transform, except the kOmitFirstN.
2015-06-12 16:45:17 +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
Zoltan Szabadka
e91a4492c7 Add dictionary_hash.h to setup.py. 2015-04-23 15:55:43 +02:00
Zoltan Szabadka
09aa9ca410 Add the streams.* files to Makefile and setup.py 2015-04-23 14:35:43 +02:00
Cosimo Lupo
77c239952d [python] moved setup.py to the root of repository 2015-03-31 09:30:56 +01:00