Skip to content

Commit

Permalink
improve RTCPeerConnection track event streams
Browse files Browse the repository at this point in the history
  • Loading branch information
hthetiot committed May 20, 2020
1 parent aee2b39 commit dff0bdb
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 32 deletions.
4 changes: 2 additions & 2 deletions js/RTCPeerConnection.js
Original file line number Diff line number Diff line change
Expand Up @@ -709,7 +709,7 @@ function onEvent(data) {

case 'track':
var track = new MediaStreamTrack(data.track),
stream = new MediaStream([track]), // TODO lookup remoteStreams ?
stream = this.remoteStreams[data.streamId] || MediaStream.create(data.stream),
receiver = { track: track }, // TODO new RTCRtpReceiver
transceiver = { receiver: receiver }; // TODO new RTCRtpTransceiver

Expand All @@ -722,7 +722,7 @@ function onEvent(data) {
case 'addstream':

// Append to the remote streams.
this.remoteStreams[data.streamId] = MediaStream.create(data.stream);
this.remoteStreams[data.streamId] = this.remoteStreams[data.streamId] || MediaStream.create(data.stream);

event.stream = this.remoteStreams[data.streamId];

Expand Down
74 changes: 44 additions & 30 deletions src/PluginRTCPeerConnection.swift
Original file line number Diff line number Diff line change
Expand Up @@ -574,24 +574,34 @@ class PluginRTCPeerConnection : NSObject, RTCPeerConnectionDelegate {
* Methods inherited from RTCPeerConnectionDelegate.
*/

/** Called when media is received on a new stream from remote peer. */
func peerConnection(_ peerConnection: RTCPeerConnection, didAdd stream: RTCMediaStream) {
NSLog("PluginRTCPeerConnection | onaddstream")
private func getPluginMediaStream(stream: RTCMediaStream) -> PluginMediaStream? {

if (pluginMediaStreams[stream.streamId] == nil) {
let pluginMediaStream = PluginMediaStream(rtcMediaStream: stream)

pluginMediaStream.run()

// Let the plugin store it in its dictionary.
streamIds.append(stream.streamId)
pluginMediaStreams[stream.streamId] = pluginMediaStream;

let pluginMediaStream = PluginMediaStream(rtcMediaStream: stream)
self.eventListenerForAddStream(pluginMediaStream)
}

pluginMediaStream.run()
return pluginMediaStreams[stream.streamId]!;
}

// Let the plugin store it in its dictionary.
streamIds.append(stream.streamId)
pluginMediaStreams[stream.streamId] = pluginMediaStream;
/** Called when media is received on a new stream from remote peer. */
func peerConnection(_ peerConnection: RTCPeerConnection, didAdd stream: RTCMediaStream) {
NSLog("PluginRTCPeerConnection | onaddstream")

self.eventListenerForAddStream(pluginMediaStream)
let pluginMediaStream = getPluginMediaStream(stream: stream);

// Fire the 'addstream' event so the JS will create a new MediaStream.
self.eventListener([
"type": "addstream",
"stream": pluginMediaStream.getJSON()
"streamId": pluginMediaStream!.id,
"stream": pluginMediaStream!.getJSON()
])
}

Expand All @@ -610,6 +620,30 @@ class PluginRTCPeerConnection : NSObject, RTCPeerConnectionDelegate {
])
}

/** New track as been added. */
func peerConnection(_ peerConnection: RTCPeerConnection, didAdd rtpReceiver: RTCRtpReceiver, streams:[RTCMediaStream]) {

NSLog("PluginRTCPeerConnection | onaddtrack")

let pluginMediaStream = getPluginMediaStream(stream: streams[0]);

// TODO why streams.count is 0 and should it trigger addtrack
// TODO why NSLog streamId cause crash need weak ?
let streamId : String = streams.count > 0 ? streams[0].streamId : "";

let pluginMediaTrack = PluginMediaStreamTrack(
rtcMediaStreamTrack: rtpReceiver.track!,
streamId: streamId
)

self.eventListener([
"type": "track",
"track": pluginMediaTrack.getJSON(),
"streamId": pluginMediaStream!.id,
"stream": pluginMediaStream!.getJSON()
])
}

/** Called when the SignalingState changed. */

// TODO: remove on M75
Expand Down Expand Up @@ -747,24 +781,4 @@ class PluginRTCPeerConnection : NSObject, RTCPeerConnectionDelegate {
]
])
}

/** New track as been added. */
func peerConnection(_ peerConnection: RTCPeerConnection, didAdd rtpReceiver: RTCRtpReceiver, streams:[RTCMediaStream]) {

NSLog("PluginRTCPeerConnection | onaddtrack")

// TODO why streams.count is 0 and should it trigger addtrack
// TODO why NSLog streamId cause crash need weak ?
let streamId : String = streams.count > 0 ? streams[0].streamId : "";

let track = PluginMediaStreamTrack(
rtcMediaStreamTrack: rtpReceiver.track!,
streamId: streamId
)

self.eventListener([
"type": "track",
"track": track.getJSON()
])
}
}

0 comments on commit dff0bdb

Please sign in to comment.