• Date of Release: November 2, 2020

Table of Contents

New Features

User Stream Pinning

A Moderator can now pin any user to force EnableX carry his stream to all end-points irrespective of the user talking or not. So, pinned users’ streams will always be available on Active Talker list. Users who are actively talking will be placed first, and then pinned-non-talkers are placed in the Active Talker list. Moderator can pin 1 less user than max_active_talkers configured in the room.

Simulcast Support on Chrome

EnableX now supports Simulcast on Chrome Browser only in Rooms defined in Lecture Mode. Maximum 3 Layers supported. Full Simulcast Layers support depends on Publisher Bandwidth. Stream Quality requires minimum Publisher Bandwidth to support Video Layers as given below:

  • HD: 3000 Kbps
  • SD: 1600 Kbps
  • LD: 800 Kbps

Web SDK

New API

Following new methods are introduced in Web SDK to support User Stream Pinning Module.

  • EnxRoom.addPinUsers(clientIds[], callback)
  • EnxRoom.removePinUsers(clientIds[], callback)

Android SDK

New API

Following new methods are introduced in Android SDK to support User Stream Pinning Module.

  • public void addPinUser(List clientList)
  • public void removePinUser(List clientList)

Following new Observer and callbacks are introduced in Android SDK for Speech Detection and Noise Detection & Reduction.

  • public void setVadObserver(EnxVadObserver enxVadObserver) – Its an Observer
  • public void onSpeechDetected(JSONObject jsonObject) – Its a callback for Speech Detection
  • public void onNoiseDetected(JSONObject jsonObject) _ Its a callback for Noise Detection

Deprecated API

Some of the following methods are removed or are updated to have changed parameter or responses.

  • public void onCanvasStarted(JSONObject jsonObject) – Changed to public void onCanvasStarted(EnxStream enxStream)
  • public void onCanvasStopped(JSONObject jsonObject) – Changed to public void onCanvasStopped(EnxStream enxStream)
  • public void onScreenSharedStarted(JSONObject jsonObject) – Changed to public void onScreenSharedStarted(EnxStream enxStream)
  • public void onScreenSharedStopped(JSONObject jsonObject) – Changed to public void onScreenSharedStopped(EnxStream enxStream)
  • public void adjustLayout() – Changed to public void adjustLayout(int frameWidth, int frameHeight)
  • initAnnotationView() – Not used for public.
  • changeToAudioOnly() – Changed to setAudioOnlyMode()
  • public void onActiveTalkerList(JSONObject jsonObject) – Changed to public void onActiveTalkerList(RecyclerView recyclerView)
  • public EnxStream joinRoom(final String token, JSONObject publishStreamInfo, JSONObject roomInfo, JSONObject advanceOptions) – Changed to public EnxStream joinRoom(final String token, JSONObject publishStreamInfo, JSONObject roomInfo, JSONArray advanceOptions)

iOS SDK

New API

Following new methods are introduced in iOS SDK to support User Stream Pinning Module.

  • -(void)addPinUser:(NSArray *_Nonnull)userList
  • -(void)removePinUser:(NSArray *_Nonnull)userList

Deprecated API

Some of the following methods, delegate methods are removed or are updated to have changed parameter or responses.

  • (void)roomDidDisconnected:(EnxRoomStatus)status – changed to (void)didRoomDisconnect:(NSArray * _Nullable)response;
  • (void)didGrantFloorRequested:(NSArray _Nullable)Data * – Changed to (void)didGrantedFloorRequest:(NSArray *_Nullable)Data;
  • (void)didDenyFloorRequested:(NSArray _Nullable)Data * – Changed to (void)didDeniedFloorRequest:(NSArray *_Nullable)Data;
  • -(void)didReleaseFloorRequested:(NSArray _Nullable)Data * – Changed to (void)didReleasedFloorRequest:(NSArray *_Nullable)Data;
  • -(void)room:(EnxRoom _Nullable)room activeTalkerList:(NSArray *_Nullable)Data * – Changed to the following delegate methods:
    • -(void)room:(EnxRoom _Nullable)room didActiveTalkerList:(NSArray *_Nullable)Data * – This delegate method will return list of EnxStream
    • -(void)room:(EnxRoom *_Nullable)room didActiveTalkerView:(UIView *_Nullable)view – This delegate method will return collectionView of EnxStream
  • -(void)room:(EnxRoom _Nullable)room screenSharedStarted:(NSArray *_Nullable)Data * – Changed to (void)room:(EnxRoom *_Nullable)room didScreenShareStarted:(EnxStream *_Nullable)stream;
  • -(void)room:(EnxRoom _Nullable)room screenShareStopped:(NSArray *_Nullable)Data * – Changed to (void)room:(EnxRoom *_Nullable)room didScreenShareStopped:(EnxStream *_Nullable)stream
  • -(void)room:(EnxRoom _Nullable)room canvasStarted:(NSArray *_Nullable)Data * – Changed to -(void)room:(EnxRoom *_Nullable)room didCanvasStarted:(EnxStream *_Nullable)stream;
  • -(void)room:(EnxRoom _Nullable)room canvasStopped:(NSArray *_Nullable)Data * – Changed to -(void)room:(EnxRoom *_Nullable)room didCanvasStopped:(EnxStream *_Nullable)stream;
  • -(EnxStream _Nullable)initlocalStream:(NSDictionary *_Nonnull)publishStreamInfo * – Changed to -(EnxStream *_Nullable)getLocalStream:(NSDictionary *_Nonnull)publishStreamInfo;
  • -(void)changeToAudioOnly:(BOOL) – Changed to -(void)setAudioOnlyMode:(BOOL)audioOnly;
  • (void)stream:(EnxStream _Nullable)stream didSelfMuteVideo:(NSArray *_Nullable)data * – Changed to - (void)stream:(EnxStream *_Nullable)stream didRemoteStreamVideoMute:(NSArray *_Nullable)data;
  • (void)stream:(EnxStream _Nullable)stream didSelfUnMuteVideo:(NSArray *_Nullable)data * – Changed to (void)stream:(EnxStream *_Nullable)stream didRemoteStreamVideoUnMute:(NSArray *_Nullable)data;
  • (void)stream:(EnxStream _Nullable)stream didSelfMuteAudio:(NSArray *_Nullable)data * – Changed to (void)stream:(EnxStream *_Nullable)stream didRemoteStreamAudioMute:(NSArray *_Nullable)data;
  • (void)stream:(EnxStream _Nullable)stream didSelfUnmuteAudio:(NSArray *_Nullable)data * Changed to (void)stream:(EnxStream *_Nullable)stream didRemoteStreamAudioUnMute:(NSArray *_Nullable)data;

Bug Fixes

  • Bandwidth Alert indication fixes