private MemoryStream RLEUnpack()
{
MemoryStream ret = new MemoryStream(m_unpackedSize);
using (BinaryReader br = new BinaryReader(m_compressedDiffStream, Encoding.ASCII))
{
while (br.PeekChar() >= 0)
{
byte b = br.ReadByte();
if ((b & 0x80) != 0)
{
var bytes = br.ReadBytes((b & 0x7F) + 1);
ret.Write(bytes, 0, bytes.Length);
}
else
{
var bytes = new byte[b + 1];
ret.Write(bytes, 0, bytes.Length);
}
}
}
Debug.Assert(ret.Length == m_unpackedSize);
ret.Position = 0;
return ret;
}