Commit Graph

32 Commits

Author SHA1 Message Date
Eugene Kliuchnikov 6ece1d8791 Move files & update paths (#541)
* Move files & update paths

* Rename build to scripts.

* Fix paths

* Fix script.
2017-04-23 14:07:08 +02:00
Eugene Kliuchnikov cdca91b6f5 Update common, decoder, encoder, java (#520)
Common:
 * wrap dictionary data into `BrotliDictionary` structure
 * replace public constant with getter `BrotliGetDictionary`
 * reformat dictionary data

Decoder:
 * adopt common changes
 * clarify acceptable instance usage patterns
 * hold reference to dictionary in state

Encoder:
 * adopt common changes
 * eliminate PIC spots in `CreateBackwardReferences`
 * add per-chunk ratio guards for q0 and q1
 * precompute relative distances to avoid repeated calculations
 * prostpone hasher allocation/initialization
 * refactor Hashers to be class-like structure
 * further improvements for 1MiB+ inputs
 * added new hasher type; made hashers more configurable

Java:
 * Pull byte->int magic to `IntReader` from `BitReader`
2017-03-06 14:22:45 +01:00
Eugene Kliuchnikov 11df843cf0 Update encoder (#504)
* pull `BROTLI_MAX_BACKWARD_LIMIT` to constants
 * split generic and Zopfli backward references code
 * pull hashers init and stitch invocation to encoder
 * make `dictionary_hash` a compilation unit
 * add `size hint` parameter
 * add new hasher
 * use `size hint` to pick new hasher for q4
 * modernize clz guard (fix #495)
 * move `hash to binary tree` to separate file
 * add `Initialize` and `Cleanup` to all hashers
 * do not raise OOM if malloc(0) == NULL (fix #500)
2017-02-06 14:20:43 +01:00
Alex Nicksay 89a5b6e625 Python: Simplify test suite generation by using unittest discovery (#485) 2016-12-20 14:40:47 +01:00
Alex Nicksay f7b5b3dc2c Python: Create native brotli module and move extension to _brotli 2016-10-17 09:35:27 -04:00
Alex Nicksay 6f55ee6097 Python: Clean up setup.py file 2016-10-12 11:43:14 -04:00
Eugene Kliuchnikov 6e2207f486 Add includedir to setup.py 2016-08-23 14:44:13 +02:00
Eugene Kliuchnikov 8148001158 Move "public" to "include/brotli" 2016-08-23 14:40:33 +02:00
Eugene Kliuchnikov ceddddeb2b Fix setup.py regexp 2016-08-22 15:59:08 +02:00
Eugene Kliuchnikov 2c2d5578a6 Use version from common/version.h 2016-08-22 15:44:12 +02:00
Eugene Kliuchnikov 403729c454 Fix setup.py 2016-08-22 13:59:21 +02:00
Eugene Kliuchnikov db3a11625d Fix CI build. 2016-06-13 15:22:13 +02:00
Eugene Kliuchnikov 11d1337baf Update setup.py 2016-06-03 12:02:01 +02:00
eustas 14b32cc3aa Remove obsolete compilation unit 2016-02-16 15:16:54 +01:00
Zoltan Szabadka 47f1eaba88 Add the new source files to setup.py 2016-01-11 12:05:18 +01:00
Cosimo Lupo 8b2ca8efd9 setup.py: don't enable c++0x for gcc 2015-12-08 12:33:06 +00:00
Cosimo Lupo 18a2954522 [setup.py] add PyPI trove classifiers 2015-10-06 12:23:57 +01:00
Cosimo Lupo b2f6c6dbff [setup.py] remove monkey-patch for distutils.msvc9compiler; try to import setuptools required by "Microsoft Visual C++ Compiler for Python 2.7"
Cf. http://aka.ms/vcpython27
2015-10-05 11:06:18 +01:00
Zoltan Szabadka b5c92e54a6 Add tools/version.h that conatins the brotli version.
This can be reused by all of the tools.
Set the version to the next git release tag.
2015-10-02 11:32:42 +02:00
Zoltan Szabadka 4c37566f4b Move literal cost computation to where it's used.
Move utf8 heuristics functions to their own file.
2015-10-01 15:10:42 +02:00
Zoltan Szabadka 4a7024dcde Make the brotli encoder C++98 compatible. 2015-10-01 12:08:14 +02:00
Zoltan Szabadka 0cf3a54422 Update brotli decoder with latest improvements. 2015-09-24 18:35:25 +02:00
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