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,