From 2955a01d76535a3fad99d79ee2a657a5891617cb Mon Sep 17 00:00:00 2001 From: Jared Goodwin Date: Mon, 6 Apr 2020 09:08:12 -0700 Subject: [PATCH] Auto quality tweaks. --- ScreenCast.Core/Models/Viewer.cs | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/ScreenCast.Core/Models/Viewer.cs b/ScreenCast.Core/Models/Viewer.cs index 2a5947a9..7f8bc42f 100644 --- a/ScreenCast.Core/Models/Viewer.cs +++ b/ScreenCast.Core/Models/Viewer.cs @@ -16,6 +16,7 @@ namespace Remotely.ScreenCast.Core.Models public Viewer() { + EncoderParams = new EncoderParameters(); ImageQuality = 60; } public bool AutoAdjustQuality { get; internal set; } = true; @@ -42,13 +43,7 @@ namespace Remotely.ScreenCast.Core.Models } imageQuality = value; - EncoderParams = new EncoderParameters() - { - Param = new[] - { - new EncoderParameter(Encoder.Quality, value) - } - }; + EncoderParams.Param[0] = new EncoderParameter(Encoder.Quality, value); } } public string Name { get; set; } @@ -73,18 +68,18 @@ namespace Remotely.ScreenCast.Core.Models public async Task ThrottleIfNeeded() { var currentBuffer = IsUsingWebRtc() ? - RtcSession.CurrentBuffer : - (ulong)WebSocketBuffer; + (int)RtcSession.CurrentBuffer : + WebSocketBuffer; if (currentBuffer > 150_000) { if (AutoAdjustQuality) { - ImageQuality = Math.Max(ImageQuality - 1, 0); + ImageQuality = Math.Max(ImageQuality - (150_000 / currentBuffer), 0); Logger.Debug($"Auto-adjusting image quality. Quality: {ImageQuality}"); } - var delay = (int)Math.Ceiling((currentBuffer - 100_000) * .0025); + var delay = (int)Math.Ceiling((currentBuffer - 150_000) * .0025); Logger.Debug($"Throttling output due to buffer size. Size: {currentBuffer}. Delay: {delay}"); await Task.Delay(delay); }