minor tweaks & cleanup

This commit is contained in:
David Zhao
2021-08-04 22:52:16 -07:00
parent 86fc303e61
commit 8cd7546d2f
4 changed files with 54 additions and 42 deletions
+1
View File
@@ -9,6 +9,7 @@ export 'src/participant/remote_participant.dart';
export 'src/proto/livekit_models.pbenum.dart';
export 'src/proto/livekit_rtc.pbenum.dart';
export 'src/participant/local_participant.dart';
export 'src/track/options.dart';
export 'src/track/track.dart';
export 'src/track/video_track.dart';
export 'src/track/local_audio_track.dart';
+47 -39
View File
@@ -38,58 +38,66 @@ class LocalParticipant extends Participant {
Future<TrackPublication> publishAudioTrack(LocalAudioTrack track) async {
if (audioTracks.values.any(
(element) => element.track?.mediaTrack.id == track.mediaTrack.id)) {
throw new TrackPublishError('track already exists');
return Future.error(TrackPublishError('track already exists'));
}
var trackInfo = await _engine.addTrack(
cid: track.getCid(), name: track.name, kind: track.kind);
var stream = await getMediaStream();
var transceiverInit = new RTCRtpTransceiverInit(
direction: TransceiverDirection.SendOnly,
streams: [stream],
);
track.transceiver = await _engine.publisher?.pc.addTransceiver(
track: track.mediaTrack,
kind: track.mediaType,
init: transceiverInit,
);
try {
var trackInfo = await _engine.addTrack(
cid: track.getCid(), name: track.name, kind: track.kind);
var stream = await getMediaStream();
var transceiverInit = new RTCRtpTransceiverInit(
direction: TransceiverDirection.SendOnly,
streams: [stream],
);
track.transceiver = await _engine.publisher?.pc.addTransceiver(
track: track.mediaTrack,
kind: track.mediaType,
init: transceiverInit,
);
var pub = new LocalTrackPublication(trackInfo, track, this);
addTrackPublication(pub);
notifyListeners();
var pub = new LocalTrackPublication(trackInfo, track, this);
addTrackPublication(pub);
notifyListeners();
return pub;
return pub;
} catch (e) {
return Future.error(e);
}
}
/// publish a video track to the room
Future<TrackPublication> publishVideoTrack(LocalVideoTrack track) async {
if (audioTracks.values.any(
(element) => element.track?.mediaTrack.id == track.mediaTrack.id)) {
throw new TrackPublishError('track already exists');
return Future.error(TrackPublishError('track already exists'));
}
var trackInfo = await _engine.addTrack(
cid: track.getCid(), name: track.name, kind: track.kind);
var stream = await getMediaStream();
if (stream == null) {
return Future.error(TrackPublishError());
try {
var trackInfo = await _engine.addTrack(
cid: track.getCid(), name: track.name, kind: track.kind);
var stream = await getMediaStream();
if (stream == null) {
return Future.error(TrackPublishError());
}
var transceiverInit = new RTCRtpTransceiverInit(
direction: TransceiverDirection.SendOnly,
streams: [stream],
);
// TODO: video encodings and simulcast
track.transceiver = await _engine.publisher?.pc.addTransceiver(
track: track.mediaTrack,
kind: track.mediaType,
init: transceiverInit,
);
var pub = new LocalTrackPublication(trackInfo, track, this);
addTrackPublication(pub);
notifyListeners();
return pub;
} catch (e) {
return Future.error(e);
}
var transceiverInit = new RTCRtpTransceiverInit(
direction: TransceiverDirection.SendOnly,
streams: [stream],
);
// TODO: video encodings and simulcast
track.transceiver = await _engine.publisher?.pc.addTransceiver(
track: track.mediaTrack,
kind: track.mediaType,
init: transceiverInit,
);
var pub = new LocalTrackPublication(trackInfo, track, this);
addTrackPublication(pub);
notifyListeners();
return pub;
}
unpublishTrack(Track track) {
+3 -3
View File
@@ -65,7 +65,7 @@ class Participant extends ChangeNotifier {
DateTime get joinedAt {
var pi = _participantInfo;
if (pi != null) {
return DateTime.fromMillisecondsSinceEpoch((pi.joinedAt as int) * 1000,
return DateTime.fromMillisecondsSinceEpoch(pi.joinedAt.toInt() * 1000,
isUtc: true);
}
return DateTime.now();
@@ -82,9 +82,9 @@ class Participant extends ChangeNotifier {
return audioTracks.values.first.muted;
}
bool get hasAudio => audioTracks.length > 0;
bool get hasAudio => audioTracks.isNotEmpty;
bool get hasVideo => videoTracks.length > 0;
bool get hasVideo => videoTracks.isNotEmpty;
/// tracks that are subscribed to
List<TrackPublication> get subscribedTracks {
@@ -12,12 +12,14 @@ class RemoteTrackPublication extends TrackPublication {
VideoQuality get videoQuality => _videoQuality;
set videoQuality(VideoQuality val) {
if (val == _videoQuality) return;
_videoQuality = val;
_sendUpdateTrackSettings();
}
bool get enabled => !_disabled;
set enabled(bool val) {
if (_disabled == !val) return;
_disabled = !val;
_sendUpdateTrackSettings();
}
@@ -30,6 +32,7 @@ class RemoteTrackPublication extends TrackPublication {
}
set subscribed(bool val) {
if (_unsubscribed == !val) return;
_unsubscribed = !val;
_sendUpdateTrackSettings();
}