aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Experiments/Tango.RemoteDesktop/WpfApp1/MainWindow.xaml.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Experiments/Tango.RemoteDesktop/WpfApp1/MainWindow.xaml.cs')
-rw-r--r--Software/Experiments/Tango.RemoteDesktop/WpfApp1/MainWindow.xaml.cs50
1 files changed, 36 insertions, 14 deletions
diff --git a/Software/Experiments/Tango.RemoteDesktop/WpfApp1/MainWindow.xaml.cs b/Software/Experiments/Tango.RemoteDesktop/WpfApp1/MainWindow.xaml.cs
index 85e5ca0bd..fd0df286c 100644
--- a/Software/Experiments/Tango.RemoteDesktop/WpfApp1/MainWindow.xaml.cs
+++ b/Software/Experiments/Tango.RemoteDesktop/WpfApp1/MainWindow.xaml.cs
@@ -34,6 +34,7 @@ namespace WpfApp1
public MainWindow()
{
+
InitializeComponent();
ContentRendered += MainWindow_ContentRendered;
@@ -41,7 +42,7 @@ namespace WpfApp1
{
CaptureRegion = new CaptureRegion(0, 0, 1280, 800)
};
- _engine.Interval = TimeSpan.FromMilliseconds(100);
+ _engine.FrameRate = 5; //Per second
_engine.CaptureCursor = true;
_engine.FrameReceived += _engine_FrameReceived;
}
@@ -54,28 +55,49 @@ namespace WpfApp1
if (e.Frame.DifferenceAvailable)
{
- var diffFrame = e.Frame.ToDifference();
+ if (e.Frame.HasDifference)
+ {
+ var diffFrame = e.Frame.ToDifference();
+
+ var bitmapStream = diffFrame.OptimizeBounds().ToEncoder<PngEncoder>().ToStream();
+
+ size = (int)bitmapStream.Length;
+
+ Bitmap newBitmap = new Bitmap(bitmapStream);
+
+ diffFrame = new RasterFrame(newBitmap, diffFrame.Left, diffFrame.Top);
- size = diffFrame.Encode<PngEncoder>().ToArray().Length;
+ diffFrame.Apply(_currentBitmap);
- //diffFrame.Apply(_currentBitmap);
+ diffFrame.Dispose();
+ bitmapStream.Dispose();
- //var updatedFrame = new RasterFrame(_currentBitmap);
- //preview = updatedFrame.ToBitmapSource();
+ var updatedFrame = new RasterFrame(_currentBitmap);
+ preview = updatedFrame.ToBitmapSource();
+
+ Debug.WriteLine($"Actual frame size on network: {size / 1000} kb");
+
+ Dispatcher.BeginInvoke(new Action(() =>
+ {
+ img.Source = preview;
+ }));
+ }
+ else
+ {
+ //No need to send new frames (no differences)...
+ }
}
else
{
_currentBitmap = e.Frame.ToBitmap().Clone() as Bitmap;
preview = e.Frame.ToBitmapSource();
- size = e.Frame.Encode<PngEncoder>().ToArray().Length;
- }
+ size = e.Frame.ToEncoder<Png8BitEncoder>().ToArray().Length;
- //Debug.WriteLine($"Actual frame size on network: {size / 1000} kb");
-
- //Dispatcher.BeginInvoke(new Action(() =>
- //{
- // img.Source = preview;
- //}));
+ Dispatcher.BeginInvoke(new Action(() =>
+ {
+ img.Source = preview;
+ }));
+ }
e.Frame.Dispose();
}