Repository: openmeetings Updated Branches: refs/heads/master bdfbdc80a -> 4fe5705f1
[OPENMEETINGS-1785] video resize should work as expected Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/4fe5705f Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/4fe5705f Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/4fe5705f Branch: refs/heads/master Commit: 4fe5705f16607b83f3f9cb572d4800663446691c Parents: bdfbdc8 Author: Maxim Solodovnik <solomax...@gmail.com> Authored: Fri Dec 22 18:00:11 2017 +0700 Committer: Maxim Solodovnik <solomax...@gmail.com> Committed: Fri Dec 22 18:00:32 2017 +0700 ---------------------------------------------------------------------- .../core/remote/ScopeApplicationAdapter.java | 12 +++++ .../openmeetings/db/entity/basic/Client.java | 3 ++ .../db/entity/room/StreamClient.java | 6 ++- .../flex/org/apache/openmeetings/OmVideo.as | 54 ++++++++++---------- .../apache/openmeetings/web/room/room-base.js | 8 ++- 5 files changed, 53 insertions(+), 30 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4fe5705f/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java ---------------------------------------------------------------------- diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java index 27f9e4b..8434faf 100644 --- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java +++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java @@ -1006,4 +1006,16 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp Client cl = getApp().getOmClientBySid(c.getSid()); return new CheckDto(cl); } + + public void resize(Double width, Double height) { + if (width == null || height == null) { + return; + } + IConnection current = Red5.getConnectionLocal(); + StreamClient c = sessionManager.get(IClientUtil.getId(current.getClient())); + if (c == null) { + return; + } + sessionManager.update(c.setWidth(width.intValue()).setHeight(height.intValue())); + } } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4fe5705f/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 8781a7b..c73032d 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 @@ -414,6 +414,9 @@ public class Client implements IClient { boolean avFound = false; for (String _uid : streams) { StreamClient rc = mgr.get(_uid); + if (rc == null) { + continue; + } Type t = rc.getType(); if (Type.room == t) { avFound = true; http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4fe5705f/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/StreamClient.java ---------------------------------------------------------------------- diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/StreamClient.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/StreamClient.java index 4731e69..2c5e9a6 100644 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/StreamClient.java +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/StreamClient.java @@ -98,8 +98,9 @@ public class StreamClient implements IClient { return width; } - public void setWidth(int width) { + public StreamClient setWidth(int width) { this.width = width; + return this; } @Override @@ -107,8 +108,9 @@ public class StreamClient implements IClient { return height; } - public void setHeight(int height) { + public StreamClient setHeight(int height) { this.height = height; + return this; } @Override http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4fe5705f/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 7b4077b..3ba4ec1 100644 --- a/openmeetings-flash/src/main/flex/org/apache/openmeetings/OmVideo.as +++ b/openmeetings-flash/src/main/flex/org/apache/openmeetings/OmVideo.as @@ -189,35 +189,37 @@ public class OmVideo { if (ns !== null){ reset(); } - this.mode = _mode; - this.mic = _mic; - createStream(); + nc.call("resize", new Responder(function ():void { + this.mode = _mode; + this.mic = _mic; + createStream(); - ns.publish(name, (mode === BROADCAST) ? LIVE : mode); - ns.attachCamera(cam); - attachCamera(cam); - if (cam !== null) { - var videoStreamSettings:VideoStreamSettings = null; - debug("codec = " + params.videoCodec); - if (params.videoCodec === CODEC_H264) { - var vss:H264VideoStreamSettings = new H264VideoStreamSettings(); - vss.setProfileLevel(H264Profile.BASELINE, H264Level.LEVEL_5_1); - videoStreamSettings = vss; - } else { - videoStreamSettings = new VideoStreamSettings(); + ns.publish(name, (mode === BROADCAST) ? LIVE : mode); + ns.attachCamera(cam); + attachCamera(cam); + if (cam !== null) { + var videoStreamSettings:VideoStreamSettings = null; + debug("codec = " + params.videoCodec); + if (params.videoCodec === CODEC_H264) { + var vss:H264VideoStreamSettings = new H264VideoStreamSettings(); + vss.setProfileLevel(H264Profile.BASELINE, H264Level.LEVEL_5_1); + videoStreamSettings = vss; + } else { + videoStreamSettings = new VideoStreamSettings(); + } + videoStreamSettings.setQuality(cam.bandwidth, cam.quality); + videoStreamSettings.setKeyFrameInterval(cam.keyFrameInterval); + debug("::camera settings ", cam.keyFrameInterval, cam.width, cam.height, cam.fps); + videoStreamSettings.setMode(cam.width, cam.height, cam.fps); + ns.videoStreamSettings = videoStreamSettings; } - videoStreamSettings.setQuality(cam.bandwidth, cam.quality); - videoStreamSettings.setKeyFrameInterval(cam.keyFrameInterval); - debug("::camera settings ", cam.keyFrameInterval, cam.width, cam.height, cam.fps); - videoStreamSettings.setMode(cam.width, cam.height, cam.fps); - ns.videoStreamSettings = videoStreamSettings; - } - ns.attachAudio(mic); - _setVolume(volume); + ns.attachAudio(mic); + _setVolume(volume); - if (f !== null) { - f.call(); - } + if (f !== null) { + f.call(); + } + }), cam === null ? 0 : cam.width, cam === null ? 0 : cam.height); } private function _connect(_url:String, callback:Function):void { http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4fe5705f/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room-base.js ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room-base.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room-base.js index e294017..c856ee0 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room-base.js +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room-base.js @@ -342,12 +342,16 @@ var Video = (function() { } } function _refresh(_opts) { - if (swf[0].refresh !== undefined) { + if (typeof(swf[0].refresh) === 'function') { const opts = _opts || {}; if (!Room.getOptions().interview && !isNaN(opts.width)) { _resizeDlg(opts.width, opts.height); } - swf[0].refresh(opts); + try { + swf[0].refresh(opts); + } catch (e) { + //swf might throw + } } } function _setRights(_r) {