Skip to content

Commit 1d9badf

Browse files
eirikbjornrjlks
andauthored
fix: don't emit synthetic stall if media element reports playback is not ready (#89)
Co-authored-by: Joel Keers <[email protected]>
1 parent 30da1d8 commit 1d9badf

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/streaming/models/VideoModel.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,8 @@ function VideoModel() {
226226
}
227227

228228
stalledStreams.push(type);
229-
if (settings.get().streaming.buffer.emitSyntheticStallEvents && element && stalledStreams.length === 1) {
229+
if (settings.get().streaming.buffer.emitSyntheticStallEvents && element && stalledStreams.length === 1 && element.readyState >= Constants.VIDEO_ELEMENT_READY_STATES.HAVE_FUTURE_DATA) {
230+
logger.debug(`emitting synthetic waiting event and halting playback with playback rate 0`);
230231
// Halt playback until nothing is stalled.
231232
const event = document.createEvent('Event');
232233
event.initEvent('waiting', true, false);
@@ -247,7 +248,8 @@ function VideoModel() {
247248
}
248249

249250
// If nothing is stalled resume playback.
250-
if (settings.get().streaming.buffer.emitSyntheticStallEvents && element && isStalled() === false && element.playbackRate === 0) {
251+
if (settings.get().streaming.buffer.emitSyntheticStallEvents && element && isStalled() === false && element.playbackRate === 0 && element.readyState >= Constants.VIDEO_ELEMENT_READY_STATES.HAVE_FUTURE_DATA) {
252+
logger.debug(`emitting synthetic playing event (if not paused) and resuming playback with playback rate: ${previousPlaybackRate || 1}`);
251253
setPlaybackRate(previousPlaybackRate || 1);
252254
if (!element.paused) {
253255
const event = document.createEvent('Event');

0 commit comments

Comments
 (0)