static MemoryStream GetDecodedStream (byte [] bytes, int offset, int size)
{
byte [] buffer = new byte [512];
int position = 0;
int count, data;
MemoryStream result = new MemoryStream ();
while (size > 0) {
count = (int) bytes [offset++];
data = (int) bytes [offset++];
if ((512 - count) < position) {
result.Write (buffer, 0, position);
position = 0;
}
for (int i = 0; i < count; i++)
buffer [position++] = (byte) data;
size -= 2;
}
if (position > 0)
result.Write (buffer, 0, position);
result.Position = 0;
return result;
}