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.stream,
trackSid,
receiver: event.receiver,
);
} on TrackSubscriptionExceptionEvent catch (event) {
logger.severe('addSubscribedMediaTrack() throwed ${event}');
+7 -4
View File
@@ -74,8 +74,9 @@ class RemoteParticipant extends Participant<RemoteTrackPublication> {
Future<void> addSubscribedMediaTrack(
rtc.MediaStreamTrack mediaTrack,
rtc.MediaStream stream,
String trackSid,
) async {
String trackSid, {
rtc.RTCRtpReceiver? receiver,
}) async {
logger.fine('addSubscribedMediaTrack()');
// If publication doesn't exist yet...
@@ -112,10 +113,12 @@ class RemoteParticipant extends Participant<RemoteTrackPublication> {
final RemoteTrack track;
if (pub.kind == lk_models.TrackType.VIDEO) {
// 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) {
// audio track
track = RemoteAudioTrack(pub.name, pub.source, stream, mediaTrack);
track = RemoteAudioTrack(pub.name, pub.source, stream, mediaTrack,
receiver: receiver);
} else {
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
with AudioTrack, RemoteAudioManagementMixin {
//
RemoteAudioTrack(
String name,
TrackSource source,
rtc.MediaStream stream,
rtc.MediaStreamTrack track,
) : super(
RemoteAudioTrack(String name, TrackSource source, rtc.MediaStream stream,
rtc.MediaStreamTrack track,
{rtc.RTCRtpReceiver? receiver})
: super(
name,
lk_models.TrackType.AUDIO,
source,
stream,
track,
receiver: receiver,
);
@override
+5 -7
View File
@@ -5,18 +5,16 @@ import '../../types/other.dart';
import '../track.dart';
abstract class RemoteTrack extends Track {
RemoteTrack(
String name,
lk_models.TrackType kind,
TrackSource source,
rtc.MediaStream stream,
rtc.MediaStreamTrack track,
) : super(
RemoteTrack(String name, lk_models.TrackType kind, TrackSource source,
rtc.MediaStream stream, rtc.MediaStreamTrack track,
{rtc.RTCRtpReceiver? receiver})
: super(
name,
kind,
source,
stream,
track,
receiver: receiver,
);
@override
+5 -6
View File
@@ -7,16 +7,15 @@ import 'remote.dart';
class RemoteVideoTrack extends RemoteTrack with VideoTrack {
//
RemoteVideoTrack(
String name,
TrackSource source,
rtc.MediaStream stream,
rtc.MediaStreamTrack track,
) : super(
RemoteVideoTrack(String name, TrackSource source, rtc.MediaStream stream,
rtc.MediaStreamTrack track,
{rtc.RTCRtpReceiver? receiver})
: super(
name,
lk_models.TrackType.VIDEO,
source,
stream,
track,
receiver: receiver,
);
}
+5 -7
View File
@@ -45,13 +45,11 @@ abstract class Track extends DisposableChangeNotifier
rtc.RTCRtpSender? get sender => transceiver?.sender;
Track(
this.name,
this.kind,
this.source,
this._mediaStream,
this._mediaStreamTrack,
) {
rtc.RTCRtpReceiver? receiver;
Track(this.name, this.kind, this.source, this._mediaStream,
this._mediaStreamTrack,
{this.receiver}) {
// Any event emitted will trigger ChangeNotifier
events.listen((event) {
logger.fine('[TrackEvent] $event, will notifyListeners()');