aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Tango.PPC.Common/RemoteDesktop/DefaultRemoteDesktopService.cs
diff options
context:
space:
mode:
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.cs40
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))