Video API v1.8 Release Notes
Date of Release: November 2, 2020
New Features
User Stream Pinning
A moderator can pin a participant to force EnableX to carry the participant's stream to all endpoints irrespective of whether the participant is talking or not. The pinned participant's streams are always available in the Active Talkers list. Participants who are actively talking are placed at the top of the list, and pinned-non-talkers are placed after them. The number of pinned participants must always be 1 less than max_active_talkers
configured for a room.
Simulcast Support on Chrome
EnableX supports Simulcast on Chrome browsers in rooms defined in the Lecture mode. A maximum of 3 layers is supported. Support of all Simulcast layers depends on the bandwidth of the publisher. To support video layers, the stream quality requires the following publisher bandwidth at a minimum:
- HD: 3000 Kbps
- SD: 1600 Kbps
- LD: 800 Kbps
Web SDK
New API: To support participant stream pinning, the following new methods are introduced:
EnxRoom.addPinUsers(clientIds[], callback)
EnxRoom.removePinUsers(clientIds[], callback)
Android SDK
New API: To support participant stream pinning, the following new methods are introduced:
public void addPinUser(List clientList)
public void removePinUser(List clientList)
New Observer and Callbacks: For speech detection and noise detection and reduction, the following observer and callbacks are introduced:
public void setVadObserver(EnxVadObserver enxVadObserver)
: An observerpublic void onSpeechDetected(JSONObject jsonObject)
: A callback for speech detectionpublic void onNoiseDetected(JSONObject jsonObject)
: A callback for noise detection
Changed/Deprecated APIs: Some of the following methods are updated with changed parameters or responses, or removed:
public void onCanvasStopped(JSONObject jsonObject)
is changed topublic void onCanvasStopped(EnxStream enxStream)
.public void onCanvasStarted(JSONObject jsonObject)
is changed topublic void onCanvasStarted(EnxStream enxStream)
.public void onScreenSharedStarted(JSONObject jsonObject)
is changed topublic void onScreenSharedStarted(EnxStream enxStream)
.public void onScreenSharedStopped(JSONObject jsonObject)
is changed topublic void onScreenSharedStopped(EnxStream enxStream)
.public void adjustLayout()
is changed topublic void adjustLayout(int frameWidth, int frameHeight)
.initAnnotationView()
: Not used for public.changeToAudioOnly()
is changed tosetAudioOnlyMode()
.public void onActiveTalkerList(JSONObject jsonObject)
is changed topublic void onActiveTalkerList(RecyclerView recyclerView)
.public EnxStream joinRoom(final String token, JSONObject publishStreamInfo, JSONObject roomInfo, JSONObject advanceOptions)
is changed topublic EnxStream joinRoom(final String token, JSONObject publishStreamInfo, JSONObject roomInfo, JSONArray advanceOptions)
.
iOS SDK
New APIs: To support participant stream pinning, the following new methods are introduced:
-(void)addPinUser:(NSArray *_Nonnull)userList
-(void)removePinUser:(NSArray *_Nonnull)userList
Changed/Deprecated APIs: Some of the following methods are updated with changed parameters or responses, or removed:
(void)roomDidDisconnected:(EnxRoomStatus)status
is changed to(void)didRoomDisconnect:(NSArray * _Nullable)response;
(void)didGrantFloorRequested:(NSArray _Nullable)Data *
is changed to(void)didGrantedFloorRequest:(NSArray *_Nullable)Data;
(void)didDenyFloorRequested:(NSArray _Nullable)Data *
is changed to(void)didDeniedFloorRequest:(NSArray *_Nullable)Data;
-(void)didReleaseFloorRequested:(NSArray _Nullable)Data *
is changed to(void)didReleasedFloorRequest:(NSArray *_Nullable)Data;
-(void)room:(EnxRoom _Nullable)room activeTalkerList:(NSArray *_Nullable)Data *
is changed to the following delegate methods:-(void)room:(EnxRoom _Nullable)room didActiveTalkerList:(NSArray *_Nullable)Data *
: This delegate method returns a list of EnxStream.-(void)room:(EnxRoom *_Nullable)room didActiveTalkerView:(UIView *_Nullable)view
: This delegate method returns a collection view of EnxStream
-(void)room:(EnxRoom _Nullable)room screenSharedStarted:(NSArray *_Nullable)Data *
is changed to(void)room:(EnxRoom *_Nullable)room didScreenShareStarted:(EnxStream *_Nullable)stream;
-(void)room:(EnxRoom _Nullable)room screenShareStopped:(NSArray *_Nullable)Data *
is changed to(void)room:(EnxRoom *_Nullable)room didScreenShareStopped:(EnxStream *_Nullable)stream
-(void)room:(EnxRoom _Nullable)room canvasStarted:(NSArray *_Nullable)Data *
is changed to-(void)room:(EnxRoom *_Nullable)room didCanvasStarted:(EnxStream *_Nullable)stream;
-(void)room:(EnxRoom _Nullable)room canvasStopped:(NSArray *_Nullable)Data *
is changed to-(void)room:(EnxRoom *_Nullable)room didCanvasStopped:(EnxStream *_Nullable)stream;
-(EnxStream _Nullable)initlocalStream:(NSDictionary *_Nonnull)publishStreamInfo *
is changed to-(EnxStream *_Nullable)getLocalStream:(NSDictionary *_Nonnull)publishStreamInfo;
-(void)changeToAudioOnly:(BOOL)
is changed to-(void)setAudioOnlyMode:(BOOL)audioOnly;
(void)stream:(EnxStream _Nullable)stream didSelfMuteVideo:(NSArray *_Nullable)data *
is changed to- (void)stream:(EnxStream *_Nullable)stream didRemoteStreamVideoMute:(NSArray *_Nullable)data;
(void)stream:(EnxStream _Nullable)stream didSelfUnMuteVideo:(NSArray *_Nullable)data *
is changed to(void)stream:(EnxStream *_Nullable)stream didRemoteStreamVideoUnMute:(NSArray *_Nullable)data;
(void)stream:(EnxStream _Nullable)stream didSelfMuteAudio:(NSArray *_Nullable)data *
is changed to(void)stream:(EnxStream *_Nullable)stream didRemoteStreamAudioMute:(NSArray *_Nullable)data;
(void)stream:(EnxStream _Nullable)stream didSelfUnmuteAudio:(NSArray *_Nullable)data *
is changed to(void)stream:(EnxStream *_Nullable)stream didRemoteStreamAudioUnMute:(NSArray *_Nullable)data;
Bug Fixes
- Several fixes have been made in the bandwidth alert indication feature.