Commit Graph

58 Commits

Author SHA1 Message Date
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
Zoltan Szabadka
5b80ef0fd1 Change the specification to be less strict in some cases.
In the following three cases we allow more choices
for the compressor, which can potentially lead to
less compressed bits.

  (1) Allow brotli streams where the block counts
      do not count down to exactly zero at the end
      of the meta-block. This makes it possible
      for compressors to sometimes choose a block
      count which can be represented with less bits
      than the exact block count.

  (2) Remove the restriction that prefix code
      descriptions with exactly one non-zero
      length symbol in the code length alphabet
      must have 1 bit depth. This is because
      bit depth 1 requires the most bits to encode.

  (3) Allow any copy length value in the last
      command where the copy part is ignored.
      This makes it possible for a compressor
      to choose a copy length which can be
      represented with the least amount of bits.

In addition to the changes above, this commit also
has a wording clarification in the overview section
where the use of the 'context ID' expression is
changed to be consistent with the rest of the
specification, i.e. that it is a function of the
last two literals or the copy length.
2015-04-22 12:08:16 +02:00
Zoltan Szabadka
206d067c4a Use consistent sentence spacing in the specification.
All sentence spacing was changed to one space, except
in the boilerplate which must be preserved verbatim.
2015-04-22 11:55:29 +02:00
Zoltan Szabadka
e9fd1a4f20 Add Mark Adler's edits to the specification.
The specification source is changed in this commit
to exactly mirror the specification edited by Mark Adler:

https://github.com/madler/brotli/blob/master/brotli-02-edit.nroff
(version 70e53d7)
2015-04-22 11:33:38 +02:00
Zoltan Szabadka
f80ccecd0f Spec clarifications for Section 7.
Based on Mark Adler's review comments.
2015-04-08 16:15:09 +02:00
Zoltan Szabadka
dcdc68e68b Spec clarifications for Section 8.
Based on Mark Adler's review comments.
2015-04-08 11:07:00 +02:00
Zoltan Szabadka
92b551734a Some wording changes to Section 2 of the spec. 2015-04-07 17:23:37 +02:00
Zoltan Szabadka
707b78ae26 Add the current version of the brotli specification.
Add the .nroff source file and a python script to generate
the .txt version (requires the nroff command).
2015-04-07 16:58:07 +02:00