void DoFilter (byte [] buffer)
{
if (input_filter == null || filter == null)
return;
if (buffer.Length < 1024)
buffer = new byte [1024];
// Replace the input with the filtered input
input_filter.BaseStream = input_stream;
MemoryStream ms = new MemoryStream ();
while (true) {
int n = filter.Read (buffer, 0, buffer.Length);
if (n <= 0)
break;
ms.Write (buffer, 0, n);
}
// From now on input_stream has the filtered input
input_stream = new MemoryStream (ms.GetBuffer (), 0, (int) ms.Length, false, true);
}