diff --git a/lib/device/abstract_device.js b/lib/device/abstract_device.js index f5bd3dfd8a..595c1b755a 100644 --- a/lib/device/abstract_device.js +++ b/lib/device/abstract_device.js @@ -138,6 +138,13 @@ shaka.device.AbstractDevice = class { return Promise.resolve({width: Infinity, height: Infinity}); } + /** + * @override + */ + shouldOverrideDolbyVisionCodecs() { + return false; + } + /** * @override */ diff --git a/lib/device/i_device.js b/lib/device/i_device.js index ddc9e887e1..a72db158fc 100644 --- a/lib/device/i_device.js +++ b/lib/device/i_device.js @@ -118,6 +118,13 @@ shaka.device.IDevice = class { * @return {shaka.extern.PlayerConfiguration} */ adjustConfig(config) {} + + /** + * Checks should Dolby Vision codecs be overridden to their H.264 and H.265 + * equivalents. + * @return {boolean} + */ + shouldOverrideDolbyVisionCodecs() {} }; /** diff --git a/lib/device/xbox.js b/lib/device/xbox.js index a5672693f1..bb89748c98 100644 --- a/lib/device/xbox.js +++ b/lib/device/xbox.js @@ -57,6 +57,13 @@ shaka.device.Xbox = class extends shaka.device.AbstractDevice { return true; } + /** + * @override + */ + shouldOverrideDolbyVisionCodecs() { + return this.isLegacyEdge_; + } + /** * @override */ diff --git a/lib/util/stream_utils.js b/lib/util/stream_utils.js index 051d2ed405..f91583f7d7 100644 --- a/lib/util/stream_utils.js +++ b/lib/util/stream_utils.js @@ -427,7 +427,8 @@ shaka.util.StreamUtils = class { goog.asserts.assert(navigator.mediaCapabilities, 'MediaCapabilities should be valid.'); - if (shaka.util.Platform.isXboxOne()) { + if (shaka.device.DeviceFactory.getDevice() + .shouldOverrideDolbyVisionCodecs()) { shaka.util.StreamUtils.overrideDolbyVisionCodecs(manifest.variants); } await shaka.util.StreamUtils.getDecodingInfosForVariants(