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({