You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2018/09/30 16:57:47 UTC
[openmeetings] branch master updated: [OPENMEETINGS-1649] refresh
seems to work
This is an automated email from the ASF dual-hosted git repository.
solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git
The following commit(s) were added to refs/heads/master by this push:
new cf7aceb [OPENMEETINGS-1649] refresh seems to work
cf7aceb is described below
commit cf7acebbc2a575e4ffed9a10c897f5ed7d7b49a9
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Sun Sep 30 23:57:35 2018 +0700
[OPENMEETINGS-1649] refresh seems to work
---
.../apache/openmeetings/core/remote/KStream.java | 32 +++++++++++--------
.../openmeetings/core/remote/KurentoHandler.java | 6 +++-
.../apache/openmeetings/web/room/raw-settings.js | 4 +--
.../openmeetings/web/room/raw-video-manager.js | 13 ++------
.../org/apache/openmeetings/web/room/raw-video.js | 37 +++++++---------------
5 files changed, 40 insertions(+), 52 deletions(-)
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KStream.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KStream.java
index cc23bc3..71858e3 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KStream.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KStream.java
@@ -53,7 +53,7 @@ public class KStream implements IKStream {
private final String uid;
private final MediaPipeline pipeline;
private final Long roomId;
- private final WebRtcEndpoint outgoingMedia;
+ private WebRtcEndpoint outgoingMedia;
private final ConcurrentMap<String, WebRtcEndpoint> incomingMedia = new ConcurrentHashMap<>();
//FIXME TODO multiple streams from client
@@ -64,6 +64,9 @@ public class KStream implements IKStream {
this.roomId = c.getRoomId();
//TODO Min/MaxVideoSendBandwidth
//TODO Min/Max Audio/Video RecvBandwidth
+ }
+
+ private void initOutMedia(final KurentoHandler h) {
outgoingMedia = createEndpoint(h, this);
//TODO add logic here
outgoingMedia.addMediaFlowOutStateChangeListener(new EventListener<MediaFlowOutStateChangeEvent>() {
@@ -71,13 +74,17 @@ public class KStream implements IKStream {
public void onEvent(MediaFlowOutStateChangeEvent event) {
log.warn("MediaFlowOutStateChange {}", event.getState());
if (MediaFlowState.NOT_FLOWING == event.getState()) {
- //FIXME TODO release resources
+ outgoingMedia.release();
}
}
});
}
public KStream startBroadcast(final KurentoHandler h, final Client c, final String sdpOffer) {
+ if (outgoingMedia != null) {
+ outgoingMedia.release();
+ }
+ initOutMedia(h);
videoResponse(h, this, sdpOffer);
WebSocketHelper.sendRoom(new TextRoomMessage(c.getRoomId(), c, RoomMessage.Type.rightUpdated, c.getUid()));
WebSocketHelper.sendRoomOthers(roomId, uid, newKurentoMsg()
@@ -174,6 +181,15 @@ public class KStream implements IKStream {
}
}
+ public void stopBroadcast() {
+ outgoingMedia.release();
+ WebSocketHelper.sendAll(newKurentoMsg()
+ .put("id", "broadcastStopped")
+ .put("uid", uid)
+ .toString()
+ );
+ }
+
@Override
public void release() {
log.debug("PARTICIPANT {}: Releasing resources", uid);
@@ -193,17 +209,7 @@ public class KStream implements IKStream {
}
});
}
- outgoingMedia.release(new Continuation<Void>() {
- @Override
- public void onSuccess(Void result) throws Exception {
- log.trace("PARTICIPANT {}: Released outgoing EP", KStream.this.uid);
- }
-
- @Override
- public void onError(Throwable cause) throws Exception {
- log.warn("USER {}: Could not release outgoing EP", KStream.this.uid);
- }
- });
+ outgoingMedia.release();
}
public void addCandidate(IceCandidate candidate, String name) {
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KurentoHandler.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KurentoHandler.java
index eac2458..0b78bbd 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KurentoHandler.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KurentoHandler.java
@@ -291,7 +291,11 @@ public class KurentoHandler {
c.toggle(a);
if (!isBroadcasting(c)) {
//close
- leaveRoom(cm.update(c.removeStream(c.getUid())));
+ KStream s = getByUid(c.getUid());
+ if (s != null) {
+ cm.update(c.removeStream(c.getUid()));
+ s.stopBroadcast();
+ }
WebSocketHelper.sendRoom(new TextRoomMessage(c.getRoomId(), c, RoomMessage.Type.rightUpdated, c.getUid()));
//FIXME TODO update interview buttons
} else if (!broadcasting) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-settings.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-settings.js
index 75bcd12..07aaf61 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-settings.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-settings.js
@@ -87,8 +87,8 @@ var VideoSettings = (function() {
if (typeof(avSettings) === 'function') {
avSettings(_s);
}
- if (refr && typeof(VideoManager) !== 'undefined' && o.uid) {
- VideoManager.refresh(o.uid, s.video);
+ if (refr && typeof(VideoManager) === 'object' && o.uid) {
+ VideoManager.refresh(o.uid);
}
}
function _clear(_ms) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-manager.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-manager.js
index 556693b..826e47f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-manager.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-manager.js
@@ -120,21 +120,13 @@ var VideoManager = (function() {
const cl = JSON.parse(JSON.stringify(c)), s = c.streams[i];
delete cl.streams;
$.extend(cl, s);
- if (cl.self && VideoUtil.isSharing(cl) || VideoUtil.isRecording(cl)) {
+ if (cl.self && (VideoUtil.isSharing(cl) || VideoUtil.isRecording(cl))) {
continue;
}
const _id = VideoUtil.getVid(cl.uid)
, av = VideoUtil.hasAudio(cl) || VideoUtil.hasVideo(cl)
, v = $('#' + _id);
- if (av && v.length !== 1 && !!cl.self) {
- /**** FIXME TODO LETS reduce round-trips
- self.sendMessage({
- id: 'joinRoom' //TODO stream uid
- });
-
- Video().init(cl, VideoUtil.getPos(VideoUtil.getRects(VID_SEL), cl.width, cl.height + 25));
- ******/
- } else if (av && v.length === 1) {
+ if (av && v.length === 1) {
v.data().update(cl);
} else if (!av && v.length === 1) {
_closeV(v);
@@ -148,7 +140,6 @@ var VideoManager = (function() {
const w = $(windows[i]);
w.data().setRights(c.rights);
}
-
}
if (c.streams.length === 0) {
// check for non inited video window
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js
index 8d01743..1b9c362 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js
@@ -265,31 +265,11 @@ var Video = (function() {
v.on("remove", _cleanup);
vc = v.find('.video');
vc.width(_w).height(_h);
- //broadcast
- const o = Room.getOptions();
- if (c.self) {
- o.cam = c.cam;
- o.mic = c.mic;
- o.mode = 'broadcast';
- } else {
- o.mode = 'play';
- }
- o.av = c.activities.join();
- o.rights = o.rights.join();
- o.width = c.width;
- o.height = c.height;
- o.sid = c.sid;
- o.uid = c.uid;
- o.cuid = c.cuid;
- o.userId = c.user.id;
- o.broadcastId = c.broadcastId;
- o.type = c.type;
- delete o.keycode;
const hasVideo = VideoUtil.hasVideo(c)
- , imgUrl = 'profile/' + o.userId + '?anti=' + new Date().getTime(); //TODO add normal URL ????
+ , imgUrl = 'profile/' + c.user.id + '?anti=' + new Date().getTime(); //TODO add normal URL ????
video = $(hasVideo ? '<video>' : '<audio>').attr('id', 'vid' + _id)
- .width(o.width).height(o.height)
+ .width(c.width).height(c.height)
.prop('autoplay', true).prop('controls', false);
if (hasVideo) {
video.attr('poster', imgUrl);
@@ -328,7 +308,9 @@ var Video = (function() {
const name = _getName();
v.dialog('option', 'title', name).parent().find('.ui-dialog-titlebar').attr('title', name);
}
- function _refresh(_opts) {
+ function _refresh() {
+ _cleanup();
+ _createSendPeer();
}
function _setRights(_r) {
}
@@ -349,8 +331,13 @@ var Video = (function() {
aCtx.close();
aCtx = null;
}
- _micActivity(0);
- lm.hide();
+ if (video.length > 0) {
+ video[0].srcObject = null;
+ }
+ if (!!lm && lm.length > 0) {
+ _micActivity(0);
+ lm.hide();
+ }
if (!!level) {
level.dispose();
level = null;