Skip to content

Commit d626beb

Browse files
authored
Merge branch 'master' into improveReconnection
2 parents e568eae + 820028c commit d626beb

File tree

18 files changed

+665
-39
lines changed

18 files changed

+665
-39
lines changed

.github/workflows/gradle.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,8 +223,8 @@ jobs:
223223
if: github.ref == 'refs/heads/master'
224224
run: ./gradlew publish
225225
env:
226-
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
227-
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
226+
CENTRAL_USERNAME: ${{ secrets.CENTRAL_USERNAME }}
227+
CENTRAL_PASSWORD: ${{ secrets.CENTRAL_PASSWORD }}
228228
SIGNING_KEY_ID: ${{ secrets.SIGNING_KEY_ID }}
229229
SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }}
230230
SIGNING_KEY: ${{ secrets.SIGNING_KEY }}

.github/workflows/release.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ jobs:
1818
- name: Deploy to Sonatype
1919
run: ./gradlew publish
2020
env:
21-
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
22-
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
21+
CENTRAL_USERNAME: ${{ secrets.CENTRAL_USERNAME }}
22+
CENTRAL_PASSWORD: ${{ secrets.CENTRAL_PASSWORD }}
2323
SIGNING_KEY_ID: ${{ secrets.SIGNING_KEY_ID }}
2424
SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }}
2525
SIGNING_KEY: ${{ secrets.SIGNING_KEY }}

scripts/deploy-variables.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
ext["signing.keyId"] = ''
22
ext["signing.password"] = ''
33
ext["signing.key"] = ''
4-
ext["ossrhUsername"] = ''
5-
ext["ossrhPassword"] = ''
4+
ext["centralUsername"] = ''
5+
ext["centralPassword"] = ''
66
ext["sonatypeStagingProfileId"] = ''
77

88
File secretPropsFile = project.rootProject.file('local.properties')
@@ -13,8 +13,8 @@ if (secretPropsFile.exists()) {
1313
p.each { name, value -> ext[name] = value }
1414
} else {
1515
// Use system environment variables
16-
ext["ossrhUsername"] = System.getenv('OSSRH_USERNAME')
17-
ext["ossrhPassword"] = System.getenv('OSSRH_PASSWORD')
16+
ext["centralUsername"] = System.getenv('CENTRAL_USERNAME')
17+
ext["centralPassword"] = System.getenv('CENTRAL_PASSWORD')
1818
ext["signing.keyId"] = System.getenv('SIGNING_KEY_ID')
1919
ext["signing.password"] = System.getenv('SIGNING_PASSWORD')
2020
ext["signing.key"] = System.getenv('SIGNING_KEY')

webrtc-android-framework/publish-remote.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,12 @@ afterEvaluate {
7171
repositories {
7272
maven {
7373
credentials {
74-
username ossrhUsername
75-
password ossrhPassword
74+
username centralUsername
75+
password centralPassword
7676
}
7777

78-
def releasesRepoUrl = 'https://oss.sonatype.org/service/local/repositories/releases/content'
79-
def snapshotsRepoUrl = 'https://oss.sonatype.org/content/repositories/snapshots'
78+
def releasesRepoUrl = "https://ossrh-staging-api.central.sonatype.com/service/local/staging/deploy/maven2/"
79+
def snapshotsRepoUrl = "https://central.sonatype.com/repository/maven-snapshots/"
8080
url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
8181
}
8282
}

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import io.antmedia.webrtcandroidframework.core.StreamInfo;
1111
import io.antmedia.webrtcandroidframework.core.WebRTCClient;
1212
import io.antmedia.webrtcandroidframework.websocket.Broadcast;
13+
import io.antmedia.webrtcandroidframework.websocket.Subscriber;
1314

1415
/**
1516
* Default implementation of {@link IWebRTCListener}
@@ -274,5 +275,20 @@ public void onShutdown(){
274275
protected void callbackCalled(String messageText) {
275276
Log.d(DefaultWebRTCListener.class.getName(), messageText);
276277
}
278+
279+
@Override
280+
public void onSubscriberCount(String streamId, int count) {
281+
String messageText = "On Subscriber Count "+streamId;
282+
callbackCalled(messageText);
283+
}
284+
285+
@Override
286+
public void onSubscriberList(String streamId, Subscriber[] subscribers) {
287+
String messageText = "On Subscriber List "+streamId;
288+
callbackCalled(messageText);
289+
}
290+
277291

278292
}
293+
294+

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

Lines changed: 29 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
*
@@ -374,4 +381,26 @@ void publish(String streamId, String token, boolean videoCallEnabled, boolean au
374381
*/
375382
boolean isSendVideoEnabled();
376383

384+
/**
385+
* Called to get the subscriber count for a broadcast
386+
*
387+
* @param streamId: id for the broadcast
388+
*/
389+
void getSubscriberCount(String streamId);
390+
391+
/**
392+
* Called to get the subscriber list for a broadcast
393+
*
394+
* @param streamId: id for the broadcast
395+
* @param offset: offset of the list
396+
* @param size: size of the list
397+
*/
398+
void getSubscriberList(String streamId, long offset, long size);
399+
400+
/**
401+
* Called to get the debug info for the viewer
402+
*
403+
* @param streamId: id for the broadcast
404+
*/
405+
void getDebugInfo(String streamId);
377406
}

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import io.antmedia.webrtcandroidframework.core.StreamInfo;
88
import io.antmedia.webrtcandroidframework.core.WebRTCClient;
99
import io.antmedia.webrtcandroidframework.websocket.Broadcast;
10+
import io.antmedia.webrtcandroidframework.websocket.Subscriber;
1011

1112
/**
1213
* Created by karinca on 23.10.2017.
@@ -249,5 +250,16 @@ public interface IWebRTCListener {
249250
* It's called when user left P2P room.
250251
*/
251252
void onLeft(String streamId);
253+
254+
255+
/**
256+
* It's called when Subscriber Count received.
257+
*/
258+
void onSubscriberCount(String streamId, int count);
259+
260+
/**
261+
* It's called when Subscriber List received.
262+
*/
263+
void onSubscriberList(String streamId, Subscriber[] subscribers);
252264
}
253265

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/PermissionHandler.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ public static boolean checkCameraPermissions(Activity activity) {
6161
}
6262

6363
public static boolean checkPublishPermissions(Activity activity, boolean bluetoothEnabled) {
64+
return checkPublishPermissions(activity, bluetoothEnabled, true);
65+
}
66+
67+
public static boolean checkPublishPermissions(Activity activity, boolean bluetoothEnabled, boolean videoEnabled) {
6468
ArrayList<String> permissions = new ArrayList<>();
6569
permissions.addAll(Arrays.asList(REQUIRED_MINIMUM_PERMISSIONS));
6670
permissions.addAll(Arrays.asList(PUBLISH_PERMISSIONS));
@@ -69,6 +73,10 @@ public static boolean checkPublishPermissions(Activity activity, boolean bluetoo
6973
permissions.addAll(Arrays.asList(BLUETOOTH_PERMISSIONS));
7074
}
7175

76+
if(!videoEnabled) {
77+
permissions.remove(Manifest.permission.CAMERA);
78+
}
79+
7280
return hasPermissions(activity, permissions);
7381
}
7482

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

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -277,12 +277,16 @@ private void parseStats(RTCStatsReport report) {
277277
}
278278

279279
if (value.getMembers().containsKey(FRAMES_RECEIVED)) {
280-
long framesReceived = (long) value.getMembers().get(FRAMES_RECEIVED);
280+
Number framesReceivedNumber = (Number) value.getMembers().get(FRAMES_RECEIVED);
281+
long framesReceived = framesReceivedNumber.longValue();
282+
281283
videoTrackStats.setFramesReceived(framesReceived);
282284
}
283285

284286
if (value.getMembers().containsKey(FRAMES_DROPPED)) {
285-
long framesDropped = (long) value.getMembers().get(FRAMES_DROPPED);
287+
Number framesDroppedNumber = (Number) value.getMembers().get(FRAMES_DROPPED);
288+
long framesDropped = framesDroppedNumber.longValue();
289+
286290
videoTrackStats.setFramesDropped(framesDropped);
287291
}
288292

@@ -298,9 +302,14 @@ private void parseStats(RTCStatsReport report) {
298302
trackIdentifier = trackIdentifier.substring(VIDEO_TRACK_ID.length());
299303
videoTrackStats.setTrackId(trackIdentifier);
300304
playStats.getVideoTrackStatsMap().put(trackIdentifier, videoTrackStats);
305+
} else if (value.getMembers().containsKey(TRACK_ID)) {
306+
String trackId = (String) value.getMembers().get(TRACK_ID);
307+
RTCStats track = report.getStatsMap().get(trackId);
308+
String trackIdentifier = (String) track.getMembers().get(TRACK_IDENTIFIER);
309+
trackIdentifier = trackIdentifier.substring(VIDEO_TRACK_ID.length());
310+
videoTrackStats.setTrackId(trackIdentifier);
311+
playStats.getVideoTrackStatsMap().put(trackIdentifier, videoTrackStats);
301312
}
302-
303-
304313
}
305314
} else if (AUDIO.equals(value.getMembers().get(KIND))) {
306315
if(value.getMembers().containsKey(SSRC)){
@@ -333,6 +342,14 @@ private void parseStats(RTCStatsReport report) {
333342
audioTrackStat.setTrackId(trackIdentifier);
334343
playStats.getAudioTrackStatsMap().put(trackIdentifier, audioTrackStat);
335344
}
345+
else if (value.getMembers().containsKey(TRACK_ID)) {
346+
String trackId = (String) value.getMembers().get(TRACK_ID);
347+
RTCStats track = report.getStatsMap().get(trackId);
348+
String trackIdentifier = (String) track.getMembers().get(TRACK_IDENTIFIER);
349+
trackIdentifier = trackIdentifier.substring(AUDIO_TRACK_ID.length());
350+
audioTrackStat.setTrackId(trackIdentifier);
351+
playStats.getAudioTrackStatsMap().put(trackIdentifier, audioTrackStat);
352+
}
336353
}
337354
}
338355

0 commit comments

Comments
 (0)