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 c51b29de17..48c6ba10c8 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,