Skip to content

Commit 7c7e55f

Browse files
authored
Merge pull request #92 from bbc/seek-without-readystate-check
Add seekWithoutReadyStateCheck override property
2 parents aaf36bf + 9ab9c45 commit 7c7e55f

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

src/core/Settings.js

+3
Original file line numberDiff line numberDiff line change
@@ -773,6 +773,8 @@ import Events from './events/Events';
773773
* Overwrite the manifest segments base information timescale attributes with the timescale set in initialization segments
774774
* @property {boolean} [enableManifestTimescaleMismatchFix=false]
775775
* Defines the delay in milliseconds between two consecutive checks for events to be fired.
776+
* @property {boolean} [seekWithoutReadyStateCheck=false]
777+
* This allows a seek by setting currentTime regardless of the loadedmetadata event being emitted
776778
* @property {boolean} [parseInbandPrft=false]
777779
* Set to true if dash.js should parse inband prft boxes (ProducerReferenceTime) and trigger events.
778780
* @property {module:Settings~Metrics} metrics Metric settings
@@ -898,6 +900,7 @@ function Settings() {
898900
enableManifestDurationMismatchFix: true,
899901
parseInbandPrft: false,
900902
enableManifestTimescaleMismatchFix: false,
903+
seekWithoutReadyStateCheck: false,
901904
capabilities: {
902905
filterUnsupportedEssentialProperties: true,
903906
useMediaCapabilitiesApi: false

src/streaming/models/VideoModel.js

+8-1
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,14 @@ function VideoModel() {
104104
removeEventListener(setCurrentTimeReadyStateFunction.event, setCurrentTimeReadyStateFunction.func);
105105
}
106106
_currentTime = currentTime;
107-
setCurrentTimeReadyStateFunction = waitForReadyState(Constants.VIDEO_ELEMENT_READY_STATES.HAVE_METADATA, () => {
107+
108+
let elementReadyStateEvent = Constants.VIDEO_ELEMENT_READY_STATES.HAVE_METADATA;
109+
110+
if (settings.get().streaming.seekWithoutReadyStateCheck) {
111+
elementReadyStateEvent = Constants.VIDEO_ELEMENT_READY_STATES.HAVE_NOTHING;
112+
}
113+
114+
setCurrentTimeReadyStateFunction = waitForReadyState(elementReadyStateEvent, () => {
108115
if (!element) {
109116
return;
110117
}

0 commit comments

Comments
 (0)