Expose RTPReceiver for getting track statistics. (#162)

This commit is contained in:
CloudWebRTC
2022-09-07 15:15:32 +08:00
committed by GitHub
parent 8b88f9cb34
commit 044606223e
6 changed files with 28 additions and 30 deletions
+1
View File
@@ -289,6 +289,7 @@ class Room extends DisposableChangeNotifier with EventsEmittable<RoomEvent> {
event.track, event.track,
event.stream, event.stream,
trackSid, trackSid,
receiver: event.receiver,
); );
} on TrackSubscriptionExceptionEvent catch (event) { } on TrackSubscriptionExceptionEvent catch (event) {
logger.severe('addSubscribedMediaTrack() throwed ${event}'); logger.severe('addSubscribedMediaTrack() throwed ${event}');
+7 -4
View File
@@ -74,8 +74,9 @@ class RemoteParticipant extends Participant<RemoteTrackPublication> {
Future<void> addSubscribedMediaTrack( Future<void> addSubscribedMediaTrack(
rtc.MediaStreamTrack mediaTrack, rtc.MediaStreamTrack mediaTrack,
rtc.MediaStream stream, rtc.MediaStream stream,
String trackSid, String trackSid, {
) async { rtc.RTCRtpReceiver? receiver,
}) async {
logger.fine('addSubscribedMediaTrack()'); logger.fine('addSubscribedMediaTrack()');
// If publication doesn't exist yet... // If publication doesn't exist yet...
@@ -112,10 +113,12 @@ class RemoteParticipant extends Participant<RemoteTrackPublication> {
final RemoteTrack track; final RemoteTrack track;
if (pub.kind == lk_models.TrackType.VIDEO) { if (pub.kind == lk_models.TrackType.VIDEO) {
// video track // video track
track = RemoteVideoTrack(pub.name, pub.source, stream, mediaTrack); track = RemoteVideoTrack(pub.name, pub.source, stream, mediaTrack,
receiver: receiver);
} else if (pub.kind == lk_models.TrackType.AUDIO) { } else if (pub.kind == lk_models.TrackType.AUDIO) {
// audio track // audio track
track = RemoteAudioTrack(pub.name, pub.source, stream, mediaTrack); track = RemoteAudioTrack(pub.name, pub.source, stream, mediaTrack,
receiver: receiver);
} else { } else {
throw UnexpectedStateException('Unknown track type'); throw UnexpectedStateException('Unknown track type');
} }
+5 -6
View File
@@ -12,17 +12,16 @@ import '../web/_audio_api.dart' if (dart.library.html) '../web/_audio_html.dart'
class RemoteAudioTrack extends RemoteTrack class RemoteAudioTrack extends RemoteTrack
with AudioTrack, RemoteAudioManagementMixin { with AudioTrack, RemoteAudioManagementMixin {
// //
RemoteAudioTrack( RemoteAudioTrack(String name, TrackSource source, rtc.MediaStream stream,
String name, rtc.MediaStreamTrack track,
TrackSource source, {rtc.RTCRtpReceiver? receiver})
rtc.MediaStream stream, : super(
rtc.MediaStreamTrack track,
) : super(
name, name,
lk_models.TrackType.AUDIO, lk_models.TrackType.AUDIO,
source, source,
stream, stream,
track, track,
receiver: receiver,
); );
@override @override
+5 -7
View File
@@ -5,18 +5,16 @@ import '../../types/other.dart';
import '../track.dart'; import '../track.dart';
abstract class RemoteTrack extends Track { abstract class RemoteTrack extends Track {
RemoteTrack( RemoteTrack(String name, lk_models.TrackType kind, TrackSource source,
String name, rtc.MediaStream stream, rtc.MediaStreamTrack track,
lk_models.TrackType kind, {rtc.RTCRtpReceiver? receiver})
TrackSource source, : super(
rtc.MediaStream stream,
rtc.MediaStreamTrack track,
) : super(
name, name,
kind, kind,
source, source,
stream, stream,
track, track,
receiver: receiver,
); );
@override @override
+5 -6
View File
@@ -7,16 +7,15 @@ import 'remote.dart';
class RemoteVideoTrack extends RemoteTrack with VideoTrack { class RemoteVideoTrack extends RemoteTrack with VideoTrack {
// //
RemoteVideoTrack( RemoteVideoTrack(String name, TrackSource source, rtc.MediaStream stream,
String name, rtc.MediaStreamTrack track,
TrackSource source, {rtc.RTCRtpReceiver? receiver})
rtc.MediaStream stream, : super(
rtc.MediaStreamTrack track,
) : super(
name, name,
lk_models.TrackType.VIDEO, lk_models.TrackType.VIDEO,
source, source,
stream, stream,
track, track,
receiver: receiver,
); );
} }
+5 -7
View File
@@ -45,13 +45,11 @@ abstract class Track extends DisposableChangeNotifier
rtc.RTCRtpSender? get sender => transceiver?.sender; rtc.RTCRtpSender? get sender => transceiver?.sender;
Track( rtc.RTCRtpReceiver? receiver;
this.name,
this.kind, Track(this.name, this.kind, this.source, this._mediaStream,
this.source, this._mediaStreamTrack,
this._mediaStream, {this.receiver}) {
this._mediaStreamTrack,
) {
// Any event emitted will trigger ChangeNotifier // Any event emitted will trigger ChangeNotifier
events.listen((event) { events.listen((event) {
logger.fine('[TrackEvent] $event, will notifyListeners()'); logger.fine('[TrackEvent] $event, will notifyListeners()');