Skip to content

Releases: twilio/twilio-video.js

2.0.0-beta13

29 Aug 20:04
Compare
Choose a tag to compare

2.0.0-beta13 (August 29, 2019)

New Features

  • You can now enable DSCP tagging for media packets by setting a new ConnectOptions property enableDscp to true. DSCP tagging allows you to request enhanced QoS treatment for media packets from any firewall/routers that support this feature. Setting this option to true will request DSCP tagging for media packets on supported browsers (only Chrome supports this as of now). Audio packets will be sent with DSCP header value set to 0xb8 which corresponds to EF = Expedited Forwarding. Video packets will be sent with DSCP header value set to 0x88 which corresponds to AF41 = Assured Forwarding. (JSDK-2456)

    const { connect } = require('twilio-video');
    const room = await connect(token, {
      enableDscp: true
    });
  • The ConnectOptions flag dscpTagging which was introduced in 1.19.0 has now been renamed to enableDscp. Using the old name still works, but is deprecated and scheduled for removal. (JSDK-2492)

  • Setting bandwidth limits for media using LocalParticipant.setParameters() will now no longer require a round of negotiation with the remote peer and will take effect instantaneously. (JSDK-2460)

Bug Fixes

  • Worked around a minor interop issue between Chrome/Safari Participants and Firefox 68+ Participants in a Peer-to-Peer Room. Although this issue does no affect the normal functioning of the Room, it resulted in the Chrome/Safari Participants logging cryptic Error messages to the JavaScript console. Now, twilio-video.js will log warning messages until Chrome (bug) and Safari fix this issue. (JSDK-2412)
  • Fixed a bug where connecting to a Room with a region containing special characters in ConnectOptions failed with an Error other than SignalingConnectionError. (JSDK-2400)

1.19.1

28 Aug 23:15
Compare
Choose a tag to compare

1.19.1 (August 28, 2019)

New Features

  • Previously in 1.19.0, we introduced a new ConnectOptions flag dscpTagging which set the DSCP header value for audio packets to 0xb8 (Expedited Forwarding - EF). Now, enabling this flag will also set the DSCP header value of video packets to 0x88 (Assured Forwarding - AF41). (JSDK-2488)

1.19.0

22 Aug 00:11
Compare
Choose a tag to compare

1.19.0 (August 21, 2019)

New Features

  • You can now enable DSCP tagging for audio
    packets on supported browsers (only Chrome supports this as of now) by setting a new ConnectOptions property
    dscpTagging to true. This will request enhanced QoS treatment for audio packets from any firewalls or
    routers that support this feature. Audio packets will be sent with DSCP header value set to (0xb8) which
    corresponds to EF (Expedited Forwarding). (JSDK-2440)

    const { connect } = require('twilio-video');
    const room = await connect(token, {
      dscpTagging: true
    });
  • Setting bandwidth limits for media using LocalParticipant.setParameters() will now no longer require a
    round of negotiation with the remote peer and will take effect instantaneously. (JSDK-2250)

Bug Fixes

  • Worked around a minor interop issue between Chrome/Safari Participants and Firefox 68+
    Participants in a Peer-to-Peer Room. Although this issue does no affect the normal
    functioning of the Room, it resulted in the Chrome/Safari Participants logging cryptic
    Error messages to the JavaScript console. Now, twilio-video.js will log warning messages
    until Chrome (bug) and Safari
    fix this issue. (JSDK-2412)

2.0.0-beta12

13 Jul 07:25
Compare
Choose a tag to compare

2.0.0-beta12 (July 12, 2019)

New Features

  • By default, you will subscribe to all RemoteTracks shared by other Participants in a Room. You can now override this behavior through a new ConnectOptions flag automaticSubscription. Setting it to false will make sure that you will not subscribe to any RemoteTrack in a Group or Small Group Room. Setting it to true, or not setting it at all preserves the default behavior. This flag does not have any effect in a Peer-to-Peer Room. (JSDK-2395)

      const { connect } = require('twilio-video');
      const room = await connect(token, {
        automaticSubscription: false
      });
  • twilio-video.js will now detect and attempt to recover from media disruptions quicker than before thereby improving the performance of the Network Reconnection API. (JSDK-2337)

Bug Fixes

  • Fixed a bug where Participants in a Group or Small Group Room stopped receiving Dominant Speaker and Network Quality updates when the media server recovered from a failover. (JSDK-2307)
  • Fixed a bug where, the local and remote AudioTracks' audioLevels returned by Room.getStats() were not in the range [0-32767]. (JSDK-2303)
  • Fixed a bug where Chrome and Safari Participants were enabling simulcast for H264 LocalVideoTracks when VP8 simulcast was enabled. (JSDK-2321)

Developer Notes

  • On October 12, 2018, the specification for the JavaScript Session Establishment Protocol (JSEP) was updated to remove MediaStreamTrack IDs from Unified Plan SDPs (Media Session Descriptions). twilio-video.js depends on MediaStreamTrack IDs to map WebRTC MediaStreamTracks to the corresponding RemoteAudioTracks and RemoteVideoTracks. With this release of twilio-video.js, we have added support for the updated JSEP specification for Firefox and Safari (twilio-video.js uses Plan B SDPs on Chrome). We highly recommend that you upgrade to this version so your application continues to work on Firefox and Safari even after they support the updated JSEP specification. We will provide a detailed advisory once we have more information about when they are planning to support the updated JSEP specification. (JSDK-2385)

1.18.2

02 Jul 01:04
Compare
Choose a tag to compare

1.18.2 (July 1, 2019)

Bug Fixes

  • Fixed a bug where in a Peer-to-Peer Room, a Firefox Participant's AudioTrack was not audible to a Chrome or Safari Participant if the Firefox Participant was the first to join the Room. (JSDK-2410)
  • Fixed a bug where Participants in a Group or Small Group Room stopped receiving Dominant Speaker and Network Quality updates when the media server recovered from a failover. (JSDK-2307)

Developer Notes

  • On October 12, 2018, the specification for the JavaScript Session Establishment Protocol (JSEP) was updated to remove MediaStreamTrack IDs from Unified Plan SDPs (Media Session Descriptions). twilio-video.js depends on MediaStreamTrack IDs to map WebRTC MediaStreamTracks to the corresponding RemoteAudioTracks and RemoteVideoTracks. With this release of twilio-video.js, we have added support for the updated JSEP specification for Firefox and Safari (twilio-video.js uses Plan B SDPs on Chrome). We highly recommend that you upgrade to this version so your application continues to work on Firefox and Safari even after they support the updated JSEP specification. We will provide a detailed advisory once we have more information about when they are planning to support the updated JSEP specification. (JSDK-2383)

2.0.0-beta11

13 Jun 01:04
Compare
Choose a tag to compare

2.0.0-beta11 (June 12, 2019)

New Features

  • By default, twilio-video.js connects to your nearest signaling server, as determined by latency based routing. You can now override this behavior by using a new ConnectOptions flag called region. This will make sure that your signaling traffic will terminate in the specified region. (JSDK-2338)

    const { connect } = require('twilio-video');
    const room = await connect(token, {
      region: 'de1'
    });

    This will guarantee that your signaling traffic will terminate in Germany. For other possible values
    for region, please refer to this table. If you specify an invalid value for region, connect will raise a SignalingConnectionError:

    const { connect } = require('twilio-video');
    
    try {
      const room = await connect(token, {
        region: 'foo'
      });
    } catch (error) {
      assert.equal(error.code, 53000);
      assert.equal(error.message, 'Signaling connection error');
    }

Bug Fixes

  • Fixed a bug where Firefox Participants were not able to publish more than one LocalDataTrack after joining a Group Room. (JSDK-2274)
  • Fixed a bug where Firefox Participants sometimes lost their media connections when they tried to publish a LocalDataTrack in a Group Room. (JSDK-2256)

1.18.1

08 Jun 01:05
Compare
Choose a tag to compare

1.18.1 (June 7, 2019)

Bug Fixes

  • Fixed a bug where Participants on Firefox 68 or above were unable to publish LocalAudioTracks or LocalVideoTracks. (JSDK-2381)

2.0.0-beta10

06 Jun 23:40
Compare
Choose a tag to compare

2.0.0-beta10 (June 6, 2019)

Bug Fixes

  • Fixed a bug where Participants on Firefox 68 or above were unable to publish LocalAudioTracks or LocalVideoTracks. (JSDK-2381)

2.0.0-beta9

03 May 01:22
Compare
Choose a tag to compare

2.0.0-beta9 (May 2, 2019)

New Features

  • Network reconnection, which was introduced as an opt-in feature in [email protected], is now enabled by default. The temporary ConnectOptions flag _useTwilioConnection has been removed. If this flag is present in ConnectOptions, it will be ignored. (JSDK-2335)

2.0.0-beta8

23 Apr 21:03
Compare
Choose a tag to compare

2.0.0-beta8 (April 23, 2019)

New Features

  • You can now use the Network Quality API to receive Network Quality levels for RemoteParticipants in a Group Room. You can also control the verbosity of the network quality information that is reported. A Participant will now have an additional property networkQualityStats which contains the network quality statistics used to calculate the networkQualityLevel. (JSDK-2255)

    You can specify the verbosity levels of the network quality information in ConnectOptions while joining the Room:

    const { connect } = require('twilio-video');
    const room = await connect(token, {
      networkQuality: {
        local: 1, // Verbosity level for LocalParticipant [1 - 3]
        remote: 2 // Verbosity level for RemoteParticipants [0 - 3]
      }
    });
    
    // Set up reporting of network quality statistics for the LocalParticipant.
    setupNetworkQualityStats(room.localParticipant);
    
    // Set up reporting of network quality statistics for RemoteParticipants in the Group Room.
    room.participants.forEach(setupNetworkQualityStats);
    
    // Set up reporting of network quality statistics for RemoteParticipants that will join the Group Room.
    room.on('participantConnected', setupNetworkQualityStats);
    
    function logNetworkQualityStats(participant, networkQualityLevel, networkQualityStats) {
      console.log(`Network quality level for ${participant.identity}:`, networkQualityLevel);  
      if (networkQualityStats) {
        // Verbosity is in the range [2 - 3].
        console.log('Network quality statistics used to compute the level:', networkQualityStats);
      }
    }
    
    function setupNetworkQualityStats(participant) {
      // Log current network quality statistics of the Participant.
      logNetworkQualityStats(participant, participant.networkQualityLevel, participant.networkQualityStats);
      // Listen to changes in the Participant's network quality level.
      participant.on('networkQualityLevelChanged', (networkQualityLevel, networkQualityStats) => {
        logNetworkQualityStats(participant, networkQualityLevel, networkQualityStats);
      });
    }

    You can also change the verbosity levels of the network quality information after joining the Room:

    room.localParticipant.setNetworkQualityConfiguration({
      local: 3,
      remote: 1
    });