BEAR4 compression

From ScienceZero
Revision as of 14:07, 1 February 2011 by Bjoern (Talk | contribs)

Jump to: navigation, search
WORK IN PROGRESS...

BEAR2 is designed for microcontrollers that has little RAM. It uses the data decompressed so far as the dictionary, compared to typical LZ compression this decreases efficiency since the index range must be larger and the need for storing the count. Most of the loss is recovered by only reading the number of bits required for the range.

Header

BEAR2 (used in files)
ssssss - symbol size (1-64) 
iiiii - maximum index size (1-32)
cccc - maximum count size (1-16)
0 <symbol>
1 <index> <count>
do
  indexSize = min(log2(decompressedSize), maximumIndexSize)
  countSize = min(indexSize, maximumCountSize)
  read classBit
  if classBit = 0 then
    read symbol
    output symbol
  else
    read index, count
    for each count
      read symbolFromDecompressed
      output symbol
    next
  endif
loop