From 2fc0c935c42cc5ef93e2a3c8644b7d0216cfad7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Velad=20Galv=C3=A1n?= Date: Mon, 29 Apr 2024 21:22:29 +0200 Subject: [PATCH] feat(DASH): Add manifest.dash.enableFastSwitching config (#6500) --- demo/config.js | 4 +++- externs/shaka/player.js | 6 +++++- lib/dash/dash_parser.js | 3 ++- lib/util/player_configuration.js | 1 + 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/demo/config.js b/demo/config.js index 15e14540bb..22b6fb984b 100644 --- a/demo/config.js +++ b/demo/config.js @@ -235,7 +235,9 @@ shakaDemo.Config = class { .addBoolInput_('Use stream once in period flattening', 'manifest.dash.useStreamOnceInPeriodFlattening') .addNumberInput_('override the Update period of dash manifest', - 'manifest.dash.updatePeriod'); + 'manifest.dash.updatePeriod') + .addBoolInput_('Enable fast switching', + 'manifest.dash.enableFastSwitching'); } /** @private */ diff --git a/externs/shaka/player.js b/externs/shaka/player.js index 420b2015a9..df8f904725 100644 --- a/externs/shaka/player.js +++ b/externs/shaka/player.js @@ -906,7 +906,8 @@ shaka.extern.xml.Node; * enableAudioGroups: boolean, * multiTypeVariantsAllowed: boolean, * useStreamOnceInPeriodFlattening: boolean, - * updatePeriod: number + * updatePeriod: number, + * enableFastSwitching: boolean * }} * * @property {string} clockSyncUri @@ -995,6 +996,9 @@ shaka.extern.xml.Node; * manifest less frequently. if you update the value during for a dynamic * manifest, it will directly trigger a new download of the manifest * Defaults to -1. + * @property {boolean} enableFastSwitching + * If false, disables fast switching track recognition. + * Defaults to true. * @exportDoc */ shaka.extern.DashManifestConfiguration; diff --git a/lib/dash/dash_parser.js b/lib/dash/dash_parser.js index 71aac7902c..40f99220fa 100644 --- a/lib/dash/dash_parser.js +++ b/lib/dash/dash_parser.js @@ -1176,7 +1176,8 @@ shaka.dash.DashParser = class { } else if (schemeId == colourPrimariesScheme || schemeId == matrixCoefficientsScheme) { continue; - } else if (schemeId == 'urn:mpeg:dash:ssr:2023') { + } else if (schemeId == 'urn:mpeg:dash:ssr:2023' && + this.config_.dash.enableFastSwitching) { isFastSwitching = true; } else { unrecognizedEssentialProperty = true; diff --git a/lib/util/player_configuration.js b/lib/util/player_configuration.js index e318318f5d..75b4db1e5c 100644 --- a/lib/util/player_configuration.js +++ b/lib/util/player_configuration.js @@ -150,6 +150,7 @@ shaka.util.PlayerConfiguration = class { multiTypeVariantsAllowed, useStreamOnceInPeriodFlattening: false, updatePeriod: -1, + enableFastSwitching: true, }, hls: { ignoreTextStreamFailures: false,