import MediaPlayerBase from '../modifiers/mediaplayerbase'
import DOMHelpers from '../../domhelpers'
+import handlePlayPromise from '../../utils/handleplaypromise'
+import DebugTool from '../../debugger/debugtool'
function Html5 () {
const sentinelLimits = {
@@ -404,8 +409,9 @@
}, 1100)
}
- function reportError (_errorMessage) {
- emitEvent(MediaPlayerBase.EVENT.ERROR)
+ function reportError (errorString, mediaError) {
+ DebugTool.info('HTML5 Media Player error: ' + errorString)
+ emitEvent(MediaPlayerBase.EVENT.ERROR, mediaError)
}
function toBuffering () {
@@ -460,22 +466,15 @@
readyToCache = true
}, 250)
- cachedSeekableRange = {
- start: mediaElement.seekable.start(0),
- end: mediaElement.seekable.end(0)
- }
+ cachedSeekableRange = getElementSeekableRange()
}
- function getSeekableRange () {
+ function getElementSeekableRange () {
if (mediaElement) {
if (isReadyToPlayFrom() && mediaElement.seekable && mediaElement.seekable.length > 0) {
- if (window.bigscreenPlayer.overrides && window.bigscreenPlayer.overrides.cacheSeekableRange) {
- return getCachedSeekableRange()
- } else {
- return {
- start: mediaElement.seekable.start(0),
- end: mediaElement.seekable.end(0)
- }
+ return {
+ start: mediaElement.seekable.start(0),
+ end: mediaElement.seekable.end(0)
}
} else if (mediaElement.duration !== undefined) {
return {
@@ -484,7 +483,14 @@
}
}
}
- return undefined
+ }
+
+ function getSeekableRange () {
+ if (window.bigscreenPlayer.overrides && window.bigscreenPlayer.overrides.cacheSeekableRange) {
+ return getCachedSeekableRange()
+ } else {
+ return getElementSeekableRange()
+ }
}
function onFinishedBuffering () {
@@ -508,7 +514,7 @@
}
function onError () {
- reportError('Media element error code: ' + mediaElement.error.code)
+ reportError('Media element error code: ' + mediaElement.error.code, { code: mediaElement.error.code, message: mediaElement.error.message })
}
function onSourceError () {
@@ -605,11 +611,11 @@
function deferredPlayFrom () {
if (window.bigscreenPlayer.overrides && window.bigscreenPlayer.overrides.deferredPlayback) {
- mediaElement.play()
+ handlePlayPromise(mediaElement.play())
seekTo(targetSeekTime)
} else {
seekTo(targetSeekTime)
- mediaElement.play()
+ handlePlayPromise(mediaElement.play())
}
if (postBufferingState === MediaPlayerBase.STATE.PAUSED) {
@@ -856,7 +862,7 @@
case MediaPlayerBase.STATE.STOPPED:
trustZeroes = true
toBuffering()
- mediaElement.play()
+ handlePlayPromise(mediaElement.play())
break
default:
@@ -918,12 +924,12 @@
case MediaPlayerBase.STATE.BUFFERING:
if (isReadyToPlayFrom()) {
// If we are not ready to playFrom, then calling play would seek to the start of media, which we might not want.
- mediaElement.play()
+ handlePlayPromise(mediaElement.play())
}
break
case MediaPlayerBase.STATE.PAUSED:
- mediaElement.play()
+ handlePlayPromise(mediaElement.play())
toPlaying()
break
@@ -1017,7 +1023,7 @@
@@ -1029,8 +1035,6 @@
-
-
diff --git a/docs/api/playbackstrategy_modifiers_samsungmaple.js.html b/docs/api/playbackstrategy_modifiers_samsungmaple.js.html
index 7ec1c6ca..25f6f663 100644
--- a/docs/api/playbackstrategy_modifiers_samsungmaple.js.html
+++ b/docs/api/playbackstrategy_modifiers_samsungmaple.js.html
@@ -5,6 +5,9 @@
+
+
+
@@ -84,7 +87,7 @@