From 2eb35c514bc946e0d79efb551f6a7533d39f9a19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wojciech=20Tyczy=C5=84ski?= Date: Thu, 6 Mar 2025 13:56:07 +0100 Subject: [PATCH] override DV codecs --- lib/device/abstract_device.js | 7 +++++++ lib/device/i_device.js | 7 +++++++ lib/device/xbox.js | 7 +++++++ lib/util/stream_utils.js | 3 ++- 4 files changed, 23 insertions(+), 1 deletion(-) 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(