Skip to content

Commit

Permalink
Merge pull request #1903 from twilio/prep-2-24-3
Browse files Browse the repository at this point in the history
Prep for 2.24.3.
  • Loading branch information
manjeshbhargav authored Oct 10, 2022
2 parents e62e176 + bd378ae commit 42a2181
Show file tree
Hide file tree
Showing 11 changed files with 35 additions and 143 deletions.
2 changes: 1 addition & 1 deletion .circleci/images/firefox/beta/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM circleci/node:latest
FROM cimg/node:current-browsers

#
# Install Java 11 LTS / OpenJDK 11
Expand Down
5 changes: 4 additions & 1 deletion .circleci/images/firefox/stable/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
FROM circleci/node:lts-browsers
FROM cimg/node:lts

#
# Install Java 11 LTS / OpenJDK 11
#
RUN if grep -q Debian /etc/os-release && grep -q stretch /etc/os-release; then \
echo 'deb http://deb.debian.org/debian stretch-backports main' | sudo tee -a /etc/apt/sources.list.d/stretch-backports.list; \
elif grep -q Ubuntu /etc/os-release && grep -q xenial /etc/os-release; then \
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
sudo apt-get update && sudo apt-get install -y software-properties-common && \
sudo add-apt-repository -y ppa:openjdk-r/ppa; \
fi && \
Expand Down Expand Up @@ -33,8 +34,10 @@ USER root

# Install and enable iptables
RUN echo "Setting up iptables..." &&\
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - &&\
apt-get update &&\
apt-get install -y iptables &&\
sudo apt-get install -y xvfb &&\
adduser user1 &&\
adduser user1 sudo &&\
su - user1
Expand Down
2 changes: 1 addition & 1 deletion .circleci/images/firefox/unstable/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM circleci/node:latest
FROM cimg/node:current-browsers

#
# Install Java 11 LTS / OpenJDK 11
Expand Down
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,17 @@ The Twilio Programmable Video SDKs use [Semantic Versioning](http://www.semver.o

**Version 1.x reached End of Life on September 8th, 2021.** See the changelog entry [here](https://www.twilio.com/changelog/end-of-life-complete-for-unsupported-versions-of-the-programmable-video-sdk). Support for the 1.x version ended on December 4th, 2020.

2.24.3 (October 10, 2022)
=========================

Bug Fixes
---------

- Fixed a bug where iOS Safari Participant could not hear or see others after switching back from YouTube picture-in-picture mode. (VIDEO-11352)
- Fixed a bug where iOS Safari Participant could not hear others after switching from recording an audio message in a messenger app. (VIDEO-11354)
- Fixed a bug where iOS Safari Participant could not hear or see others after watching a video in another browser tab. (VIDEO-11356)
- Fixed a bug where iOS Safari Participant sometimes could not hear or see others after finishing an incoming call in full screen mode. (VIDEO-11359)

2.24.2 (September 29, 2022)
===========================

Expand Down
52 changes: 4 additions & 48 deletions COMMON_ISSUES.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ Common Issues
Are you experiencing an issue with twilio-video.js? Please review this list of known issues and workarounds
before opening a new issue. We recommend regularly upgrading to the latest version of the SDK, which includes new features, bug fixes and improvements (see [CHANGELOG.md](CHANGELOG.md)).


### Chrome desktop
<details>
<summary>Chrome memory leak might cause degraded experience in group rooms</summary>
Expand Down Expand Up @@ -32,8 +31,6 @@ before opening a new issue. We recommend regularly upgrading to the latest versi
</p>
</details>



### Chrome mobile
<details>
<summary>Android 11: Participants are unable to connect to a room due to ICE gathering failures on certain devices</summary>
Expand All @@ -42,29 +39,6 @@ before opening a new issue. We recommend regularly upgrading to the latest versi
Participants are unable to connect to a room on certain Android 11 devices due to a [Chromium bug](https://bugs.chromium.org/p/chromium/issues/detail?id=1240237) where the browser is unable to gather ice candidates. Please see this [github issue](https://github.com/twilio/twilio-video.js/issues/1701#issuecomment-1067533348) for more details and a potential solution to mitigate the issue.
</p>
</details>
<details>
<summary>Android 12: Video distortion on Chrome when hardware acceleration is enabled</summary>
<p>

This is a VP8 encoder issue on Android 12. Please see this [github ticket](https://github.com/twilio/twilio-video.js/issues/1627) and this [Chrome bug](https://bugs.chromium.org/p/chromium/issues/detail?id=1237677) for more details.
</p>
</details>
<details>
<summary>Android Chrome on Pixel 3 receives corrupted video frames with codec VP8</summary>
<p>

This is an issue in the hardware VP8 encoder on the Pixel 3 devices. See [WebRTC ticket](https://bugs.chromium.org/p/webrtc/issues/detail?id=11337). To work around this issue, please set H264 as the preferred video codec on Pixel 3. ([Example](https://github.com/twilio/video-quickstart-android/issues/470#issuecomment-623042880)).
</p>
</details>
<details>
<summary>Android Chrome 81+ Participants fail to subscribe to H264 VideoTracks in Group Rooms</summary>
<p>

This happens primarily due to this [Chromium Bug](https://bugs.chromium.org/p/chromium/issues/detail?id=1074421).
We have added a workaround to the SDK in version 2.4.0. For earlier versions of the SDK,
please apply the workaround discussed in this [GitHub Issue](https://github.com/twilio/twilio-video.js/issues/966#issuecomment-619212184).
</p>
</details>

### Safari desktop
<details>
Expand All @@ -83,15 +57,6 @@ before opening a new issue. We recommend regularly upgrading to the latest versi
To fix this issue, please update your adapter.js version to the newer one (^7.7.1) with the [fix](https://github.com/webrtcHacks/adapter/commit/de0348c756b7bda11a700bf7ea9e9393cab16421)
</p>
</details>

<details>
<summary>Echo issues in Safari when using external microphone</summary>
<p>

This is an echo cancellation bug in Safari's implementation of WebRTC. For more details, go [here](https://bugs.webkit.org/show_bug.cgi?id=213723).
and [here](https://github.com/twilio/twilio-video.js/issues/1433)
</p>
</details>
<details>
<summary>Angular applications missing audio and/or video tracks</summary>
<p>
Expand All @@ -110,14 +75,6 @@ before opening a new issue. We recommend regularly upgrading to the latest versi
</p>
</details>
<details>
<summary>After unpublishing a Track, Safari 12.1 Participants cannot publish Track(s) of the same kind</summary>
<p>

Because of this Safari 12.1 [bug](https://bugs.webkit.org/show_bug.cgi?id=195489),
once a Participant unpublishes a MediaTrack of any kind (audio or video), it will not be able to publish another MediaTrack of the same kind. DataTracks are not affected. We have escalated this bug to the Safari Team and are keeping track of related developments.
</p>
</details>
<details>
<summary>Video elements may not be visible when applying a 3d transform</summary>
<p>
Expand Down Expand Up @@ -263,16 +220,15 @@ transform: scaleX(-1)
This issue happened due to regression in Safari's WebKit in iOS version 14.2, the fix got rolled out in iOS 14.3 beta3. Find more details [here](https://github.com/twilio/twilio-video.js/issues/1296) and in this [WebKit bug](https://bugs.webkit.org/show_bug.cgi?id=218762).
</p>
</details>
### Firefox desktop
<details>
<summary>Firefox Participants sometimes fail to subscribe to DataTracks on Peer-to-Peer Rooms</summary>
<summary>Participant is disconnected from the Room after being backgrounded for 30 seconds due to another audio/video app or incoming phone call</summary>
<p>
Because of this Firefox [bug](https://bugzilla.mozilla.org/show_bug.cgi?id=1603887) Participants that join a Peer-to-Peer Room after a DataTrack has been published by a Firefox Participant fail to subscribe to it. You can work around this issue by publishing a DataTrack while connecting to the Room.
This is due to iOS suspending browser sessions that are not capturing audio after 30 seconds, as mentioned in this [Webkit bug comment](https://bugs.webkit.org/show_bug.cgi?id=204681#c5). You can work around this by rejoining the Room once the browser is foregrounded.
</p>
</details>
### Firefox desktop
<details>
<summary>Firefox Participants cannot constrain their audio bandwidth</summary>
<p>
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ Releases of twilio-video.js are hosted on a CDN, and you can include these
directly in your web app using a &lt;script&gt; tag.

```html
<script src="//sdk.twilio.com/js/video/releases/2.24.2/twilio-video.min.js"></script>
<script src="//sdk.twilio.com/js/video/releases/2.24.3/twilio-video.min.js"></script>

```

Expand Down
12 changes: 0 additions & 12 deletions lib/media/track/audiotrack.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,18 +28,6 @@ class AudioTrack extends MediaTrack {
super(mediaTrackTransceiver, options);
}

/**
* @private
*/
_start() {
super._start();
if (this._dummyEl) {
// once started let go of dummy element
this._dummyEl.srcObject = null;
this._dummyEl = null;
}
}

/**
* Create an HTMLAudioElement and attach the {@link AudioTrack} to it.
*
Expand Down
13 changes: 13 additions & 0 deletions lib/media/track/remoteaudiotrack.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,19 @@ class RemoteAudioTrack extends RemoteMediaAudioTrack {
return `[RemoteAudioTrack #${this._instanceId}: ${this.sid}]`;
}

/**
* @private
*/
_start() {
super._start();
if (this._dummyEl) {
// NOTE(mpatwardhan): To fix VIDEO-6336, clear dummy element after the
// RemoteAudioTrack has started.
this._dummyEl.srcObject = null;
this._dummyEl = null;
}
}

/**
* Update the subscribe {@link Track.Priority} of the {@link RemoteAudioTrack}.
* @param {?Track.Priority} priority - the new subscribe {@link Track.Priority};
Expand Down
16 changes: 0 additions & 16 deletions lib/webrtc/rtcpeerconnection/firefox.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,6 @@ var inherits = require('../../vendor/inherits');
var updateTracksToSSRCs = require('../util/sdp').updateUnifiedPlanTrackIdsToSSRCs;
var util = require('../util');

// NOTE(mroberts): This is a short-lived workaround. Checking the user agent
// string might not fix every affected Firefox instance, but it should be good
// enough for this bug.
var needsWorkaroundForBug1480277 = typeof navigator === 'object'
&& navigator.userAgent
&& (navigator.userAgent.match(/Firefox\/61/) || navigator.userAgent.match(/Firefox\/62/));

// NOTE(mroberts): This class wraps Firefox's RTCPeerConnection implementation.
// It provides some functionality not currently present in Firefox, namely the
// abilities to
Expand Down Expand Up @@ -122,15 +115,6 @@ Object.defineProperty(FirefoxRTCPeerConnection.prototype, 'peerIdentity', {
})
});

if (needsWorkaroundForBug1480277) {
FirefoxRTCPeerConnection.prototype.addTrack = function addTrack() {
var track = arguments[0];
var sender = this._peerConnection.addTrack.apply(this._peerConnection, arguments);
sender.replaceTrack(track);
return sender;
};
}

FirefoxRTCPeerConnection.prototype.createAnswer = function createAnswer() {
var args = [].slice.call(arguments);
var promise;
Expand Down
59 changes: 0 additions & 59 deletions test/integration/spec/webrtc/rtcpeerconnection.js
Original file line number Diff line number Diff line change
Expand Up @@ -454,65 +454,6 @@ describe(`RTCPeerConnection(${sdpFormat})`, function() {
});
});

// NOTE(mroberts): This integration test is ported from the JSFiddle in Bug
// 1480277.
(isFirefox ? describe : describe.skip)('@unstable: VIDEO-10685 Bug 1480277', () => {
it('is worked around', async () => {
const configuration = {
bundlePolicy: 'max-bundle',
rtcpMuxPolicy: 'required'
};

const [pc1, pc2] = createPeerConnections(configuration);

const audioContext = new AudioContext();
const mediaStreamDestinationNode = audioContext.createMediaStreamDestination();
const { stream: stream1 } = mediaStreamDestinationNode;
const [track1] = stream1.getAudioTracks();
pc1.addTrack(track1, stream1);

const options = {
offerToReceiveAudio: true,
offerToReceiveVideo: true
};

await negotiate(pc1, pc2, options);

const constraints = {
audio: true,
fake: true
};

const stream2 = await navigator.mediaDevices.getUserMedia(constraints);
const [track2] = stream2.getAudioTracks();
pc2.addTransceiver(track2, { streams: [stream2] });

await negotiate(pc2, pc1, options);

const stream3 = await navigator.mediaDevices.getUserMedia(constraints);
const [track3] = stream3.getAudioTracks();
const sender = pc1.addTrack(track3, stream3);

await negotiate(pc1, pc2, options);

const { track: remoteTrack3 } = pc2.getReceivers()[2];

const isSilent = await detectSilence(audioContext, new MediaStream([remoteTrack3]), 10000);

try {
assert.equal(isSilent, false, 'remoteTrack was unexpectedly silent');
} catch (error) {
throw error;
} finally {
pc1.close();
pc2.close();
track1.stop();
track2.stop();
track3.stop();
}
});
});

if (RTCPeerConnection.prototype.addTransceiver && sdpFormat !== 'planb') {
describe('RTCRtpTransceiver', () => {
describe('addTransceiver(kind, init)', () => {
Expand Down
4 changes: 0 additions & 4 deletions test/unit/spec/media/track/audiotrack.js
Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,6 @@ describe('AudioTrack', () => {
it('should set the element\'s oncanplay to null', () => {
assert.equal(dummyElement.oncanplay, null);
});

it('should set the element\'s srcObject to null', () => {
assert.equal(dummyElement.srcObject, null);
});
});
});

Expand Down

0 comments on commit 42a2181

Please sign in to comment.