implemented tracks, local & remote participants

This commit is contained in:
David Zhao
2021-07-21 23:30:24 -07:00
parent 0a682f7831
commit b18c37fd1a
14 changed files with 468 additions and 16 deletions
+41
View File
@@ -1,3 +1,8 @@
import 'package:flutter_webrtc/flutter_webrtc.dart';
import 'package:uuid/uuid.dart';
import '../proto/livekit_models.pb.dart';
class TrackDimension {
int width;
int height;
@@ -6,5 +11,41 @@ class TrackDimension {
}
class Track {
String name;
TrackType kind;
MediaStreamTrack mediaTrack;
String? sid;
RTCRtpTransceiver? transceiver;
String? _cid;
Track(this.kind, this.name, this.mediaTrack);
RTCRtpMediaType get mediaType {
switch (kind) {
case TrackType.AUDIO:
return RTCRtpMediaType.RTCRtpMediaTypeAudio;
case TrackType.VIDEO:
return RTCRtpMediaType.RTCRtpMediaTypeVideo;
// this should never happen
default:
return RTCRtpMediaType.RTCRtpMediaTypeAudio;
}
}
String getCid() {
var cid = _cid;
if (cid == null) {
cid = mediaTrack.id;
}
if (cid == null) {
var uuid = Uuid();
cid = uuid.v4();
_cid = cid;
}
return cid;
}
stop() {
mediaTrack.stop();
}
}