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 observer
  • public void onSpeechDetected(JSONObject jsonObject): A callback for speech detection
  • public 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 to public void onCanvasStopped(EnxStream enxStream).
  • public void onCanvasStarted(JSONObject jsonObject) is changed to public void onCanvasStarted(EnxStream enxStream).
  • public void onScreenSharedStarted(JSONObject jsonObject) is changed to public void onScreenSharedStarted(EnxStream enxStream).
  • public void onScreenSharedStopped(JSONObject jsonObject) is changed to public void onScreenSharedStopped(EnxStream enxStream).
  • public void adjustLayout() is changed to public void adjustLayout(int frameWidth, int frameHeight).
  • initAnnotationView(): Not used for public.
  • changeToAudioOnly() is changed to setAudioOnlyMode().
  • public void onActiveTalkerList(JSONObject jsonObject) is changed to public void onActiveTalkerList(RecyclerView recyclerView).
  • public EnxStream joinRoom(final String token, JSONObject publishStreamInfo, JSONObject roomInfo, JSONObject advanceOptions) is changed to public 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.