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 2020/12/23 03:04:41 UTC

[openmeetings] branch master updated: [OPENMEETINGS-2239] two-way audio-only SIP 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 a1a621b  [OPENMEETINGS-2239] two-way audio-only SIP seems to work
a1a621b is described below

commit a1a621b8abe5b23335c1c7a471aa33597dbe59ab
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Wed Dec 23 10:04:25 2020 +0700

    [OPENMEETINGS-2239] two-way audio-only SIP seems to work
---
 .../openmeetings/core/remote/AbstractStream.java   | 10 ++++-----
 .../org/apache/openmeetings/core/remote/KRoom.java |  2 +-
 .../apache/openmeetings/core/remote/KStream.java   | 24 ++++++++--------------
 3 files changed, 15 insertions(+), 21 deletions(-)

diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/AbstractStream.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/AbstractStream.java
index 2dd7230..64ac599 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/AbstractStream.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/AbstractStream.java
@@ -48,13 +48,13 @@ public abstract class AbstractStream {
 
 	public abstract void release(boolean remove);
 
-	public static WebRtcEndpoint createWebRtcEndpoint(MediaPipeline pipeline, Boolean send) {
+	public static WebRtcEndpoint createWebRtcEndpoint(MediaPipeline pipeline, Boolean recv) {
 		WebRtcEndpoint.Builder builder = new WebRtcEndpoint.Builder(pipeline);
-		if (send != null) {
-			if (send) {
-				builder.sendonly();
-			} else {
+		if (recv != null) {
+			if (recv) {
 				builder.recvonly();
+			} else {
+				builder.sendonly();
 			}
 		}
 		return builder.build();
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KRoom.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KRoom.java
index bc90f9b..3de644f 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KRoom.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KRoom.java
@@ -250,7 +250,7 @@ public class KRoom {
 					.filter(Client::isSip)
 					.findAny()
 					.ifPresent(c -> {
-						StreamDesc sd = c.addStream(StreamType.WEBCAM, Activity.AUDIO, Activity.VIDEO); // TODO check this
+						StreamDesc sd = c.addStream(StreamType.WEBCAM, Activity.AUDIO);
 						sd.setWidth(120).setHeight(90);
 						c.restoreActivities(sd);
 						KStream stream = join(sd, processor.getHandler());
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 ffd91e1..5c1f5fd 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
@@ -283,16 +283,14 @@ public class KStream extends AbstractStream implements ISipCallbacks {
 		endpoint.addTag("uid", uid);
 	}
 
-	private RtpEndpoint getRtpEndpoint(MediaPipeline pipeline, String direction) {
-		RtpEndpoint endpoint = new RtpEndpoint.Builder(pipeline)
-				//.withProperties(Properties.of(direction, Boolean.TRUE))
-				.build();
+	private RtpEndpoint getRtpEndpoint(MediaPipeline pipeline) {
+		RtpEndpoint endpoint = new RtpEndpoint.Builder(pipeline).build();
 		setTags(endpoint, uid);
 		return endpoint;
 	}
 
-	private WebRtcEndpoint createEndpoint(String sid, String uid, boolean send) {
-		WebRtcEndpoint endpoint = createWebRtcEndpoint(pipeline, send);
+	private WebRtcEndpoint createEndpoint(String sid, String uid, boolean recv) {
+		WebRtcEndpoint endpoint = createWebRtcEndpoint(pipeline, recv);
 		setTags(endpoint, uid);
 
 		endpoint.addIceCandidateFoundListener(evt -> kHandler.sendClient(sid
@@ -578,13 +576,11 @@ public class KStream extends AbstractStream implements ISipCallbacks {
 
 	@Override
 	public void onRegisterOk() {
-		rtpEndpoint = getRtpEndpoint(pipeline, sipClient ? "recvonly" : "sendonly");
+		rtpEndpoint = getRtpEndpoint(pipeline);
 		OfferOptions options = new OfferOptions();
 		options.setOfferToReceiveAudio(hasAudio);
 		options.setOfferToReceiveVideo(hasVideo);
-		String offer = null;
 		if (!sipClient) {
-			offer = rtpEndpoint.generateOffer(options);
 			if (hasAudio) {
 				outgoingMedia.connect(rtpEndpoint, MediaType.AUDIO);
 			}
@@ -592,15 +588,15 @@ public class KStream extends AbstractStream implements ISipCallbacks {
 				outgoingMedia.connect(rtpEndpoint, MediaType.VIDEO);
 			}
 		}
-		sipProcessor.get().invite(kRoom.getRoom(), offer);
+		sipProcessor.get().invite(kRoom.getRoom(), null);
 	}
 
 	@Override
 	public void onInviteOk(String sdp, Consumer<String> answerConsumer) {
+		String answer = rtpEndpoint.processOffer(sdp.replace("a=sendrecv", sipClient ? "a=sendonly" : "a=recvonly"));
+		answerConsumer.accept(answer);
+		log.debug(answer);
 		if (sipClient) {
-			String answer = rtpEndpoint.processOffer(sdp);
-			answerConsumer.accept(answer);
-			log.debug(answer);
 			StreamDesc sd = kHandler.getStreamProcessor().getBySid(sid).getStream(uid);
 			try {
 				outgoingMedia = rtpEndpoint;
@@ -609,8 +605,6 @@ public class KStream extends AbstractStream implements ISipCallbacks {
 			} catch (Exception e) {
 				log.error("Unexpected error");
 			}
-		} else {
-			rtpEndpoint.processAnswer(sdp);
 		}
 	}
 }