From d707bea2031a2dc951da813873724ead75f43e4d Mon Sep 17 00:00:00 2001 From: rtm516 Date: Tue, 20 Aug 2024 10:43:17 +0100 Subject: [PATCH] Improve candidate loading --- core/build.gradle.kts | 2 +- .../core/webrtc/CustomDatagramTransport.java | 14 ++++++++++++++ .../core/webrtc/RtcWebsocketClient.java | 14 +------------- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 504bca8..4f650ca 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -23,7 +23,7 @@ dependencies { api("org.bouncycastle:bctls-jdk18on:1.78.1") api("org.bouncycastle:bcpkix-jdk18on:1.78.1") - // For sctp4j + // Needs https://github.com/steely-glint/srtplight and https://github.com/pipe/sctp4j to be installed locally api("pe.pi:sctp4j:1.0.6") } diff --git a/core/src/main/java/com/rtm516/mcxboxbroadcast/core/webrtc/CustomDatagramTransport.java b/core/src/main/java/com/rtm516/mcxboxbroadcast/core/webrtc/CustomDatagramTransport.java index de65310..558117c 100644 --- a/core/src/main/java/com/rtm516/mcxboxbroadcast/core/webrtc/CustomDatagramTransport.java +++ b/core/src/main/java/com/rtm516/mcxboxbroadcast/core/webrtc/CustomDatagramTransport.java @@ -34,6 +34,8 @@ public int getSendLimit() { @Override public int receive(byte[] buf, int off, int len, int waitMillis) throws IOException { System.out.println("receive! " + new String(buf, off, len)); +// System.out.println("receive! " + bytesToHex(buf)); + DatagramPacket packet = new DatagramPacket(buf, off, len); socket.receive(packet); return packet.getLength(); @@ -42,6 +44,7 @@ public int receive(byte[] buf, int off, int len, int waitMillis) throws IOExcept @Override public void send(byte[] buf, int off, int len) throws IOException { System.out.println("send! " + new String(buf, off, len)); +// System.out.println("send! " + bytesToHex(buf)); socket.send(new DatagramPacket(buf, off, len, component.getDefaultCandidate().getTransportAddress())); } @@ -49,4 +52,15 @@ public void send(byte[] buf, int off, int len) throws IOException { public void close() { socket.close(); } + + private static final char[] HEX_ARRAY = "0123456789ABCDEF".toCharArray(); + public static String bytesToHex(byte[] bytes) { + char[] hexChars = new char[bytes.length * 2]; + for (int j = 0; j < bytes.length; j++) { + int v = bytes[j] & 0xFF; + hexChars[j * 2] = HEX_ARRAY[v >>> 4]; + hexChars[j * 2 + 1] = HEX_ARRAY[v & 0x0F]; + } + return new String(hexChars); + } } diff --git a/core/src/main/java/com/rtm516/mcxboxbroadcast/core/webrtc/RtcWebsocketClient.java b/core/src/main/java/com/rtm516/mcxboxbroadcast/core/webrtc/RtcWebsocketClient.java index 19f5b94..a31e3cb 100644 --- a/core/src/main/java/com/rtm516/mcxboxbroadcast/core/webrtc/RtcWebsocketClient.java +++ b/core/src/main/java/com/rtm516/mcxboxbroadcast/core/webrtc/RtcWebsocketClient.java @@ -344,7 +344,7 @@ private void handleCandidateAdd(String sessionId, String message) throws Unknown // agent.candidate // activeSessions.get(sessionId).addCandidate(message); component.addUpdateRemoteCandidates(parseCandidate(message, component.getParentStream())); -// component.updateRemoteCandidates(); + component.updateRemoteCandidates(); } @@ -397,18 +397,6 @@ public static RemoteCandidate parseCandidate(String value, IceMediaStream stream private void initialize(JsonObject message) { var turnAuthServers = message.getAsJsonArray("TurnAuthServers"); -// rtcConfig = new RTCConfiguration(); -// for (JsonElement authServerElement : turnAuthServers) { -// var authServer = authServerElement.getAsJsonObject(); -// var server = new RTCIceServer(); -// server.username = authServer.get("Username").getAsString(); -// server.password = authServer.get("Password").getAsString(); -// authServer.getAsJsonArray("Urls").forEach(url -> server.urls.add(url.getAsString())); -// rtcConfig.iceServers.add(server); -// } -// -// pendingSession = new PeerSession(this, rtcConfig); - agent = new Agent(); agent.setTrickling(true);