makeRemote function
Implementation
RemoteStream makeRemote(MediaStream stream, Transport transport) {
var remote = RemoteStream();
remote.stream = stream;
remote.audio = true;
remote.video = Layer.none;
remote._videoPreMute = Layer.high;
var select = () {
var call = {
'streamId': remote.id,
'video': layerStringType[remote.video],
'audio': remote.audio,
};
if (transport.api == null) {
log.warn('api datachannel not ready yet');
}
if (transport.api == null ||
(transport.api != null &&
transport.api?.state != RTCDataChannelState.RTCDataChannelOpen)) {
/// queue call if we aren't open yet
transport.onapiopen = () {
transport.api?.send(RTCDataChannelMessage(jsonEncoder.convert(call)));
};
}
transport.api?.send(RTCDataChannelMessage(jsonEncoder.convert(call)));
};
remote.preferLayer = (Layer layer) {
remote.video = layer;
select();
};
remote.mute = (kind) {
if (kind == 'audio') {
remote.audio = false;
} else if (kind == 'video') {
remote._videoPreMute = remote.video;
remote.video = Layer.none;
}
select();
};
remote.unmute = (kind) {
if (kind == 'audio') {
remote.audio = true;
} else if (kind == 'video') {
remote.video = remote._videoPreMute;
}
select();
};
return remote;
}