Patch isTypeSupported() to chain to a private API on the Chromecast which can query for support of detailed content parameters.
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.
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.
Patch isTypeSupported() to reject TS content. Used to avoid TS-related MSE bugs on Safari.