private void PublishRemoteVideoStream(RemoteVideoStream v) { _remoteVideoStreams.Add(v); var renderer = new VideoStreamRenderer(v, MainActivity.Instance); var renderingOptions = new CreateViewOptions(ScalingMode.Crop); var nativeView = renderer.CreateView(renderingOptions); var formsView = nativeView.ToView(); RemoteVideoAdded?.Invoke(this, formsView); }
public void Hangup() { _call.RemoteParticipantsUpdated -= _call_RemoteParticipantsUpdated; Com.Laerdal.Azurecommunicationhelper.CallClientHelper.HangUp(_call, new HangUpOptions()); _localRenderer?.Dispose(); _localRenderer = null; _localVideoStream?.Dispose(); _localVideoStream = null; _remoteVideoStreams.Clear(); _call.Dispose(); _call = null; }
public Task JoinGroup(Guid groupID) { var camera = _deviceManager.Cameras.First(c => c.CameraFacing == CameraFacing.Front); _localVideoStream = new LocalVideoStream(camera, MainActivity.Instance); _localRenderer = new VideoStreamRenderer(_localVideoStream, MainActivity.Instance); var renderingOptions = new CreateViewOptions(ScalingMode.Crop); var nativeView = _localRenderer.CreateView(renderingOptions); var formsView = nativeView.ToView(); LocalVideoAdded?.Invoke(this, formsView); var groupCallLocator = new GroupCallLocator(UUID.FromString(groupID.ToString())); var videoOptions = new VideoOptions(new LocalVideoStream[] { _localVideoStream }); var joinCallOptions = new JoinCallOptions(); joinCallOptions.SetVideoOptions(videoOptions); _call = _callAgent.Join(Application.Context, groupCallLocator, joinCallOptions); _call.RemoteParticipantsUpdated += _call_RemoteParticipantsUpdated; return(Task.CompletedTask); }