Class: shaka.polyfill.MediaSource

A polyfill to patch MSE bugs.

Methods

(private, static) blacklist_()

Blacklist the current browser by making MediaSourceEngine.isBrowserSupported fail later.
Source:

(private, static) cleanUpListeners_(event)

An event listener for 'sourceclose' which cleans up listeners for 'updateend' to avoid memory leaks.
Parameters:
Name Type Description
event Event
Source:
See:

(private, static) ignoreUpdateEnd_(event)

An event listener for 'updateend' which selectively suppresses the events.
Parameters:
Name Type Description
event Event
Source:
See:

(static) install()

Install the polyfill if needed.
Source:

(private, static) patchCastIsTypeSupported_()

Patch isTypeSupported() to parse for HDR-related clues and chain to a private API on the Chromecast which can query for support.
Source:

(private, static) patchEndOfStreamEvents_()

Patch endOfStream() to get rid of 'updateend' events that should not fire. These extra events confuse MediaSourceEngine, which relies on correct events to manage SourceBuffer state.
Source:

(private, static) patchRemovalRange_()

Patch remove(). On Safari 11, if you call remove() to remove the content up to a keyframe, Safari will also remove the keyframe and all of the data up to the next one. For example, if the keyframes are at 0s, 5s, and 10s, and you tried to remove 0s-5s, it would instead remove 0s-10s. Offsetting the end of the range seems to be a usable workaround.
Source:

(private, static) rejectCodec_(codec)

Patch |MediaSource.isTypeSupported| to always reject |codec|. This is used when we know that we are on a platform that does not work well with a given codec.
Parameters:
Name Type Description
codec string
Source:

(private, static) rejectTsContent_()

Patch isTypeSupported() to reject TS content. Used to avoid TS-related MSE bugs on Safari.
Source:

(private, static) stubAbort_()

Stub out abort(). On some buggy MSE implementations, calling abort() causes various problems.
Source: