rx-player
Version:
Canal+ HTML5 Video Player
38 lines (37 loc) • 1.95 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = disableRemotePlaybackOnManagedMediaSource;
var browser_compatibility_types_1 = require("./browser_compatibility_types");
/**
* Temporarily disables remote playback on a media element by setting the
* `disableRemotePlayback` attribute to `true` when using a `ManagedMediaSource`.
* The original value of the `disableRemotePlayback` attribute is restored when
* the cancellation signal is triggered.
*
* This is useful when the `ManagedMediaSource` is being used and
* the media element needs to ensure that remote playback (e.g., Airplay) is disabled
* during the playback session.
* @param {HTMLElement} mediaElement - The media element whose `disableRemotePlayback`
* attribute will be modified.
* @param {CancellationSignal} cancellationSignal - The signal that, when triggered,
* restores the `disableRemotePlayback` attribute to its original value.
*/
function disableRemotePlaybackOnManagedMediaSource(mediaElement, cancellationSignal) {
if (browser_compatibility_types_1.default.isManagedMediaSource && "disableRemotePlayback" in mediaElement) {
var disableRemotePlaybackPreviousValue_1 = mediaElement.disableRemotePlayback;
cancellationSignal.register(function () {
/**
* Restore the `disableRemotePlayback` attribute to its previous value.
* This ensures that the media element's state is the same as it was before
* calling `RxPlayer.loadVideo` in the application.
*/
mediaElement.disableRemotePlayback = disableRemotePlaybackPreviousValue_1;
});
/**
* Using ManagedMediaSource needs to disableRemotePlayback or to provide
* an Airplay source alternative, such as HLS.
* https://github.com/w3c/media-source/issues/320
*/
mediaElement.disableRemotePlayback = true;
}
}