8000 Add transceiver to onTrack events. (#373) · tmthecoder/flutter-webrtc@de9e757 · GitHub
[go: up one dir, main page]

Skip to content

Commit de9e757

Browse files
authored
Add transceiver to onTrack events. (flutter-webrtc#373)
* Add transceiver to onTrack events. * Remove unnecessary log printing.
1 parent c4f8a91 commit de9e757

File tree

5 files changed

+31
-11
lines changed

5 files changed

+31
-11
lines changed

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,13 @@ public void onAddTrack(RtpReceiver receiver, MediaStream[] mediaStreams) {
429429
params.putArray("streams", streams.toArrayList());
430430
params.putMap("track", mediaTrackToMap(receiver.track()));
431431
params.putMap("receiver", rtpReceiverToMap(receiver));
432+
433+
List<RtpTransceiver> transceivers = peerConnection.getTransceivers();
434+
for( RtpTransceiver transceiver : transceivers ) {
435+
if(transceiver.getReceiver() != null && receiver.id().equals(transceiver.getReceiver().id())) {
436+
params.putMap("transceiver", transceiverToMap(transceiver));
437+
}
438+
}
432439
sendEvent(params);
433440
}
434441

common/darwin/Classes/FlutterRTCPeerConnection.m

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -512,12 +512,20 @@ - (void)peerConnection:(RTCPeerConnection *)peerConnection
512512
}
513513
FlutterEventSink eventSink = peerConnection.eventSink;
514514
if(eventSink){
515-
eventSink(@{
516-
@"event": @"onTrack",
517-
@"track": [self mediaTrackToMap:rtpReceiver.track],
518-
@"receiver": [self receiverToMap:rtpReceiver],
519-
@"streams": streams,
520-
});
515+
NSMutableDictionary *event = [NSMutableDictionary dictionary];
516+
[event addEntriesFromDictionary:@{
517+
@"event": @"onTrack",
518+
@"track": [self mediaTrackToMap:rtpReceiver.track],
519+
@"receiver": [self receiverToMap:rtpReceiver],
520+
@"streams": streams,
521+
}];
522+
523+
for(RTCRtpTransceiver *transceiver in peerConnection.transceivers) {
524+
if(transceiver.receiver != nil && [transceiver.receiver.receiverId isEqualToString:rtpReceiver.receiverId]) {
525+
[event setValue:[self transceiverToMap:transceiver] forKey:@"transceiver"];
526+
}
527+
}
528+
eventSink(event);
521529
}
522530
}
523531

common/darwin/Classes/FlutterWebRTCPlugin.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,6 @@
3030
- (NSDictionary*)mediaStreamToMap:(RTCMediaStream *)stream ownerTag:(NSString*)ownerTag;
3131
- (NSDictionary*)mediaTrackToMap:(RTCMediaStreamTrack*)track;
3232
- (NSDictionary*)receiverToMap:(RTCRtpReceiver*)receiver;
33+
- (NSDictionary*)transceiverToMap:(RTCRtpTransceiver*)transceiver;
3334

3435
@end

common/darwin/Classes/FlutterWebRTCPlugin.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1228,7 +1228,7 @@ - (NSDictionary*)mediaStreamToMap:(RTCMediaStream *)stream ownerTag:(NSString*)o
12281228
}
12291229

12301230
for (RTCMediaStreamTrack* track in stream.videoTracks) {
1231-
[audioTracks addObject:[self mediaTrackToMap:track]];
1231+
[videoTracks addObject:[self mediaTrackToMap:track]];
12321232
}
12331233

12341234
return @{

lib/src/native/rtc_peerconnection_impl.dart

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,11 +178,15 @@ class RTCPeerConnectionNative extends RTCPeerConnection {
178178
case 'onTrack':
179179
var params = map['streams'] as List<dynamic>;
180180
var streams = params.map((e) => MediaStreamNative.fromMap(e)).toList();
181+
var transceiver = map['transceiver'] != null
182+
? RTCRtpTransceiverNative.fromMap(map['transceiver'],
183+
peerConnectionId: _peerConnectionId)
184+
: null;
181185
onTrack?.call(RTCTrackEvent(
182-
receiver: RTCRtpReceiverNative.fromMap(map['receiver']),
183-
streams: streams,
184-
track: MediaStreamTrackNative.fromMap(map['track']),
185-
));
186+
receiver: RTCRtpReceiverNative.fromMap(map['receiver']),
187+
streams: streams,
188+
track: MediaStreamTrackNative.fromMap(map['track']),
189+
transceiver: transceiver));
186190
break;
187191

188192
/// Other

0 commit comments

Comments
 (0)
0