in openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessor.java [178:216]
public void onToggleActivity(Client c, Activity a) {
log.info("PARTICIPANT {}: trying to toggle activity {}", c, a);
if (!kHandler.isConnected()) {
return;
}
if (c.isAllowed(a)) {
if (a == Activity.AUDIO && !c.isMicEnabled()) {
return;
}
if (a == Activity.VIDEO && !c.isCamEnabled()) {
return;
}
if (a == Activity.AUDIO_VIDEO && !c.isMicEnabled() && !c.isCamEnabled()) {
return;
}
Optional<WebcamStreamDesc> cam = c.getCamStreams().findFirst();
if (cam.isPresent()) {
WebcamStreamDesc camStr = cam.get();
camStr.toggle(a);
if (!camStr.isBroadcasting()) {
KStream s = getByUid(camStr.getUid());
if (s != null) {
s.stopBroadcast();
}
c.removeStream(camStr.getUid());
}
cm.update(c);
WebSocketHelper.sendRoom(new TextRoomMessage(c.getRoomId(), c, RoomMessage.Type.RIGHT_UPDATED, c.getUid()));
} else {
StreamDesc sd = c.addStream(StreamType.WEBCAM, a);
log.debug("User {}: has started broadcast", sd.getUid());
kHandler.sendClient(sd.getSid(), newKurentoMsg()
.put("id", "broadcast")
.put("stream", sd.toJson(true))
.put(PARAM_ICE, kHandler.getTurnServers(c, false)));
}
}
}