Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Install polyfills for Comcast X1 devices #7529

Merged
merged 20 commits into from
Nov 4, 2024
Merged
3 changes: 2 additions & 1 deletion lib/polyfill/media_capabilities.js
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,8 @@ shaka.polyfill.MediaCapabilities = class {
shaka.util.Platform.isWebOS() ||
shaka.util.Platform.isTizen() ||
shaka.util.Platform.isEOS() ||
shaka.util.Platform.isHisense()) {
shaka.util.Platform.isHisense() ||
shaka.util.Platform.isComcastX1()) {
canUseNativeMCap = false;
}
if (canUseNativeMCap && navigator.mediaCapabilities) {
Expand Down
12 changes: 12 additions & 0 deletions lib/polyfill/mediasource.js
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,18 @@ shaka.polyfill.MediaSource = class {
// the player from trying to play opus on Tizen, we will override media
// source to always reject opus content.
shaka.polyfill.MediaSource.rejectCodec_('opus');
} else if (shaka.util.Platform.isComcastX1()) {
// XOne look to be like safari 8 which do not correctly
// implement abort() on SourceBuffer.
// Calling abort() before appending a segment causes that segment to be
// incomplete in the buffer.
// Bug filed: https://bugs.webkit.org/show_bug.cgi?id=165342
shaka.polyfill.MediaSource.stubAbort_();
// If you remove up to a keyframe, Webkit 601.x.x incorrectly will also
// remove that keyframe and the content up to the next.
// Offsetting the end of the removal range seems to help.
// Bug filed: https://bugs.webkit.org/show_bug.cgi?id=177884
shaka.polyfill.MediaSource.patchRemovalRange_();
} else {
shaka.log.info('Using native MSE as-is.');
}
Expand Down
6 changes: 3 additions & 3 deletions lib/util/platform.js
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,7 @@ shaka.util.Platform = class {
!shaka.util.Platform.isOrange() &&
!shaka.util.Platform.isPS4() &&
!shaka.util.Platform.isAmazonFireTV() &&
!shaka.util.Platform.isWPE() &&
!shaka.util.Platform.isComcastX1() &&
!shaka.util.Platform.isZenterio() &&
!shaka.util.Platform.isSkyQ();
}
Expand Down Expand Up @@ -368,7 +368,7 @@ shaka.util.Platform = class {
* Check if the current platform is Comcast X1.
* @return {boolean}
*/
static isWPE() {
static isComcastX1() {
return shaka.util.Platform.userAgentContains_('WPE');
}

Expand Down Expand Up @@ -536,7 +536,7 @@ shaka.util.Platform = class {
Platform.isPS5() || Platform.isAmazonFireTV() ||
Platform.isEOS() || Platform.isAPL() ||
Platform.isVirginMedia() || Platform.isOrange() ||
Platform.isWPE() || Platform.isChromecast() ||
Platform.isComcastX1() || Platform.isChromecast() ||
Platform.isHisense() || Platform.isZenterio()) {
return true;
}
Expand Down
Loading