On 01/25/2012 01:26 PM, Orit Wasserman wrote: > The run length is encoded using ULEB128 (http://en.wikipedia.org/wiki/LEB128) > > page = zrun > | zrun nzrun > | zrun nzrun page > > zrun = length > > nzrun = length byte... > > length = uleb128 encoded integer >
We can improve this by a further 2 bytes per page by not encoding the trailing zero run: page = zrun nzrun | zrun nzrun page so, a page containing { 10*0, 7, 4085*0 } would be encoded as 0x10 0x01 0x07 without the trailing 4085 zrun. This works because you no longer send unchanged pages. -- error compiling committee.c: too many arguments to function