diff --git a/webrtc-android-framework/src/main/java/io/antmedia/webrtcandroidframework/api/IWebRTCClient.java b/webrtc-android-framework/src/main/java/io/antmedia/webrtcandroidframework/api/IWebRTCClient.java index 9ac35367..14c24b32 100644 --- a/webrtc-android-framework/src/main/java/io/antmedia/webrtcandroidframework/api/IWebRTCClient.java +++ b/webrtc-android-framework/src/main/java/io/antmedia/webrtcandroidframework/api/IWebRTCClient.java @@ -54,9 +54,10 @@ static WebRTCClientBuilder builder() { * @param subscriberCode: code of the subscriber * @param streamName: name of the stream * @param mainTrackId: id of the main track + * @param metaData: metaData of the stream */ void publish(String streamId, String token, boolean videoCallEnabled, boolean audioCallEnabled, - String subscriberId, String subscriberCode, String streamName, String mainTrackId); + String subscriberId, String subscriberCode, String streamName, String mainTrackId, String metaData); /** @@ -119,8 +120,9 @@ void publish(String streamId, String token, boolean videoCallEnabled, boolean au * @param subscriberId: id of the subscriber * @param subscriberCode: code of the subscriber * @param streamName: name of the stream + * @param metaData: metaData of the stream */ - void joinToConferenceRoom(String roomId, String streamId, boolean videoCallEnabled, boolean audioCallEnabled, String token, String subscriberId, String subscriberCode, String streamName); + void joinToConferenceRoom(String roomId, String streamId, boolean videoCallEnabled, boolean audioCallEnabled, String token, String subscriberId, String subscriberCode, String streamName, String metaData); /** * This is used to join a conference room as player diff --git a/webrtc-android-framework/src/main/java/io/antmedia/webrtcandroidframework/core/WebRTCClient.java b/webrtc-android-framework/src/main/java/io/antmedia/webrtcandroidframework/core/WebRTCClient.java index 8e6c929f..f8ed1d82 100644 --- a/webrtc-android-framework/src/main/java/io/antmedia/webrtcandroidframework/core/WebRTCClient.java +++ b/webrtc-android-framework/src/main/java/io/antmedia/webrtcandroidframework/core/WebRTCClient.java @@ -288,7 +288,7 @@ public void createReconnectorRunnables() { Log.d(TAG, "Reconnect attempt for publish"); wsHandler.stop(peerInfo.id); - wsHandler.startPublish(peerInfo.id, peerInfo.token, peerInfo.videoCallEnabled, peerInfo.audioCallEnabled, peerInfo.subscriberId, peerInfo.subscriberCode, peerInfo.streamName, peerInfo.mainTrackId); + wsHandler.startPublish(peerInfo.id, peerInfo.token, peerInfo.videoCallEnabled, peerInfo.audioCallEnabled, peerInfo.subscriberId, peerInfo.subscriberCode, peerInfo.streamName, peerInfo.mainTrackId, peerInfo.metaData); } @@ -365,7 +365,7 @@ public void createReconnectorRunnables() { Log.d(TAG, "Reconnect attempt for publish"); wsHandler.stop(peerInfo.id); - wsHandler.startPublish(peerInfo.id, peerInfo.token, peerInfo.videoCallEnabled, peerInfo.audioCallEnabled, peerInfo.subscriberId, peerInfo.subscriberCode, peerInfo.streamName, peerInfo.mainTrackId); + wsHandler.startPublish(peerInfo.id, peerInfo.token, peerInfo.videoCallEnabled, peerInfo.audioCallEnabled, peerInfo.subscriberId, peerInfo.subscriberCode, peerInfo.streamName, peerInfo.mainTrackId, peerInfo.metaData); } else if (peerInfo.mode.equals(Mode.PLAY)) { @@ -436,10 +436,11 @@ public void joinToConferenceRoom(String roomId, String streamId) { "", "", "", - roomId); + roomId, + null); } - public void joinToConferenceRoom(String roomId, String streamId, boolean videoCallEnabled, boolean audioCallEnabled, String token, String subscriberId, String subscriberCode, String streamName) { + public void joinToConferenceRoom(String roomId, String streamId, boolean videoCallEnabled, boolean audioCallEnabled, String token, String subscriberId, String subscriberCode, String streamName, String metaData) { this.roomId = roomId; @@ -448,7 +449,8 @@ public void joinToConferenceRoom(String roomId, String streamId, boolean videoCa subscriberId, subscriberCode, streamName, - roomId); + roomId, + metaData); } public void joinToConferenceRoom(String roomId) { @@ -983,7 +985,7 @@ private void publishPlayIfRequested() { Mode peerMode = peerInfo.mode; if (peerMode == Mode.PUBLISH && peerInfo.peerConnection == null) { Log.i(TAG, "Processing publish request for peer streamId: " + peerInfo.id); - wsHandler.startPublish(peerInfo.id, peerInfo.token, peerInfo.videoCallEnabled, peerInfo.audioCallEnabled, peerInfo.subscriberId, peerInfo.subscriberCode, peerInfo.streamName, peerInfo.mainTrackId); + wsHandler.startPublish(peerInfo.id, peerInfo.token, peerInfo.videoCallEnabled, peerInfo.audioCallEnabled, peerInfo.subscriberId, peerInfo.subscriberCode, peerInfo.streamName, peerInfo.mainTrackId, peerInfo.metaData); } if (peerMode == Mode.PLAY && peerInfo.peerConnection == null) { @@ -995,12 +997,12 @@ private void publishPlayIfRequested() { public void publish(String streamId) { publish(streamId, null, true, true, - null, null, streamId, null); + null, null, streamId, null, null); } public void publish(String streamId, String token, boolean videoCallEnabled, boolean audioCallEnabled, - String subscriberId, String subscriberCode, String streamName, String mainTrackId) { + String subscriberId, String subscriberCode, String streamName, String mainTrackId, String metaData) { Log.i(TAG, "Publish: " + streamId); this.handler.post(() -> { @@ -1009,7 +1011,7 @@ public void publish(String streamId, String token, boolean videoCallEnabled, boo } }); - createPeerInfo(streamId, token, videoCallEnabled, audioCallEnabled, subscriberId, "", subscriberCode, streamName, mainTrackId, null, false, Mode.PUBLISH); + createPeerInfo(streamId, token, videoCallEnabled, audioCallEnabled, subscriberId, "", subscriberCode, streamName, mainTrackId, metaData, false, Mode.PUBLISH); init(); if(!PermissionHandler.checkPublishPermissions(config.activity, config.bluetoothEnabled, videoCallEnabled || this.config.videoCallEnabled)){ @@ -1022,7 +1024,7 @@ public void publish(String streamId, String token, boolean videoCallEnabled, boo if (isWebSocketConnected()) { Log.i(TAG, "Publish request sent through ws for stream: " + streamId); - wsHandler.startPublish(streamId, token, videoCallEnabled, audioCallEnabled, subscriberId, subscriberCode, streamName, mainTrackId); + wsHandler.startPublish(streamId, token, videoCallEnabled, audioCallEnabled, subscriberId, subscriberCode, streamName, mainTrackId, metaData); } else { Log.w(TAG, "Websocket is not connected. Set publish requested. It will be processed when ws is connected."); } diff --git a/webrtc-android-framework/src/main/java/io/antmedia/webrtcandroidframework/websocket/WebSocketConstants.java b/webrtc-android-framework/src/main/java/io/antmedia/webrtcandroidframework/websocket/WebSocketConstants.java index a5fe6f05..71d6e265 100644 --- a/webrtc-android-framework/src/main/java/io/antmedia/webrtcandroidframework/websocket/WebSocketConstants.java +++ b/webrtc-android-framework/src/main/java/io/antmedia/webrtcandroidframework/websocket/WebSocketConstants.java @@ -735,4 +735,4 @@ private WebSocketConstants() { public static final int WEBSOCKET_CONNECTION_TIMEOUT = 10000; //10 sec -} \ No newline at end of file +} diff --git a/webrtc-android-framework/src/main/java/io/antmedia/webrtcandroidframework/websocket/WebSocketHandler.java b/webrtc-android-framework/src/main/java/io/antmedia/webrtcandroidframework/websocket/WebSocketHandler.java index 86405df6..f45708c0 100644 --- a/webrtc-android-framework/src/main/java/io/antmedia/webrtcandroidframework/websocket/WebSocketHandler.java +++ b/webrtc-android-framework/src/main/java/io/antmedia/webrtcandroidframework/websocket/WebSocketHandler.java @@ -379,7 +379,7 @@ public void getSubscriberList(String streamId, long offset, long size) { } } - public void startPublish(String streamId, String token, boolean videoEnabled, boolean audioEnabled, String subscriberId, String subscriberCode, String streamName, String mainTrackId){ + public void startPublish(String streamId, String token, boolean videoEnabled, boolean audioEnabled, String subscriberId, String subscriberCode, String streamName, String mainTrackId, String metaData){ checkIfCalledOnValidThread(); JSONObject json = new JSONObject(); try { @@ -392,6 +392,7 @@ public void startPublish(String streamId, String token, boolean videoEnabled, bo json.put(WebSocketConstants.VIDEO, videoEnabled); json.put(WebSocketConstants.AUDIO, audioEnabled); json.put(WebSocketConstants.MAIN_TRACK, mainTrackId); + json.put(WebSocketConstants.META_DATA, metaData); sendTextMessage(json.toString()); } catch (JSONException e) { diff --git a/webrtc-android-framework/src/test/java/io/antmedia/webrtcandroidframework/WebRTCClientTest.java b/webrtc-android-framework/src/test/java/io/antmedia/webrtcandroidframework/WebRTCClientTest.java index b59bc10b..1bd6d5d3 100644 --- a/webrtc-android-framework/src/test/java/io/antmedia/webrtcandroidframework/WebRTCClientTest.java +++ b/webrtc-android-framework/src/test/java/io/antmedia/webrtcandroidframework/WebRTCClientTest.java @@ -164,9 +164,9 @@ public void testStreamPublishParameters() { webRTCClient.setAudioEnabled(audioCallEnabled); webRTCClient.setVideoEnabled(videoCallEnabled); - webRTCClient.publish(streamId, token, videoCallEnabled, audioCallEnabled, subscriberId, subscriberCode, streamName, null); + webRTCClient.publish(streamId, token, videoCallEnabled, audioCallEnabled, subscriberId, subscriberCode, streamName, null, null); - verify(wsHandler, times(1)).startPublish(streamId, token, videoCallEnabled, audioCallEnabled, subscriberId, subscriberCode, streamName, null); + verify(wsHandler, times(1)).startPublish(streamId, token, videoCallEnabled, audioCallEnabled, subscriberId, subscriberCode, streamName, null, null); ArgumentCaptor jsonCaptor = ArgumentCaptor.forClass(String.class); verify(wsHandler, times(1)).sendTextMessage(jsonCaptor.capture()); @@ -337,7 +337,7 @@ public void testJoinRoomParameters() { verify(wsHandler, timeout(1000)).startPublish(streamId, "" , true, true - , "", "", "", roomName); + , "", "", "", roomName, null); webRTCClient.joinToConferenceRoom(roomName); verify(wsHandler, timeout(1000)).startPlay(roomName, "", null, "", "", "", "", false); @@ -696,7 +696,7 @@ public void testReconnection() { webRTCClient.play(playStreamId, "", null, "", "", ""); String publishStreamId = "publishStreamId"; - webRTCClient.publish(publishStreamId, "", true, true, "","", "", ""); + webRTCClient.publish(publishStreamId, "", true, true, "","", "", "", null); webRTCClient.onIceDisconnected(playStreamId); webRTCClient.onIceDisconnected(publishStreamId); @@ -708,7 +708,7 @@ public void testReconnection() { verify(webRTCClient, timeout(WebRTCClient.PEER_RECONNECTION_DELAY_MS + 1000).atLeast(2)).play(anyString(), anyString(), any(), anyString(), anyString(), anyString()); - verify(wsHandler, timeout(WebRTCClient.PEER_RECONNECTION_DELAY_MS + 1000).atLeast(1)).startPublish(anyString(),anyString(),anyBoolean(),anyBoolean(),anyString(),anyString(),anyString(),anyString()); + verify(wsHandler, timeout(WebRTCClient.PEER_RECONNECTION_DELAY_MS + 1000).atLeast(1)).startPublish(anyString(),anyString(),anyBoolean(),anyBoolean(),anyString(),anyString(),anyString(),anyString(),anyString()); } @@ -721,7 +721,7 @@ public void testWSAndListenerMessages() { webRTCClient.joinToConferenceRoom(room, streamId); verify(wsHandler, timeout(1000)).startPublish(streamId, "" , true, true - , "", "", "", room); + , "", "", "", room, null); webRTCClient.joinToConferenceRoom(room); verify(wsHandler, timeout(1000)).startPlay(room, "", null, "", "", "", "", false); @@ -1172,7 +1172,7 @@ public void tesHandlePublishPlayRequestWhenWSNotConnected() { String publisher1 = "publisher1"; webRTCClient.publish(publisher1); - verify(wsHandler, never()).startPublish(anyString(), anyString(), anyBoolean(), anyBoolean(), anyString(), anyString(), anyString(), anyString()); + verify(wsHandler, never()).startPublish(anyString(), anyString(), anyBoolean(), anyBoolean(), anyString(), anyString(), anyString(), anyString(), anyString()); assertEquals(1, webRTCClient.getPeersForTest().size()); WebRTCClient.PeerInfo publishPeer = webRTCClient.getPeersForTest().get(publisher1); @@ -1187,7 +1187,7 @@ public void tesHandlePublishPlayRequestWhenWSNotConnected() { assertEquals(player1, playPeer.id); webRTCClient.onWebSocketConnected(); - verify(wsHandler, times(1)).startPublish(eq(publishPeer.id), anyString(), anyBoolean(), anyBoolean(), anyString(), anyString(), anyString(), anyString()); + verify(wsHandler, times(1)).startPublish(eq(publishPeer.id), anyString(), anyBoolean(), anyBoolean(), anyString(), anyString(), anyString(), anyString(), anyString()); verify(wsHandler, times(1)).startPlay(eq(playPeer.id), anyString(), any(String[].class), anyString(), anyString(), anyString(), anyString(), anyBoolean()); } diff --git a/webrtc-android-framework/src/test/java/io/antmedia/webrtcandroidframework/WebSocketHandlerTest.java b/webrtc-android-framework/src/test/java/io/antmedia/webrtcandroidframework/WebSocketHandlerTest.java index 3ccccdea..d9a061e0 100644 --- a/webrtc-android-framework/src/test/java/io/antmedia/webrtcandroidframework/WebSocketHandlerTest.java +++ b/webrtc-android-framework/src/test/java/io/antmedia/webrtcandroidframework/WebSocketHandlerTest.java @@ -147,7 +147,7 @@ public void testStartPublish() { String streamName = "testStream"; String mainTrackId = "track123"; - webSocketHandler.startPublish(streamId, token, videoEnabled, audioEnabled, subscriberId, subscriberCode, streamName, mainTrackId); + webSocketHandler.startPublish(streamId, token, videoEnabled, audioEnabled, subscriberId, subscriberCode, streamName, mainTrackId, null); ArgumentCaptor jsonCaptor = ArgumentCaptor.forClass(String.class); verify(webSocketHandler, times(1)).sendTextMessage(jsonCaptor.capture()); @@ -163,6 +163,7 @@ public void testStartPublish() { json.put(WebSocketConstants.VIDEO, videoEnabled); json.put(WebSocketConstants.AUDIO, audioEnabled); json.put(WebSocketConstants.MAIN_TRACK, mainTrackId); + json.put(WebSocketConstants.META_DATA, null); } catch (JSONException e) { e.printStackTrace(); } diff --git a/webrtc-android-sample-app/src/main/java/io/antmedia/webrtc_android_sample_app/basic/ConferenceActivity.java b/webrtc-android-sample-app/src/main/java/io/antmedia/webrtc_android_sample_app/basic/ConferenceActivity.java index 4eb82de2..7629585a 100644 --- a/webrtc-android-sample-app/src/main/java/io/antmedia/webrtc_android_sample_app/basic/ConferenceActivity.java +++ b/webrtc-android-sample-app/src/main/java/io/antmedia/webrtc_android_sample_app/basic/ConferenceActivity.java @@ -201,7 +201,7 @@ public void joinLeaveRoom() { webRTCClient.joinToConferenceRoom(roomId); } else { - webRTCClient.joinToConferenceRoom(roomId, streamId, videoCallEnabled, audioCallEnabled, "", "", "", ""); + webRTCClient.joinToConferenceRoom(roomId, streamId, videoCallEnabled, audioCallEnabled, "", "", "", "", null); } } diff --git a/webrtc-android-sample-app/src/main/java/io/antmedia/webrtc_android_sample_app/basic/DynamicConferenceActivity.java b/webrtc-android-sample-app/src/main/java/io/antmedia/webrtc_android_sample_app/basic/DynamicConferenceActivity.java index 1c9f2646..4f81e3cf 100644 --- a/webrtc-android-sample-app/src/main/java/io/antmedia/webrtc_android_sample_app/basic/DynamicConferenceActivity.java +++ b/webrtc-android-sample-app/src/main/java/io/antmedia/webrtc_android_sample_app/basic/DynamicConferenceActivity.java @@ -201,7 +201,7 @@ public void joinLeaveRoom() { webRTCClient.joinToConferenceRoom(roomId); } else { - webRTCClient.joinToConferenceRoom(roomId, streamId, videoCallEnabled, audioCallEnabled, "", "", "", ""); + webRTCClient.joinToConferenceRoom(roomId, streamId, videoCallEnabled, audioCallEnabled, "", "", "", "", null); } }