package brotli /* Copyright 2016 Google Inc. All Rights Reserved. Distributed under MIT license. See file LICENSE for detail or copy at https://opensource.org/licenses/MIT */ /* Specification: 7.3. Encoding of the context map */ const contextMapMaxRle = 16 /* Specification: 2. Compressed representation overview */ const maxNumberOfBlockTypes = 256 /* Specification: 3.3. Alphabet sizes: insert-and-copy length */ const numLiteralSymbols = 256 const numCommandSymbols = 704 const numBlockLenSymbols = 26 const maxContextMapSymbols = (maxNumberOfBlockTypes + contextMapMaxRle) const maxBlockTypeSymbols = (maxNumberOfBlockTypes + 2) /* Specification: 3.5. Complex prefix codes */ const repeatPreviousCodeLength = 16 const repeatZeroCodeLength = 17 const codeLengthCodes = (repeatZeroCodeLength + 1) /* "code length of 8 is repeated" */ const initialRepeatedCodeLength = 8 /* "Large Window Brotli" */ const largeMaxDistanceBits = 62 const largeMinWbits = 10 const largeMaxWbits = 30 /* Specification: 4. Encoding of distances */ const numDistanceShortCodes = 16 const maxNpostfix = 3 const maxNdirect = 120 const maxDistanceBits = 24 func distanceAlphabetSize(NPOSTFIX uint, NDIRECT uint, MAXNBITS uint) uint { return numDistanceShortCodes + NDIRECT + uint(MAXNBITS<<(NPOSTFIX+1)) } /* numDistanceSymbols == 1128 */ const numDistanceSymbols = 1128 const BROTLI_MAX_DISTANCE = 0x3FFFFFC const BROTLI_MAX_ALLOWED_DISTANCE = 0x7FFFFFFC /* 7.1. Context modes and context ID lookup for literals */ /* "context IDs for literals are in the range of 0..63" */ const BROTLI_LITERAL_CONTEXT_BITS = 6 /* 7.2. Context ID for distances */ const BROTLI_DISTANCE_CONTEXT_BITS = 2 /* 9.1. Format of the Stream Header */ /* Number of slack bytes for window size. Don't confuse with BROTLI_NUM_DISTANCE_SHORT_CODES. */ const BROTLI_WINDOW_GAP = 16 func BROTLI_MAX_BACKWARD_LIMIT(W uint) uint { return (uint(1) << W) - BROTLI_WINDOW_GAP }