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/11/09 17:28:00 UTC
[openmeetings] branch master updated: [OPENMEETINGS-1649] test
recording seems to be fixed
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 06c6f6c [OPENMEETINGS-1649] test recording seems to be fixed
06c6f6c is described below
commit 06c6f6c8bba8b6b87b793503a25dc5bb24d4c89e
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Sat Nov 10 00:27:46 2018 +0700
[OPENMEETINGS-1649] test recording seems to be fixed
---
.../openmeetings/core/remote/KTestStream.java | 45 ++++++++++++++--------
.../openmeetings/core/remote/KurentoHandler.java | 7 +++-
.../apache/openmeetings/web/room/raw-settings.js | 4 +-
3 files changed, 36 insertions(+), 20 deletions(-)
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KTestStream.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KTestStream.java
index b6a9b0a..414e61d 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KTestStream.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KTestStream.java
@@ -60,7 +60,7 @@ public class KTestStream implements IKStream {
private ScheduledFuture<?> recHandle;
private int recTime;
- public KTestStream(final KurentoHandler h, IWsClient _c, JSONObject msg, MediaPipeline pipeline) {
+ public KTestStream(IWsClient _c, JSONObject msg, MediaPipeline pipeline) {
this.pipeline = pipeline;
this.uid = _c.getUid();
webRtcEndpoint = new WebRtcEndpoint.Builder(pipeline).build();
@@ -84,7 +84,7 @@ public class KTestStream implements IKStream {
});
recorder.addStoppedListener(evt -> {
WebSocketHelper.sendClient(_c, newTestKurentoMsg().put("id", "recStopped"));
- release(h);
+ releaseRecorder();
});
switch (profile) {
case WEBM:
@@ -125,7 +125,7 @@ public class KTestStream implements IKStream {
});
}
- public void play(final KurentoHandler h, final IWsClient _c, JSONObject msg, MediaPipeline pipeline) {
+ public void play(final IWsClient _c, JSONObject msg, MediaPipeline pipeline) {
this.pipeline = pipeline;
webRtcEndpoint = new WebRtcEndpoint.Builder(pipeline).build();
player = new PlayerEndpoint.Builder(pipeline, recPath).build();
@@ -134,11 +134,11 @@ public class KTestStream implements IKStream {
log.info("Media session started {}", evt);
player.addErrorListener(event -> {
log.info("ErrorEvent for player with uid '{}': {}", _c.getUid(), event.getDescription());
- sendPlayEnd(h, _c);
+ sendPlayEnd(_c);
});
player.addEndOfStreamListener(event -> {
log.info("EndOfStreamEvent for player with uid '{}'", _c.getUid());
- sendPlayEnd(h, _c);
+ sendPlayEnd(_c);
});
player.play();
});
@@ -173,9 +173,9 @@ public class KTestStream implements IKStream {
});
}
- private void sendPlayEnd(final KurentoHandler h, IWsClient _c) {
+ private void sendPlayEnd(IWsClient _c) {
WebSocketHelper.sendClient(_c, newTestKurentoMsg().put("id", "playStopped"));
- release(h);
+ releasePlayer();
}
private static MediaProfileSpecType getProfile(JSONObject msg) {
@@ -195,24 +195,37 @@ public class KTestStream implements IKStream {
recPath = OmFileHelper.getRecUri(f);
}
- @Override
- public void release(KurentoHandler h) {
- if (webRtcEndpoint != null) {
- webRtcEndpoint.release();
- webRtcEndpoint = null;
- }
+ private void releasePipeline() {
if (pipeline != null) {
pipeline.release();
pipeline = null;
}
+ }
+
+ private void releaseRecorder() {
+ releasePipeline();
+ if (recorder != null) {
+ recorder.release();
+ recorder = null;
+ }
+ }
+
+ private void releasePlayer() {
+ releasePipeline();
if (player != null) {
player.release();
player = null;
}
- if (recorder != null) {
- recorder.release();
- recorder = null;
+ }
+
+ @Override
+ public void release(KurentoHandler h) {
+ if (webRtcEndpoint != null) {
+ webRtcEndpoint.release();
+ webRtcEndpoint = null;
}
+ releasePlayer();
+ releaseRecorder();
h.testsByUid.remove(uid);
}
}
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 e171e3c..c143aa2 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
@@ -179,7 +179,10 @@ public class KurentoHandler {
);
break;
case "record":
- user = new KTestStream(this, _c, msg, createTestPipeline());
+ if (user != null) {
+ user.release(this);
+ }
+ user = new KTestStream(_c, msg, createTestPipeline());
testsByUid.put(_c.getUid(), user);
break;
case "iceCandidate":
@@ -198,7 +201,7 @@ public class KurentoHandler {
break;
case "play":
if (user != null) {
- user.play(this, _c, msg, createTestPipeline());
+ user.play(_c, msg, createTestPipeline());
}
break;
}
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 f08d860..924977d 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
@@ -456,11 +456,11 @@ var VideoSettings = (function() {
rtcPeer = new kurentoUtils.WebRtcPeer.WebRtcPeerRecvonly(
options
, function(error) {
- if (error) {
+ if (!this.cleaned && error) {
return OmUtil.error(error);
}
rtcPeer.generateOffer(function(error, offerSdp) {
- if (error) {
+ if (!this.cleaned && error) {
return OmUtil.error('Error generating the offer');
}
OmUtil.sendMessage({