8000 Unified plan gettracks (#420) · next-coder/flutter-webrtc@cf9f632 · GitHub
[go: up one dir, main page]

Skip to content

Commit cf9f632

Browse files
itsthetasteRBTVee24
and
RBTVee24
authored
Unified plan gettracks (flutter-webrtc#420)
* - add method to lookup the track in the transceivers - tidy a few names * remove the verbose comments * - don't try and add a mediaStream if we don't have any - when adding a track to a stream, also look in the connections transceivers for the track * tidy up Co-authored-by: RBTVee24 <rbt@vee24.com>
1 parent a0a43e9 commit cf9f632

File tree

4 files changed

+43
-10
lines changed

4 files changed

+43
-10
lines changed

android/src/main/java/com/cloudwebrtc/webrtc/MethodCallHandlerImpl.java

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -981,7 +981,9 @@ MediaStream getStreamForId(String id, String peerConnectionId) {
981981
MediaStream stream = null;
982982
if (peerConnectionId.length() > 0) {
983983
PeerConnectionObserver pco = mPeerConnectionObservers.get(peerConnectionId);
984-
stream = pco.remoteStreams.get(id);
984+
if (pco != null) {
985+
stream = pco.remoteStreams.get(id);
986+
}
985987
} else {
986988
for (Entry<String, PeerConnectionObserver> entry : mPeerConnectionObservers
987989
.entrySet()) {
@@ -1006,6 +1008,11 @@ private MediaStreamTrack getTrackForId(String trackId) {
10061008
for (Entry<String, PeerConnectionObserver> entry : mPeerConnectionObservers.entrySet()) {
10071009
PeerConnectionObserver pco = entry.getValue();
10081010
track = pco.remoteTracks.get(trackId);
1011+
1012+
if (track == null) {
1013+
track = pco.getTransceiversTrack(trackId);
1014+
}
1015+
10091016
if (track != null) {
10101017
break;
10111018
}
@@ -1128,8 +1135,8 @@ public void mediaStreamTrackSetVolume(final String id, final double volume) {
11281135
}
11291136
}
11301137

1131-
public void mediaStreamAddTrack(final String streaemId, final String trackId, Result result) {
1132-
MediaStream mediaStream = localStreams.get(streaemId);
1138+
public void mediaStreamAddTrack(final String streamId, final String trackId, Result result) {
1139+
MediaStream mediaStream = localStreams.get(streamId);
11331140
if (mediaStream != null) {
11341141
MediaStreamTrack track = getTrackForId(trackId);//localTracks.get(trackId);
11351142
if (track != null) {
@@ -1139,16 +1146,16 @@ public void mediaStreamAddTrack(final String streaemId, final String trackId, Re
11391146
mediaStream.addTrack((VideoTrack) track);
11401147
}
11411148
} else {
1142-
resultError("mediaStreamAddTrack", "mediaStreamAddTrack() tracking [" + trackId + "] is null", result);
1149+
resultError("mediaStreamAddTrack", "mediaStreamAddTrack() track [" + trackId + "] is null", result);
11431150
}
11441151
} else {
1145-
resultError("mediaStreamAddTrack", "mediaStreamAddTrack() streamId [" + streaemId + "] is null", result);
1152+
resultError("mediaStreamAddTrack", "mediaStreamAddTrack() stream [" + streamId + "] is null", result);
11461153
}
11471154
result.success(null);
11481155
}
11491156

1150-
public void mediaStreamRemoveTrack(final String streaemId, final String trackId, Result result) {
1151-
MediaStream mediaStream = localStreams.get(streaemId);
1157+
public void mediaStreamRemoveTrack(final String streamId, final String trackId, Result result) {
1158+
MediaStream mediaStream = localStreams.get(streamId);
11521159
if (mediaStream != null) {
11531160
MediaStreamTrack track = localTracks.get(trackId);
11541161
if (track != null) {
@@ -1161,7 +1168,7 @@ public void mediaStreamRemoveTrack(final String streaemId, final String trackId,
11611168
resultError("mediaStreamRemoveTrack", "mediaStreamAddTrack() track [" + trackId + "] is null", result);
11621169
}
11631170
} else {
1164-
resultError("mediaStreamRemoveTrack", "mediaStreamAddTrack() track [" + trackId + "] is null", result);
1171+
resultError("mediaStreamRemoveTrack", "mediaStreamAddTrack() stream [" + streamId + "] is null", result);
11651172
}
11661173
result.success(null);
11671174
}

android/src/main/java/com/cloudwebrtc/webrtc/PeerConnectionObserver.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -997,4 +997,20 @@ public void getTransceivers(Result result) {
997997
params.putArray("transceivers", transceiversParams.toArrayList());
998998
result.success(params.toMap());
999999
}
1000+
1001+
protected MediaStreamTrack getTransceiversTrack(String trackId) {
1002+
MediaStreamTrack track = null;
1003+
List<RtpTransceiver> transceivers = peerConnection.getTransceivers();
1004+
for (RtpTransceiver transceiver : transceivers) {
1005+
RtpReceiver receiver = transceiver.getReceiver();
1006+
if (receiver != null) {
1007+
if (receiver.track() != null && receiver.track().id().equals(trackId)) {
1008+
track = receiver.track();
1009+
break;
1010+
}
1011+
}
1012+
}
1013+
return track;
1014+
}
1015+
10001016
}

common/darwin/Classes/FlutterRTCPeerConnection.m

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -547,7 +547,9 @@ - (void)peerConnection:(RTCPeerConnection *)peerConnection
547547
}
548548

549549
peerConnection.remoteTracks[rtpReceiver.track.trackId] = rtpReceiver.track;
550-
peerConnection.remoteStreams[mediaStreams[0].streamId] = mediaStreams[0];
550+
if (mediaStreams.count > 0) {
551+
peerConnection.remoteStreams[mediaStreams[0].streamId] = mediaStreams[0];
552+
}
551553

552554
eventSink(event);
553555
}

common/darwin/Classes/FlutterWebRTCPlugin.m

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,7 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult) result
382382

383383
RTCMediaStream *stream = self.localStreams[streamId];
384384
if (stream) {
385-
RTCMediaStreamTrack *track = self.localTracks[trackId];
385+
RTCMediaStreamTrack *track = [self trackForId: trackId];
386386
if(track != nil) {
387387
if([track isKindOfClass:[RTCAudioTrack class]]) {
388388
RTCAudioTrack *audioTrack = (RTCAudioTrack *)track;
@@ -994,6 +994,14 @@ - (RTCMediaStreamTrack*)trackForId:(NSString*)trackId {
994994
if (!track) {
995995
for (RTCPeerConnection *peerConnection in _peerConnections.allValues) {
996996
track = peerConnection.remoteTracks[trackId];
997+
if (!track) {
998+
for (RTCRtpTransceiver *transceiver in peerConnection.transceivers) {
999+
if (transceiver.receiver.track != nil && [transceiver.receiver.track.trackId isEqual:trackId]) {
1000+
track = transceiver.receiver.track;
1001+
break;
1002+
}
1003+
}
1004+
}
9971005
if (track) {
9981006
break;
9991007
}

0 commit comments

Comments
 (0)
0