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);
}
}
}