public async Task SendScreenCapture(byte[] encodedImageBytes, int left, int top, int width, int height) { PendingSentFrames.Enqueue(DateTimeOffset.Now); for (var i = 0; i < encodedImageBytes.Length; i += 50_000) { var dto = new CaptureFrameDto() { Left = left, Top = top, Width = width, Height = height, EndOfFrame = false, ImageBytes = encodedImageBytes.Skip(i).Take(50_000).ToArray(), ImageQuality = imageQuality }; await SendToViewer(() => RtcSession.SendDto(dto), () => CasterSocket.SendDtoToViewer(dto, ViewerConnectionID)); } var endOfFrameDto = new CaptureFrameDto() { Left = left, Top = top, Width = width, Height = height, EndOfFrame = true, ImageQuality = imageQuality }; await SendToViewer(() => RtcSession.SendDto(endOfFrameDto), () => CasterSocket.SendDtoToViewer(endOfFrameDto, ViewerConnectionID)); }
public async Task SendScreenCapture(IEnumerable <CaptureFrame> screenFrame) { PendingSentFrames.Enqueue(DateTimeOffset.Now); foreach (var frame in screenFrame) { var left = frame.Left; var top = frame.Top; var width = frame.Width; var height = frame.Height; for (var i = 0; i < frame.EncodedImageBytes.Length; i += 50_000) { var dto = new CaptureFrameDto() { Left = left, Top = top, Width = width, Height = height, EndOfFrame = false, ImageBytes = frame.EncodedImageBytes.Skip(i).Take(50_000).ToArray(), ImageQuality = _imageQuality, EndOfCapture = false }; await SendToViewer(() => RtcSession.SendDto(dto), () => CasterSocket.SendDtoToViewer(dto, ViewerConnectionID)); } var endOfFrameDto = new CaptureFrameDto() { Left = left, Top = top, Width = width, Height = height, EndOfFrame = true, ImageQuality = _imageQuality, EndOfCapture = false }; await SendToViewer(() => RtcSession.SendDto(endOfFrameDto), () => CasterSocket.SendDtoToViewer(endOfFrameDto, ViewerConnectionID)); } var endofCaptureDto = new CaptureFrameDto() { Left = 0, Top = 0, Width = 0, Height = 0, EndOfFrame = true, ImageQuality = _imageQuality, EndOfCapture = true }; await SendToViewer(() => RtcSession.SendDto(endofCaptureDto), () => CasterSocket.SendDtoToViewer(endofCaptureDto, ViewerConnectionID)); }