diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-03-04 14:09:45 +0200 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-03-04 14:09:45 +0200 |
| commit | 565e48de649d3d14e6b82012b6aa2e3819a3c82c (patch) | |
| tree | 16e766f6bd45e62c48d6046a21841526aafaed73 /Software/Visual_Studio/PPC/Tango.PPC.Common/RemoteDesktop/DefaultRemoteDesktopService.cs | |
| parent | b0ccae10fa6025838195c42fa6c9dd72b4321579 (diff) | |
| download | Tango-565e48de649d3d14e6b82012b6aa2e3819a3c82c.tar.gz Tango-565e48de649d3d14e6b82012b6aa2e3819a3c82c.zip | |
Improved BitmapCliper.
Implemented auto throw when max differences reached.
Implemented fallback TurboJpeg encoder.
Fixed issue with UpdateMachine.xml script removing DISPENSERS before IDS_PACKS.
Added GlobalHost.Configuration.MaxIncomingWebSocketMessageSize for WebSockets support for large messages on SignalR.
Diffstat (limited to 'Software/Visual_Studio/PPC/Tango.PPC.Common/RemoteDesktop/DefaultRemoteDesktopService.cs')
| -rw-r--r-- | Software/Visual_Studio/PPC/Tango.PPC.Common/RemoteDesktop/DefaultRemoteDesktopService.cs | 40 |
1 files changed, 29 insertions, 11 deletions
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/RemoteDesktop/DefaultRemoteDesktopService.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/RemoteDesktop/DefaultRemoteDesktopService.cs index 9099e6346..67d0b85de 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Common/RemoteDesktop/DefaultRemoteDesktopService.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/RemoteDesktop/DefaultRemoteDesktopService.cs @@ -67,6 +67,8 @@ namespace Tango.PPC.Common.RemoteDesktop _engine.CaptureMethod = new GdiScreenCapture(); #endif + _engine.Comparer.MaxDifferencesThrow = _engine.CaptureRegion.Width * _engine.CaptureRegion.Height / 2; + if (_settings.EnableRemoteDesktop) { Start(); @@ -119,7 +121,7 @@ namespace Tango.PPC.Common.RemoteDesktop FrameRate = _engine.FrameRate }, token, new TransportResponseConfig() { - Immediate = true, + Immediate = false, }); } @@ -139,7 +141,7 @@ namespace Tango.PPC.Common.RemoteDesktop Packet = _initialPacket, }, client.Token, new TransportResponseConfig() { - Immediate = true, + Immediate = false, }); client.InitialPacketSent = true; @@ -150,19 +152,35 @@ namespace Tango.PPC.Common.RemoteDesktop } } - if (e.Frame.DifferenceAvailable && e.Frame.DifferenceCount > 0) + if (e.Frame.DifferenceCount > 0) { - var diffFrame = e.Frame.ToDifference(); - diffFrame = diffFrame.OptimizeBounds(); + RemoteDesktopPacket packet = null; - RemoteDesktopPacket packet = new RemoteDesktopPacket() + if (!e.Frame.DifferenceAvailable) { - Bitmap = diffFrame.ToEncoder<PngEncoder>().ToArray(), - IsPartial = true, - PartialRegion = new CaptureRegion(diffFrame.Left, diffFrame.Top, diffFrame.Width, diffFrame.Height), - }; + Debug.WriteLine("Using Jpeg..."); + packet = new RemoteDesktopPacket() + { + Bitmap = e.Frame.ToEncoder<TurboJpegEncoder>().ToArray(30) + }; + } + else + { + var diffFrame = e.Frame.ToDifference(); + diffFrame = diffFrame.OptimizeBounds(); + + packet = new RemoteDesktopPacket() + { + Bitmap = diffFrame.ToEncoder<PngEncoder>().ToArray(), + IsPartial = true, + PartialRegion = new CaptureRegion(diffFrame.Left, diffFrame.Top, diffFrame.Width, diffFrame.Height), + }; + + diffFrame.Dispose(); + } + + Debug.WriteLine($"Bitmap Size: {packet.Bitmap.Length / 1000} kb"); - diffFrame.Dispose(); e.Frame.Dispose(); foreach (var client in _clients.ToList().Where(x => x.InitialPacketSent)) |
