Release Version: 1

Release Date: 15-10-2018
Last Updated Date: 15-10-2018
Toolkits / API Name Date of release Comment Link
Web Toolkit V1.1 EnxRtc.js 18/12/2018 Not supported
IOS Toolkit V1.1 EnxRTCiOS 18/12/2018 Not supported
Android V1.1 EnxRtcAndroid 18/12/2018 Not supported



Release Version: V1.2.0

Release Name: Altair
Date of Release: 15/02/2019
Revision History:
Toolkits / API Name Date of release Comment Link
Web Toolkit V1.2 EnxRtc.js 15/02/2019 Download
IOS Toolkit V1.2 EnxRTCiOS 15/02/2019 Download
Android V1.2 EnxRtcAndroid 15/02/2019 Download
Server API V1.2 Server API 15/02/2019 Read More..



Release Version:V1.3.0

Release Name: Altair
Date of Release: 28/03/2019
Revision History:
Toolkits / API Name Date of release Comment Link
Web Toolkit V1.3 EnxRtc.js 28/03/2019 Download
IOS Toolkit V1.3 EnxRTCiOS 28/03/2019 Download
Android V1.3 EnxRtcAndroid 28/03/2019 Download
Server API V1.3 Server API 28/03/2019 Read More..

Major Features/ Improvements:

  1. Canvas Streaming: Canvas publishing is supported on the Web toolkit. You can now pass the Canvas handle into the room to render it to the remote participant.
    To allow canvas streaming into EnableX room, the rooms needs to be created by enabling canvas feature. By default rooms are created with no canvas.
  2. CRM Integration:Seamless integration with Portal and CRM to enhance support services of the Portal
  3. Dashboard: Tenant specific dashboard that summarizes the tenant’s real time activity in the visuals Dashboards will help you understand the application usage patterns, trends.
  4. Simulcast quality layers: Simulcast highest layer can now reach to 720 and stays consistently at 720p30. There have been major improvement in video quality to the different classes of subscriber.
  5. Added SIP server support in the VCX Cloud Have our own PBX in the cloud for the SIP endpoints Can have a PSTN connections
  6. Following Critical Bug fixes :
    1. When participant P1 joins room where exist video muted participant P2, will never able to see P2, even after unmute
    2. Share and Canvas was not able to start together
    3. When presentation starts, recording is stopped
    4. Coreserver crashes in some random scenario
    5. Added serviceId and confId in all events
    6. Fixed the client id and user name in canvas started event
    7. API support for setting video layers
    8. Added error response for invalid frame rate

Breaking Changes

We have no known breaking changes. Your current downloaded SDK should continue to work. We have added couple of new features that may need updated toolkits and also we fixed issues that you might be facing.

We strongly recommend that you should upgrade it to latest SDK toolkits.

List of affected API / Events

Success: { result: 0, devices: {cam: [], mic: []} } Error: { "result":1144, "error":"Permission denied", "desc":"NotAllowedError: The request is not allowed by the user agent or the platform in the current context" }

API Updates

Room Creation using Server API:

Canvas feature is added as a room level attribute and it must explicitly enabled at the time od creation of the room. Sample Request JSON Body to Create Permanent Room with Canvas Enabled: { "result": 0, "rooms": [ { "name": "Scheduled Room", "owner_ref": "xyz", "settings": { "description": "Scheduled Room", "scheduled": true, "scheduled_time": "2018-07-20T08:10:45.000Z", "duration": "15", "adhoc": false, "participants": "10", "billing_code": "Test123", "auto_recording": false, "quality": "HD", "mode": "group", "canvas": true }, "sip": { "enabled": false }, "data": { "name": "Scheduled Room" }, "created": "2018-07-12T10:16:07.119Z", "updated": "2018-07-12T10:53:03.674Z", "room_id": "xyzxyz" } ] }

Additional APIs:

Canvas API’s for initiating and receiving canvas streaming To start the canvas streaming:

room.startCanvas({"canvasSelector":"Dom element ID", "fps": integer Number } , function(arg){ });

Arguments

canvasSelector:"Dom element ID" Fps: Target frame rate for capturing the canvas into the EnableX stream. Response on success:

{ result: 0, id: "stream id" }

Error response when Framerate is not valid:

{ result: 1154, error: "Given frame rate is not supported", desc: "Frame rate might be negative or not a number which is not accepted by captureStream method" }

To stop the canvas streaming:

room.stopCanvas( function (arg) { });

Response on success:


{ result: 0, msg: "Canvas stopped successfully." }

Client Application changes for receiving canvas streaming:

Events: Following events listeners need to be defined in the client application Client SDK events to App:

canvas-started - Application level event is triggered when the canvas is started in the room canvas-stopped - Application level event is triggered when the canvas is stopped in the room room.addEventListener("canvas-started", function(event) { console.log("Canvas started !"); /* Here event type is "canvas-started": and json response for this perticular event from EnableX Server */});

Android Toolkit

Internal Bug Fixes

iOS:

  • Share was not received by newly joined participants, if room already has share going on.
  • On disconnect, closing all peer connections and removing socket event handlers
  • Fixed issues in Active Talker Media Type
  • Room metadata can be retrieved from room-connected event
  • Response structure has changed for delegates like on start recording, on release floor, on deny floor etc.

Android:

  • Share was not received by newly joined participants, if room already has share going on.
  • On disconnect, closing all peer connections and removing socket event handlers.
  • Mirror property no longer support for EnxPlayerView.
  • Response structure has changed for delegates like on start recording, on release floor, on deny floor etc.

Known Issues

Following are the known issues exist in the GA1.2. These issues may get fixed in the following release. These are not catastrophic, but they may reduce some workflows.

  1. Intermittent issue: You may experience abnormal disconnect in some random scenario when recording is on and there are repeated connect disconnect from participant
  2. Since the current version of Safari does not support VP8, the participant connecting to a VP8 room with Safari will not be able to send or receive Video and will be forced to Audio only call. This issue is NOT applicable if the room is H264 Safari will be able to join as normal browser.
  3. FireFox browser shows green patches on live conference in h264 enabled room. This issue can be worked around by Disabling hardware acceleration under browser preference
  4. Calls from iOS mobile browsers are not supported and will not be allowed to join the call.


1. Introduction

EnableX is a full stack Communication Platform as a Service (CPaaS) offered to developers for building Real Time Communication applications. The Release 1.0 of EnableX is focused on video & audio communication within the CPaaS proposition. The release notes cover the features of the platform. For details on implementation of these features, please refer to https://developer.enablex.io.
For glossary of terms used in this release notes, please refer: https://developer.enablex.io/glossary-of-terms/
Any application that you wish to build using the EnableX platform will have the following components as shown in the diagram below:

client-server

  1. EnableX server: The cloud instance of EnableX platform that delivers the real time communication capabilities.
  2. API’s: Set of Application Programming Interface commands that lets developers use to build real time communications applications.
  3. Application Server: Built by the app developers depending on the scope & use case of the application.
  4. Client Endpoint: The device or web browser used by end user using which he accesses the communication facility extended by the EnableX platform.

All the communication between the client & EnableX server are routed via the Application Server. All the communication is secured via the API authorisation key and a token is exchanged between the application server and EnableX server before a real time communications session can take place.



2. EnableX platform Architecture

Enablex_platform_architecture

EnableX platform consists of following microservices and each of the services inside the protected Virtual Private Cloud (VPC)

Background services

  • • Provisioning Service
    • o Allows provisioning of users, tenants and partners.
    • o Create Applications for the users
  • • Reporting and Session Logging Engine
    • o Elastic logging engine collects system and session level indexed logs. The searchable logs are then optimized for In-call, Post-call debug.
  • • DAPI Service
    • o Database services for storing temporary/permanently session meta information
    • o The DAPI is also associated with a database that stores information about all tenants on the platform. Only basic user level details are stored and no personal information or actual media is stored or collected at DAPI thereby ensuring complete privacy.
    • o DAPI also facilitates the authentication of API’s with the signalling servers to allow the flow of media through media servers before the session gets established.
  • • Signalling Servers
    • o Containerized signalling server nodes provides low latency session signalling between client end points and server nodes.
    • o They work in tandem with the media servers.
  • • Media Servers
    • o Containerized media servers provide media mixing and management.
    • o Media servers also enable continuous network adaptation to client-side network condition to provide optimal video exchange experience.
  • • Recording Service
    • o Provides stream recording and mixing and recording layout management.
    • o It is a server-side recording. Records the entire media (text, audio, video) of all participants during the session.
  • • Transcoding Service
    • o Provides media transcoding services to various formats (MP4, OGG, AVI etc). Configurable options allow specifying clip duration, output frame rate, maximum bit rate etc.
  • • Archiver Service
    • o Provides media archiving on external archival solutions (Amazon glacier etc).
  • • Orchestration Services
    • o Orchestration service always monitors the deployed nodes and adds nodes as demanded by traffic or removes the nodes from service in case the demand drops there by providing optimal utilisation of resources. Auto scales and descales containerized services.
  • • Auxiliary Media Services
    • o Cognitive real time audio and video services like speech translation, pitch analysis, object identification, video and audio filters, digital overlays are facilitated by the auxiliary media service component.
  • • System Monitoring Services (Diagnostics & Monitoring)
    • o Continually performs system health checks, raises alarm and notifies other components.
  • • Service Discovery Engine
    • o Newly developed extension/features/services can be pushed/discovered and integrated automatically into EnableX platform.
  • • Continuous Integration- Continuous Deployment (CI-CD) system updater
    • o Helps to push new updates/upgrades & features to the platform without requiring down time.
  • • Reporting & Call Logging Engine
    • o Logs all events during the session and stores call detail records and statistics related to call quality etc.
Front end services. - Services exposed outside the VPC
  • • Server/Client API server
    • o Exposes API for user application servers to create ad-hoc or scheduled sessions.
  • EnableX Portal
    • o Allows partner onboarding, workflow management (ticketing, report generation, reseller management), payment gateway integration, reseller provisioning.
  • • Turn Server
    • For traversal using relays around NAT (TURN) - it helps in traversal of NAT’s or Firewalls for media transported on EnableX.
  • • User Application/Browser
    • o EnableX provides sample applications with source codes to developers. It is expected that users case can build their domain specific applications either using existing sample applications or use them as reference while building their own application ground up.

The system is designed to be loosely coupled so for ease of maintainability and future expansion of our system. The various component services constituting the EnableX platform communicate over the messaging bus to provide integrated system level view.



3. New Features & Capabilities in this release

EnableX platform provides SDKs that enables application developer and enterprises to embed high-quality multiparty, multimedia collaboration into their web-based or native applications. Release 1.0 of the platform supports Video & Audio communication. Audio functionality is supported for specific use cases only. For video, EnableX will support the below modes:

  • • Peer to Peer Video (1to1)
  • • Multiparty Video
The features of EnableX R1 can be grouped as per the below table.

Functional Area Features/Functionalities
Core Server
Deployment Public Cloud
API & SDK Tool Kit
Call Processing
Self Service & Reporting


3.1 Platform Features

The developer documentation for server side of API’s is available at https://developer.enablex.io/api/server-api/



3.1.1 Dynamic Bandwidth Management

The core server supports dynamic bandwidth management for providing optimal user experience under varying bandwidth conditions. The EnableX server continuously monitors the bandwidth available on the client side & will accordingly curtail the number of video streams that will be shown to the client endpoint. Highest priority is given to the screen share. It can also do a fall over from video to audio if the client has very limited bandwidth. Under a minimal bandwidth condition, the platform will send only audio stream of the last 3 active speakers. To understand more about the Dynamic Bandwidth Management process, refer to Bandwidth Management section at https://developer.enablex.io/troubleshoot/



3.1.2 Stream Based Active Talker

The EnableX platform support Active Talker functionality. With the active talker, under a multiparty video call, the platform will show the video of last 6 active speakers to the client endpoint. Additionally, client can also choose how many video streams he wants to receive at runtime. For mobile based client end points which have limited CPU and bandwidth availability, active talker function ensures that the client receives optimal video experience. For the Release1.0, the active talker is ON by default for both web & mobile SDK.



3.1.3 Chair Controls

The Chair Control will allow for various conference control features to the chair person of the call. The features are only available when the room is set to lecture mode. The chair control allows participants to request access to floor to avail a chance to speak during a session. Subsequently the chair person can either accept or deny the request. This mode is recommended to be used for meetings rooms with limited number of publishers.



3.1.4 Moderator Controls

Moderator control allows controlling the remote participants. The moderator control features supported within this release are Remote Mute/UnMute (select participant), Mute all participants & Force Disconnect.



3.1.5 SIP Incoming Calls (Voice only)

The platform will support incoming audio calls via SIP. This implies that calls can be directed to EnableX platform using SIP & participants can join the sessions as audio only participants.



3.2 Deployment/Access Option

Deployment
  • ๏ Public Cloud ( AWS )

The Release 1.0 has the EnableX deployed over the public cloud. Developers and partners can use all the SDK & API functionality over the public cloud instance.



3.3 API/SDK Toolkit

API & SDK Tool Kit
  • ๏ Web SDK (Javascript)
  • ๏ Mobile SDK’s (Android/iOS)

Web SDK with interactive WebRTC based broadcast and many to many interactive sessions. This is available as Java Script. The mobile SDK is available for Android & iOS platforms. Both the Web and Mobile SDK is available for download via the developer portal at https://developer.enablex.io/downloads/
For detailed documentation on the SDK, please refer below links:
Web SDK : https://developer.enablex.io/api/client-api/web-toolkit/
Android SDK : https://developer.enablex.io/api/client-api/android-toolkit/
iOS SDK : https://developer.enablex.io/api/client-api/ios-toolkit/



3.4 Call Processing

Call Processing
  • ๏ Call Recording: Individual files and/or Composited Files
  • ๏ Call Transcript as Text Overlay to recorded Video File

The EnableX platform also supports recording of interactive sessions. For Audio/Video sessions, the platform supports stream-based recording. The Recorded files can be either downloaded as individual steams or can be downloaded as one composite file. It provides following recording format:

  • MKV
  • MPEG4
  • AVI
  • MOV
  • M4V
  • WMV
Recording capability from platform offer complete flexibility in terms of:
  • Composition according to customized layout.
  • Storage location of recorded files
  • Record all media (Audio/Video/Text)
  • On-the fly start/stop control for recording.

Recording Support matix

Browser Mac OS Windows iOS Android Linux
Chrome ✔️ (Vpx/H264) ✔️ (Vpx/H264) ✔️ (Vpx/H264) ✔️ (Vpx/H264) VCloudX SDK Available ✔️ (Vpx/H264)
FirerFox ✔️ (Vpx/H264) ✔️ (Vpx/H264) ✔️ (Vpx/H264) ✔️ (Vpx/H264) VCloudX SDK Available ✔️ (Vpx/H264)
Safari ✔️ (H264) ✔️ (H264)
Safari ✔️ (Vpx/H264) ✔️ (Vpx/H264) ✔️ (Vpx/H264)
Please note that recording support is also available for native SDK for Android and iOS

The platform also supports transcript functionality on the recorded video files. For the current release, the transcript data is available as a text overlay to recorded video files.



3.5 Self Service & Reporting

Self Service & Reporting
  • ๏ Partner Portal
  • ๏ White Labelling
  • ๏ CDR /Recording File Download Options
  • ๏ Customer Support

Developers and partners have access to a feature portal. The Portal is also used for sign up & onboarding. The portal offers below features:

  • a. Administration:
    • i. API Key Management: Allows developers to generate & manage API auth key for their various projects.
    • ii. User Management: Allows company admin to create & manage users for the portal under their company login.
  • b. Reports & Dashboards: Provides view into the usage, CDR & platform statistics etc.
  • c. Billing: Provides a view into past usage charges, current period usage & plan information etc.
  • d. Support: Provides a method to reach out to support teams at vCloudx for the purpose of reporting trouble tickets, bugs etc.



3.6 Other Features/Capabilities/Considerations

3.6.1 Video specifications

The EnableX platform will support different video resolutions as per the list below.

  • • Video resolutions — browsers:
    • o 1280 x 720
    • o 640 x 480
    • o 320 x 240
  • • Video resolutions — mobile (iOS/Android):
    • o Customizable
  • • Codecs - VP8/H.264



3.6.2 Video recovery/Audio fall-back

The session monitors the available bandwidth at the end points and when it drops to below the minimum threshold required to support the minimum video resolution criteria configured by the user, it automatically switches to audio. When the bandwidth recovers, it again switches back to video.



3.6.3 Firewall traversal

Supports TURN and STUN based network traversal.



3.6.4 Bandwidth Considerations

EnableX server adapts to browser-side(client) bandwidth conditions and shapes the media accordingly. Server automatically improves the video quality along with the bandwidth improvement. When browser b/w gets throttled, server derives the best possible quality with available bandwidth. If the b/w is too low to accommodate a video stream, the server pauses the video streams and sets the call mode to audio only.

Following details are considered while calculating the video quality.

Bandwidth required O/P resolution
> 1.2 Mbps 720p
600 Kbps -1.2 Mbps 480p
200 Kbps - 600 Kbps 240p
< 200 Kbps Audio only mode

The platform supports HD/SD resolutions for publishing camera stream. The minimum bandwidth requirement for HD is 1.2 Mbps. Audio takes 32Kbps consistently. For subscriber (browser display) streams, server considers the total bandwidth usage of all the subscribed streams to derive the video quality. The behaviour of the server bandwidth adaptation logic could be better explained as below: Ex. If there are 5 streams with a total available bandwidth of 500 Kbps, the server pauses 3 least active streams so that the 2 most active streams can have enough bandwidth. If the available bandwidth improves, the server revives the paused video streams. If the improved bandwidth in the above example is 700kbps, only the most active paused video stream is revived. If the improved bandwidth in the original example is 1Mbps, all the paused video streams are revived.



3.6.5 Cross Compatibility Matrix

Please refer the below matrix for feature’s cross compatibility that EnableX offers for different browsers.

Chrome Firefox Safari Opera EDGE
Version 37+ 50+ 50+ 41
Video Codec VP8 VP8 H264 VP8 VP8
Audio Codec OPUS OPUS OPUS OPUS OPUS
Audio/Video Yes Yes Yes Yes Yes
Screen Share Yes Yes Yes* Yes* Yes
Recoding Yes Yes Yes Yes Yes
Chat Yes Yes Yes No Yes
* Can view only.
For mobile platforms, EnableX provides SDKs for building apps on Android and IOS
  • Android version KitKat and above
  • IOS version 9 and above

For screen share support in Chrome & Opera, its required installation of “EnableX Screen Share” extension from Chrome Web Store.



4. Known Bugs/ Limitations

  • The system will always generate number of active talker streams as configured and will not send the own stream to self. As a result, the participants that are in active talker list will receive one stream less than that of non-talking (passive) participants.
  • Once the client end point is pushed to an audio because of low bandwidth he cannot be moved back to video when his bandwidth recovers. This will be fixed in our next release.
  • Chat messages are sent to all the participants in the conference. Private messaging between participants within a conference will be supported in near future.


5. How to Report Bugs

Support tickets can be opened from the partner portal under the support option. Please login to https://portal.enablex.io to open and manage your tickets.



6. How to Get Support

Support tickets can be opened from the partner portal under the support option. Please login to https://portal.enablex.io to open and manage your tickets.