UNPKG

shaka-player

Version:
97 lines (86 loc) 2.17 kB
/*! @license * Shaka Player * Copyright 2026 Google LLC * SPDX-License-Identifier: Apache-2.0 */ goog.provide('shaka.device.TitanOS'); goog.require('shaka.device.AbstractDevice'); goog.require('shaka.device.DeviceFactory'); goog.require('shaka.device.IDevice'); goog.require('shaka.log'); /** * @final */ shaka.device.TitanOS = class extends shaka.device.AbstractDevice { /** * @override */ getVersion() { return null; } /** * @override */ getDeviceName() { return 'TitanOS'; } /** * @override */ getDeviceType() { return shaka.device.IDevice.DeviceType.TV; } /** * @override */ detectMaxHardwareResolution() { const maxResolution = {width: 1920, height: 1080}; try { // eslint-disable-next-line camelcase if (SmartTvA_API.hasCapability('UHD')) { maxResolution.width = 3840; maxResolution.height = 2160; // eslint-disable-next-line camelcase } else if (SmartTvA_API.hasCapability('FHD')) { maxResolution.width = 1920; maxResolution.height = 1080; } else { maxResolution.width = 1280; maxResolution.height = 720; } } catch (e) { shaka.log.alwaysWarn('Titan OS: Error detecting screen size, default ' + 'screen size 1920x1080.', e); } return Promise.resolve(maxResolution); } /** * @override */ getHdrLevel(preferHLG) { try { // eslint-disable-next-line camelcase if (SmartTvA_API.hasCapability('HDR', 'HDR10') || // eslint-disable-next-line camelcase SmartTvA_API.hasCapability('HDR', 'DV')) { return preferHLG ? 'HLG' : 'PQ'; } } catch (error) { shaka.log.alwaysWarn('Titan OS: Error checking HDR support', error); return super.getHdrLevel(preferHLG); } return 'SDR'; } /** * Check if the current platform is TitanOS. * @return {boolean} * @private */ static isTitanOS_() { return navigator.userAgent.includes('TitanOS'); } }; if (shaka.device.TitanOS.isTitanOS_()) { shaka.device.DeviceFactory.registerDeviceFactory( () => new shaka.device.TitanOS()); }