Expose RTPReceiver for getting track statistics. (#162)
This commit is contained in:
@@ -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}');
|
||||||
|
|||||||
@@ -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');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,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
|
||||||
|
|||||||
@@ -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,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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()');
|
||||||
|
|||||||
Reference in New Issue
Block a user