internal RTCTrackEvent(IntPtr ptrTransceiver, RTCPeerConnection peer) { IntPtr ptrTrack = NativeMethods.TransceiverGetTrack(ptrTransceiver); Track = WebRTC.FindOrCreate(ptrTrack, ptr => new MediaStreamTrack(ptr)); Transceiver = new RTCRtpTransceiver(ptrTransceiver, peer); }
internal RTCStatsReportAsyncOperation(RTCPeerConnection connection, RTCRtpReceiver receiver) { NativeMethods.PeerConnectionReceiverGetStats(connection.GetSelfOrThrow(), receiver.self); connection.OnStatsDelivered = ptr => { Value = WebRTC.FindOrCreate(ptr, ptr_ => new RTCStatsReport(ptr_)); IsError = false; this.Done(); }; }
static void PCOnRemoveTrack(IntPtr ptr, IntPtr receiverPtr) { WebRTC.Sync(ptr, () => { if (WebRTC.Table[ptr] is RTCPeerConnection connection) { var receiver = WebRTC.FindOrCreate( receiverPtr, _ptr => new RTCRtpReceiver(_ptr, connection)); if (receiver != null) { connection.cacheTracks.Remove(receiver.Track); } } }); }
internal MediaStreamTrackEvent(IntPtr ptrTrack) { Track = WebRTC.FindOrCreate(ptrTrack, ptr => new MediaStreamTrack(ptr)); }
internal MediaStreamTrackEvent(IntPtr ptrTrack) { Track = WebRTC.FindOrCreate(ptrTrack, MediaStreamTrack.Create); }
internal RTCTrackEvent(IntPtr ptrTransceiver, RTCPeerConnection peer) { Transceiver = WebRTC.FindOrCreate( ptrTransceiver, ptr => new RTCRtpTransceiver(ptr, peer)); }
RTCRtpTransceiver CreateTransceiver(IntPtr ptr) { return(WebRTC.FindOrCreate(ptr, _ptr => new RTCRtpTransceiver(_ptr, this))); }
RTCRtpSender CreateSender(IntPtr ptr) { return(WebRTC.FindOrCreate(ptr, _ptr => new RTCRtpSender(_ptr, this))); }