streaming_constants_Constants.js
/**
* The copyright in this software is being made available under the BSD License,
* included below. This software may be subject to other third party and contributor
* rights, including patent rights, and no such rights are granted under this license.
*
* Copyright (c) 2013, Dash Industry Forum.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation and/or
* other materials provided with the distribution.
* * Neither the name of Dash Industry Forum nor the names of its
* contributors may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Constants declaration
* @class
* @ignore
* @hideconstructor
*/
class Constants {
init() {
/**
* @constant {string} STREAM Stream media type. Mainly used to report metrics relative to the full stream
* @memberof Constants#
* @static
*/
this.STREAM = 'stream';
/**
* @constant {string} VIDEO Video media type
* @memberof Constants#
* @static
*/
this.VIDEO = 'video';
/**
* @constant {string} AUDIO Audio media type
* @memberof Constants#
* @static
*/
this.AUDIO = 'audio';
/**
* @constant {string} TEXT Text media type
* @memberof Constants#
* @static
*/
this.TEXT = 'text';
/**
* @constant {string} MUXED Muxed (video/audio in the same chunk) media type
* @memberof Constants#
* @static
*/
this.MUXED = 'muxed';
/**
* @constant {string} IMAGE Image media type
* @memberof Constants#
* @static
*/
this.IMAGE = 'image';
/**
* @constant {string} STPP STTP Subtitles format
* @memberof Constants#
* @static
*/
this.STPP = 'stpp';
/**
* @constant {string} TTML STTP Subtitles format
* @memberof Constants#
* @static
*/
this.TTML = 'ttml';
/**
* @constant {string} VTT STTP Subtitles format
* @memberof Constants#
* @static
*/
this.VTT = 'vtt';
/**
* @constant {string} WVTT STTP Subtitles format
* @memberof Constants#
* @static
*/
this.WVTT = 'wvtt';
/**
* @constant {string} Content Steering
* @memberof Constants#
* @static
*/
this.CONTENT_STEERING = 'contentSteering';
/**
* @constant {string} ABR_STRATEGY_DYNAMIC Dynamic Adaptive bitrate algorithm
* @memberof Constants#
* @static
*/
this.ABR_STRATEGY_DYNAMIC = 'abrDynamic';
/**
* @constant {string} ABR_STRATEGY_BOLA Adaptive bitrate algorithm based on Bola (buffer level)
* @memberof Constants#
* @static
*/
this.ABR_STRATEGY_BOLA = 'abrBola';
/**
* @constant {string} ABR_STRATEGY_L2A Adaptive bitrate algorithm based on L2A (online learning)
* @memberof Constants#
* @static
*/
this.ABR_STRATEGY_L2A = 'abrL2A';
/**
* @constant {string} ABR_STRATEGY_LoLP Adaptive bitrate algorithm based on LoL+
* @memberof Constants#
* @static
*/
this.ABR_STRATEGY_LoLP = 'abrLoLP';
/**
* @constant {string} ABR_STRATEGY_THROUGHPUT Adaptive bitrate algorithm based on throughput
* @memberof Constants#
* @static
*/
this.ABR_STRATEGY_THROUGHPUT = 'abrThroughput';
/**
* @constant {string} ABR_FETCH_THROUGHPUT_CALUCUALTION_DOWNLOADED_DATA Throughput calculation based on downloaded data array
* @memberof Constants#
* @static
*/
this.ABR_FETCH_THROUGHPUT_CALCULATION_DOWNLOADED_DATA = 'abrFetchThroughputCalculationDownloadedData';
/**
* @constant {string} ABR_FETCH_THROUGHPUT_CALCULATION_MOOF_PARSING Throughput calculation based on moof parsing
* @memberof Constants#
* @static
*/
this.ABR_FETCH_THROUGHPUT_CALCULATION_MOOF_PARSING = 'abrFetchThroughputCalculationMoofParsing';
/**
* @constant {string} ABR_FETCH_THROUGHPUT_CALCULATION_AAST Throughput calculation based on adjusted availability start time in low latency mode
* @memberof Constants#
* @static
*/
this.ABR_FETCH_THROUGHPUT_CALCULATION_AAST = 'abrFetchThroughputCalculationAAST';
/**
* @constant {string} LIVE_CATCHUP_MODE_DEFAULT Throughput calculation based on moof parsing
* @memberof Constants#
* @static
*/
this.LIVE_CATCHUP_MODE_DEFAULT = 'liveCatchupModeDefault';
/**
* @constant {string} LIVE_CATCHUP_MODE_LOLP Throughput calculation based on moof parsing
* @memberof Constants#
* @static
*/
this.LIVE_CATCHUP_MODE_LOLP = 'liveCatchupModeLoLP';
/**
* @constant {string} MOVING_AVERAGE_SLIDING_WINDOW Moving average sliding window
* @memberof Constants#
* @static
*/
this.MOVING_AVERAGE_SLIDING_WINDOW = 'slidingWindow';
/**
* @constant {string} EWMA Exponential moving average
* @memberof Constants#
* @static
*/
this.MOVING_AVERAGE_EWMA = 'ewma';
/**
* @constant {string} BAD_ARGUMENT_ERROR Invalid Arguments type of error
* @memberof Constants#
* @static
*/
this.BAD_ARGUMENT_ERROR = 'Invalid Arguments';
/**
* @constant {string} MISSING_CONFIG_ERROR Missing configuration parameters type of error
* @memberof Constants#
* @static
*/
this.MISSING_CONFIG_ERROR = 'Missing config parameter(s)';
/**
* @constant {string} TRACK_SWITCH_MODE_ALWAYS_REPLACE used to clear the buffered data (prior to current playback position) after track switch. Default for audio
* @memberof Constants#
* @static
*/
this.TRACK_SWITCH_MODE_ALWAYS_REPLACE = 'alwaysReplace';
/**
* @constant {string} TRACK_SWITCH_MODE_NEVER_REPLACE used to forbid clearing the buffered data (prior to current playback position) after track switch. Defers to fastSwitchEnabled for placement of new data. Default for video
* @memberof Constants#
* @static
*/
this.TRACK_SWITCH_MODE_NEVER_REPLACE = 'neverReplace';
/**
* @constant {string} TRACK_SELECTION_MODE_FIRST_TRACK makes the player select the first track found in the manifest.
* @memberof Constants#
* @static
*/
this.TRACK_SELECTION_MODE_FIRST_TRACK = 'firstTrack';
/**
* @constant {string} TRACK_SELECTION_MODE_HIGHEST_BITRATE makes the player select the track with a highest bitrate. This mode is a default mode.
* @memberof Constants#
* @static
*/
this.TRACK_SELECTION_MODE_HIGHEST_BITRATE = 'highestBitrate';
/**
* @constant {string} TRACK_SELECTION_MODE_HIGHEST_EFFICIENCY makes the player select the track with the lowest bitrate per pixel average.
* @memberof Constants#
* @static
*/
this.TRACK_SELECTION_MODE_HIGHEST_EFFICIENCY = 'highestEfficiency';
/**
* @constant {string} TRACK_SELECTION_MODE_WIDEST_RANGE makes the player select the track with a widest range of bitrates.
* @memberof Constants#
* @static
*/
this.TRACK_SELECTION_MODE_WIDEST_RANGE = 'widestRange';
/**
* @constant {string} TRACK_SELECTION_MODE_WIDEST_RANGE makes the player select the track with the highest selectionPriority as defined in the manifest
* @memberof Constants#
* @static
*/
this.TRACK_SELECTION_MODE_HIGHEST_SELECTION_PRIORITY = 'highestSelectionPriority';
/**
* @constant {string} CMCD_MODE_QUERY specifies to attach CMCD metrics as query parameters.
* @memberof Constants#
* @static
*/
this.CMCD_MODE_QUERY = 'query';
/**
* @constant {string} CMCD_MODE_HEADER specifies to attach CMCD metrics as HTTP headers.
* @memberof Constants#
* @static
*/
this.CMCD_MODE_HEADER = 'header';
this.INITIALIZE = 'initialize';
this.TEXT_SHOWING = 'showing';
this.TEXT_HIDDEN = 'hidden';
this.TEXT_DISABLED = 'disabled';
this.CC1 = 'CC1';
this.CC3 = 'CC3';
this.UTF8 = 'utf-8';
this.SCHEME_ID_URI = 'schemeIdUri';
this.START_TIME = 'starttime';
this.SERVICE_DESCRIPTION_DVB_LL_SCHEME = 'urn:dvb:dash:lowlatency:scope:2019';
this.SUPPLEMENTAL_PROPERTY_DVB_LL_SCHEME = 'urn:dvb:dash:lowlatency:critical:2019';
this.FONT_DOWNLOAD_DVB_SCHEME = 'urn:dvb:dash:fontdownload:2014';
this.XML = 'XML';
this.ARRAY_BUFFER = 'ArrayBuffer';
this.DVB_REPORTING_URL = 'dvb:reportingUrl';
this.DVB_PROBABILITY = 'dvb:probability';
this.OFF_MIMETYPE = 'application/font-sfnt';
this.WOFF_MIMETYPE = 'application/font-woff';
this.VIDEO_ELEMENT_READY_STATES = {
HAVE_NOTHING: 0,
HAVE_METADATA: 1,
HAVE_CURRENT_DATA: 2,
HAVE_FUTURE_DATA: 3,
HAVE_ENOUGH_DATA: 4
};
this.FILE_LOADER_TYPES = {
FETCH: 'fetch_loader',
XHR: 'xhr_loader'
}
}
constructor() {
this.init();
}
}
const constants = new Constants();
export default constants;