UNPKG

shaka-player

Version:
101 lines (88 loc) 2.2 kB
/*! @license * Shaka Player * Copyright 2025 Google LLC * SPDX-License-Identifier: Apache-2.0 */ goog.provide('shaka.device.Hisense'); goog.require('shaka.device.AbstractDevice'); goog.require('shaka.device.DeviceFactory'); goog.require('shaka.device.IDevice'); goog.require('shaka.log'); /** * @final */ shaka.device.Hisense = class extends shaka.device.AbstractDevice { /** * @override */ getVersion() { return null; } /** * @override */ getDeviceName() { return 'Hisense'; } /** * @override */ getDeviceType() { return shaka.device.IDevice.DeviceType.TV; } /** * @override */ supportsMediaCapabilities() { return false; } /** * @override */ detectMaxHardwareResolution() { const maxResolution = {width: 1920, height: 1080}; let supports4k = null; if (window.Hisense_Get4KSupportState) { try { // eslint-disable-next-line new-cap supports4k = window.Hisense_Get4KSupportState(); } catch (e) { shaka.log.debug('Hisense: Failed to get 4K support state', e); } } if (supports4k == null) { // If API is not there or not working for whatever reason, fallback to // user agent check, as it contains UHD or FHD info. supports4k = navigator.userAgent.includes('UHD'); } if (supports4k) { maxResolution.width = 3840; maxResolution.height = 2160; } return Promise.resolve(maxResolution); } /** * @override */ adjustConfig(config) { super.adjustConfig(config); // Hisense has long hardware pipeline that respond slowly to seeking. // Therefore we should not seek when we detect a stall on this platform. // Instead, default stallSkip to 0 to force the stall detector to pause // and play instead. config.streaming.stallSkip = 0; return config; } /** * @return {boolean} * @private */ static isHisense_() { return navigator.userAgent.includes('Hisense') || navigator.userAgent.includes('VIDAA'); } }; if (shaka.device.Hisense.isHisense_()) { shaka.device.DeviceFactory.registerDeviceFactory( () => new shaka.device.Hisense()); }