Class: shaka.polyfill.MediaSource

A polyfill to patch MSE bugs.


(private, static) blacklist_()

Blacklist the current browser by removing media source. A side-effect of this will be to make |shaka.util.Platform.supportsMediaSource| return |false|.

(static) install()

Install the polyfill if needed.

(private, static) patchCastIsTypeSupported_()

Patch isTypeSupported() to chain to a private API on the Chromecast which can query for support of detailed content parameters.

(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.

(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.
Name Type Description
codec string

(private, static) rejectTsContent_()

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

(private, static) stubAbort_()

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