diff --git a/lib/polyfill/media_capabilities.js b/lib/polyfill/media_capabilities.js index 537cc982f6..ec8c87a251 100644 --- a/lib/polyfill/media_capabilities.js +++ b/lib/polyfill/media_capabilities.js @@ -24,8 +24,8 @@ shaka.polyfill.MediaCapabilities = class { * @export */ static install() { - // Since MediaCapabilities is not fully supported on Chromecast yet, we - // should always install polyfill for Chromecast. + // Since MediaCapabilities is not fully supported on some Chromecast yet, + // we should always install polyfill for all Chromecast not Android-based. // TODO: re-evaluate MediaCapabilities in the future versions of Chromecast. // Since MediaCapabilities implementation is buggy in Apple browsers, we // should always install polyfill for Apple browsers. @@ -37,10 +37,16 @@ shaka.polyfill.MediaCapabilities = class { // See: https://github.com/shaka-project/shaka-player/issues/3582 // TODO: re-evaluate MediaCapabilities in the future versions of PS5 // Browsers. - if (!shaka.util.Platform.isChromecast() && - !shaka.util.Platform.isApple() && - !shaka.util.Platform.isPS5() && - navigator.mediaCapabilities) { + let canUseNativeMCap = true; + if (shaka.util.Platform.isApple() || + shaka.util.Platform.isPS5() || + shaka.util.Platform.isChromecast()) { + canUseNativeMCap = false; + } + if (shaka.util.Platform.isAndroidCastDevice()) { + canUseNativeMCap = true; + } + if (canUseNativeMCap && navigator.mediaCapabilities) { shaka.log.info( 'MediaCapabilities: Native mediaCapabilities support found.'); return; diff --git a/lib/util/platform.js b/lib/util/platform.js index c846e7792e..92f63e5e12 100644 --- a/lib/util/platform.js +++ b/lib/util/platform.js @@ -163,6 +163,16 @@ shaka.util.Platform = class { return shaka.util.Platform.userAgentContains_('CrKey'); } + /** + * Check if the current platform is a Android-based Cast devices. + * + * @return {boolean} + */ + static isAndroidCastDevice() { + return shaka.util.Platform.isChromecast() && + shaka.util.Platform.userAgentContains_('Android'); + } + /** * Check if the current platform is Google Chrome. *