private void WriteFrame(Stream stream, IVideoFrame frame) { lock (_byteArrayStream) { _byteArrayStream.Position = 0; if (_compress) { using (var deflateStream = new DeflateStream(_byteArrayStream, CompressionMode.Compress)) frame.Write(deflateStream); } else { frame.Write(_byteArrayStream); _byteArrayStream.Close(); } lock (_longBuffer) { _longBuffer.WriteUInt32AsNetworkOrder((uint)_byteArrayStream.Position); stream.Write(_longBuffer, 0, sizeof(uint)); } stream.Write(_byteArrayStream.Buffer, 0, (int)_byteArrayStream.Position); _byteArrayStream.Reopen(); } }