Files
shaka-player/lib/polyfill/videoplaybackquality.js
T
Álvaro Velad Galván 556111143d fix: Fix getVideoPlaybackQuality in WebOS 3 (#4316)
It seems that webkitDroppedFrameCount is not included in the prototype but it is included in the video element itself, that's why it fails in WebOS 3.

Closes https://github.com/shaka-project/shaka-player/issues/4313
2022-06-25 20:54:36 -07:00

63 lines
1.5 KiB
JavaScript

/*! @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);