diff --git a/demo/config.js b/demo/config.js
index a33d692604..d6528caf4c 100644
--- a/demo/config.js
+++ b/demo/config.js
@@ -483,7 +483,6 @@ shakaDemo.Config = class {
'streaming.inaccurateManifestTolerance',
/* canBeDecimal= */ true)
.addBoolInput_('Low Latency Mode', 'streaming.lowLatencyMode')
- .addBoolInput_('Auto Low Latency Mode', 'streaming.autoLowLatencyMode')
.addBoolInput_('Force HTTP', 'streaming.forceHTTP')
.addBoolInput_('Force HTTPS', 'streaming.forceHTTPS')
.addNumberInput_('Min bytes for progress events',
diff --git a/docs/tutorials/config.md b/docs/tutorials/config.md
index 5f4a6037ab..60813343b1 100644
--- a/docs/tutorials/config.md
+++ b/docs/tutorials/config.md
@@ -122,7 +122,8 @@ buffering settings) while some will not have any effect until the next call to
#### Low latency streaming
-With `.streaming.lowLatencyMode` set to true,
+With `.streaming.lowLatencyMode` set to true and the manifest is Low Latency,
+Shaka uses a Low Latency config:
`.streaming.inaccurateManifestTolerance` is set to 0 by default,
`.streaming.segmentPrefetchLimit` is set to 2 by default,
`.streaming.updateIntervalSeconds` is set to 0.1 by default,
@@ -134,11 +135,10 @@ With `.streaming.lowLatencyMode` set to true,
To customize the values of inaccurateManifestTolerance, rebufferingGoal,
segmentPrefetchLimit, updateIntervalSeconds and baseDelay with low latency
-mode, you can set the fields in the same or subsequent call to configure().
+mode, you can set the fields in the call to configurationForLowLatency().
```js
-player.configure({
+player.configurationForLowLatency({
streaming: {
- lowLatencyMode: true,
inaccurateManifestTolerance: 0,
segmentPrefetchLimit: 2,
updateIntervalSeconds: 0.1,
diff --git a/externs/shaka/manifest_parser.js b/externs/shaka/manifest_parser.js
index 6eaa98d1e7..a05c9be969 100644
--- a/externs/shaka/manifest_parser.js
+++ b/externs/shaka/manifest_parser.js
@@ -132,8 +132,6 @@ shaka.extern.ManifestParser = class {
* onEvent: function(!Event),
* onError: function(!shaka.util.Error),
* isLowLatencyMode: function():boolean,
- * isAutoLowLatencyMode: function():boolean,
- * enableLowLatencyMode: function(),
* updateDuration: function(),
* newDrmInfo: function(shaka.extern.Stream),
* onManifestUpdated: function(),
@@ -167,10 +165,6 @@ shaka.extern.ManifestParser = class {
* Should be called when an error occurs.
* @property {function():boolean} isLowLatencyMode
* Return true if low latency streaming mode is enabled.
- * @property {function():boolean} isAutoLowLatencyMode
- * Return true if auto low latency streaming mode is enabled.
- * @property {function()} enableLowLatencyMode
- * Enable low latency streaming mode.
* @property {function()} updateDuration
* Update the presentation duration based on PresentationTimeline.
* @property {function(shaka.extern.Stream)} newDrmInfo
diff --git a/externs/shaka/player.js b/externs/shaka/player.js
index 55da8b4df4..4de2de1f3f 100644
--- a/externs/shaka/player.js
+++ b/externs/shaka/player.js
@@ -1560,7 +1560,6 @@ shaka.extern.LiveSyncConfiguration;
* useNativeHlsForFairPlay: boolean,
* inaccurateManifestTolerance: number,
* lowLatencyMode: boolean,
- * autoLowLatencyMode: boolean,
* forceHTTP: boolean,
* forceHTTPS: boolean,
* minBytesForProgressEvents: number,
@@ -1719,13 +1718,6 @@ shaka.extern.LiveSyncConfiguration;
* other things, see: docs/tutorials/config.md
*
* Defaults to false
.
- * @property {boolean} autoLowLatencyMode
- * If the stream is low latency and the user has not configured the
- * lowLatencyMode, but if it has been configured to activate the
- * lowLatencyMode if a stream of this type is detected, we automatically
- * activate the lowLatencyMode.
- *
- * Defaults to false
.
* @property {boolean} forceHTTP
* If true, if the protocol is HTTPs change it to HTTP.
* If both forceHTTP and forceHTTPS are set, forceHTTPS wins.
diff --git a/lib/cast/cast_utils.js b/lib/cast/cast_utils.js
index 3dbdee74d4..bf0baf4261 100644
--- a/lib/cast/cast_utils.js
+++ b/lib/cast/cast_utils.js
@@ -342,6 +342,7 @@ shaka.cast.CastUtils.LargePlayerGetterMethods = {
// NOTE: The 'getSharedConfiguration' property is not proxied as it would
// not be possible to share a reference.
'getConfiguration': 4,
+ 'getConfigurationForLowLatency': 4,
'getStats': 5,
'getTextTracks': 2,
'getVariantTracks': 2,
@@ -368,7 +369,12 @@ shaka.cast.CastUtils.PlayerGetterMethodsThatRequireLive = {
* @const {!Array.>}
*/
shaka.cast.CastUtils.PlayerInitState = [
- ['getConfiguration', 'configure'],
+ [
+ 'getConfiguration',
+ 'configure',
+ 'getConfigurationForLowLatency',
+ 'configurationForLowLatency',
+ ],
];
@@ -392,6 +398,7 @@ shaka.cast.CastUtils.PlayerVoidMethods = [
'addThumbnailsTrack',
'cancelTrickPlay',
'configure',
+ 'configurationForLowLatency',
'getChapters',
'getChaptersTracks',
'resetConfiguration',
diff --git a/lib/dash/dash_parser.js b/lib/dash/dash_parser.js
index 81b97997e3..e237163801 100644
--- a/lib/dash/dash_parser.js
+++ b/lib/dash/dash_parser.js
@@ -772,20 +772,7 @@ shaka.dash.DashParser = class {
presentationTimeline.setDuration(duration || Infinity);
}
- // The segments are available earlier than the availability start time.
- // If the stream is low latency and the user has not configured the
- // lowLatencyMode, but if it has been configured to activate the
- // lowLatencyMode if a stream of this type is detected, we automatically
- // activate the lowLatencyMode.
- if (this.isLowLatency_ && !this.lowLatencyMode_) {
- const autoLowLatencyMode = this.playerInterface_.isAutoLowLatencyMode();
- if (autoLowLatencyMode) {
- this.playerInterface_.enableLowLatencyMode();
- this.lowLatencyMode_ = this.playerInterface_.isLowLatencyMode();
- }
- }
-
- if (this.lowLatencyMode_) {
+ if (this.isLowLatency_ && this.lowLatencyMode_) {
presentationTimeline.setAvailabilityTimeOffset(
this.minTotalAvailabilityTimeOffset_);
}
@@ -798,7 +785,7 @@ shaka.dash.DashParser = class {
await contentSteeringPromise;
- if (this.lowLatencyMode_) {
+ if (this.isLowLatency_ && this.lowLatencyMode_) {
const presentationDelay = suggestedPresentationDelay != null ?
suggestedPresentationDelay : this.config_.defaultPresentationDelay;
presentationTimeline.setDelay(presentationDelay);
diff --git a/lib/hls/hls_parser.js b/lib/hls/hls_parser.js
index d48cab0b44..39933751d6 100644
--- a/lib/hls/hls_parser.js
+++ b/lib/hls/hls_parser.js
@@ -4216,18 +4216,6 @@ shaka.hls.HlsParser = class {
initSegmentRef = this.getInitSegmentReference_(playlist,
item.tags, getUris, variables);
- // If the stream is low latency and the user has not configured the
- // lowLatencyMode, but if it has been configured to activate the
- // lowLatencyMode if a stream of this type is detected, we automatically
- // activate the lowLatencyMode.
- if (!this.lowLatencyMode_) {
- const autoLowLatencyMode = this.playerInterface_.isAutoLowLatencyMode();
- if (autoLowLatencyMode) {
- this.playerInterface_.enableLowLatencyMode();
- this.lowLatencyMode_ = this.playerInterface_.isLowLatencyMode();
- }
- }
-
const reference = this.createSegmentReference_(
initSegmentRef,
previousReference,
diff --git a/lib/offline/storage.js b/lib/offline/storage.js
index 212a38a300..55caf8ad0c 100644
--- a/lib/offline/storage.js
+++ b/lib/offline/storage.js
@@ -1210,8 +1210,6 @@ shaka.offline.Storage = class {
error = e;
},
isLowLatencyMode: () => false,
- isAutoLowLatencyMode: () => false,
- enableLowLatencyMode: () => {},
updateDuration: () => {},
newDrmInfo: (stream) => {},
onManifestUpdated: () => {},
diff --git a/lib/player.js b/lib/player.js
index c0d8865211..b1ac6ea162 100644
--- a/lib/player.js
+++ b/lib/player.js
@@ -769,6 +769,10 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
/** @private {?shaka.extern.PlayerConfiguration} */
this.config_ = this.defaultConfig_();
+ /** @private {!Object} */
+ this.lowLatencyConfig_ =
+ shaka.util.PlayerConfiguration.createDefaultForLL();
+
/** @private {?number} */
this.currentTargetLatency_ = null;
@@ -2077,14 +2081,6 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
}
};
- const setConfig = (name, value) => {
- if (getPreloadManager()) {
- preloadManager.configure(name, value);
- } else {
- this.configure(name, value);
- }
- };
-
// Avoid having to detect the resolution again if it has already been
// detected or set
if (this.maxHwRes_.width == Infinity &&
@@ -2124,10 +2120,6 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
onEvent: (event) => preloadManager.dispatchEvent(event),
onError: (error) => preloadManager.onError(error),
isLowLatencyMode: () => getConfig().streaming.lowLatencyMode,
- isAutoLowLatencyMode: () => getConfig().streaming.autoLowLatencyMode,
- enableLowLatencyMode: () => {
- setConfig('streaming.lowLatencyMode', true);
- },
updateDuration: () => {
if (this.streamingEngine_ && preloadManager.hasBeenAttached()) {
this.streamingEngine_.updateDuration();
@@ -2638,11 +2630,15 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
this.parser_.onInitialVariantChosen(toLazyLoad);
}
- if (this.manifest_.isLowLatency && !this.config_.streaming.lowLatencyMode) {
- shaka.log.alwaysWarn('Low-latency live stream detected, but ' +
- 'low-latency streaming mode is not enabled in Shaka Player. ' +
- 'Set streaming.lowLatencyMode configuration to true, and see ' +
- 'https://bit.ly/3clctcj for details.');
+ if (this.manifest_.isLowLatency) {
+ if (this.config_.streaming.lowLatencyMode) {
+ this.configure(this.lowLatencyConfig_);
+ } else {
+ shaka.log.alwaysWarn('Low-latency live stream detected, but ' +
+ 'low-latency streaming mode is not enabled in Shaka Player. ' +
+ 'Set streaming.lowLatencyMode configuration to true, and see ' +
+ 'https://bit.ly/3clctcj for details.');
+ }
}
if (this.cmcdManager_) {
@@ -4042,56 +4038,14 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
delete config['streaming']['dispatchAllEmsgBoxes'];
}
- // If lowLatencyMode is enabled, and inaccurateManifestTolerance and
- // segmentPrefetchLimit and baseDelay and
- // autoCorrectDrift and maxDisabledTime are not specified, set
- // inaccurateManifestTolerance to 0 and and
- // segmentPrefetchLimit to 2 and updateIntervalSeconds to 0.1 and and
- // baseDelay to 100 and autoCorrectDrift to false and maxDisabledTime
- // to 1 by default for low latency streaming.
- if (config['streaming'] && config['streaming']['lowLatencyMode']) {
- if (config['streaming']['inaccurateManifestTolerance'] == undefined) {
- config['streaming']['inaccurateManifestTolerance'] = 0;
- }
- if (config['streaming']['segmentPrefetchLimit'] == undefined) {
- config['streaming']['segmentPrefetchLimit'] = 2;
- }
- if (config['streaming']['updateIntervalSeconds'] == undefined) {
- config['streaming']['updateIntervalSeconds'] = 0.1;
- }
- if (config['streaming']['maxDisabledTime'] == undefined) {
- config['streaming']['maxDisabledTime'] = 1;
- }
- if (config['streaming']['retryParameters'] == undefined) {
- config['streaming']['retryParameters'] = {};
- }
- if (config['streaming']['retryParameters']['baseDelay'] == undefined) {
- config['streaming']['retryParameters']['baseDelay'] = 100;
- }
- if (config['manifest'] == undefined) {
- config['manifest'] = {};
- }
- if (config['manifest']['dash'] == undefined) {
- config['manifest']['dash'] = {};
- }
- if (config['manifest']['dash']['autoCorrectDrift'] == undefined) {
- config['manifest']['dash']['autoCorrectDrift'] = false;
- }
- if (config['manifest']['retryParameters'] == undefined) {
- config['manifest']['retryParameters'] = {};
- }
- if (config['manifest']['retryParameters']['baseDelay'] == undefined) {
- config['manifest']['retryParameters']['baseDelay'] = 100;
- }
- if (config['drm'] == undefined) {
- config['drm'] = {};
- }
- if (config['drm']['retryParameters'] == undefined) {
- config['drm']['retryParameters'] = {};
- }
- if (config['drm']['retryParameters']['baseDelay'] == undefined) {
- config['drm']['retryParameters']['baseDelay'] = 100;
- }
+ // Deprecate 'streaming.autoLowLatencyMode' configuration.
+ if (config['streaming'] && 'autoLowLatencyMode' in config['streaming']) {
+ shaka.Deprecate.deprecateFeature(5,
+ 'streaming.autoLowLatencyMode configuration',
+ 'Please Use streaming.lowLatencyMode instead.');
+ config['streaming']['lowLatencyMode'] =
+ config['streaming']['autoLowLatencyMode'];
+ delete config['streaming']['autoLowLatencyMode'];
}
const ret = shaka.util.PlayerConfiguration.mergeConfigObjects(
this.config_, config, this.defaultConfig_());
@@ -4100,6 +4054,18 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
return ret;
}
+ /**
+ * Changes low latency configuration settings on the Player.
+ *
+ * @param {!Object} config This object should follow the
+ * {@link shaka.extern.PlayerConfiguration} object. Not all fields
+ * need to be set; unset fields retain their old values.
+ * @export
+ */
+ configurationForLowLatency(config) {
+ this.lowLatencyConfig_ = config;
+ }
+
/**
* Apply config changes.
* @private
@@ -4255,6 +4221,16 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
return ret;
}
+ /**
+ * Return a copy of the current configuration for low latency.
+ *
+ * @return {!Object}
+ * @export
+ */
+ getConfigurationForLowLatency() {
+ return this.lowLatencyConfig_;
+ }
+
/**
* Return a copy of the current non default configuration. Modifications of
* the returned value will not affect the Player's active configuration.
diff --git a/lib/util/player_configuration.js b/lib/util/player_configuration.js
index 8618289ef7..ee2f8c1658 100644
--- a/lib/util/player_configuration.js
+++ b/lib/util/player_configuration.js
@@ -229,7 +229,6 @@ shaka.util.PlayerConfiguration = class {
// will default to 0 if not specified.
inaccurateManifestTolerance: 2,
lowLatencyMode: false,
- autoLowLatencyMode: false,
forceHTTP: false,
forceHTTPS: false,
minBytesForProgressEvents: minBytes,
@@ -492,6 +491,37 @@ shaka.util.PlayerConfiguration = class {
return config;
}
+ /**
+ * @return {!Object}
+ * @export
+ */
+ static createDefaultForLL() {
+ return {
+ streaming: {
+ inaccurateManifestTolerance: 0,
+ segmentPrefetchLimit: 2,
+ updateIntervalSeconds: 0.1,
+ maxDisabledTime: 1,
+ retryParameters: {
+ baseDelay: 100,
+ },
+ },
+ manifest: {
+ dash: {
+ autoCorrectDrift: false,
+ },
+ retryParameters: {
+ baseDelay: 100,
+ },
+ },
+ drm: {
+ retryParameters: {
+ baseDelay: 100,
+ },
+ },
+ };
+ }
+
/**
* Merges the given configuration changes into the given destination. This
* uses the default Player configurations as the template.
diff --git a/test/dash/dash_parser_content_protection_unit.js b/test/dash/dash_parser_content_protection_unit.js
index 1a390b8027..142e80752b 100644
--- a/test/dash/dash_parser_content_protection_unit.js
+++ b/test/dash/dash_parser_content_protection_unit.js
@@ -40,8 +40,6 @@ describe('DashParser ContentProtection', () => {
onEvent: fail,
onError: fail,
isLowLatencyMode: () => false,
- isAutoLowLatencyMode: () => false,
- enableLowLatencyMode: () => {},
updateDuration: () => {},
newDrmInfo: (stream) => {},
onManifestUpdated: () => {},
diff --git a/test/dash/dash_parser_live_unit.js b/test/dash/dash_parser_live_unit.js
index 5a3f691a84..c2f9b9dd04 100644
--- a/test/dash/dash_parser_live_unit.js
+++ b/test/dash/dash_parser_live_unit.js
@@ -32,8 +32,6 @@ describe('DashParser Live', () => {
onEvent: fail,
onError: fail,
isLowLatencyMode: () => false,
- isAutoLowLatencyMode: () => false,
- enableLowLatencyMode: () => {},
updateDuration: () => {},
newDrmInfo: (stream) => {},
onManifestUpdated: () => {},
diff --git a/test/dash/dash_parser_manifest_unit.js b/test/dash/dash_parser_manifest_unit.js
index b443b243a2..d72531087a 100644
--- a/test/dash/dash_parser_manifest_unit.js
+++ b/test/dash/dash_parser_manifest_unit.js
@@ -53,8 +53,6 @@ describe('DashParser Manifest', () => {
onEvent: shaka.test.Util.spyFunc(onEventSpy),
onError: fail,
isLowLatencyMode: () => false,
- isAutoLowLatencyMode: () => false,
- enableLowLatencyMode: () => {},
updateDuration: () => {},
newDrmInfo: (stream) => {},
onManifestUpdated: () => {},
diff --git a/test/dash/dash_parser_patch_unit.js b/test/dash/dash_parser_patch_unit.js
index 70e7b54c23..dd0695f37a 100644
--- a/test/dash/dash_parser_patch_unit.js
+++ b/test/dash/dash_parser_patch_unit.js
@@ -43,8 +43,6 @@ describe('DashParser Patch', () => {
onEvent: fail,
onError: fail,
isLowLatencyMode: () => false,
- isAutoLowLatencyMode: () => false,
- enableLowLatencyMode: () => {},
updateDuration: () => {},
newDrmInfo: (stream) => {},
onManifestUpdated: () => {},
diff --git a/test/dash/dash_parser_segment_base_unit.js b/test/dash/dash_parser_segment_base_unit.js
index 2295722289..116f8f1892 100644
--- a/test/dash/dash_parser_segment_base_unit.js
+++ b/test/dash/dash_parser_segment_base_unit.js
@@ -36,8 +36,6 @@ describe('DashParser SegmentBase', () => {
onEvent: fail,
onError: fail,
isLowLatencyMode: () => false,
- isAutoLowLatencyMode: () => false,
- enableLowLatencyMode: () => {},
updateDuration: () => {},
newDrmInfo: (stream) => {},
onManifestUpdated: () => {},
diff --git a/test/dash/dash_parser_segment_list_unit.js b/test/dash/dash_parser_segment_list_unit.js
index a212426623..940a527f6e 100644
--- a/test/dash/dash_parser_segment_list_unit.js
+++ b/test/dash/dash_parser_segment_list_unit.js
@@ -346,8 +346,6 @@ describe('DashParser SegmentList', () => {
onEvent: fail,
onError: fail,
isLowLatencyMode: () => false,
- isAutoLowLatencyMode: () => false,
- enableLowLatencyMode: () => {},
updateDuration: () => {},
newDrmInfo: (stream) => {},
onManifestUpdated: () => {},
diff --git a/test/dash/dash_parser_segment_template_unit.js b/test/dash/dash_parser_segment_template_unit.js
index 169de3246a..97edbce288 100644
--- a/test/dash/dash_parser_segment_template_unit.js
+++ b/test/dash/dash_parser_segment_template_unit.js
@@ -45,8 +45,6 @@ describe('DashParser SegmentTemplate', () => {
onEvent: fail,
onError: fail,
isLowLatencyMode: () => false,
- isAutoLowLatencyMode: () => false,
- enableLowLatencyMode: () => {},
updateDuration: () => {},
newDrmInfo: (stream) => {},
onManifestUpdated: () => {},
diff --git a/test/hls/hls_live_unit.js b/test/hls/hls_live_unit.js
index 5c117bfab3..08be658cb8 100644
--- a/test/hls/hls_live_unit.js
+++ b/test/hls/hls_live_unit.js
@@ -75,8 +75,6 @@ describe('HlsParser live', () => {
onEvent: fail,
onTimelineRegionAdded: fail,
isLowLatencyMode: () => false,
- isAutoLowLatencyMode: () => false,
- enableLowLatencyMode: () => {},
updateDuration: () => {},
newDrmInfo: (stream) => {},
onManifestUpdated: () => {},
diff --git a/test/hls/hls_parser_unit.js b/test/hls/hls_parser_unit.js
index 3be6cd01f4..315b843ac0 100644
--- a/test/hls/hls_parser_unit.js
+++ b/test/hls/hls_parser_unit.js
@@ -89,8 +89,6 @@ describe('HlsParser', () => {
onEvent: shaka.test.Util.spyFunc(onEventSpy),
onTimelineRegionAdded: fail,
isLowLatencyMode: () => false,
- isAutoLowLatencyMode: () => false,
- enableLowLatencyMode: () => {},
updateDuration: () => {},
newDrmInfo: shaka.test.Util.spyFunc(newDrmInfoSpy),
onManifestUpdated: () => {},
diff --git a/test/mss/mss_parser_unit.js b/test/mss/mss_parser_unit.js
index 071bba0d1a..748929045f 100644
--- a/test/mss/mss_parser_unit.js
+++ b/test/mss/mss_parser_unit.js
@@ -75,8 +75,6 @@ describe('MssParser Manifest', () => {
onEvent: shaka.test.Util.spyFunc(onEventSpy),
onError: fail,
isLowLatencyMode: () => false,
- isAutoLowLatencyMode: () => false,
- enableLowLatencyMode: () => {},
updateDuration: () => {},
newDrmInfo: (stream) => {},
onManifestUpdated: () => {},
diff --git a/test/player_unit.js b/test/player_unit.js
index 0d6696deaf..278fc5cc41 100644
--- a/test/player_unit.js
+++ b/test/player_unit.js
@@ -889,6 +889,17 @@ describe('Player', () => {
.toBeUndefined();
});
+ it('configurationForLowLatency and getConfigurationForLowLatency', () => {
+ let configurationForLowLatency = player.getConfigurationForLowLatency();
+ expect(configurationForLowLatency).not.toBeNull();
+ player.configurationForLowLatency({
+ ignoreHardwareResolution: true,
+ });
+ configurationForLowLatency = player.getConfigurationForLowLatency();
+ expect(configurationForLowLatency).not.toBeNull();
+ expect(configurationForLowLatency['ignoreHardwareResolution']).toBeTruthy();
+ });
+
describe('configure', () => {
it('overwrites defaults', () => {
const defaultConfig = player.getConfiguration();
@@ -1342,67 +1353,6 @@ describe('Player', () => {
expect(fooConfig2.distinctiveIdentifierRequired).toBe(true);
expect(barConfig2.distinctiveIdentifierRequired).toBe(false);
});
-
- it('sets default streaming configuration with low latency mode', () => {
- player.configure({
- streaming: {
- lowLatencyMode: true,
- inaccurateManifestTolerance: 1,
- segmentPrefetchLimit: 1,
- updateIntervalSeconds: 10,
- maxDisabledTime: 10,
- retryParameters: {
- baseDelay: 2000,
- },
- },
- manifest: {
- dash: {
- autoCorrectDrift: true,
- },
- retryParameters: {
- baseDelay: 2000,
- },
- },
- drm: {
- retryParameters: {
- baseDelay: 2000,
- },
- },
- });
- expect(player.getConfiguration().streaming.inaccurateManifestTolerance)
- .toBe(1);
- expect(player.getConfiguration().streaming.segmentPrefetchLimit).toBe(1);
- expect(player.getConfiguration().streaming.updateIntervalSeconds)
- .toBe(10);
- expect(player.getConfiguration().streaming.maxDisabledTime).toBe(10);
- expect(player.getConfiguration().streaming.retryParameters.baseDelay)
- .toBe(2000);
- expect(player.getConfiguration().manifest.dash.autoCorrectDrift)
- .toBe(true);
- expect(player.getConfiguration().manifest.retryParameters.baseDelay)
- .toBe(2000);
- expect(player.getConfiguration().drm.retryParameters.baseDelay)
- .toBe(2000);
-
- // When low latency streaming gets enabled, inaccurateManifestTolerance
- // will default to 0 unless specified, and segmentPrefetchLimit will
- // default to 2 unless specified.
- player.configure('streaming.lowLatencyMode', true);
- expect(player.getConfiguration().streaming.inaccurateManifestTolerance)
- .toBe(0);
- expect(player.getConfiguration().streaming.segmentPrefetchLimit).toBe(2);
- expect(player.getConfiguration().streaming.updateIntervalSeconds)
- .toBe(0.1);
- expect(player.getConfiguration().streaming.maxDisabledTime).toBe(1);
- expect(player.getConfiguration().streaming.retryParameters.baseDelay)
- .toBe(100);
- expect(player.getConfiguration().manifest.dash.autoCorrectDrift)
- .toBe(false);
- expect(player.getConfiguration().manifest.retryParameters.baseDelay)
- .toBe(100);
- expect(player.getConfiguration().drm.retryParameters.baseDelay)
- .toBe(100);
- });
});
describe('preload', () => {
diff --git a/test/test/util/dash_parser_util.js b/test/test/util/dash_parser_util.js
index c047e92617..3f37389ac7 100644
--- a/test/test/util/dash_parser_util.js
+++ b/test/test/util/dash_parser_util.js
@@ -41,8 +41,6 @@ shaka.test.Dash = class {
onEvent: fail,
onError: fail,
isLowLatencyMode: () => false,
- isAutoLowLatencyMode: () => false,
- enableLowLatencyMode: () => {},
updateDuration: () => {},
newDrmInfo: (stream) => {},
onManifestUpdated: () => {},
@@ -91,8 +89,6 @@ shaka.test.Dash = class {
onEvent: fail,
onError: fail,
isLowLatencyMode: () => false,
- isAutoLowLatencyMode: () => false,
- enableLowLatencyMode: () => {},
updateDuration: () => {},
newDrmInfo: (stream) => {},
onManifestUpdated: () => {},
diff --git a/test/test/util/mss_parser_util.js b/test/test/util/mss_parser_util.js
index 13e88b780f..f16158e5f5 100644
--- a/test/test/util/mss_parser_util.js
+++ b/test/test/util/mss_parser_util.js
@@ -41,8 +41,6 @@ shaka.test.Mss = class {
onEvent: fail,
onError: fail,
isLowLatencyMode: () => false,
- isAutoLowLatencyMode: () => false,
- enableLowLatencyMode: () => {},
updateDuration: () => {},
newDrmInfo: (stream) => {},
onManifestUpdated: () => {},
@@ -82,8 +80,6 @@ shaka.test.Mss = class {
onEvent: fail,
onError: fail,
isLowLatencyMode: () => false,
- isAutoLowLatencyMode: () => false,
- enableLowLatencyMode: () => {},
updateDuration: () => {},
newDrmInfo: (stream) => {},
onManifestUpdated: () => {},
diff --git a/test/util/content_steering_manager_unit.js b/test/util/content_steering_manager_unit.js
index a3a0760517..ee42263a06 100644
--- a/test/util/content_steering_manager_unit.js
+++ b/test/util/content_steering_manager_unit.js
@@ -23,8 +23,6 @@ describe('ContentSteeringManager', () => {
onEvent: fail,
onError: fail,
isLowLatencyMode: fail,
- isAutoLowLatencyMode: fail,
- enableLowLatencyMode: fail,
updateDuration: fail,
newDrmInfo: fail,
onManifestUpdated: fail,