UNPKG

shaka-player

Version:
63 lines (53 loc) 1.53 kB
/*! @license * Shaka Player * Copyright 2016 Google LLC * SPDX-License-Identifier: Apache-2.0 */ goog.provide('shaka.polyfill.VideoPlaybackQuality'); goog.require('shaka.polyfill'); goog.require('shaka.util.Platform'); /** * @summary A polyfill to provide MSE VideoPlaybackQuality metrics. * Many browsers do not yet provide this API, and Chrome currently provides * similar data through individual prefixed attributes on HTMLVideoElement. * @export */ shaka.polyfill.VideoPlaybackQuality = class { /** * Install the polyfill if needed. * @export */ static install() { if (!window.HTMLVideoElement) { // Avoid errors on very old browsers. return; } // eslint-disable-next-line no-restricted-syntax const proto = HTMLVideoElement.prototype; if (proto.getVideoPlaybackQuality) { // No polyfill needed. return; } if ('webkitDroppedFrameCount' in proto || shaka.util.Platform.isWebOS3()) { proto.getVideoPlaybackQuality = shaka.polyfill.VideoPlaybackQuality.webkit_; } } /** * @this {HTMLVideoElement} * @return {!VideoPlaybackQuality} * @private */ static webkit_() { return { 'droppedVideoFrames': this.webkitDroppedFrameCount, 'totalVideoFrames': this.webkitDecodedFrameCount, // Not provided by this polyfill: 'corruptedVideoFrames': 0, 'creationTime': NaN, 'totalFrameDelay': 0, }; } }; shaka.polyfill.register(shaka.polyfill.VideoPlaybackQuality.install);