Skip to content

Commit 59e2ec0

Browse files
committed
add new playback params
1 parent c201386 commit 59e2ec0

File tree

6 files changed

+106
-253
lines changed

6 files changed

+106
-253
lines changed

webrtc-android-framework/src/main/java/io/antmedia/webrtcandroidframework/api/IWebRTCClient.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,13 @@ void publish(String streamId, String token, boolean videoCallEnabled, boolean au
8686
*/
8787
void play(String streamId, String token, String[] tracks, String subscriberId, String subscriberCode, String viewerInfo);
8888

89+
/**
90+
* This is used to play a WebRTC stream with a parameter object
91+
*
92+
* @param params the play parameters
93+
*/
94+
void play(PlayParams params);
95+
8996
/**
9097
* This is used to join a peer to peer call
9198
*
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package io.antmedia.webrtcandroidframework.api;
2+
3+
public class PlayParams {
4+
private String streamId;
5+
private String token;
6+
private String[] tracks;
7+
private String subscriberId;
8+
private String subscriberName; // new field
9+
private String subscriberCode;
10+
private String viewerInfo;
11+
private boolean disableTracksByDefault; // new field
12+
13+
// Constructors
14+
public PlayParams() {}
15+
16+
public PlayParams(String streamId, String token, String[] tracks,
17+
String subscriberId, String subscriberName,
18+
String subscriberCode, String viewerInfo,
19+
boolean disableTracksByDefault) {
20+
this.streamId = streamId;
21+
this.token = token;
22+
this.tracks = tracks;
23+
this.subscriberId = subscriberId;
24+
this.subscriberName = subscriberName;
25+
this.subscriberCode = subscriberCode;
26+
this.viewerInfo = viewerInfo;
27+
this.disableTracksByDefault = disableTracksByDefault;
28+
}
29+
30+
// Getters and Setters
31+
public String getStreamId() { return streamId; }
32+
public void setStreamId(String streamId) { this.streamId = streamId; }
33+
34+
public String getToken() { return token; }
35+
public void setToken(String token) { this.token = token; }
36+
37+
public String[] getTracks() { return tracks; }
38+
public void setTracks(String[] tracks) { this.tracks = tracks; }
39+
40+
public String getSubscriberId() { return subscriberId; }
41+
public void setSubscriberId(String subscriberId) { this.subscriberId = subscriberId; }
42+
43+
public String getSubscriberName() { return subscriberName; }
44+
public void setSubscriberName(String subscriberName) { this.subscriberName = subscriberName; }
45+
46+
public String getSubscriberCode() { return subscriberCode; }
47+
public void setSubscriberCode(String subscriberCode) { this.subscriberCode = subscriberCode; }
48+
49+
public String getViewerInfo() { return viewerInfo; }
50+
public void setViewerInfo(String viewerInfo) { this.viewerInfo = viewerInfo; }
51+
52+
public boolean isDisableTracksByDefault() { return disableTracksByDefault; }
53+
public void setDisableTracksByDefault(boolean disableTracksByDefault) { this.disableTracksByDefault = disableTracksByDefault; }
54+
}

webrtc-android-framework/src/main/java/io/antmedia/webrtcandroidframework/core/WebRTCClient.java

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
import javax.annotation.Nullable;
8080

8181
import io.antmedia.webrtcandroidframework.api.IWebRTCClient;
82+
import io.antmedia.webrtcandroidframework.api.PlayParams;
8283
import io.antmedia.webrtcandroidframework.api.WebRTCClientConfig;
8384
import io.antmedia.webrtcandroidframework.apprtc.AppRTCAudioManager;
8485
import org.webrtc.AMSDefaultVideoDecoderFactory;
@@ -178,10 +179,13 @@ public PeerInfo(String id, Mode mode) {
178179
public boolean videoCallEnabled;
179180
public boolean audioCallEnabled;
180181
public String subscriberId;
182+
public String subscriberName;
181183
public String subscriberCode;
182184
public String streamName;
183185
public String mainTrackId;
184186
public String metaData;
187+
public boolean disableTracksByDefault = false;
188+
185189
public boolean restartIce = false;
186190

187191
public SessionDescription getLocalDescription() {
@@ -983,7 +987,7 @@ private void publishPlayIfRequested() {
983987

984988
if (peerMode == Mode.PLAY && peerInfo.peerConnection == null) {
985989
Log.i(TAG, "Processing play request for peer streamId: " + peerInfo.id);
986-
wsHandler.startPlay(peerInfo.id, peerInfo.token, null, peerInfo.subscriberId, peerInfo.subscriberCode, peerInfo.metaData);
990+
wsHandler.startPlay(peerInfo.id, peerInfo.token, null, peerInfo.subscriberId, peerInfo.subscriberName, peerInfo.subscriberCode, peerInfo.metaData, peerInfo.disableTracksByDefault);
987991
}
988992
}
989993
}
@@ -1004,7 +1008,7 @@ public void publish(String streamId, String token, boolean videoCallEnabled, boo
10041008
}
10051009
});
10061010

1007-
createPeerInfo(streamId, token, videoCallEnabled, audioCallEnabled, subscriberId, subscriberCode, streamName, mainTrackId, null, Mode.PUBLISH);
1011+
createPeerInfo(streamId, token, videoCallEnabled, audioCallEnabled, subscriberId, "", subscriberCode, streamName, mainTrackId, null, false, Mode.PUBLISH);
10081012
init();
10091013

10101014
if(!PermissionHandler.checkPublishPermissions(config.activity, config.bluetoothEnabled)){
@@ -1023,17 +1027,19 @@ public void publish(String streamId, String token, boolean videoCallEnabled, boo
10231027
}
10241028
}
10251029

1026-
private void createPeerInfo(String streamId, String token, boolean videoCallEnabled, boolean audioCallEnabled, String subscriberId, String subscriberCode, String streamName, String mainTrackId, String metaData, Mode mode) {
1030+
private void createPeerInfo(String streamId, String token, boolean videoCallEnabled, boolean audioCallEnabled, String subscriberId, String subscriberName, String subscriberCode, String streamName, String mainTrackId, String metaData, boolean disableTracksByDefault, Mode mode) {
10271031
PeerInfo peerInfo;
10281032
peerInfo = new PeerInfo(streamId, mode);
10291033
peerInfo.token = token;
10301034
peerInfo.videoCallEnabled = videoCallEnabled || config.videoCallEnabled;
10311035
peerInfo.audioCallEnabled = audioCallEnabled || config.audioCallEnabled;
10321036
peerInfo.subscriberId = subscriberId;
1037+
peerInfo.subscriberName = subscriberName;
10331038
peerInfo.subscriberCode = subscriberCode;
10341039
peerInfo.streamName = streamName;
10351040
peerInfo.mainTrackId = mainTrackId;
10361041
peerInfo.metaData = metaData;
1042+
peerInfo.disableTracksByDefault = disableTracksByDefault;
10371043
peers.put(streamId, peerInfo);
10381044
}
10391045

@@ -1045,14 +1051,15 @@ public void play(String streamId, String[] tracks) {
10451051
play(streamId, "", tracks, "", "", "");
10461052
}
10471053

1048-
public void play(String streamId, String token, String[] tracks, String subscriberId, String subscriberCode, String viewerInfo) {
1049-
Log.i(TAG, "Play: " + streamId);
1054+
@Override
1055+
public void play(PlayParams params) {
1056+
Log.i(TAG, "Play: " + params.getStreamId());
10501057
this.handler.post(() -> {
10511058
if (config.webRTCListener != null) {
1052-
config.webRTCListener.onPlayAttempt(streamId);
1059+
config.webRTCListener.onPlayAttempt(params.getStreamId());
10531060
}
10541061
});
1055-
createPeerInfo(streamId, token, false, false, subscriberId, subscriberCode, "", "", viewerInfo, Mode.PLAY);
1062+
createPeerInfo(params.getStreamId(), params.getToken(), false, false, params.getSubscriberId(), params.getSubscriberName(), params.getSubscriberCode(), "", "", params.getViewerInfo(), params.isDisableTracksByDefault(), Mode.PLAY);
10561063

10571064
if (!isReconnectionInProgress()) {
10581065
init();
@@ -1066,16 +1073,21 @@ public void play(String streamId, String token, String[] tracks, String subscrib
10661073

10671074
initializeAudioManager();
10681075

1069-
Log.i(TAG, "Play: "+streamId);
1076+
Log.i(TAG, "Play: "+params.getStreamId());
10701077

10711078
if (isWebSocketConnected()) {
1072-
Log.i(TAG, "Play request sent through ws for stream: " + streamId);
1073-
wsHandler.startPlay(streamId, token, tracks, subscriberId, subscriberCode, viewerInfo);
1079+
Log.i(TAG, "Play request sent through ws for stream: " + params.getStreamId());
1080+
wsHandler.startPlay(params.getStreamId(), params.getToken(), params.getTracks(), params.getSubscriberId(), params.getSubscriberName(), params.getSubscriberCode(), params.getViewerInfo(), params.isDisableTracksByDefault());
10741081
} else {
10751082
Log.w(TAG, "Websocket is not connected. Set play requested. It will be processed when ws is connected.");
10761083
}
10771084
}
10781085

1086+
public void play(String streamId, String token, String[] tracks, String subscriberId, String subscriberCode, String viewerInfo) {
1087+
PlayParams params = new PlayParams(streamId, token, tracks, subscriberId, "", subscriberCode, viewerInfo, false);
1088+
play(params);
1089+
}
1090+
10791091
public void join(String streamId) {
10801092
join(streamId, "");
10811093
}

webrtc-android-framework/src/main/java/io/antmedia/webrtcandroidframework/websocket/WebSocketConstants.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,11 @@ private WebSocketConstants() {
150150
*/
151151
public static final String SUBSCRIBER_ID = "subscriberId";
152152

153+
/**
154+
* this subscriber name is the human readable name for a subscriber
155+
*/
156+
public static final String SUBSCRIBER_NAME = "subscriberName";
157+
153158
/**
154159
* this subscriber code is used to access resources or start broadcast when time based subscriber security is enabled
155160
*/
@@ -606,6 +611,11 @@ private WebSocketConstants() {
606611
*/
607612
public static final String ROLE = "role";
608613

614+
/**
615+
* Participant role in the room
616+
*/
617+
public static final String DISABLE_TRACKS_BY_DEFAULT = "disableTracksByDefault";
618+
609619
/**
610620
* Command to get subtrack infos for a main track
611621
*/

webrtc-android-framework/src/main/java/io/antmedia/webrtcandroidframework/websocket/WebSocketHandler.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ public void startPublish(String streamId, String token, boolean videoEnabled, bo
399399
}
400400
}
401401

402-
public void startPlay(String streamId, String token, String[] tracks, String subscriberId, String subscriberCode, String viewerInfo){
402+
public void startPlay(String streamId, String token, String[] tracks, String subscriberId, String subscriberName, String subscriberCode, String viewerInfo, boolean disableTracksByDefault){
403403
checkIfCalledOnValidThread();
404404
JSONObject json = new JSONObject();
405405
try {
@@ -416,8 +416,10 @@ public void startPlay(String streamId, String token, String[] tracks, String sub
416416

417417
json.put(WebSocketConstants.TRACK_LIST, jsonArray);
418418
json.put(WebSocketConstants.SUBSCRIBER_ID, subscriberId);
419+
json.put(WebSocketConstants.SUBSCRIBER_NAME, subscriberName);
419420
json.put(WebSocketConstants.SUBSCRIBER_CODE, subscriberCode);
420421
json.put(WebSocketConstants.VIEWER_INFO, viewerInfo);
422+
json.put(WebSocketConstants.DISABLE_TRACKS_BY_DEFAULT, disableTracksByDefault);
421423

422424
sendTextMessage(json.toString());
423425
} catch (JSONException e) {

0 commit comments

Comments
 (0)