diff options
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)) |
