Skip to content

Commit

Permalink
Revert WebRTC library back to Microsoft MixedReality WebRTC.
Browse files Browse the repository at this point in the history
  • Loading branch information
bitbound committed Apr 19, 2021
1 parent 44efc48 commit 2bd4aef
Show file tree
Hide file tree
Showing 41 changed files with 375 additions and 177 deletions.
1 change: 1 addition & 0 deletions Desktop.Core/Desktop.Core.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="5.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="5.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging.EventLog" Version="5.0.0" />
<PackageReference Include="Microsoft.MixedReality.WebRTC" Version="2.0.2" />
<PackageReference Include="System.Drawing.Common" Version="5.0.2" />
<PackageReference Include="System.IO.FileSystem.AccessControl" Version="5.0.0" />
</ItemGroup>
Expand Down
10 changes: 5 additions & 5 deletions Desktop.Core/Services/CasterSocket.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public interface ICasterSocket
Task SendCtrlAltDelToAgent();
Task SendDeviceInfo(string serviceID, string machineName, string deviceID);
Task SendDtoToViewer<T>(T baseDto, string viewerId);
Task SendIceCandidateToBrowser(string candidateJson, string viewerConnectionID);
Task SendIceCandidateToBrowser(string candidate, int sdpMlineIndex, string sdpMid, string viewerConnectionID);
Task SendMessageToViewer(string viewerID, string message);
Task SendRtcOfferToBrowser(string sdp, string viewerID, IceServerModel[] iceServers);
Task SendViewerConnected(string viewerConnectionId);
Expand Down Expand Up @@ -164,9 +164,9 @@ public Task SendDtoToViewer<T>(T baseDto, string viewerId)
var serializedDto = MessagePack.MessagePackSerializer.Serialize(baseDto);
return Connection.SendAsync("SendDtoToBrowser", serializedDto, viewerId);
}
public async Task SendIceCandidateToBrowser(string candidateJson, string viewerConnectionID)
public async Task SendIceCandidateToBrowser(string candidate, int sdpMlineIndex, string sdpMid, string viewerConnectionID)
{
await Connection.SendAsync("SendIceCandidateToBrowser", candidateJson, viewerConnectionID);
await Connection.SendAsync("SendIceCandidateToBrowser", candidate, sdpMlineIndex, sdpMid, viewerConnectionID);
}

public async Task SendRtcOfferToBrowser(string sdp, string viewerID, IceServerModel[] iceServers)
Expand Down Expand Up @@ -237,13 +237,13 @@ private void ApplyConnectionHandlers()
});


Connection.On("ReceiveIceCandidate", (string candidateJson, string viewerID) =>
Connection.On("ReceiveIceCandidate", (string candidate, int sdpMlineIndex, string sdpMid, string viewerID) =>
{
try
{
if (conductor.Viewers.TryGetValue(viewerID, out var viewer))
{
viewer.RtcSession.AddIceCandidate(candidateJson);
viewer.RtcSession.AddIceCandidate(sdpMid, sdpMlineIndex, candidate);
}
}
catch (Exception ex)
Expand Down
9 changes: 9 additions & 0 deletions Desktop.Core/Services/DtoMessageHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,9 @@ public async Task ParseMessage(Viewer viewer, byte[] message)
case BaseDtoType.ToggleBlockInput:
ToggleBlockInput(message);
break;
case BaseDtoType.ToggleWebRtcVideo:
ToggleWebRtcVideo(message, viewer);
break;
case BaseDtoType.ClipboardTransfer:
await ClipboardTransfer(message);
break;
Expand Down Expand Up @@ -247,5 +250,11 @@ private void ToggleBlockInput(byte[] message)
var dto = MessagePackSerializer.Deserialize<ToggleBlockInputDto>(message);
KeyboardMouseInput.ToggleBlockInput(dto.ToggleOn);
}

private void ToggleWebRtcVideo(byte[] message, Viewer viewer)
{
var dto = MessagePackSerializer.Deserialize<ToggleWebRtcVideoDto>(message);
viewer.ToggleWebRtcVideo(dto.ToggleOn);
}
}
}
7 changes: 6 additions & 1 deletion Desktop.Core/Services/ScreenCaster.cs
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ await viewer.SendScreenCapture(new CaptureFrame()
}


if (screenCastRequest.UseWebRtc)
if (EnvironmentHelper.IsWindows && screenCastRequest.UseWebRtc)
{
await viewer.InitializeWebRtc();
}
Expand All @@ -118,6 +118,11 @@ await viewer.SendScreenCapture(new CaptureFrame()
{
try
{
if (viewer.IsUsingWebRtcVideo)
{
Thread.Sleep(100);
continue;
}
if (viewer.IsStalled)
{
// Viewer isn't responding. Abort sending.
Expand Down
23 changes: 15 additions & 8 deletions Desktop.Core/Services/Viewer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,14 @@ public bool IsUsingWebRtc
}
}

public bool IsUsingWebRtcVideo
{
get
{
return RtcSession?.IsPeerConnected == true && RtcSession?.IsVideoTrackConnected == true;
}
}

public string Name { get; set; }

public double AverageBytesPerSecond { get; set; }
Expand Down Expand Up @@ -102,17 +110,11 @@ public async Task InitializeWebRtc()

RtcSession.LocalSdpReady += async (sender, sdp) =>
{
await CasterSocket.SendRtcOfferToBrowser(sdp.sdp, ViewerConnectionID, iceServers);
await CasterSocket.SendRtcOfferToBrowser(sdp.Content, ViewerConnectionID, iceServers);
};
RtcSession.IceCandidateReady += async (sender, candidate) =>
{
if (candidate is null)
{
Logger.Write("Candidate is null. Aborting send.");
return;
}

await CasterSocket.SendIceCandidateToBrowser(candidate.toJSON(), ViewerConnectionID);
await CasterSocket.SendIceCandidateToBrowser(candidate.Content, candidate.SdpMlineIndex, candidate.SdpMid, ViewerConnectionID);
};

await RtcSession.Init(iceServers);
Expand Down Expand Up @@ -305,6 +307,11 @@ public void ThrottleIfNeeded()
TimeSpan.FromSeconds(10));
}

public void ToggleWebRtcVideo(bool toggleOn)
{
RtcSession.ToggleWebRtcVideo(toggleOn);
}

private async void AudioCapturer_AudioSampleReady(object sender, byte[] sample)
{
await SendAudioSample(sample);
Expand Down
Loading

0 comments on commit 2bd4aef

Please sign in to comment.