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 2017/08/14 02:25:10 UTC
openmeetings git commit: [OPENMEETINGS-1644] av client is enhanced
Repository: openmeetings
Updated Branches:
refs/heads/master 68e54afc4 -> 9445be321
[OPENMEETINGS-1644] av client is enhanced
Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/9445be32
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/9445be32
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/9445be32
Branch: refs/heads/master
Commit: 9445be321f8ae4682a0e8eb1ebf7c8b2df46529f
Parents: 68e54af
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Sun Aug 13 21:12:46 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Sun Aug 13 21:12:46 2017 +0700
----------------------------------------------------------------------
.../openmeetings/db/entity/basic/Client.java | 15 +++++----
openmeetings-flash/src/main/flex/main.mxml | 33 ++++++++++++--------
.../flex/org/apache/openmeetings/OmVideo.as | 7 ++---
.../apache/openmeetings/web/room/RoomPanel.java | 14 ++++-----
.../org/apache/openmeetings/web/room/room.js | 30 ++++++++++++++----
.../openmeetings/web/room/wb/WbPanel.html | 2 +-
6 files changed, 64 insertions(+), 37 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/9445be32/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
index bb8907b..92d1504 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
@@ -295,15 +295,18 @@ public class Client implements IClient {
return this;
}
- public void addStream(String uid, String streamId, String broadcastId, Type type) {
- streams.add(new Stream(uid, streamId, broadcastId, type));
+ public Client addStream(String uid, String streamId, String broadcastId, Type type) {
+ if (broadcastId != null) {
+ streams.add(new Stream(uid, streamId, broadcastId, type));
+ }
+ return this;
}
- public void removeStream(String broadcastId) {
- if (broadcastId == null) {
- return;
+ public Client removeStream(String broadcastId) {
+ if (broadcastId != null) {
+ streams.remove(new Stream(null, null, broadcastId, Type.video));
}
- streams.remove(new Stream(null, null, broadcastId, Type.video));
+ return this;
}
public List<Stream> getStreams() {
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/9445be32/openmeetings-flash/src/main/flex/main.mxml
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/flex/main.mxml b/openmeetings-flash/src/main/flex/main.mxml
index 5e906a7..6c8aee2 100644
--- a/openmeetings-flash/src/main/flex/main.mxml
+++ b/openmeetings-flash/src/main/flex/main.mxml
@@ -45,6 +45,7 @@
private var video:OmVideo;
private var recName:String;
private var mic:Microphone = null;
+ private var activities:Array = [];
[Bindable]
private var interview:Boolean = false;
@@ -76,9 +77,9 @@
echoPath = getIntParam(params.echoPath, 128);
micRate = getIntParam(params.micRate, 22);
video = new OmVideo(videoDisplay, params);
+ activities = params.av == null ? [] : params.av.split(',');
switch (params.mode) {
- case 'settings':
- {
+ case 'settings': {
ExternalInterface.addCallback("getDevices", function ():Object {
return {
cams: Camera.names
@@ -113,25 +114,26 @@
ExternalInterface.call("VideoSettings.initSwf");
}
break;
- case OmVideo.BROADCAST:
- {
+ case OmVideo.BROADCAST: {
selectedCam = params.cam;
selectedMic = params.mic;
video.resize(Math.max(300, params.width), Math.max(200, params.height));
- attachCamera(function():void {
+ ExternalInterface.addCallback("update", function (c:Object):void {
+ debug("Client updated: ", c);
+ });
+ attachCamera(function ():void {
video.resize(params.width, params.height);
video.reset();
- var cam:Camera = getCam();
- video.attachCamera(cam);
var broadcastId:String = UIDUtil.createUID();
debug("BroadcastId = " + broadcastId);
- video.broadcast(broadcastId, cam, getMic());
+ video.broadcast(broadcastId
+ , activities.indexOf('broadcastV') > -1 ? getCam() : null
+ , activities.indexOf('broadcastA') > -1 ? getMic() : null);
ExternalInterface.call("VideoManager.resetSize", params.uid);
});
}
break;
- case OmVideo.PLAY:
- {
+ case OmVideo.PLAY: {
video.resize(params.width, params.height);
video.play(params.broadcastId); // TODO audio/video
}
@@ -207,7 +209,7 @@
}
debug("Camera selected:: " + selectedCam);
var cam:Camera = getCam();
- debug("Camera selected:: " + cam, cam.muted);
+ debug("Camera selected:: " + cam, cam == null ? '' : cam.muted);
if (cam != null) {
if (cam.muted) {
debug("Camera Muted");
@@ -220,6 +222,7 @@
debug("Unable to connect to active camera.");
break;
case 'Camera.Unmuted':
+ ExternalInterface.call("VideoSettings.allowRec", true);
callback();
break;
}
@@ -244,16 +247,19 @@
debug("Unable to connect to active microphone.");
} else {
ExternalInterface.call("VideoSettings.allowRec", true);
+ callback();
}
});
+ } else {
+ callback();
}
}
}
}
private function _attachCamera(cam:Camera):void {
- debug("_attachCamera():: muted ? " + cam.muted);
- if (cam.muted) {
+ debug("_attachCamera():: muted ? " + (cam == null ? '' : cam.muted));
+ if (cam != null && cam.muted) {
debug("Unable to connect to active camera.");
} else {
try {
@@ -284,6 +290,7 @@
}
private function camChanged(e:Event):void {
+ debug("camChanged");
attachCamera(settingsCameraCallback);
}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/9445be32/openmeetings-flash/src/main/flex/org/apache/openmeetings/OmVideo.as
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/flex/org/apache/openmeetings/OmVideo.as b/openmeetings-flash/src/main/flex/org/apache/openmeetings/OmVideo.as
index 86f5f12..ed4c7ee 100644
--- a/openmeetings-flash/src/main/flex/org/apache/openmeetings/OmVideo.as
+++ b/openmeetings-flash/src/main/flex/org/apache/openmeetings/OmVideo.as
@@ -136,10 +136,9 @@ public class OmVideo {
this.mode = mode;
createStream();
+ ns.attachCamera(cam);
+ attachCamera(cam);
if (cam != null) {
- ns.attachCamera(cam);
- attachCamera(cam);
-
var videoStreamSettings:VideoStreamSettings = null;
debug("codec = " + params.videoCodec);
if (params.videoCodec === CODEC_H264) {
@@ -155,8 +154,8 @@ public class OmVideo {
videoStreamSettings.setMode(cam.width, cam.height, cam.fps);
ns.videoStreamSettings = videoStreamSettings;
}
+ ns.attachAudio(mic);
if (mic != null) {
- ns.attachAudio(mic);
//FIXME !!! no mute !!! muteMicro(this.micMuted);
}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/9445be32/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
index 7fd3115..50af2a2 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
@@ -18,6 +18,7 @@
*/
package org.apache.openmeetings.web.room;
+import static org.apache.openmeetings.core.util.RoomHelper.videoJson;
import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
import static org.apache.openmeetings.web.app.Application.addUserToRoom;
import static org.apache.openmeetings.web.app.Application.exitRoom;
@@ -40,7 +41,6 @@ import java.util.Map.Entry;
import java.util.Set;
import java.util.UUID;
-import org.apache.openmeetings.core.util.RoomHelper;
import org.apache.openmeetings.core.util.WebSocketHelper;
import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
import org.apache.openmeetings.db.dao.log.ConferenceLogDao;
@@ -208,7 +208,7 @@ public class RoomPanel extends BasePanel {
for (Client c: getRoomClients(getRoom().getId()) ) {
boolean self = getClient().getUid().equals(c.getUid());
for (Client.Stream s : c.getStreams()) {
- JSONObject jo = RoomHelper.videoJson(c, self, c.getSid(), getBean(ISessionManager.class), s.getUid());
+ JSONObject jo = videoJson(c, self, c.getSid(), getBean(ISessionManager.class), s.getUid());
sb.append(String.format("VideoManager.play(%s);", jo));
}
}
@@ -417,7 +417,7 @@ public class RoomPanel extends BasePanel {
}
handler.appendJavaScript(String.format("VideoManager.close('%s', true);", obj.getString("uid")));
sharingUser = null;
- c.remove(Client.Activity.share);
+ update(c.remove(Client.Activity.share));
menu.update(handler);
}
break;
@@ -430,7 +430,7 @@ public class RoomPanel extends BasePanel {
return;
}
sharingUser = uid;
- c.set(Client.Activity.share);
+ update(c.set(Client.Activity.share));
menu.update(handler);
}
break;
@@ -469,11 +469,11 @@ public class RoomPanel extends BasePanel {
String broadcastId = obj.getString("streamName");
String streamId = obj.getString("streamId");
if (!self) {
- JSONObject jo = RoomHelper.videoJson(c, self, _c.getSid(), getBean(ISessionManager.class), uid);
+ JSONObject jo = videoJson(c, self, _c.getSid(), getBean(ISessionManager.class), uid);
handler.appendJavaScript(String.format("VideoManager.play(%s);", jo));
}
if (_c.getSid().equals(c.getSid())) {
- c.addStream(uid, streamId, broadcastId, type);
+ update(c.addStream(uid, streamId, broadcastId, type));
}
}
break;
@@ -486,7 +486,7 @@ public class RoomPanel extends BasePanel {
return;
}
if (getClient().getUid().equals(c.getUid())) {
- c.removeStream(obj.optString("broadcastId"));
+ update(c.removeStream(obj.optString("broadcastId")));
}
handler.appendJavaScript(String.format("VideoManager.close('%s');", obj.getString("uid")));
}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/9445be32/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
index 6d3e3d7..7125f6a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
@@ -24,12 +24,23 @@ var VideoUtil = (function() {
function _isSharing(c) {
return 'sharing' === c.type && c.screenActivities.indexOf('sharing') > -1;
}
+ function _isSharing(c) {
+ return 'sharing' === c.type && c.screenActivities.indexOf('sharing') > -1;
+ }
+ function _hasAudio(c) {
+ return c.activities.indexOf('broadcastA') > -1;
+ }
+ function _hasVideo(c) {
+ return c.activities.indexOf('broadcastV') > -1;
+ }
self.getVid = _getVid;
self.isSharing = _isSharing;
+ self.hasAudio = _hasAudio;
+ self.hasVideo = _hasVideo;
return self;
})();
var Video = (function() {
- var self = {}, c, box, v, vc, t, swf, size;
+ var self = {}, c, box, v, vc, t, swf, size, vol;
function _getName() {
return c.user.firstName + ' ' + c.user.lastName;
@@ -79,7 +90,7 @@ var Video = (function() {
if (!VideoUtil.isSharing(c)) {
v.parent().find('.ui-dialog-titlebar-buttonpane').append($('#video-volume-btn').children().clone());
var volume = v.parent().find('.dropdown-menu.video.volume');
- v.parent().find('.ui-dialog-titlebar-volume').click(function(e) {
+ vol = v.parent().find('.ui-dialog-titlebar-volume').click(function(e) {
e.stopImmediatePropagation();
volume.toggle();
}).dblclick(function(e) {
@@ -101,6 +112,9 @@ var Video = (function() {
handle.text(ui.value);
}
});
+ if (!VideoUtil.hasAudio(c)) {
+ vol.hide();
+ }
//TODO add mute, ADD refresh
}
vc = v.find('.video');
@@ -112,6 +126,7 @@ var Video = (function() {
o.mic = c.mic;
o.mode = 'broadcast';
o.uid = _uid;
+ o.av = c.activities.join();
} else {
o.mode = 'play';
o.uid = c.uid;
@@ -125,8 +140,13 @@ var Video = (function() {
swf.attr('width', _w).attr('height', _h);
}
function _update(_c) {
- // TODO check, update video
c = _c;
+ if (VideoUtil.hasAudio(c)) {
+ vol.show();
+ } else {
+ vol.hide();
+ }
+ swf[0].update(c);
}
self.update = _update;
@@ -146,9 +166,7 @@ var VideoManager = (function() {
}
function _update(c) {
var _id = VideoUtil.getVid(c.uid)
- , video = c.activities.indexOf('broadcastV') > -1
- , audio = c.activities.indexOf('broadcastA') > -1
- , av = audio || video
+ , av = VideoUtil.hasAudio(c) || VideoUtil.hasVideo(c)
, v = $('#' + _id);
if (av && v.length != 1 && !!c.self) {
Video().init(box, options.uid, c);
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/9445be32/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
index cf6df77..8ebb06b 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
@@ -103,7 +103,7 @@
<div wicket:message="title:79" class="ui-widget-header clickable om-icon big arrow"></div>
<div wicket:message="title:4" class="ui-widget-header clickable om-icon big settings"></div>
</div>
- <div id="wb-tools-readonly" class="tools readonly ui-state-active vertical clear" style="position: absolute; top: 20px; right: 0px;">
+ <div id="wb-tools-readonly" class="tools readonly ui-state-active vertical clear" style="position: absolute; top: 20px; right: 20px;">
<div class="bumper"></div>
<div wicket:message="title:557" class="ui-widget-header clickable om-icon big apointer"></div>
</div>