UNPKG

shaka-player

Version:
69 lines (58 loc) 1.99 kB
/*! @license * Shaka Player * Copyright 2016 Google LLC * SPDX-License-Identifier: Apache-2.0 */ goog.provide('shaka.offline.DownloadInfo'); goog.require('shaka.util.Networking'); goog.requireType('shaka.media.InitSegmentReference'); goog.requireType('shaka.media.SegmentReference'); /** * An object that represents a single segment, that the storage system will soon * download, but has not yet started downloading. */ shaka.offline.DownloadInfo = class { /** * @param {shaka.media.SegmentReference|shaka.media.InitSegmentReference} ref * @param {number} estimateId * @param {number} groupId * @param {boolean} isInitSegment */ constructor(ref, estimateId, groupId, isInitSegment) { /** @type {shaka.media.SegmentReference|shaka.media.InitSegmentReference} */ this.ref = ref; /** @type {number} */ this.estimateId = estimateId; /** @type {number} */ this.groupId = groupId; /** @type {boolean} */ this.isInitSegment = isInitSegment; } /** * Creates an ID that encapsulates all important information in the ref, which * can then be used to check for equality. * @param {shaka.media.SegmentReference|shaka.media.InitSegmentReference} ref * @return {string} */ static idForSegmentRef(ref) { // Escape the URIs using encodeURI, to make sure that a weirdly formed URI // cannot cause two unrelated refs to be considered equivalent. return ref.getUris().map((uri) => '{' + encodeURI(uri) + '}').join('') + ':' + ref.startByte + ':' + ref.endByte; } /** @return {string} */ getRefId() { return shaka.offline.DownloadInfo.idForSegmentRef(this.ref); } /** * @param {shaka.extern.PlayerConfiguration} config * @return {!shaka.extern.Request} */ makeSegmentRequest(config) { return shaka.util.Networking.createSegmentRequest( this.ref.getUris(), this.ref.startByte, this.ref.endByte, config.streaming.retryParameters); } };