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 <[email protected]>
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);
                }
        }
 }

Reply via email to