{"version":3,"sources":["node_modules/browser-pack/_prelude.js","/Users/wilaw/Documents/github/dash.js/externals/base64.js","/Users/wilaw/Documents/github/dash.js/externals/cea608-parser.js","/Users/wilaw/Documents/github/dash.js/externals/objectiron.js","/Users/wilaw/Documents/github/dash.js/externals/xml2json.js","/Users/wilaw/Documents/github/dash.js/index.js","node_modules/codem-isoboxer/dist/iso_boxer.js","/Users/wilaw/Documents/github/dash.js/src/core/Debug.js","/Users/wilaw/Documents/github/dash.js/src/core/EventBus.js","/Users/wilaw/Documents/github/dash.js/src/core/FactoryMaker.js","/Users/wilaw/Documents/github/dash.js/src/core/events/CoreEvents.js","/Users/wilaw/Documents/github/dash.js/src/core/events/Events.js","/Users/wilaw/Documents/github/dash.js/src/core/events/EventsBase.js","/Users/wilaw/Documents/github/dash.js/src/dash/DashAdapter.js","/Users/wilaw/Documents/github/dash.js/src/dash/DashHandler.js","/Users/wilaw/Documents/github/dash.js/src/dash/DashMetrics.js","/Users/wilaw/Documents/github/dash.js/src/dash/DashParser.js","/Users/wilaw/Documents/github/dash.js/src/dash/SegmentBaseLoader.js","/Users/wilaw/Documents/github/dash.js/src/dash/controllers/RepresentationController.js","/Users/wilaw/Documents/github/dash.js/src/dash/models/DashManifestModel.js","/Users/wilaw/Documents/github/dash.js/src/dash/utils/FragmentedTextBoxParser.js","/Users/wilaw/Documents/github/dash.js/src/dash/utils/TimelineConverter.js","/Users/wilaw/Documents/github/dash.js/src/dash/vo/AdaptationSet.js","/Users/wilaw/Documents/github/dash.js/src/dash/vo/Event.js","/Users/wilaw/Documents/github/dash.js/src/dash/vo/EventStream.js","/Users/wilaw/Documents/github/dash.js/src/dash/vo/Mpd.js","/Users/wilaw/Documents/github/dash.js/src/dash/vo/Period.js","/Users/wilaw/Documents/github/dash.js/src/dash/vo/Representation.js","/Users/wilaw/Documents/github/dash.js/src/dash/vo/Segment.js","/Users/wilaw/Documents/github/dash.js/src/dash/vo/UTCTiming.js","/Users/wilaw/Documents/github/dash.js/src/streaming/FragmentLoader.js","/Users/wilaw/Documents/github/dash.js/src/streaming/ManifestLoader.js","/Users/wilaw/Documents/github/dash.js/src/streaming/ManifestUpdater.js","/Users/wilaw/Documents/github/dash.js/src/streaming/MediaPlayer.js","/Users/wilaw/Documents/github/dash.js/src/streaming/MediaPlayerEvents.js","/Users/wilaw/Documents/github/dash.js/src/streaming/MediaPlayerFactory.js","/Users/wilaw/Documents/github/dash.js/src/streaming/Stream.js","/Users/wilaw/Documents/github/dash.js/src/streaming/StreamProcessor.js","/Users/wilaw/Documents/github/dash.js/src/streaming/TextSourceBuffer.js","/Users/wilaw/Documents/github/dash.js/src/streaming/TextTracks.js","/Users/wilaw/Documents/github/dash.js/src/streaming/VirtualBuffer.js","/Users/wilaw/Documents/github/dash.js/src/streaming/XlinkLoader.js","/Users/wilaw/Documents/github/dash.js/src/streaming/controllers/AbrController.js","/Users/wilaw/Documents/github/dash.js/src/streaming/controllers/BufferController.js","/Users/wilaw/Documents/github/dash.js/src/streaming/controllers/EventController.js","/Users/wilaw/Documents/github/dash.js/src/streaming/controllers/FragmentController.js","/Users/wilaw/Documents/github/dash.js/src/streaming/controllers/MediaController.js","/Users/wilaw/Documents/github/dash.js/src/streaming/controllers/MediaSourceController.js","/Users/wilaw/Documents/github/dash.js/src/streaming/controllers/PlaybackController.js","/Users/wilaw/Documents/github/dash.js/src/streaming/controllers/ScheduleController.js","/Users/wilaw/Documents/github/dash.js/src/streaming/controllers/SourceBufferController.js","/Users/wilaw/Documents/github/dash.js/src/streaming/controllers/StreamController.js","/Users/wilaw/Documents/github/dash.js/src/streaming/controllers/TextController.js","/Users/wilaw/Documents/github/dash.js/src/streaming/controllers/TimeSyncController.js","/Users/wilaw/Documents/github/dash.js/src/streaming/controllers/XlinkController.js","/Users/wilaw/Documents/github/dash.js/src/streaming/metrics/MetricsReporting.js","/Users/wilaw/Documents/github/dash.js/src/streaming/metrics/MetricsReportingEvents.js","/Users/wilaw/Documents/github/dash.js/src/streaming/metrics/controllers/MetricsCollectionController.js","/Users/wilaw/Documents/github/dash.js/src/streaming/metrics/controllers/MetricsController.js","/Users/wilaw/Documents/github/dash.js/src/streaming/metrics/controllers/MetricsHandlersController.js","/Users/wilaw/Documents/github/dash.js/src/streaming/metrics/controllers/RangeController.js","/Users/wilaw/Documents/github/dash.js/src/streaming/metrics/controllers/ReportingController.js","/Users/wilaw/Documents/github/dash.js/src/streaming/metrics/metrics/MetricsHandlerFactory.js","/Users/wilaw/Documents/github/dash.js/src/streaming/metrics/metrics/handlers/BufferLevelHandler.js","/Users/wilaw/Documents/github/dash.js/src/streaming/metrics/metrics/handlers/DVBErrorsHandler.js","/Users/wilaw/Documents/github/dash.js/src/streaming/metrics/metrics/handlers/GenericMetricHandler.js","/Users/wilaw/Documents/github/dash.js/src/streaming/metrics/metrics/handlers/HttpListHandler.js","/Users/wilaw/Documents/github/dash.js/src/streaming/metrics/reporting/ReportingFactory.js","/Users/wilaw/Documents/github/dash.js/src/streaming/metrics/reporting/reporters/DVBReporting.js","/Users/wilaw/Documents/github/dash.js/src/streaming/metrics/utils/DVBErrorsTranslator.js","/Users/wilaw/Documents/github/dash.js/src/streaming/metrics/utils/HandlerHelpers.js","/Users/wilaw/Documents/github/dash.js/src/streaming/metrics/utils/ManifestParsing.js","/Users/wilaw/Documents/github/dash.js/src/streaming/metrics/utils/MetricSerialiser.js","/Users/wilaw/Documents/github/dash.js/src/streaming/metrics/utils/RNG.js","/Users/wilaw/Documents/github/dash.js/src/streaming/metrics/vo/DVBErrors.js","/Users/wilaw/Documents/github/dash.js/src/streaming/metrics/vo/Metrics.js","/Users/wilaw/Documents/github/dash.js/src/streaming/metrics/vo/Range.js","/Users/wilaw/Documents/github/dash.js/src/streaming/metrics/vo/Reporting.js","/Users/wilaw/Documents/github/dash.js/src/streaming/models/FragmentModel.js","/Users/wilaw/Documents/github/dash.js/src/streaming/models/ManifestModel.js","/Users/wilaw/Documents/github/dash.js/src/streaming/models/MediaPlayerModel.js","/Users/wilaw/Documents/github/dash.js/src/streaming/models/MetricsModel.js","/Users/wilaw/Documents/github/dash.js/src/streaming/models/URIQueryAndFragmentModel.js","/Users/wilaw/Documents/github/dash.js/src/streaming/models/VideoModel.js","/Users/wilaw/Documents/github/dash.js/src/streaming/protection/CommonEncryption.js","/Users/wilaw/Documents/github/dash.js/src/streaming/protection/Protection.js","/Users/wilaw/Documents/github/dash.js/src/streaming/protection/ProtectionEvents.js","/Users/wilaw/Documents/github/dash.js/src/streaming/protection/controllers/ProtectionController.js","/Users/wilaw/Documents/github/dash.js/src/streaming/protection/controllers/ProtectionKeyController.js","/Users/wilaw/Documents/github/dash.js/src/streaming/protection/drm/KeySystemClearKey.js","/Users/wilaw/Documents/github/dash.js/src/streaming/protection/drm/KeySystemPlayReady.js","/Users/wilaw/Documents/github/dash.js/src/streaming/protection/drm/KeySystemWidevine.js","/Users/wilaw/Documents/github/dash.js/src/streaming/protection/models/ProtectionModel_01b.js","/Users/wilaw/Documents/github/dash.js/src/streaming/protection/models/ProtectionModel_21Jan2015.js","/Users/wilaw/Documents/github/dash.js/src/streaming/protection/models/ProtectionModel_3Feb2014.js","/Users/wilaw/Documents/github/dash.js/src/streaming/protection/servers/ClearKey.js","/Users/wilaw/Documents/github/dash.js/src/streaming/protection/servers/DRMToday.js","/Users/wilaw/Documents/github/dash.js/src/streaming/protection/servers/PlayReady.js","/Users/wilaw/Documents/github/dash.js/src/streaming/protection/servers/Widevine.js","/Users/wilaw/Documents/github/dash.js/src/streaming/protection/vo/ClearKeyKeySet.js","/Users/wilaw/Documents/github/dash.js/src/streaming/protection/vo/KeyError.js","/Users/wilaw/Documents/github/dash.js/src/streaming/protection/vo/KeyMessage.js","/Users/wilaw/Documents/github/dash.js/src/streaming/protection/vo/KeyPair.js","/Users/wilaw/Documents/github/dash.js/src/streaming/protection/vo/KeySystemAccess.js","/Users/wilaw/Documents/github/dash.js/src/streaming/protection/vo/KeySystemConfiguration.js","/Users/wilaw/Documents/github/dash.js/src/streaming/protection/vo/MediaCapability.js","/Users/wilaw/Documents/github/dash.js/src/streaming/protection/vo/NeedKey.js","/Users/wilaw/Documents/github/dash.js/src/streaming/rules/RulesContext.js","/Users/wilaw/Documents/github/dash.js/src/streaming/rules/RulesController.js","/Users/wilaw/Documents/github/dash.js/src/streaming/rules/SwitchRequest.js","/Users/wilaw/Documents/github/dash.js/src/streaming/rules/abr/ABRRulesCollection.js","/Users/wilaw/Documents/github/dash.js/src/streaming/rules/abr/AbandonRequestsRule.js","/Users/wilaw/Documents/github/dash.js/src/streaming/rules/abr/BolaAbandonRule.js","/Users/wilaw/Documents/github/dash.js/src/streaming/rules/abr/BolaRule.js","/Users/wilaw/Documents/github/dash.js/src/streaming/rules/abr/BufferOccupancyRule.js","/Users/wilaw/Documents/github/dash.js/src/streaming/rules/abr/InsufficientBufferRule.js","/Users/wilaw/Documents/github/dash.js/src/streaming/rules/abr/ThroughputRule.js","/Users/wilaw/Documents/github/dash.js/src/streaming/rules/scheduling/BufferLevelRule.js","/Users/wilaw/Documents/github/dash.js/src/streaming/rules/scheduling/NextFragmentRequestRule.js","/Users/wilaw/Documents/github/dash.js/src/streaming/rules/scheduling/ScheduleRulesCollection.js","/Users/wilaw/Documents/github/dash.js/src/streaming/rules/synchronization/LiveEdgeBinarySearchRule.js","/Users/wilaw/Documents/github/dash.js/src/streaming/rules/synchronization/LiveEdgeWithTimeSynchronizationRule.js","/Users/wilaw/Documents/github/dash.js/src/streaming/rules/synchronization/SynchronizationRulesCollection.js","/Users/wilaw/Documents/github/dash.js/src/streaming/utils/BoxParser.js","/Users/wilaw/Documents/github/dash.js/src/streaming/utils/Capabilities.js","/Users/wilaw/Documents/github/dash.js/src/streaming/utils/CustomTimeRanges.js","/Users/wilaw/Documents/github/dash.js/src/streaming/utils/DOMStorage.js","/Users/wilaw/Documents/github/dash.js/src/streaming/utils/ErrorHandler.js","/Users/wilaw/Documents/github/dash.js/src/streaming/utils/IsoFile.js","/Users/wilaw/Documents/github/dash.js/src/streaming/utils/LiveEdgeFinder.js","/Users/wilaw/Documents/github/dash.js/src/streaming/utils/RequestModifier.js","/Users/wilaw/Documents/github/dash.js/src/streaming/utils/TTMLParser.js","/Users/wilaw/Documents/github/dash.js/src/streaming/utils/VTTParser.js","/Users/wilaw/Documents/github/dash.js/src/streaming/vo/BitrateInfo.js","/Users/wilaw/Documents/github/dash.js/src/streaming/vo/DataChunk.js","/Users/wilaw/Documents/github/dash.js/src/streaming/vo/Error.js","/Users/wilaw/Documents/github/dash.js/src/streaming/vo/FragmentRequest.js","/Users/wilaw/Documents/github/dash.js/src/streaming/vo/IsoBox.js","/Users/wilaw/Documents/github/dash.js/src/streaming/vo/ManifestInfo.js","/Users/wilaw/Documents/github/dash.js/src/streaming/vo/MediaInfo.js","/Users/wilaw/Documents/github/dash.js/src/streaming/vo/MetricsList.js","/Users/wilaw/Documents/github/dash.js/src/streaming/vo/StreamInfo.js","/Users/wilaw/Documents/github/dash.js/src/streaming/vo/TextTrackInfo.js","/Users/wilaw/Documents/github/dash.js/src/streaming/vo/TrackInfo.js","/Users/wilaw/Documents/github/dash.js/src/streaming/vo/URIFragmentData.js","/Users/wilaw/Documents/github/dash.js/src/streaming/vo/metrics/BolaState.js","/Users/wilaw/Documents/github/dash.js/src/streaming/vo/metrics/BufferLevel.js","/Users/wilaw/Documents/github/dash.js/src/streaming/vo/metrics/BufferState.js","/Users/wilaw/Documents/github/dash.js/src/streaming/vo/metrics/DVRInfo.js","/Users/wilaw/Documents/github/dash.js/src/streaming/vo/metrics/DroppedFrames.js","/Users/wilaw/Documents/github/dash.js/src/streaming/vo/metrics/HTTPRequest.js","/Users/wilaw/Documents/github/dash.js/src/streaming/vo/metrics/ManifestUpdate.js","/Users/wilaw/Documents/github/dash.js/src/streaming/vo/metrics/PlayList.js","/Users/wilaw/Documents/github/dash.js/src/streaming/vo/metrics/RepresentationSwitch.js","/Users/wilaw/Documents/github/dash.js/src/streaming/vo/metrics/RequestsQueue.js","/Users/wilaw/Documents/github/dash.js/src/streaming/vo/metrics/SchedulingInfo.js","/Users/wilaw/Documents/github/dash.js/src/streaming/vo/metrics/TCPConnection.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length",1,"_dereq_","module","UTF8","encode","c","charCodeAt","push","decode","v","String","fromCharCode","join","BASE64","T","encodeArray","charAt","R","decodeArray","pop","ASCII","Uint8Array","encodeASCII","decodeASCII","undefined","btoa","atob","specialCea608CharsCodes",42,92,94,95,96,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,"getCharForByte","byte","charCode","hasOwnProperty","NR_ROWS","NR_COLS","rowsLowCh1",17,18,21,22,23,16,19,20,"rowsHighCh1","rowsLowCh2",25,26,29,30,31,24,27,28,"rowsHighCh2","backgroundColors","logger","verboseFilter","DATA","DEBUG","INFO","WARNING","TEXT","ERROR","time","verboseLevel","setTime","newTime","this","log","severity","msg","minLevel","console","numArrayToHexArray","numArray","hexArray","j","toString","PenState","foreground","underline","italics","background","flash","prototype","reset","setStyles","styles","attribs","style","isDefault","equals","other","copy","newPenState","StyledUnicodeChar","uchar","penState","setChar","setPenState","newChar","isEmpty","Row","chars","pos","currPenState","equal","empty","setCursor","absPos","moveCursor","relPos","newPos","backSpace","insertChar","char","clearFromPos","startPos","clear","clearToEndOfRow","getTextString","setPenStyles","currChar","CaptionScreen","rows","currRow","nrRollUpRows","row","setPen","setPAC","pacData","JSON","stringify","newRow","indent","prevPos","Math","max","color","setBkgData","bkgData","setRollUpRows","nrRows","rollUp","getDisplayText","topRowIndex","topRow","splice","asOneRow","displayText","text","rowNr","rowText","trim","getTextAndFormat","Cea608Channel","channelNumber","outputFilter","chNr","mode","verbose","displayedMemory","nonDisplayedMemory","lastOutputScreen","currRollUpRow","writeScreen","cueStartTime","modes","lastCueEndTime","getHandler","setHandler","newHandler","setMode","newMode","insertChars","screen","outputDataUpdate","cc_RCL","cc_BS","cc_AOF","cc_AON","cc_DER","cc_RU","cc_FON","cc_RDC","cc_TR","cc_RTD","cc_EDM","cc_CR","cc_ENM","cc_EOC","tmp","cc_TO","nrCols","cc_MIDROW","secondByte","colorIndex","floor","colors","updateData","newCue","cueSplitAtTime","Cea608Parser","field","out1","out2","outputs","channels","currChNr","lastCmdA","lastCmdB","bufferedData","startTime","lastTime","dataCounters","padding","cmd","index","addData","byteList","cmdFound","b","charsFound","parseCmd","parseMidrow","parsePAC","parseBackgroundAttributes","parseChars","channel","cond1","cond2","case1","case2","interpretPAC","pacIndex","channelNr","charCodes","charCode1","oneCode","hexCodes","findCea608Nalus","raw","size","nalSize","cursor","nalType","cea608NaluRanges","isCEA608SEI","payloadType","payloadSize","countryCode","getUint8","providerCode","getUint16","userIdentifier","getUint32","userDataTypeCode","extractCea608DataFromRange","cea608Range","fieldData","ccCount","ccValid","ccType","ccData1","ccData2","cea608parser","ObjectIron","map","lookup","len","isRoot","name","mergeValues","parentItem","childItem","mapProperties","properties","parent","child","property","parentValue","childValue","merge","mergeFunction","mapItem","obj","node","len2","array","childNode","item","children","isArray","performMapping","source","pi","pp","indexOf","run","X2JS","matchers","attrPrefix","ignoreRoot","getNodeLocalName","nodeLocalName","localName","baseName","nodeName","getNodePrefix","prefix","escapeXmlChars","str","replace","unescapeXmlChars","parseDOMChildren","nodeType","DOMNodeTypes","DOCUMENT_NODE","result","firstChild","childNodes","COMMENT_NODE","childName","ELEMENT_NODE","Object","__cnt","nodeChildren","cidx","test","Array","tmpObj","aridx","__children","aidx","attributes","attr","value2","value","m","ml","matchobj","converter","nodePrefix","__prefix","__text","escapeMode","__cdata","TEXT_NODE","CDATA_SECTION_NODE","nodeValue","startTag","jsonObj","element","attrList","closed","resultStr","attrName","attrVal","substr","endTag","elementName","endsWith","suffix","jsonXmlSpecialElem","jsonObjField","Function","jsonXmlElemCount","elementsCnt","it","parseJSONAttributes","ait","parseJSONTextAttrs","jsonTxtObj","parseJSONTextObject","parseJSONArray","jsonArrRoot","jsonArrObj","arIdx","parseJSONObject","subObj","subObjElementsCnt","VERSION","parseXmlString","xmlDocStr","xmlDoc","parser","ns","window","DOMParser","parseFromString","getElementsByTagName","namespaceURI","getElementsByTagNameNS","ActiveXObject","async","loadXML","xml2json","xml_str2json","json2xml_str","json2xml","getVersion","enabled","context","global","dashjs","MediaPlayer","_srcStreamingMediaPlayerJs2","Protection","_srcStreamingProtectionProtectionJs2","MetricsReporting","_srcStreamingMetricsMetricsReportingJs2","MediaPlayerFactory","_srcStreamingMediaPlayerFactoryJs2","ISOBoxer","parseBuffer","arrayBuffer","ISOFile","parse","Utils","dataViewToString","dataView","encoding","impliedEncoding","TextDecoder","byteLength","Cursor","initialOffset","offset","_raw","DataView","_cursor","boxes","fetch","type","fetchAll","returnEarly","_sweep","box","ISOBox","newBox","_offset","_root","_parent","_parseBox","byteOffset","_readInt","getInt8","getInt16","getInt32","s1","s2","pow","_readUint","_readString","_readTerminatedString","_readTemplate","pre","post","buffer","_incomplete","largesize","usertype","_boxParsers","_parseFullBox","version","flags","forEach","boxType","entry_count","entries","entry","segment_duration","media_time","media_rate_integer","media_rate_fraction","scheme_id_uri","timescale","presentation_time_delta","event_duration","id","message_data","data","major_brand","minor_versions","compatible_brands","pre_defined","handler_type","reserved","creation_time","modification_time","duration","language","pad","sequence_number","rate","volume","reserved1","reserved2","matrix","next_track_ID","cue_text_raw","cue_text","reference_ID","earliest_presentation_time","first_offset","reference_count","references","ref","reference","reference_type","referenced_size","subsegment_duration","sap","starts_with_SAP","SAP_type","SAP_delta_time","subsegment_count","subsegments","subsegment","ranges_count","ranges","range","level","range_size","baseMediaDecodeTime","track_ID","base_data_offset","sample_description_offset","default_sample_duration","default_sample_size","default_sample_flags","layer","alternate_group","reserved3","width","height","sample_count","data_offset","first_sample_flags","samples","sample","sample_duration","sample_size","sample_flags","sample_composition_time_offset","source_label_raw","source_label","config_raw","config","Debug","setup","logToBrowserConsole","showLogTimestamp","Date","getTime","setLogTimestampVisible","setLogToBrowserConsole","getLogToBrowserConsole","message","logTime","apply","arguments","eventBus","trigger","_eventsEventsJs2","LOG","_EventBusJs2","getInstance","instance","__dashjs_factory_name","_FactoryMakerJs2","getSingletonFactory","EventBus","on","listener","scope","getHandlerIdx","handler","callback","handlers","off","idx","args","handlersForType","FactoryMaker","extend","childInstance","override","extensionContext","getExtensionContext","getSingletonInstance","className","singletonContexts","setSingletonInstance","getClassFactory","classConstructor","create","extensionObject","extension","factory","prop","extensions","CoreEvents","_EventsBase","_get","getPrototypeOf","AST_IN_FUTURE","BUFFERING_COMPLETED","BUFFER_CLEARED","BUFFER_LEVEL_STATE_CHANGED","BUFFER_LEVEL_UPDATED","BYTES_APPENDED","CHECK_FOR_EXISTENCE_COMPLETED","CHUNK_APPENDED","CURRENT_TRACK_CHANGED","DATA_UPDATE_COMPLETED","DATA_UPDATE_STARTED","FRAGMENT_LOADING_COMPLETED","FRAGMENT_LOADING_STARTED","INITIALIZATION_LOADED","INIT_FRAGMENT_LOADED","INIT_REQUESTED","INTERNAL_MANIFEST_LOADED","LIVE_EDGE_SEARCH_COMPLETED","LOADING_COMPLETED","LOADING_PROGRESS","MANIFEST_UPDATED","MEDIA_FRAGMENT_LOADED","QUALITY_CHANGED","QUOTA_EXCEEDED","REPRESENTATION_UPDATED","SEGMENTS_LOADED","SOURCEBUFFER_APPEND_COMPLETED","SOURCEBUFFER_REMOVE_COMPLETED","STREAMS_COMPOSED","STREAM_BUFFERING_COMPLETED","STREAM_COMPLETED","STREAM_INITIALIZED","STREAM_TEARDOWN_COMPLETE","TIMED_TEXT_REQUESTED","TIME_SYNCHRONIZATION_COMPLETED","WALLCLOCK_TIME_UPDATED","XLINK_ALL_ELEMENTS_LOADED","XLINK_ELEMENT_LOADED","XLINK_READY","Events","_CoreEvents","events","EventsBase","publicOnly","evt","DashAdapter","setConfig","dashManifestModel","initialize","periods","adaptations","getRepresentationForTrackInfo","trackInfo","representationController","getRepresentationForQuality","quality","getAdaptationForMediaInfo","mediaInfo","streamInfo","getPeriodForStreamInfo","ln","period","convertRepresentationToTrackInfo","manifest","representation","_streamingVoTrackInfoJs2","adaptation","mpd","Period_asArray","AdaptationSet_asArray","getRepresentationFor","bandwidth","getBandwidth","DVRWindow","segmentAvailabilityRange","fragmentDuration","segmentDuration","segments","NaN","MSETimeOffset","useCalculatedLiveEdgeTime","convertAdaptationToMediaInfo","viewpoint","_streamingVoMediaInfoJs2","convertPeriodToStreamInfo","representationCount","getRepresentationCount","lang","getLanguageForAdaptation","getViewpointForAdaptation","accessibility","getAccessibilityForAdaptation","accessibilityValue","accessibilityData","schemeIdUri","search","_externalsCea608ParserJs2","embeddedCaptions","audioChannelConfiguration","getAudioChannelConfigurationForAdaptation","roles","getRolesForAdaptation","role","codec","getCodec","mimeType","getMimeType","contentProtection","getContentProtectionData","bitrateList","getBitrateListForAdaptation","KID","getKID","isText","getIsTextTrack","convertVideoInfoToEmbeddedTextInfo","parseInt","substring","isEmbedded","_streamingVoStreamInfoJs2","THRESHOLD","start","manifestInfo","convertMpdToManifestInfo","isLast","abs","_streamingVoManifestInfoJs2","DVRWindowSize","timeShiftBufferDepth","loadedTime","availableFrom","availabilityStartTime","minBufferTime","maxFragmentDuration","maxSegmentDuration","getDuration","isDynamic","getIsDynamic","getMediaInfoForType","periodInfo","periodId","getAdaptationForType","getIndexForAdaptation","getAdaptationsForPeriod","getAllMediaInfoForType","media","adaptationsForType","getAdaptationsForType","mediaArr","accessibilityLength","parts","split","getStreamsInfo","streams","getMpd","getRegularPeriods","checkTime","getCheckTime","getManifestInfo","getInitRequest","streamProcessor","getRepresentationController","getIndexHandler","getNextFragmentRequest","getNextSegmentRequest","getFragmentRequestForTime","options","getSegmentRequestForTime","generateFragmentRequestForTime","generateSegmentRequestForTime","getIndexHandlerTime","getCurrentTime","setIndexHandlerTime","setCurrentTime","getStreamInfo","getMediaInfo","getType","getAdaptationForId","getAdaptationForIndex","getRepresentationInfoForQuality","getCurrentRepresentationInfo","getCurrentRepresentation","getEvent","eventBox","eventStreams","event","_voEventJs2","presentationTimeDelta","messageData","presentationTime","eventStream","getEventsFor","info","getEventsForPeriod","getEventStreamForAdaptationSet","getEventStreamForRepresentation","convertDataToTrack","convertDataToMedia","convertDataToStream","getDataForTrack","getDataForMedia","getDataForStream","metricsList","METRIC_LIST","TCP_CONNECTION","HTTP_REQUEST","TRACK_SWITCH","BUFFER_LEVEL","BUFFER_STATE","DVR_INFO","DROPPED_FRAMES","SCHEDULING_INFO","REQUESTS_QUEUE","MANIFEST_UPDATE","MANIFEST_UPDATE_STREAM_INFO","MANIFEST_UPDATE_TRACK_INFO","PLAY_LIST","DVB_ERRORS","_coreFactoryMakerJs2","DashHandler","currentTime","absUrl","RegExp","_coreEventsEventsJs2","onInitializationLoaded","onSegmentsLoaded","StreamProcessor","getStreamProcessor","getCurrentIndex","requestedTime","zeroPadToLength","numStr","minStrLength","replaceTokenForTemplate","url","token","endPos","formatTagPos","specifier","paddedValue","formatTag","tokenLen","formatTagLen","toUpperCase","unescapeDollarsInTemplate","replaceIDForTemplate","getNumberForSegment","segment","segmentIndex","startNumber","getRequestUrl","destination","baseURL","Representation_asArray","BaseURL","generateInitRequest","mediaType","presentationStartTime","request","_streamingVoFragmentRequestJs2","_streamingVoMetricsHTTPRequestJs2","INIT_SEGMENT_TYPE","initialization","timelineConverter","calcAvailabilityStartTimeFromPresentationTime","availabilityEndTime","calcAvailabilityEndTimeFromPresentationTime","isMediaFinished","sDuration","seg","fTime","segmentInfoType","isFinished","availableSegmentsNumber","getSegmentByIndex","getIndexBasedSegment","presentationEndTime","isNaN","_voSegmentJs2","mediaStartTime","calcMediaTimeFromPresentationTime","wallStartTime","calcWallTimeForSegment","replacementNumber","availabilityIdx","getSegmentsFromTimeline","fragments","frag","repeat","repeatEndTime","nextFrag","calculatedRange","hasEnoughSegments","requiredMediaTime","startIdx","endIdx","fTimescale","template","SegmentTemplate","timeline","SegmentTimeline","isAvailableSegmentNumberCalculated","maxSegmentsAhead","scaledTime","isStartSegmentForRequestedTimeFound","createSegment","getTimeBasedSegment","d","mediaRange","S_asArray","decideSegmentListRangeForTimeline","end","availabilityEnd","calcSegmentAvailabilityRange","ceil","getSegmentsFromTemplate","segmentRange","periodSegIdx","availabilityWindow","decideSegmentListRangeForTemplate","replacementTime","periodRelativeRange","calcPeriodRelativeTimeFromMpdRelativeTime","currentSegmentList","availabilityLowerLimit","availabilityUpperLimit","originAvailabilityTime","originSegment","isTimeSyncCompleted","min","firstIdx","lastIdx","Number","POSITIVE_INFINITY","scaledDuration","calcPresentationTimeFromMediaTime","getSegmentsFromList","list","SegmentList","SegmentURL_asArray","indexRange","getSegments","isSegmentListUpdateRequired","onSegmentListUpdated","liveEdge","metrics","lastSegment","getExpectedLiveEdge","metricsModel","getMetricsFor","setExpectedLiveEdge","updateManifestUpdateInfo","dashMetrics","getCurrentManifestUpdate","updateSegmentList","_streamingVoErrorJs2","updateRepresentation","keepIdx","error","hasInitialization","hasSegments","SEGMENTS_UNAVAILABLE_ERROR_CODE","availabilityDelay","sender","segmentBaseLoader","loadInitialization","loadSegments","getIndexForSegments","timeThreshold","epsilon","ft","fd","upperIdx","lowerIdx","updateRequired","getRequestForSegment","MEDIA_SEGMENT_TYPE","finished","ignoreIsFinished","action","ACTION_COMPLETE","step","count","_coreDebugJs2","_coreEventBusJs2","DashMetrics","getBandwidthForRepresentation","representationId","manifestModel","getValue","findRepresentation","getIndexForRepresentation","periodIdx","representationIndex","findRepresentationIndex","getMaxIndexForBufferType","bufferType","maxIndex","findMaxBufferIndex","getMaxAllowedIndexForBufferType","abrController","_streamingControllersAbrControllerJs2","getTopQualityIndexFor","getCurrentRepresentationSwitch","repSwitchLength","repSwitchLastIndex","currentRepSwitch","repSwitch","RepSwitchList","getLatestBufferLevelVO","bufferLevel","BufferLevel","getCurrentBufferLevel","getRequestsQueue","RequestsQueue","getCurrentHttpRequest","httpListLength","httpListLastIndex","httpList","HttpList","currentHttpList","responsecode","getHttpRequests","getCurrentDroppedFrames","droppedFramesLength","droppedFramesLastIndex","currentDroppedFrames","droppedFrames","DroppedFrames","getCurrentSchedulingInfo","currentSchedulingInfo","schedulingInfo","SchedulingInfo","currentManifestUpdate","manifestUpdate","ManifestUpdate","getCurrentDVRInfo","dvrInfoLastIndex","currentDVRInfo","dvrInfo","DVRInfo","getLatestMPDRequestHeaderValueByID","httpRequestList","httpRequest","headers","MPD_TYPE","parseResponseHeaders","_responseHeaders","getLatestFragmentRequestHeaderValueByID","headerStr","headerPairs","ilen","headerPair","adaptationSet","adaptationSetArray","representationArray","adaptationSetArrayIndex","representationArrayIndex","adaptationIsType","_modelsDashManifestModelJs2","getIsTypeOf","_streamingModelsManifestModelJs2","DashParser","durationRegex","datetimeRegex","numericRegex","httpOrHttpsRegex","originRegex","attributeList","match","exec","parseFloat","SECONDS_IN_YEAR","SECONDS_IN_MONTH","SECONDS_IN_DAY","SECONDS_IN_HOUR","SECONDS_IN_MIN","utcDate","UTC","MILLISECONDS_IN_SECONDS","timezoneOffset","MINUTES_IN_HOUR","getCommonValuesMap","subRepresentation","common","getSegmentValuesMap","getBaseUrlValuesMap","mergedValue","origin","getDashMap","baseUrl","xlinkController","_externalsXml2jsonJs2","iron","_externalsObjectironJs2","json","ironed","BaseURL_asArray","Location","Location_asArray","setMatchers","setIron","err","_streamingUtilsErrorHandlerJs2","manifestError","SegmentBaseLoader","errHandler","boxParser","_streamingUtilsBoxParserJs2","requestModifier","_streamingUtilsRequestModifierJs2","loadingInfo","needFailureReport","initRange","isoFile","XMLHttpRequest","searching","bytesLoaded","bytesToLoad","onload","status","response","findInitRange","onloadend","onerror","downloadError","sendRequest","onLoaded","sidx","hasRange","extraBytes","loadedLength","getBox","isComplete","loadMultiSidx","ss","se","segs","tmpCallback","concat","getSegmentsForSidx","lastBox","getLastBox","refs","ftyp","moov","open","modifyRequestURL","responseType","setRequestHeader","modifyRequestHeader","send","RepresentationController","dataIndex","updating","availableRepresentations","streamController","_streamingControllersStreamControllerJs2","playbackController","_streamingControllersPlaybackControllerJs2","_streamingModelsMetricsModelJs2","domStorage","_streamingUtilsDOMStorageJs2","_utilsTimelineConverterJs2","_DashMetricsJs2","mediaPlayerModel","_streamingModelsMediaPlayerModelJs2","onQualityChanged","onRepresentationUpdated","onWallclockTimeUpdated","onBufferLevelUpdated","onLiveEdgeSearchCompleted","indexHandler","getData","getDataIndex","isUpdating","currentRepresentation","dataValue","averageThroughput","bitrate","maxQuality","updateRepresentations","getAverageThroughput","getInitialBitrateFor","getQualityForBitrate","getQualityFor","addRepresentationSwitch","now","currentVideoTimeMs","addDVRMetric","addDVRInfo","getQualityForRepresentation","isAllRepresentationsUpdated","reps","getRepresentationsForAdaptation","updateAvailabilityWindow","rep","resetAvailabilityWindow","postponeUpdate","postponeTimePeriod","delay","update","setTimeout","repInfo","streamMetrics","manifestUpdateInfo","alreadyAdded","segmentAvailabilityTimePeriod","getLiveDelayFragmentCount","SEGMENTS_UPDATE_FAILED_ERROR_CODE","addManifestUpdateRepresentationInfo","presentationTimeOffset","setPlaybackQuality","latency","getActiveStreamInfo","getEndTimeForLastPeriod","oldQuality","newQuality","setLocalStorage","isSupported","STORAGE_TYPE_LOCAL","localStorage","setItem","timestamp","DashManifestModel","found","col","ContentComponent_asArray","mimeTypeRegEx","codecs","contentType","getIsAudio","getIsVideo","getIsFragmentedText","getIsText","getIsMuxed","Viewpoint","Role_asArray","Accessibility_asArray","AudioChannelConfiguration_asArray","getIsMain","filter","processAdaptation","sort","periodIndex","ContentProtection_asArray","getIsDVR","containsDVR","isDVR","getIsOnDemand","isOnDemand","profiles","mpdDuration","mediaPresentationDuration","MAX_VALUE","getRefreshDelay","minDelay","minimumUpdatePeriod","segmentInfo","representations","_voRepresentationJs2","maxPlayoutRate","SegmentBase","Initialization","sourceURL","calcMSETimeOffset","p","_voAdaptationSetJs2","p1","vo1","vo","_voPeriodJs2","getPeriodId","DEFAULT_ID","_voMpdJs2","suggestedPresentationDelay","getFetchTime","calcPresentationTimeFromWallTime","fetchTime","periodEnd","periodArray","EventStream_asArray","_voEventStreamJs2","Event_asArray","getEventStreams","inbandStreams","InbandEventStream_asArray","getUTCTimingSources","hasAST","utcTimingsArray","UTCTiming_asArray","utcTimingEntries","utcTiming","_voUTCTimingJs2","FragmentedTextBoxParser","getSamplesInfo","ab","sampleDuration","sampleCompositionTimeOffset","sampleCount","sampleSize","sampleDts","sampleList","dataOffset","sequenceNumber","totalDuration","tfhdBox","tfdtBox","trunBox","moofBox","mfhdBox","dts","cts","getMediaTimescaleFromMoov","mdhdBox","TimelineConverter","clientServerTimeShift","isClientServerTimeSyncCompleted","expectedLiveEdge","onTimeSyncComplete","setTimeSyncCompleted","getClientTimeOffset","calcAvailabilityTimeFromPresentationTime","calculateEnd","availabilityTime","wallTime","mediaTime","periodStart","presentationOffset","displayStartTime","timeAnchor","mpdRelativeTime","periodStartTime","calcMpdRelativeTimeFromPeriodRelativeTime","periodRelativeTime","searchTime","AdaptationSet","Event","EventStream","adaptionSet","Mpd","Period","Representation","Segment","UTCTiming","FragmentLoader","_modelsMediaPlayerModelJs2","xhrs","doLoad","remainingAttempts","req","traces","firstProgress","lastTraceTime","lastTraceReceivedCount","self","handleLoaded","requestVO","succeeded","download","firstByteDate","requestStartDate","requestEndDate","addHttpRequest","responseURL","getAllResponseHeaders","onprogress","lengthComputable","total","loaded","bytesTotal","getFragmentRetryInterval","bytes","_voErrorJs2","checkForExistence","exists","isSuccessful","load","getFragmentRetryAttempts","abort","ManifestLoader","RETRY_ATTEMPTS","xlinkLoader","_XlinkLoaderJs2","_controllersXlinkControllerJs2","onXlinkReady","report","progress","firstProgressCall","parseBaseUrl","requestTime","errorMsg","actualUrl","_voMetricsHTTPRequestJs2","responseText","originalUrl","addManifestUpdate","resolveManifestOnLoad","PARSERERROR_ERROR_CODE","RETRY_INTERVAL","base","lastIndexOf","ManifestUpdater","loader","manifestLoader","refreshDelay","refreshTimer","isStopped","onStreamsComposed","PLAYBACK_STARTED","onPlaybackStarted","PLAYBACK_PAUSED","onPlaybackPaused","onManifestLoaded","setManifest","getManifestLoader","clearInterval","onRefreshTimer","timeSinceLastUpdate","date","setValue","mediaPlayerInitialized","playbackInitialized","autoPlay","protectionController","protectionData","adapter","_MediaPlayerEventsJs2","view","AutoPlay","capabilities","_utilsCapabilitiesJs2","_utilsErrorHandlerJs2","supportsMediaSource","_controllersAbrControllerJs2","_controllersPlaybackControllerJs2","mediaController","_controllersMediaControllerJs2","_dashModelsDashManifestModelJs2","_dashDashMetricsJs2","_modelsMetricsModelJs2","createAdaptor","restoreDefaultUTCTimingSources","setAutoPlay","attachView","attachSource","capabilityError","isReady","play","PLAYBACK_NOT_INITIALIZED_ERROR","isPaused","pause","isSeeking","setMute","ELEMENT_NOT_ATTACHED_ERROR","muted","isMuted","setVolume","getVolume","getBufferLength","getDashMetrics","toPrecision","videoBuffer","getTracksFor","MAX_SAFE_INTEGER","audioBuffer","textBuffer","getDVRWindowSize","metric","getDVRInfoMetric","getDVRSeekOffset","val","seek","timeAsUTC","getAsUTC","durationAsUTC","formatUTC","locales","hour12","dt","toLocaleDateString","toLocaleTimeString","convertToTimeCode","h","parentNameString","getDebug","debug","getVideoModel","videoModel","getVideoContainer","setLiveDelayFragmentCount","useSuggestedPresentationDelay","setUseSuggestedPresentationDelay","enableLastBitrateCaching","enable","ttl","setLastBitrateCachingInfo","enableLastMediaSettingsCaching","setLastMediaSettingsCachingInfo","setMaxAllowedBitrateFor","getMaxAllowedBitrateFor","setMaxAllowedRepresentationRatioFor","getMaxAllowedRepresentationRatioFor","getAutoPlay","setScheduleWhilePaused","getScheduleWhilePaused","getReadOnlyMetricsFor","setQualityFor","getLimitBitrateByPortal","setLimitBitrateByPortal","setTextTrack","textSourceBuffer","_TextSourceBufferJs2","tracks","textTracks","track","getBitrateInfoListFor","stream","getActiveStream","getBitrateListFor","setInitialBitrateFor","setInitialRepresentationRatioFor","getInitialRepresentationRatioFor","getStreamsFromManifest","getTracksForTypeFromManifest","getCurrentTrackFor","setInitialMediaSettingsFor","setInitialSettings","getInitialMediaSettingsFor","getInitialSettings","setCurrentTrack","setTrack","getTrackSwitchModeFor","getSwitchMode","setTrackSwitchModeFor","setSwitchMode","setSelectionModeForInitialTrack","getSelectionModeForInitialTrack","getAutoSwitchQuality","getAutoSwitchBitrateFor","setAutoSwitchQuality","setAutoSwitchBitrateFor","getAutoSwitchQualityFor","setAutoSwitchQualityFor","enableBufferOccupancyABR","setBufferOccupancyABREnabled","retrieveManifest","createManifestLoader","uriQueryFragModel","_modelsURIQueryAndFragmentModelJs2","parseURI","addUTCTimingSource","removeUTCTimingSource","_dashVoUTCTimingJs2","UTCTimingSources","clearDefaultUTCTimingSources","setUTCTimingSources","DEFAULT_UTC_TIMING_SOURCE","scheme","enableManifestDateHeaderTimeSource","setUseManifestDateHeaderTimeSource","setBufferToKeep","setBufferPruningInterval","setStableBufferTime","setBufferTimeAtTopQuality","setBufferTimeAtTopQualityLongForm","setLongFormContentDurationThreshold","setRichBufferThreshold","setBandwidthSafetyFactor","getBandwidthSafetyFactor","setAbandonLoadTimeout","setFragmentLoaderRetryAttempts","setFragmentRetryAttempts","setFragmentLoaderRetryInterval","setFragmentRetryInterval","getProtectionController","detectProtection","attachProtectionController","setProtectionData","displayCaptionsOnTop","_TextTracksJs2","displayCConTop","attachVideoContainer","container","setVideoContainer","MEDIA_PLAYER_NOT_INITIALIZED_ERROR","_modelsVideoModelJs2","setElement","preload","detectMetricsReporting","resetAndInitializePlayback","attachTTMLRenderingDiv","div","setTTMLRenderingDiv","urlOrManifest","rulesController","metricsReportingController","initializePlayback","createControllers","synchronizationRulesCollection","_rulesSynchronizationSynchronizationRulesCollectionJs2","abrRulesCollection","_rulesAbrABRRulesCollectionJs2","scheduleRulesCollection","_rulesSchedulingScheduleRulesCollectionJs2","sourceBufferController","_controllersSourceBufferControllerJs2","virtualBuffer","_VirtualBufferJs2","_rulesRulesControllerJs2","_controllersStreamControllerJs2","_modelsManifestModelJs2","liveEdgeFinder","_utilsLiveEdgeFinderJs2","mediaSourceController","_controllersMediaSourceControllerJs2","timeSyncController","_controllersTimeSyncControllerJs2","_dashUtilsTimelineConverterJs2","_ManifestLoaderJs2","createManifestParser","_utilsRequestModifierJs2","_dashDashParserJs2","_dashDashAdapterJs2","protection","createProtectionSystem","metricsReporting","createMetricsReporting","mediaElement","getElement","valToConvert","utcValue","getStreamById","loadWithManifest","MediaPlayerEvents","BUFFER_EMPTY","BUFFER_LOADED","MANIFEST_LOADED","METRICS_CHANGED","METRIC_CHANGED","METRIC_ADDED","METRIC_UPDATED","PERIOD_SWITCH_COMPLETED","PERIOD_SWITCH_STARTED","TEXT_TRACKS_ADDED","TEXT_TRACK_ADDED","CAN_PLAY","PLAYBACK_ENDED","PLAYBACK_ERROR","PLAYBACK_METADATA_LOADED","PLAYBACK_PLAYING","PLAYBACK_PROGRESS","PLAYBACK_RATE_CHANGED","PLAYBACK_SEEKED","PLAYBACK_SEEKING","PLAYBACK_TIME_UPDATED","mediaPlayerEvents","video","_dashjs_player","player","videoID","slice","querySelectorAll","SUPPORTED_MIME_TYPE","src","document","createElement","_MediaPlayerJs2","autoplay","createAll","selector","aPlayers","videos","sources","findVideo","_x","el","toLowerCase","parentNode","loadHandler","removeEventListener","avoidAutoCreate","skipAutoCreate","addEventListener","readyState","Stream","streamProcessors","isStreamActivated","isMediaInitialized","updateError","initialized","fragmentController","_controllersFragmentControllerJs2","onBufferingCompleted","onDataUpdateCompleted","StreamInfo","ProtectionController","KEY_ERROR","onProtectionError","SERVER_CERTIFICATE_UPDATED","LICENSE_REQUEST_COMPLETE","KEY_SYSTEM_SELECTED","KEY_SESSION_CREATED","activate","mediaSource","createBuffers","onCurrentTrackChanged","initializeMedia","deactivate","resetEventController","abortSearch","manifestUpdater","getStartTime","getStreamIndex","getId","hasMedia","getBitrateList","startEventController","eventController","isActivated","isInitialized","mediaKeySessionError","getMimeTypeOrType","isMediaSupported","supportsEncryptedMedia","supportsCodec","newMediaInfo","processor","getProcessorForMediaInfo","oldMediaInfo","getBuffer","getMediaSource","createStreamProcessor","replaceIdx","updateMediaInfo","createIndexHandler","_dashSegmentBaseLoaderJs2","_dashDashHandlerJs2","optionalSettings","_StreamProcessorJs2","allMediaForType","updateTopQualityIndex","setBuffer","initializeMediaForType","initialMediaInfo","addEmbeddedTrack","isMultiTrackSupportedByType","addTrack","checkInitialMediaSettings","_controllersEventControllerJs2","addInlineEvents","checkIfInitializationCompleted","hasError","audio","DATA_UPDATE_FAILED_ERROR_CODE","mediaCtrl","createBuffer","processors","getProcessors","isBufferingCompleted","sp","controller","arr","updatedStreamInfo","mediaInfoArr","Type","FragmentController","EventController","dynamic","bufferController","createBufferControllerForType","scheduleController","_controllersScheduleControllerJs2","fragmentLoader","_FragmentLoaderJs2","getStreamStartTime","_dashControllersRepresentationControllerJs2","fragmentModel","getFragmentModel","setLoader","errored","getABRController","getFragmentLoader","getFragmentController","getBufferController","getMediaInfoArr","getScheduleController","getEventController","stop","getIsBufferingCompleted","_controllersBufferControllerJs2","_controllersSourceBufferController2","_controllersTextControllerJs2","TextSourceBuffer","allTracksAreDisabled","initializationSegmentReceived","fragmentedTracks","firstSubtitleStart","embeddedInitialized","initEmbedded","mediaInfos","isFragmented","_utilsBoxParserJs2","fragmentedTextBoxParser","_dashUtilsFragmentedTextBoxParserJs2","buffered","_utilsCustomTimeRangesJs2","currFragTrack","currFragmentedTrackIdx","embeddedTracks","embeddedInitializationSegmentReceived","embeddedTimescale","embeddedCea608FieldParsers","embeddedSequenceNumbers","embeddedLastSequenceNumber","append","chunk","createTextTrackFromMediaInfo","captionData","textTrackInfo","_voTextTrackInfoJs2","trackKindMap","subtitle","caption","getKind","kind","checkTTML","ttml","label","isTTML","defaultTrack","getIsDefault","totalNrTracks","addTextTrack","samplesInfo","ccContent","add","_codemIsoboxer2","getParser","addCaptions","timedTextError","segmentType","makeCueAdderForIndex","trackIndex","endTime","captionScreen","captionsArray","getTTMLRenderingDiv","createHTMLCaptionsFromScreen","trackIdx","getTrackIdxForId","allCcData","extractCea608Data","fieldNr","ccData","fields","fieldParser","insertInOrder","moof","tfdt","truns","getBoxes","trun","baseOffset","baseSampleTime","accDuration","sampleTime","cea608Ranges","k","endSampleTime","checkIndent","line","uc","ll","getRegionProperties","region","x","y1","y2","createRGB","getStyle","videoElement","fontSize","videoHeight","ltrim","trimmed","rtrim","currRegion","existingRegion","lastRowHasText","lastRowIndentL","currP","spans","currentStyle","seenRegions","styleStates","regions","prevPenState","rowIndent","contat","currPenStateString","cueID","captionId","finalDiv","cueRegionProperties","cssText","bodyDiv","cueUniWrapper","ptag","lastSpanRow","span","brElement","appendChild","sameRow","spanStyle","spanElement","textContent","bodyStyle","cueHTMLElement","cellResolution","isFromCEA608","regionID","videoWidth","defaultFontSize","lineHeight","linePadding","deleteAllTextTracks","resetEmbedded","getAllTracksAreDisabled","VTTParser","TTMLParser","nrNonEmbeddedTracks","oldTrackIdx","getCurrentTrackIdx","setCurrentTrackIdx","currentFragTrack","newFragTrack","abortRequests","deleteTrackCues","TextTracks","Cue","VTTCue","TextTrackCue","textTrackQueue","trackElementArr","currentTrackIdx","actualVideoLeft","actualVideoTop","actualVideoWidth","actualVideoHeight","captionContainer","videoSizeCheckInterval","displayCCOnTop","topZIndex","isChrome","navigator","userAgent","fullscreenElement","fullscreenAttribute","webkitIsFullScreen","msFullscreenElement","mozFullScreen","createTrackForUserAgent","srclang","zIndex","textTrackInfoVO","totalTextTracks","defaultIndex","textTrack","nonAddedCues","renderingType","getVideoVisibleVideoSize","viewWidth","viewHeight","aspectRatio","use80Percent","viewAspectRatio","videoAspectRatio","videoPictureX","videoPictureY","videoPictureWidth","videoPictureHeight","videoPictureXAspect","videoPictureYAspect","videoPictureWidthAspect","videoPictureHeightAspect","videoPictureAspect","y","w","checkVideoSize","getCurrentTextTrack","activeCues","newVideoWidth","clientWidth","newVideoHeight","clientHeight","realVideoSize","left","top","cue","scaleCue","activeCue","key","replaceValue","elements","cellUnit","valueLinePadding","elementsSpan","getElementsByClassName","valueFontSize","valueLineHeight","timeOffset","currentItem","setInterval","bind","image","onenter","img","Image","onexit","imgs","removeChild","divs","align","position","addCue","trackId","clearCues","setNativeCueStyle","removeNativeCueStyle","getTextTrack","cues","removeCue","deleteTextTrack","styleElement","getElementById","head","stylesheet","sheet","insertRule","classList","VirtualBuffer","streamId","createDataStorage","sortArrayByProperty","calculatedBufferedRanges","storeAppendedChunk","diff","bufferedRanges","actualBufferedRanges","oldChunk","getChunks","appended","getRangeDifference","bufferedRange","updateBufferedRanges","appendedChunks","remainingChunks","findChunksForRange","sourceArr","originData","findData","removeOrigin","limit","isTracksEqual","remove","forRange","extract","getTotalBufferLevel","getTotalBufferedTime","sortProp","compare","obj1","obj2","chunks","truncateChunk","chunkStart","chunkEnd","isStartIncluded","isEndIncluded","rangeStart","rangeEnd","chunksForRange","fragmentedText","XlinkLoader","resolveObject","RESOLVE_TO_ZERO","resolvedContent","resolved","content","XLINK_EXPANSION_TYPE","AbrController","autoSwitchBitrate","topQualities","qualityDict","confidenceDict","bitrateDict","ratioDict","averageThroughputDict","abandonmentStateDict","streamProcessorDict","limitBitrateByPortal","_utilsDOMStorageJs2","state","ALLOW_LOAD","onFragmentLoadProgress","checkMaxBitrate","checkMaxRepresentationRatio","checkPortalSize","savedBitrate","getSavedBitrateSettings","round","DEFAULT_VIDEO_BITRATE","DEFAULT_AUDIO_BITRATE","getPlaybackQuality","completedCallback","rules","confidence","res","topQualityIdx","ABANDON_LOAD","setInternalQuality","setConfidenceFor","getConfidenceFor","getRules","QUALITY_SWITCH_RULES","applyRules","currentValue","newValue","_rulesSwitchRequest2","NO_CHANGE","newPlaybackQuality","isInt","setAbandonmentStateFor","getAbandonmentStateFor","bitrateInfo","infoList","_voBitrateInfoJs2","qualityIndex","setAverageThroughput","setTopQualityIndex","isPlayingAtTopQuality","isAtTop","audioQuality","videoQuality","clearTimeout","abandonmentTimeout","maxBitrate","maxIdx","maxRepresentationRatio","elementWidth","elementHeight","newIdx","ABANDON_FRAGMENT_RULES","switchRequest","setupTimeout","getAbandonLoadTimeout","STRONG","requests","getRequests","_modelsFragmentModelJs2","FRAGMENT_MODEL_LOADING","currentQuality","replaceCanceledRequests","BufferController","requiredQuality","bufferTarget","criticalBufferLevel","maxAppendedIndex","lastIndex","bufferState","wallclockTicked","appendingMediaChunk","isAppendingInProgress","isPruningInProgress","inbandEventFound","Source","setMediaSource","_PlaybackControllerJs2","_AbrControllerJs2","onInitFragmentLoaded","onMediaFragmentLoaded","onStreamCompleted","onPlaybackProgression","onPlaybackRateChanged","onPlaybackSeeking","onAppended","onRemoved","onChunkAppended","sourceBuffer","createSourceBuffer","mediaSourceError","updateBufferTimestampOffset","appendNext","isActive","thisStreamId","activeStreamId","switchInitData","getStreamId","FRAGMENT_MODEL_EXECUTED","eventStreamMedia","eventStreamTrack","handleInbandEvents","addInbandEvents","deleteInbandEvents","hasEnoughSpaceToAppend","appendToBuffer","appendedBytesInfo","signalEndOfStream","_SourceBufferControllerJs2","QUOTA_EXCEEDED_ERROR_CODE","clearBuffer","getClearRange","getAllRanges","removeOldTrackData","checkIfBufferingCompleted","updateBufferLevel","addBufferMetrics","checkIfSufficientBuffer","addBufferState","addBufferLevel","isLastIdxAppended","notifyBufferStateChanged","STALL_THRESHOLD","mediaInbandEvents","trackInbandEvents","eventBoxes","inbandEvents","fragmentStarttime","loop","identifier","expTwo","expThree","modData","subarray","totalBufferedTime","pruneBuffer","bufferToPrune","getBufferToKeep","removeStart","removeEnd","getBufferRange","from","to","timestampOffset","currentTrackBufferLength","allAppendedChunks","customTimeRangesFactory","rangesToClear","rangesToLeave","safeBufferLength","isCurrentTrack","_MediaControllerJs2","TRACK_SWITCH_MODE_ALWAYS_REPLACE","bufferLength","setMinBufferTime","switchMode","TRACK_SWITCH_MODE_NEVER_REPLACE","secondsElapsed","getWallclockTimeUpdateInterval","getBufferPruningInterval","setStreamProcessor","getBufferLevel","getMinBufferTime","getCriticalBufferLevel","getIsAppendingInProgress","removeSourceBuffer","isStarted","inlineEvents","activeEvents","eventInterval","presentationTimeThreshold","onEventTimer","values","removeEvents","currentVideoTime","eventIds","keys","eventId","curr","triggerEvents","refreshManifest","MPD_RELOAD_SCHEME","MPD_RELOAD_VALUE","fragmentModels","onFragmentLoadingCompleted","process","getModel","model","findModel","setScheduleController","detachModel","isInitializationRequest","createDataChunk","_voDataChunkJs2","isInit","MediaController","resetInitialSettings","resetSwitchMode","settings","tracksForType","getSavedMediaSettings","matchSettings","selectInitialTrack","initSettings","createTrackInfo","current","extractSettings","storeLastSettings","initialSettings","isModeSupported","trackSelectionModes","selectionMode","DEFAULT_INIT_TRACK_SELECTION_MODE","t1","t2","sameId","sameViewpoint","sameLang","sameRoles","sameAccessibility","sameAudioChannelConfiguration","notEmpty","matchLang","matchViewPoint","matchRole","matchAccessibility","matchAudioChannelConfiguration","tmpArr","getTracksWithHighestBitrate","trackArr","getTracksWithWidestRange","TRACK_SELECTION_MODE_HIGHEST_BITRATE","TRACK_SELECTION_MODE_WIDEST_RANGE","MediaSourceController","createMediaSource","hasWebKit","hasMediaSource","MediaSource","WebKitMediaSource","attachMediaSource","objectURL","URL","createObjectURL","setSource","detachMediaSource","setDuration","buffers","sourceBuffers","endOfStream","PlaybackController","liveStartTime","wallclockTimeIntervalId","commonEarliestTime","firstAppended","playOnceInitialized","addAllListeners","onBytesAppended","onBufferLevelStateChanged","getTimeToStreamEnd","isPlaybackStarted","getStreamDuration","paused","seeking","getPlaybackRate","playbackRate","getPlayedRanges","played","getEnded","ended","setLiveStartTime","getLiveStartTime","getLiveDelay","getUseSuggestedPresentationDelay","stopUpdatingWallclockTime","removeAllListeners","startTimeOffset","getURIFragmentData","getActualPresentationTime","actualTime","DVRMetrics","startUpdatingWallclockTime","tick","onWallclockTime","initialStart","initialSeekTime","seekTime","updateCurrentTime","timeChanged","representationInfo","onCanPlay","onPlaybackStart","onPlaybackPlaying","playingTime","onPlaybackSeeked","onPlaybackTimeUpdated","timeToEnd","onPlaybackProgress","lastRange","bufferEndTime","remainingUnbufferedDuration","onPlaybackMetaDataLoaded","onPlaybackEnded","onPlaybackError","target","srcElement","bufferedStart","streamStart","segStart","currentEarliestTime","ready","seekCompleted","setStallState","_BufferControllerJs2","ScheduleController","initialPlayback","playListMetrics","playListTraceMetrics","playListTraceMetricsClosed","isFragmentLoading","timeToLoadDelay","seekTarget","scheduleWhilePaused","onTimedTextRequested","onDataUpdateStarted","onStreamInitialized","onBufferCleared","onInitRequested","onQuotaExceeded","clearPlayListTraceMetrics","stopreason","trace","addPlaylistTraceMetrics","validate","startOnReady","currentRepresentationInfo","validateTimeout","executeRequest","canceledRequests","EPSILON","getRequiredFragmentCount","FRAGMENTS_TO_SCHEDULE_RULES","onGetRequiredFragmentCount","_rulesSwitchRequestJs2","startValidateTimer","getNextFragment","NEXT_FRAGMENT_RULES","onGetNextFragment","_voMetricsPlayListJs2","Trace","REPRESENTATION_SWITCH_STOP_REASON","getLiveEdge","removeExecutedRequestsBeforeTime","REBUFFERING_REASON","representationid","mstart","playbackspeed","actualStartTime","liveEdgeTime","currentLiveStart","clientTimeOffset","getSeekTarget","setSeekTarget","setTimeToLoadDelay","getTimeToLoadDelay","setPlayList","playList","finalisePlayList","reason","SourceBufferController","addSourceBuffer","ex","_StreamControllerJs2","_utilsVTTParserJs2","_utilsTTMLParserJs2","tolerance","firstStart","lastEnd","gap","toler","currentRanges","newStart","newEnd","equalStart","equalEnd","currentRange","nextCurrentRange","nextNewRange","newRanges","appendMethod","acceptsChunk","waitForUpdateEnd","intervalId","CHECK_INTERVAL","checkIsUpdateEnded","updateEndHandler","StreamController","isStreamSwitchingInProgress","hasMediaError","hasInitialisationError","autoPl","protData","_ManifestUpdaterJs2","onTimeSyncCompleted","onEnded","onManifestUpdated","onStreamBufferingCompleted","flushPlaylistMetrics","activeStream","ctrlr","addPlayList","addPlaylistMetrics","startReason","starttype","fireSwitchEvent","eventType","fromStream","toStream","fromStreamInfo","toStreamInfo","startAutoPlay","msExtendedCode","playbackQuality","addDroppedFrames","STREAM_END_THRESHOLD","nextStream","getNextStream","switchStream","END_OF_PERIOD_STOP_REASON","END_OF_CONTENT_STOP_REASON","seekingStream","getStreamForTime","USER_REQUEST_STOP_REASON","SEEK_START_REASON","INITIAL_PLAYOUT_START_REASON","RESUME_FROM_PAUSE_START_REASON","seekTo","onMediaSourceReady","setupMediaSource","sourceUrl","onMediaSourceOpen","revokeObjectURL","setMediaDuration","manifestDuration","mediaDuration","composeStreams","pLen","sLen","pIdx","sIdx","streamsInfo","remainingStreams","PROTECTION_CREATED","setMediaElement","_StreamJs2","addManifestUpdateStreamInfo","checkIfUpdateCompleted","manifestUTCTimingSources","allUTCTimingSources","isHTTPS","isManifestHTTPS","getUseManifestDateHeaderTimeSource","isStreamActive","FAILURE_STOP_REASON","clearAllCurrentMetrics","PROTECTION_DESTROYED","TextController","TimeSyncController","timingSources","useManifestDateHeader","useManifestDateHeaderTimeSource","offsetToDeviceTimeMs","isSynchronizing","isInitialised","urn:mpeg:dash:utc:http-head:2014","httpHeadHandler","urn:mpeg:dash:utc:http-xsdate:2014","httpHandler","xsdatetimeDecoder","urn:mpeg:dash:utc:http-iso:2014","iso8601Decoder","urn:mpeg:dash:utc:direct:2014","directHandler","urn:mpeg:dash:utc:http-head:2012","urn:mpeg:dash:utc:http-xsdate:2012","urn:mpeg:dash:utc:http-iso:2012","urn:mpeg:dash:utc:direct:2012","urn:mpeg:dash:utc:http-ntp:2014","notSupportedHandler","urn:mpeg:dash:utc:ntp:2014","urn:mpeg:dash:utc:sntp:2014","getIsSynchronizing","attemptSync","setIsInitialised","getOffsetToDeviceTimeMs","getOffsetMs","setIsSynchronizing","setOffsetMs","alternateXsdatetimeDecoder","xsdatetimeStr","parsedDate","isoStr","rfc1123Decoder","dateStr","onSuccessCB","onFailureCB","decoder","isHeadRequest","oncomplete","complete","verb","urls","shift","getResponseHeader","timeout","HTTP_TIMEOUT_MS","checkForDateHeader","dateHeaderValue","dateHeaderTime","completeTimeSyncSequence","failed","TIME_SYNC_FAILED_ERROR_CODE","sourceIndex","onComplete","serverTime","deviceTime","XlinkController","onXlinkElementLoaded","getElementsToResolve","ELEMENT_TYPE_PERIOD","RESOLVE_TYPE_ONLOAD","resolve","resolveType","onXlinkAllElementsLoaded","originalContent","openingTag","closingTag","mergedContent","isResolvingFinished","mergeElementsBack","RESOLVE_TYPE_ONACTUATE","ELEMENT_TYPE_ADAPTATIONSET","ELEMENT_TYPE_EVENTSTREAM","parentElement","xlinkObject","toResolve","createXlinkObject","resolvedElements","isInappropriateTarget","elementsToResolve","dvbErrorsTranslator","_utilsDVBErrorsTranslatorJs2","_controllersMetricsCollectionControllerJs2","getReportingFactory","_reportingReportingFactoryJs2","getMetricsHandlerFactory","_metricsMetricsHandlerFactoryJs2","_MetricsReportingEventsJs2","MetricsReportingEvents","METRICS_INITIALISATION_COMPLETE","BECAME_REPORTING_PLAYER","metricsReportingEvents","MetricsCollectionController","controllersToRemove","metricsControllers","_utilsManifestParsingJs2","getMetrics","_MetricsControllerJs2","MetricsController","metricsEntry","rangeController","_RangeControllerJs2","Range","reportingController","_ReportingControllerJs2","Reporting","metricsHandlersController","_MetricsHandlersControllerJs2","MetricsHandlersController","handle","handleNewMetric","midx","ms","nextm","metricsHandlerFactory","RangeController","rs","starttime","useWallClockTime","_useWallClockTime","isEnabled","numRanges","ReportingController","reporting","some","reporter","reportingFactory","reporters","vos","MetricsHandlerFactory","listType","matches","keyRegex","knownFactoryProducts","register","unregister","_handlersBufferLevelHandlerJs2","DVBErrors","_handlersDVBErrorsHandlerJs2","_handlersHttpListHandlerJs2","PlayList","_handlersGenericMetricHandlerJs2","TcpList","BufferLevelHandler","getLowestBufferLevelVO","storedVOs","reduce","intervalCallback","lastReportedTime","basename","rc","n_ms","handlerHelpers","validateN","reconstructFullMetricName","interval","_utilsHandlerHelpersJs2","DVBErrorsHandler","onInitialisationComplete","unused","GenericMetricHandler","metricName","HttpListHandler","storedVos","requestType","ReportingFactory","knownReportingSchemeIdUris","moduleName","urn:dvb:dash:reporting:2014","_reportersDVBReportingJs2","DVBReporting","doGetRequest","successCB","failureCB","reqIndex","pendingRequests","isReportingPlayer","metricSerialiser","serialise","USE_DRAFT_DVB_SPEC","reportingUrl","probability","reportingPlayerStatusDecided","randomNumberGenerator","random","allowPendingRequestsToCompleteOnReset","_utilsMetricSerialiserJs2","_utilsRNGJs2","DVBErrorsTranslator","onManifestUpdate","onBecameReporter","errorcode","_voDVBErrorsJs2","BECAME_REPORTER","handleHttpMetric","CONNECTION_ERROR","terror","tresponse","onMetricEvent","MediaError","MEDIA_ERR_NETWORK","MEDIA_ERR_DECODE","CORRUPT_MEDIA_OTHER","mpdurl","servicelocation","serviceLocation","metricModel","addDVBErrors","initialise","HandlerHelpers","mn","ManifestParsing","getMetricsRangeStartTime","reportingStartTime","Metrics_asArray","metricEntry","_voMetricsJs2","Range_asArray","rangeEntry","_voRangeJs2","Reporting_asArray","reportingEntry","_voReportingJs2","MetricSerialiser","pairs","isBuiltIn","encodeURIComponent","toISOString","RNG","crypto","randomNumbers","ArrayType","NUM_RANDOM_NUMBERS","getRandomValues","rand","msCrypto","Uint32Array","BYTES_PER_ELEMENT","ipaddress","SSL_CONNECTION_FAILED_PREFIX","DNS_RESOLUTION_FAILED","HOST_UNREACHABLE","CONNECTION_REFUSED","CORRUPT_MEDIA_ISOBMFF","BASE_URL_CHANGED","Metrics","Infinity","FragmentModel","executedRequests","loadingRequests","onLoadingCompleted","isFragmentLoaded","isEqualComplete","req1","req2","_voFragmentRequestJs2","isEqualMedia","isEqualInit","check","isLoaded","states","filteredRequests","getRequestsForState","filterRequests","removeRequest","reqs","delayLoadingTime","delayLoadingTimeout","addSchedulingInfoMetrics","ACTION_DOWNLOAD","loadCurrentFragment","getRequestForTime","threshold","addSchedulingInfo","addRequestsQueue","FRAGMENT_MODEL_FAILED","FRAGMENT_MODEL_CANCELED","ManifestModel","MediaPlayerModel","bufferOccupancyABREnabled","lastBitrateCachingInfo","DEFAULT_LOCAL_STORAGE_BITRATE_EXPIRATION","lastMediaSettingsCachingInfo","DEFAULT_LOCAL_STORAGE_MEDIA_SETTINGS_EXPIRATION","liveDelayFragmentCount","LIVE_DELAY_FRAGMENT_COUNT","bufferToKeep","BUFFER_TO_KEEP","bufferPruningInterval","BUFFER_PRUNING_INTERVAL","stableBufferTime","DEFAULT_MIN_BUFFER_TIME","bufferTimeAtTopQuality","BUFFER_TIME_AT_TOP_QUALITY","bufferTimeAtTopQualityLongForm","BUFFER_TIME_AT_TOP_QUALITY_LONG_FORM","longFormContentDurationThreshold","LONG_FORM_CONTENT_DURATION_THRESHOLD","richBufferThreshold","RICH_BUFFER_THRESHOLD","bandwidthSafetyFactor","BANDWIDTH_SAFETY_FACTOR","abandonLoadTimeout","ABANDON_LOAD_TIMEOUT","fragmentRetryAttempts","FRAGMENT_RETRY_ATTEMPTS","fragmentRetryInterval","FRAGMENT_RETRY_INTERVAL","wallclockTimeUpdateInterval","WALLCLOCK_TIME_UPDATE_INTERVAL","getBufferOccupancyABREnabled","getStableBufferTime","getBufferTimeAtTopQuality","getBufferTimeAtTopQualityLongForm","getLongFormContentDurationThreshold","getRichBufferThreshold","getLastBitrateCachingInfo","getLastMediaSettingsCachingInfo","setWallclockTimeUpdateInterval","MetricsModel","metricsChanged","metricChanged","metricUpdated","metricType","metricAdded","clearCurrentMetricsForType","_voMetricsListJs2","addTcpConnection","tcpid","dest","topen","tclose","tconnect","_voMetricsTCPConnectionJs2","actualurl","trequest","tfinish","mediaduration","responseHeaders","_tfinish","_stream","_mediaduration","appendHttpTrace","mt","lto","_voMetricsRepresentationSwitchJs2","_voMetricsBufferLevelJs2","_voMetricsBufferStateJs2","BufferState","_voMetricsDVRInfoJs2","_voMetricsDroppedFramesJs2","creationTime","droppedVideoFrames","_voMetricsSchedulingInfoJs2","_voMetricsRequestsQueueJs2","_voMetricsManifestUpdateJs2","updatedFields","streamIndex","fragmentInfoType","TrackInfo","subreplevel","updateBolaState","_s","_voMetricsBolaStateJs2","BolaState","URIQueryAndFragmentModel","URIFragmentDataVO","_voURIFragmentDataJs2","URIQueryData","getURIQueryData","uri","reduceArray","previousValue","mapArray","isQuery","isFragment","URIFragmentData","mappedArr","testQuery","testFragment","testHTTPS","object","VideoModel","stalledStreams","setPlaybackRate","INVALID_STATE_ERR","getSource","videoContainer","TTMLRenderingDiv","display","overflow","pointerEvents","stallStream","isStalled","addStalledStream","createEvent","initEvent","previousPlaybackRate","dispatchEvent","removeStalledStream","hasQuality","getVideoPlaybackQuality","webkitDroppedFrameCount","CommonEncryption","cpArray","retVal","cp","pssh","keySystem","initData","psshList","parsePSSHList","uuid","cpData","_externalsBase64Js2","dv","done","byteCursor","nextBox","systemID","psshDataSize","boxStart","protectionKeyController","_controllersProtectionKeyControllerJs2","protectionModel","getProtectionModel","_controllersProtectionControllerJs2","setEncryptedMediaSupported","onencrypted","mediaKeys","requestMediaKeySystemAccess","_modelsProtectionModel_21Jan2015Js2","getAPI","APIS_ProtectionModel_3Feb2014","_modelsProtectionModel_3Feb2014Js2","api","APIS_ProtectionModel_01b","_modelsProtectionModel_01bJs2","apis","generateKeyRequest","addKey","cancelKeyRequest","needkey","keyerror","keyadded","keymessage","setMediaKeys","MediaKeys","release","close","_ProtectionEventsJs2","ProtectionEvents","INTERNAL_KEY_MESSAGE","INTERNAL_KEY_SYSTEM_SELECTED","KEY_ADDED","KEY_MESSAGE","KEY_SESSION_CLOSED","KEY_SESSION_REMOVED","KEY_STATUSES_CHANGED","KEY_SYSTEM_ACCESS_COMPLETE","NEED_KEY","TEARDOWN_COMPLETE","VIDEO_ELEMENT_SELECTED","protectionEvents","keySystems","getKeySystems","pendingNeedKeyData","sessionType","_ProtectionJs2","aInfo","vInfo","audioInfo","videoInfo","supportedKS","getSupportedKeySystemsFromContentProtection","selectKeySystem","createKeySession","initDataForKS","_CommonEncryptionJs2","getPSSHForKeySystem","currentInitData","getAllInitData","initDataEquals","systemString","loadKeySession","sessionID","removeKeySession","sessionToken","closeKeySession","setServerCertificate","serverCertificate","onNeedKey","onKeyMessage","setSessionType","protDataSet","getProtData","keySystemString","fromManifest","audioCapabilities","videoCapabilities","_voMediaCapabilityJs2","ksIdx","ksConfig","_voKeySystemConfigurationJs2","requestedKeySystems","ks","configs","onKeySystemAccessComplete","requestKeySystemAccess","keySystemAccess","onKeySystemSelected","getKeySystem","sendLicenseRequestCompleteEvent","keyMessage","messageType","licenseServerData","getLicenseServer","eventData","getSessionID","isClearKey","clearkeys","processClearKeyLicenseRequest","updateKeySession","xhr","serverURL","laURL","getLicenseServerURLFromInitData","getPSSHData","getServerURLFromMessage","getHTTPMethod","getResponseType","getLicenseMessage","statusText","getErrorResponse","onabort","updateHeaders","withCredentials","httpRequestHeaders","getRequestHeadersFromMessage","getLicenseRequestFromMessage","initDataType","abInitData","ArrayBuffer","isView","getSupportedKeySystems","ProtectionKeyController","_drmKeySystemPlayReadyJs2","_drmKeySystemWidevineJs2","_drmKeySystemClearKeyJs2","clearkeyKeySystem","getKeySystemBySystemString","initData1","initData2","data1","data2","cps","cpIdx","schemeIdURI","getInitData","_serversDRMTodayJs2","_serversWidevineJs2","_serversPlayReadyJs2","_serversClearKeyJs2","getClearKeysFromProtectionData","KeySystemClearKey","clearkeySet","jsonMsg","keyPairs","kids","clearkeyID","clearkey","_voKeyPairJs2","_voClearKeyKeySetJs2","parseInitDataFromContentProtection","KeySystemPlayReady","dataview","messageFormat","Uint16Array","headerNameList","headerValueList","Content","licenseRequest","Challenge","numRecords","recordType","recordLength","recordData","record","laurl","luiurl","PROSize","PSSHSize","PSSHBoxBuffer","PSSHBox","PSSHData","PSSHBoxType","playreadySystemID","uint8arraydecodedPROHeader","pro","prheader","setUint32","set","setPlayReadyMessageFormat","format","KeySystemWidevine","ProtectionModel_01b","pendingSessions","sessions","eventHandler","createEventHandler","removeEventListeners","ksConfigurations","ve","supportedAudio","supportedVideo","configIdx","videoIdx","canPlayType","_voKeySystemAccessJs2","moreSessionsAllowed","newSession","getExpirationTime","getSessionType","keyID","handleEvent","_voNeedKeyJs2","findSessionByID","sessionId","errorCode","systemCode","_voKeyErrorJs2","mediaKeyMessageError","_voKeyMessageJs2","defaultURL","sessionArray","ProtectionModel_21Jan2015","session","numSessions","removeSession","then","closeKeySessionInternal","requestKeySystemAccessInternal","mksa","createMediaKeys","mkeys","createSession","createSessionToken","generateRequest","toJWK","success","mediaKeySystemAccess","configuration","getConfiguration","expiration","getKeyStatuses","keyStatuses","ProtectionModel_3Feb2014","audios","audioIdx","isTypeSupported","ksAccess","ksConfiguration","boundDoSetKeys","doSetKeys","keySession","errorStr","destinationURL","ClearKey","serverResponse","keypair","keyid","kid","DRMToday","keySystemStr","com.widevine.alpha","license","com.microsoft.playready","PlayReady","Widevine","ClearKeyKeySet","numKeys","jwk","kty","alg","jwkString","buf","bView","KeyError","errorString","KeyMessage","KeyPair","KeySystemAccess","KeySystemConfiguration","distinctiveIdentifier","persistentState","sessionTypes","initDataTypes","MediaCapability","robustness","NeedKey","RulesContext","getTrackInfo","getCurrentValue","RulesController","ruleMandatoryProperties","ABR_RULE","SCHEDULING_RULE","SYNC_RULE","setRules","ruleType","rulesCollection","isRuleTypeSupported","updateRules","addRules","rulesArr","overrideFunc","rule","rulesCount","rulesContext","getRulesContext","callbackFunc","_SwitchRequestJs2","priority","WEAK","DEFAULT","isRule","execute","abrRules","schedulingRules","synchronizationRules","allRules","_abrABRRulesCollectionJs2","_schedulingScheduleRulesCollectionJs2","_synchronizationSynchronizationRulesCollectionJs2","TIME_SYNCHRONIZED_RULES","BEST_GUESS_RULES","_RulesContextJs2","normalizeRule","normalizedCallback","currentRulesCollection","newRulesCollection","ruleSubType","subTypeRuleSet","ruleArr","SwitchRequest","ABRRulesCollection","qualitySwitchRules","abandonFragmentRules","_BolaRuleJs2","_BolaAbandonRuleJs2","_ThroughputRuleJs2","_BufferOccupancyRuleJs2","_InsufficientBufferRuleJs2","_AbandonRequestsRuleJs2","AbandonRequestsRule","fragmentDict","abandonDict","setFragmentRequestDict","fragmentInfo","progressEvent","firstByteTime","elapsedTime","GRACE_TIME_THRESHOLD","measuredBandwidthInKbps","estimatedTimeOfDownload","toFixed","ABANDON_MULTIPLIER","BolaAbandonRule","setLastAbandon","isLastAbandon","la","BOLA_STATE_STEADY","bolaState","nowMilliSeconds","elapsedTimeMilliSeconds","bytesRemaining","estimateOtherBytesTotal","GRACE_PERIOD_MS","safetyGuarantee","lastQuality","BOLA_DEBUG","estimateThroughputBSF","rttSeconds","estimateTimeRemainSeconds","maxQualityAllowed","bufferAfterRtt","estimateBytesRemainAfterRtt","score","utility","gp","Vp","u1","thresholdBufferLevel","estimateTimeToDownloadFragment","BolaRule","seekMediaTypes","calculateInitialState","initialState","bitrateCount","BOLA_STATE_ONE_BITRATE","bufferMax","bolaBufferTarget","MINIMUM_BUFFER_LEVEL_SPACING","maxRtt","VpNew","gpNew","minThreshold","bolaBufferMax","BOLA_STATE_STARTUP","getQualityFromBufferLevel","getLastHttpRequest","httpRequests","getLastThroughput","lastRequest","downloadSeconds","downloadBits","getQualityFromThroughput","throughput","q","getDelayFromLastFragmentInSeconds","lastRequestFinishMilliSeconds","delayMilliSeconds","initState","initThroughput","bolaQuality","lastThroughput","timeSinceLastDownload","bolaQualityVirtual","targetBufferLevel","BOLA_STATE_STARTUP_NO_INC","delaySeconds","wantBufferLevel","BufferOccupancyRule","lastSwitchTime","waitToSwitchTime","lastBufferLevel","lastBufferStateVO","isBufferRich","InsufficientBufferRule","bufferStateDict","setBufferInfo","firstBufferLoadedEvent","ThroughputRule","throughputArray","storeLastRequestThroughputByType","lastRequestThroughput","sampleAmount","AVERAGE_THROUGHPUT_SAMPLE_AMOUNT_LIVE","AVERAGE_THROUGHPUT_SAMPLE_AMOUNT_VOD","startValue","totalSampledValue","downloadTime","bufferStateVO","bufferLevelVO","BufferLevelRule","fragmentCount","getBufferTarget","isLongFormContent","NextFragmentRequestRule","hasSeekTarget","ScheduleRulesCollection","fragmentsToScheduleRules","nextFragmentRules","_BufferLevelRuleJs2","_NextFragmentRequestRuleJs2","LiveEdgeBinarySearchRule","liveEdgeInitialSearchPosition","liveEdgeSearchRange","liveEdgeSearchStep","useBinarySearch","actualLiveEdge","SEARCH_TIME_SPAN","findLiveEdge","onSearchForFragmentSucceeded","onSearchForFragmentFailed","onSuccess","onError","lastSearchTime","searchInterval","binarySearch","lastSearchSucceeded","isSearchCompleted","LiveEdgeWithTimeSynchronizationRule","SynchronizationRulesCollection","withAccurateTimeSourceRules","bestGuestRules","_LiveEdgeWithTimeSynchronizationRuleJs2","_LiveEdgeBinarySearchRuleJs2","BoxParser","fileStart","parsedFile","dashIsoFile","_IsoFileJs2","setData","Capabilities","encryptedMediaSupported","HTMLMediaElement","canPlay","CustomTimeRanges","customTimeRangeArray","mergeRanges","rangeIndex1","rangeIndex2","range1","range2","DOMStorage","supported","storage","testKey","testValue","STORAGE_TYPE_SESSION","removeItem","LOCAL_STORAGE_VIDEO_SETTINGS_KEY","LOCAL_STORAGE_AUDIO_SETTINGS_KEY","getItem","isExpired","LOCAL_STORAGE_VIDEO_BITRATE_KEY","LOCAL_STORAGE_AUDIO_BITRATE_KEY","ErrorHandler","cc","IsoFile","parsedIsoFile","convertToDashIsoBox","boxData","getOffset","commonProps","sidxProps","sidxRefProps","emsgProps","mdhdProps","mfhdProps","tfhdProps","sample_description_index","tfdtProps","trunProps","trunSampleProps","copyProps","props","_voIsoBoxJs2","LiveEdgeFinder","isSearchStarted","searchStartTime","ruleSet","onSearchCompleted","LIVE_EDGE_NOT_FOUND_ERROR_CODE","RequestModifier","ttNS","getNamespacePrefix","removeNamespacePrefix","ttmlLayout","tt","layout","region_asArray","ttmlStyling","styling","style_asArray","passStructuralConstraints","getCellResolution","defaultStyleProperties","processRegion","nsttp","frameRate","captionArray","body_asArray","p_asArray","pStartTime","pEndTime","spanStartTime","spanEndTime","parseTimings","begin","images","metadata","image_asArray","imagetype","constructCueRegion","cueStyleProperties","constructCueStyle","styleIDs","cueParagraph","pElements","cueDirUniWrapper","constructCue","arrayContains","getPropertyFromArray","deletePropertyFromArray","innerHTML","applyLinePadding","wholeRegionID","finalCue","textElements","spanElements","spanEl","timingRegex","defaultLayoutProperties","align-items","-ms-writing-mode","-webkit-writing-mode","-moz-writing-mode","writing-mode","direction","font-family","font-style","line-height","font-weight","text-align","justify-content","text-decoration","unicode-bidi","white-space","fontFamilies","monospace","sansSerif","serif","monospaceSansSerif","monospaceSerif","proportionalSansSerif","proportionalSerif","default","textAlign","right","center","multiRowAlign","auto","wrapOption","wrap","noWrap","unicodeBidi","normal","embed","bidiOverride","displayAlign","before","after","writingMode","lrtb","rltb","tbrl","tblr","lr","rl","tb","timingStr","timeParts","parsedTime","hasTt","hasHead","hasLayout","hasStyling","hasBody","nsPrefix","newKey","camelCaseToDash","convertHexToRGBA","rgba","hex","hexMatrice","alpha","rgb","mergeArrays","primeArray","arrayToAdd","processStyle","cueStyle","valuePadding","valuePaddingInPx","valueFtSize","valueFtSizeInPx","valueLHSize","valueLHSizeInPx","rgbaValue","findStyleFromID","cueStyleID","currStyle","getProcessedStyle","ids","stylesFromId","cueRegion","coordsExtent","extent","coordsOrigin","styleFromID","findRegionFromID","cueRegionID","currReg","getProcessedRegion","regionsFromId","defaultCellResolution","cueHTML","linePaddingLeft","linePaddingRight","outerHTMLBeforeBr","outerHTMLAfterBr","cueInnerHTML","nodeList","indices","spanStringEnd","br","clonePropertyString","styleBefore","outerHTML","styleAfter","cueElements","spanHTMLElement","textNode","createTextNode","hasChildNodes","brEl","newSpanHTMLElement","divRegion","pRegion","pRegionID","divRegionID","applyDefaultProperties","divStyle","pStyle","pStyleID","bodyStyleID","body","divStyleID","defaultProperties","regExNewLine","regExToken","regExWhiteSpace","regExWhiteSpaceWordBoundary","lastStartTime","parseItemAttributes","cuePoints","getSublines","convertCuePointTimes","timeArray","vttCuePoints","getCaptionStyles","styleObject","lineCount","subline","lineData","decodeURI","BitrateInfo","DataChunk","FragmentRequest","IsoBox","ManifestInfo","MediaInfo","MetricsList","TextTrackInfo","xywh","HTTPRequest","_class","INDEX_SEGMENT_TYPE","BITSTREAM_SWITCHING_SEGMENT_TYPE","OTHER_TYPE","_class2","METRICS_COLLECTION_START_REASON","METRICS_COLLECTION_STOP_REASON","RepresentationSwitch","TCPConnection"],"mappings":"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AAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,MAAM;;;;AAIb,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,MAAM;AACb,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,MAAM;AACb,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;;;AAGX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,MAAM;AACb,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,MAAM;AACb,YAAI,EAAG,MAAM;AACb,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,MAAM;AACb,YAAI,EAAG,MAAM;AACb,YAAI,EAAG,MAAM;AACb,YAAI,EAAG,MAAM;AACb,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;;;AAGX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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","file":"dash.all.min.js","sourceRoot":"","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o> 6));\n u.push(0x80 | (63 & c));\n } else if (c < 0x10000) {\n u.push(0xE0 | (c >> 12));\n u.push(0x80 | (63 & (c >> 6)));\n u.push(0x80 | (63 & c));\n } else {\n u.push(0xF0 | (c >> 18));\n u.push(0x80 | (63 & (c >> 12)));\n u.push(0x80 | (63 & (c >> 6)));\n u.push(0x80 | (63 & c));\n }\n }\n return u;\n};\nUTF8.decode = function(u) {\n var a = [];\n var i = 0;\n while (i < u.length) {\n var v = u[i++];\n if (v < 0x80) {\n // no need to mask byte\n } else if (v < 0xE0) {\n v = (31 & v) << 6;\n v |= (63 & u[i++]);\n } else if (v < 0xF0) {\n v = (15 & v) << 12;\n v |= (63 & u[i++]) << 6;\n v |= (63 & u[i++]);\n } else {\n v = (7 & v) << 18;\n v |= (63 & u[i++]) << 12;\n v |= (63 & u[i++]) << 6;\n v |= (63 & u[i++]);\n }\n a.push(String.fromCharCode(v));\n }\n return a.join('');\n};\n\nvar BASE64 = {};\n(function(T){\n var encodeArray = function(u) {\n var i = 0;\n var a = [];\n var n = 0 | (u.length / 3);\n while (0 < n--) {\n var v = (u[i] << 16) + (u[i+1] << 8) + u[i+2];\n i += 3;\n a.push(T.charAt(63 & (v >> 18)));\n a.push(T.charAt(63 & (v >> 12)));\n a.push(T.charAt(63 & (v >> 6)));\n a.push(T.charAt(63 & v));\n }\n if (2 == (u.length - i)) {\n var v = (u[i] << 16) + (u[i+1] << 8);\n a.push(T.charAt(63 & (v >> 18)));\n a.push(T.charAt(63 & (v >> 12)));\n a.push(T.charAt(63 & (v >> 6)));\n a.push('=');\n } else if (1 == (u.length - i)) {\n var v = (u[i] << 16);\n a.push(T.charAt(63 & (v >> 18)));\n a.push(T.charAt(63 & (v >> 12)));\n a.push('==');\n }\n return a.join('');\n }\n var R = (function(){\n var a = [];\n for (var i=0; i= minLevel) {\n console.log(this.time + \" [\" + severity + \"] \" + msg);\n }\n }\n };\n\n var numArrayToHexArray = function(numArray) {\n var hexArray = [];\n for (var j = 0; j < numArray.length; j++) {\n hexArray.push(numArray[j].toString(16));\n }\n return hexArray;\n };\n\n /**\n * State of CEA-608 pen or character\n * @constructor\n */\n var PenState = function(foreground, underline, italics, background, flash) {\n this.foreground = foreground || \"white\";\n this.underline = underline || false;\n this.italics = italics || false;\n this.background = background || \"black\";\n this.flash = flash || false;\n };\n\n PenState.prototype = {\n \n reset : function() {\n this.foreground = \"white\";\n this.underline = false;\n this.italics = false;\n this.background = \"black\";\n this.flash = false;\n },\n \n setStyles : function(styles) {\n var attribs = [\"foreground\", \"underline\", \"italics\", \"background\", \"flash\"];\n for (var i = 0 ; i < attribs.length; i++) {\n var style = attribs[i];\n if (styles.hasOwnProperty(style)) {\n this[style] = styles[style];\n }\n }\n },\n \n isDefault : function() {\n return (this.foreground === \"white\" && !this.underline && !this.italics && \n this.background === \"black\" && !this.flash);\n },\n\n equals : function(other) {\n return ( (this.foreground === other.foreground) && \n (this.underline === other.underline) &&\n (this.italics === other.italics) &&\n (this.background === other.background) &&\n (this.flash === other.flash) );\n },\n\n copy : function(newPenState) {\n this.foreground = newPenState.foreground;\n this.underline = newPenState.underline;\n this.italics = newPenState.italics;\n this.background = newPenState.background;\n this.flash = newPenState.flash;\n },\n \n toString: function() {\n return (\"color=\" + this.foreground + \", underline=\" + this.underline + \", italics=\" + this.italics +\n \", background=\" + this.background + \", flash=\" + this.flash);\n }\n };\n\n /**\n * Unicode character with styling and background.\n * @constructor\n */\n var StyledUnicodeChar = function(uchar, foreground, underline, italics, background, flash) {\n this.uchar = uchar || ' '; // unicode character\n this.penState = new PenState(foreground, underline,italics, background, flash);\n };\n\n StyledUnicodeChar.prototype = {\n \n reset: function() {\n this.uchar = ' ';\n this.penState.reset();\n },\n \n setChar: function(uchar, newPenState) {\n this.uchar = uchar;\n this.penState.copy(newPenState);\n },\n \n setPenState: function(newPenState) {\n this.penState.copy(newPenState);\n },\n \n equals: function(other) {\n return this.uchar === other.uchar && this.penState.equals(other.penState);\n },\n \n copy: function(newChar) {\n this.uchar = newChar.uchar;\n this.penState.copy(newChar.penState);\n },\n \n isEmpty : function() {\n return this.uchar === ' ' && this.penState.isDefault();\n }\n };\n\n /**\n * CEA-608 row consisting of NR_COLS instances of StyledUnicodeChar.\n * @constructor\n */\n var Row = function() {\n this.chars = [];\n for (var i = 0 ; i < NR_COLS ; i++) {\n this.chars.push(new StyledUnicodeChar());\n }\n this.pos = 0;\n this.currPenState = new PenState();\n };\n\n Row.prototype = {\n \n equals: function(other) {\n var equal = true;\n for (var i = 0 ; i < NR_COLS; i ++) {\n if (!this.chars[i].equals(other.chars[i])) {\n equal = false;\n break;\n }\n }\n return equal;\n },\n \n copy: function(other) {\n for (var i = 0 ; i < NR_COLS; i ++) {\n this.chars[i].copy(other.chars[i]);\n }\n },\n \n isEmpty : function() {\n var empty = true;\n for (var i = 0 ; i < NR_COLS; i ++) {\n if (!this.chars[i].isEmpty()) {\n empty = false;\n break;\n }\n }\n return empty;\n },\n\n /**\n * Set the cursor to a valid column.\n */\n setCursor : function(absPos) {\n if (this.pos !== absPos) {\n this.pos = absPos;\n }\n if (this.pos < 0) {\n logger.log(\"ERROR\", \"Negative cursor position \" + this.pos);\n this.pos = 0;\n } else if (this.pos > NR_COLS) {\n logger.log(\"ERROR\", \"Too large cursor position \" + this.pos);\n this.pos = NR_COLS;\n }\n },\n\n /** \n * Move the cursor relative to current position.\n */\n moveCursor : function(relPos) {\n var newPos = this.pos + relPos;\n if (relPos > 1) {\n for (var i = this.pos+1; i < newPos+1 ; i++) {\n this.chars[i].setPenState(this.currPenState);\n }\n }\n this.setCursor(newPos);\n },\n\n /**\n * Backspace, move one step back and clear character.\n */\n backSpace : function () {\n this.moveCursor(-1);\n this.chars[this.pos].setChar(' ', this.currPenState);\n },\n\n insertChar: function(byte) {\n if (byte >= 0x90) { //Extended char\n this.backSpace();\n }\n var char = getCharForByte(byte);\n if (this.pos >= NR_COLS) {\n logger.log(\"ERROR\", \"Cannot insert \" + byte.toString(16) + \n \" (\" + char + \") at position \" + this.pos + \". Skipping it!\");\n return;\n }\n this.chars[this.pos].setChar(char, this.currPenState);\n this.moveCursor(1);\n },\n\n clearFromPos : function(startPos) {\n var i;\n for (i = startPos ; i < NR_COLS ; i++) {\n this.chars[i].reset();\n }\n },\n\n clear : function() {\n this.clearFromPos(0);\n this.pos = 0;\n this.currPenState.reset();\n },\n\n clearToEndOfRow : function() {\n this.clearFromPos(this.pos);\n },\n\n getTextString: function() {\n var chars = [];\n var empty = true;\n for (var i = 0 ; i < NR_COLS ; i++) {\n var char = this.chars[i].uchar;\n if (char !== \" \") {\n empty = false;\n }\n chars.push(char);\n }\n if (empty) {\n return \"\";\n } else {\n return chars.join(\"\");\n }\n },\n\n setPenStyles: function(styles) {\n this.currPenState.setStyles(styles);\n var currChar = this.chars[this.pos];\n currChar.setPenState(this.currPenState);\n }\n };\n\n /**\n * Keep a CEA-608 screen of 32x15 styled characters\n * @constructor\n */\n var CaptionScreen = function() {\n\n this.rows = [];\n for (var i = 0 ; i < NR_ROWS; i++) {\n this.rows.push(new Row()); // Note that we use zero-based numbering (0-14)\n }\n this.currRow = NR_ROWS - 1;\n this.nrRollUpRows = null;\n this.reset();\n };\n\n CaptionScreen.prototype = {\n\n reset : function() {\n for (var i = 0 ; i < NR_ROWS ; i++) {\n this.rows[i].clear();\n }\n this.currRow = NR_ROWS - 1;\n },\n\n equals : function(other) {\n var equal = true;\n for (var i = 0 ; i < NR_ROWS ; i++) {\n if (!this.rows[i].equals(other.rows[i])) {\n equal = false;\n break;\n }\n }\n return equal;\n },\n\n copy : function(other) {\n for (var i = 0 ; i < NR_ROWS ; i++) {\n this.rows[i].copy(other.rows[i]);\n }\n },\n\n isEmpty : function() {\n var empty = true;\n for (var i = 0 ; i < NR_ROWS ; i++) {\n if (!this.rows[i].isEmpty()) {\n empty = false;\n break;\n }\n }\n return empty;\n },\n\n backSpace : function() {\n var row = this.rows[this.currRow]; \n row.backSpace();\n },\n\n clearToEndOfRow : function() {\n var row = this.rows[this.currRow];\n row.clearToEndOfRow();\n },\n\n /**\n * Insert a character (without styling) in the current row.\n */\n insertChar : function(char) {\n var row = this.rows[this.currRow];\n row.insertChar(char);\n },\n\n setPen : function(styles) {\n var row = this.rows[this.currRow];\n row.setPenStyles(styles);\n },\n\n moveCursor : function(relPos) {\n var row = this.rows[this.currRow];\n row.moveCursor(relPos); \n },\n\n setCursor : function(absPos) {\n logger.log(\"INFO\", \"setCursor: \" + absPos);\n var row = this.rows[this.currRow];\n row.setCursor(absPos);\n },\n\n setPAC : function(pacData) {\n logger.log(\"INFO\", \"pacData = \" + JSON.stringify(pacData));\n var newRow = pacData.row - 1;\n if (this.nrRollUpRows && newRow < this.nrRollUpRows - 1) {\n newRow = this.nrRollUpRows-1;\n }\n this.currRow = newRow;\n var row = this.rows[this.currRow];\n if (pacData.indent !== null) {\n var indent = pacData.indent;\n var prevPos = Math.max(indent-1, 0);\n row.setCursor(pacData.indent);\n pacData.color = row.chars[prevPos].penState.foreground;\n }\n var styles = {foreground : pacData.color, underline : pacData.underline, italics : pacData.italics, background : 'black', flash : false};\n this.setPen(styles);\n },\n\n /**\n * Set background/extra foreground, but first do back_space, and then insert space (backwards compatibility).\n */\n setBkgData : function(bkgData) {\n\n logger.log(\"INFO\", \"bkgData = \" + JSON.stringify(bkgData));\n this.backSpace();\n this.setPen(bkgData);\n this.insertChar(0x20); //Space\n },\n\n setRollUpRows : function(nrRows) {\n this.nrRollUpRows = nrRows;\n },\n\n rollUp : function() {\n if (this.nrRollUpRows === null) {\n logger.log(\"DEBUG\", \"roll_up but nrRollUpRows not set yet\");\n return; //Not properly setup\n }\n logger.log(\"TEXT\", this.getDisplayText());\n var topRowIndex = this.currRow + 1 - this.nrRollUpRows;\n var topRow = this.rows.splice(topRowIndex, 1)[0];\n topRow.clear();\n this.rows.splice(this.currRow, 0, topRow);\n logger.log(\"INFO\", \"Rolling up\");\n //logger.log(\"TEXT\", this.get_display_text())\n },\n\n /**\n * Get all non-empty rows with as unicode text. \n */ \n getDisplayText : function(asOneRow) {\n asOneRow = asOneRow || false;\n var displayText = [];\n var text = \"\";\n var rowNr = -1;\n for (var i = 0 ; i < NR_ROWS ; i++) {\n var rowText = this.rows[i].getTextString();\n if (rowText) {\n rowNr = i+1;\n if (asOneRow) {\n displayText.push(\"Row \" + rowNr + ': \"' + rowText + '\"');\n } else {\n displayText.push(rowText.trim());\n }\n }\n }\n if (displayText.length > 0) {\n if (asOneRow) {\n text = \"[\" + displayText.join(\" | \") + \"]\";\n } else {\n text = displayText.join(\"\\n\");\n }\n }\n return text;\n },\n\n getTextAndFormat : function() {\n return this.rows;\n }\n };\n\n /**\n * Handle a CEA-608 channel and send decoded data to outputFilter\n * @constructor\n * @param {Number} channelNumber (1 or 2)\n * @param {CueHandler} outputFilter Output from channel1 newCue(startTime, endTime, captionScreen)\n */\n var Cea608Channel = function(channelNumber, outputFilter) {\n\n this.chNr = channelNumber;\n this.outputFilter = outputFilter;\n this.mode = null;\n this.verbose = 0;\n this.displayedMemory = new CaptionScreen();\n this.nonDisplayedMemory = new CaptionScreen();\n this.lastOutputScreen = new CaptionScreen();\n this.currRollUpRow = this.displayedMemory.rows[NR_ROWS-1];\n this.writeScreen = this.displayedMemory;\n this.mode = null;\n this.cueStartTime = null; // Keeps track of where a cue started.\n };\n\n Cea608Channel.prototype = {\n \n modes : [\"MODE_ROLL-UP\", \"MODE_POP-ON\", \"MODE_PAINT-ON\", \"MODE_TEXT\"],\n \n reset : function() {\n this.mode = null;\n this.displayedMemory.reset();\n this.nonDisplayedMemory.reset();\n this.lastOutputScreen.reset();\n this.currRollUpRow = this.displayedMemory.rows[NR_ROWS-1];\n this.writeScreen = this.displayedMemory;\n this.mode = null;\n this.cueStartTime = null;\n this.lastCueEndTime = null;\n },\n\n getHandler : function() {\n return this.outputFilter;\n },\n\n setHandler : function(newHandler) {\n this.outputFilter = newHandler;\n },\n\n setPAC : function(pacData) {\n this.writeScreen.setPAC(pacData);\n },\n\n setBkgData : function(bkgData) {\n this.writeScreen.setBkgData(bkgData);\n },\n\n setMode : function(newMode) {\n if (newMode === this.mode) {\n return;\n }\n this.mode = newMode;\n logger.log(\"INFO\", \"MODE=\" + newMode);\n if (this.mode == \"MODE_POP-ON\") {\n this.writeScreen = this.nonDisplayedMemory;\n } else {\n this.writeScreen = this.displayedMemory;\n this.writeScreen.reset();\n }\n if (this.mode !== \"MODE_ROLL-UP\") {\n this.displayedMemory.nrRollUpRows = null;\n this.nonDisplayedMemory.nrRollUpRows = null;\n }\n this.mode = newMode;\n },\n\n insertChars : function(chars) {\n for (var i = 0 ; i < chars.length ; i++) {\n this.writeScreen.insertChar(chars[i]);\n }\n var screen = this.writeScreen === this.displayedMemory ? \"DISP\" : \"NON_DISP\";\n logger.log(\"INFO\", screen + \": \" + this.writeScreen.getDisplayText(true));\n if (this.mode === \"MODE_PAINT-ON\" || this.mode === \"MODE_ROLL-UP\") {\n logger.log(\"TEXT\", \"DISPLAYED: \" + this.displayedMemory.getDisplayText(true));\n this.outputDataUpdate();\n }\n },\n\n cc_RCL: function() { // Resume Caption Loading (switch mode to Pop On)\n logger.log(\"INFO\", \"RCL - Resume Caption Loading\");\n this.setMode(\"MODE_POP-ON\");\n },\n cc_BS: function() { // BackSpace\n logger.log(\"INFO\", \"BS - BackSpace\");\n if (this.mode === \"MODE_TEXT\") {\n return;\n }\n this.writeScreen.backSpace();\n if (this.writeScreen === this.displayedMemory) {\n this.outputDataUpdate();\n }\n },\n cc_AOF : function() { // Reserved (formerly Alarm Off)\n return;\n },\n cc_AON: function() { // Reserved (formerly Alarm On)\n return;\n },\n cc_DER: function() { // Delete to End of Row\n logger.log(\"INFO\", \"DER- Delete to End of Row\");\n this.writeScreen.clearToEndOfRow();\n this.outputDataUpdate();\n },\n cc_RU: function(nrRows) { //Roll-Up Captions-2,3,or 4 Rows\n logger.log(\"INFO\", \"RU(\" + nrRows +\") - Roll Up\");\n this.writeScreen = this.displayedMemory;\n this.setMode(\"MODE_ROLL-UP\");\n this.writeScreen.setRollUpRows(nrRows);\n },\n cc_FON: function() { //Flash On\n logger.log(\"INFO\", \"FON - Flash On\");\n this.writeScreen.setPen({flash : true});\n },\n cc_RDC: function() { // Resume Direct Captioning (switch mode to PaintOn)\n logger.log(\"INFO\", \"RDC - Resume Direct Captioning\");\n this.setMode(\"MODE_PAINT-ON\");\n },\n cc_TR: function() { // Text Restart in text mode (not supported, however)\n logger.log(\"INFO\", \"TR\");\n this.setMode(\"MODE_TEXT\");\n },\n cc_RTD: function() { // Resume Text Display in Text mode (not supported, however)\n logger.log(\"INFO\", \"RTD\");\n this.setMode(\"MODE_TEXT\");\n },\n cc_EDM: function() { // Erase Displayed Memory\n logger.log(\"INFO\", \"EDM - Erase Displayed Memory\");\n this.displayedMemory.reset();\n this.outputDataUpdate();\n },\n cc_CR: function() { // Carriage Return\n logger.log(\"CR - Carriage Return\");\n this.writeScreen.rollUp();\n this.outputDataUpdate();\n },\n cc_ENM: function() { //Erase Non-Displayed Memory\n logger.log(\"INFO\", \"ENM - Erase Non-displayed Memory\");\n this.nonDisplayedMemory.reset();\n },\n cc_EOC: function() { //End of Caption (Flip Memories)\n logger.log(\"INFO\", \"EOC - End Of Caption\");\n if (this.mode === \"MODE_POP-ON\") {\n var tmp = this.displayedMemory;\n this.displayedMemory = this.nonDisplayedMemory;\n this.nonDisplayedMemory = tmp;\n this.writeScreen = this.nonDisplayedMemory;\n logger.log(\"TEXT\", \"DISP: \" + this.displayedMemory.getDisplayText());\n }\n this.outputDataUpdate();\n },\n cc_TO: function(nrCols) { // Tab Offset 1,2, or 3 columns\n logger.log(\"INFO\", \"TO(\" + nrCols + \") - Tab Offset\");\n this.writeScreen.moveCursor(nrCols);\n },\n cc_MIDROW: function(secondByte) { // Parse MIDROW command\n var styles = {flash : false};\n styles.underline = secondByte % 2 === 1;\n styles.italics = secondByte >= 0x2e;\n if (!styles.italics) {\n var colorIndex = Math.floor(secondByte/2) - 0x10;\n var colors = [\"white\", \"green\", \"blue\", \"cyan\", \"red\", \"yellow\", \"magenta\"];\n styles.foreground = colors[colorIndex];\n } else {\n styles.foreground = \"white\";\n }\n logger.log(\"INFO\", \"MIDROW: \" + JSON.stringify(styles));\n this.writeScreen.setPen(styles);\n },\n\n outputDataUpdate: function() {\n var t = logger.time;\n if (t === null) {\n return;\n }\n if (this.outputFilter) {\n if (this.outputFilter.updateData) {\n this.outputFilter.updateData(t, this.displayedMemory);\n }\n if (this.cueStartTime === null && !this.displayedMemory.isEmpty()) { // Start of a new cue\n this.cueStartTime = t;\n } else {\n if (!this.displayedMemory.equals(this.lastOutputScreen)) { \n if (this.outputFilter.newCue) {\n this.outputFilter.newCue(this.cueStartTime, t, this.lastOutputScreen);\n }\n this.cueStartTime = this.displayedMemory.isEmpty() ? null : t;\n }\n }\n this.lastOutputScreen.copy(this.displayedMemory);\n }\n },\n\n cueSplitAtTime : function(t) {\n if (this.outputFilter) {\n if (!this.displayedMemory.isEmpty()) {\n if (this.outputFilter.newCue) {\n this.outputFilter.newCue(this.cueStartTime, t, this.displayedMemory);\n }\n this.cueStartTime = t;\n }\n }\n }\n };\n\n /**\n * Parse CEA-608 data and send decoded data to out1 and out2.\n * @constructor\n * @param {Number} field CEA-608 field (1 or 2)\n * @param {CueHandler} out1 Output from channel1 newCue(startTime, endTime, captionScreen)\n * @param {CueHandler} out2 Output from channel2 newCue(startTime, endTime, captionScreen)\n */\n var Cea608Parser = function(field, out1, out2) {\n this.field = field || 1;\n this.outputs = [out1, out2];\n this.channels = [new Cea608Channel(1, out1), new Cea608Channel(2, out2)];\n this.currChNr = -1; // Will be 1 or 2\n this.lastCmdA = null; // First byte of last command\n this.lastCmdB = null; // Second byte of last command\n this.bufferedData = [];\n this.startTime = null;\n this.lastTime = null;\n this.dataCounters = {'padding' : 0, 'char' : 0, 'cmd' : 0, 'other' : 0};\n };\n\n Cea608Parser.prototype = {\n \n getHandler : function(index) {\n return this.channels[index].getHandler();\n },\n \n setHandler : function(index, newHandler) {\n this.channels[index].setHandler(newHandler);\n },\n\n /**\n * Add data for time t in forms of list of bytes (unsigned ints). The bytes are treated as pairs.\n */\n addData : function(t, byteList) {\n var cmdFound, a, b, \n charsFound = false;\n \n this.lastTime = t;\n logger.setTime(t);\n\n for (var i = 0 ; i < byteList.length ; i+=2) {\n a = byteList[i] & 0x7f;\n b = byteList[i+1] & 0x7f;\n if (a === 0 && b === 0) {\n this.dataCounters.padding += 2;\n continue;\n } else {\n logger.log(\"DATA\", \"[\" + numArrayToHexArray([byteList[i], byteList[i+1]]) +\"] -> (\" + numArrayToHexArray([a, b]) + \")\");\n }\n cmdFound = this.parseCmd(a, b);\n if (!cmdFound) {\n cmdFound = this.parseMidrow(a, b);\n }\n if (!cmdFound) {\n cmdFound = this.parsePAC(a, b);\n }\n if (!cmdFound) {\n cmdFound = this.parseBackgroundAttributes(a, b);\n }\n if (!cmdFound) {\n charsFound = this.parseChars(a, b);\n if (charsFound) {\n if (this.currChNr && this.currChNr >=0) {\n var channel = this.channels[this.currChNr-1];\n channel.insertChars(charsFound);\n } else {\n logger.log(\"WARNING\", \"No channel found yet. TEXT-MODE?\");\n }\n }\n }\n if (cmdFound) {\n this.dataCounters.cmd += 2;\n } else if (charsFound) {\n this.dataCounters.char += 2;\n } else {\n this.dataCounters.other += 2;\n logger.log(\"WARNING\", \"Couldn't parse cleaned data \" + numArrayToHexArray([a, b]) +\n \" orig: \" + numArrayToHexArray([byteList[i], byteList[i+1]]));\n }\n }\n },\n\n /**\n * Parse Command.\n * @returns {Boolean} Tells if a command was found\n */\n parseCmd: function(a, b) {\n var chNr = null;\n\n var cond1 = (a === 0x14 || a === 0x1C) && (0x20 <= b && b <= 0x2F);\n var cond2 = (a === 0x17 || a === 0x1F) && (0x21 <= b && b <= 0x23);\n if (!(cond1 || cond2)) {\n return false;\n }\n \n if (a === this.lastCmdA && b === this.lastCmdB) {\n this.lastCmdA = null;\n this.lastCmdB = null; // Repeated commands are dropped (once)\n logger.log(\"DEBUG\", \"Repeated command (\" + numArrayToHexArray([a, b]) + \") is dropped\");\n return true;\n }\n\n if (a === 0x14 || a === 0x17) {\n chNr = 1;\n } else {\n chNr = 2; // (a === 0x1C || a=== 0x1f)\n }\n\n var channel = this.channels[chNr - 1];\n\n if (a === 0x14 || a === 0x1C) {\n if (b === 0x20) {\n channel.cc_RCL();\n } else if (b === 0x21) {\n channel.cc_BS();\n } else if (b === 0x22) {\n channel.cc_AOF();\n } else if (b === 0x23) {\n channel.cc_AON();\n } else if (b === 0x24) {\n channel.cc_DER();\n } else if (b === 0x25) {\n channel.cc_RU(2);\n } else if (b === 0x26) {\n channel.cc_RU(3);\n } else if (b === 0x27) {\n channel.cc_RU(4);\n } else if (b === 0x28) {\n channel.cc_FON();\n } else if (b === 0x29) {\n channel.cc_RDC();\n } else if (b === 0x2A) {\n channel.cc_TR();\n } else if (b === 0x2B) {\n channel.cc_RTD();\n } else if (b === 0x2C) {\n channel.cc_EDM();\n } else if (b === 0x2D) {\n channel.cc_CR();\n } else if (b === 0x2E) {\n channel.cc_ENM();\n } else if (b === 0x2F) {\n channel.cc_EOC();\n }\n } else { //a == 0x17 || a == 0x1F\n channel.cc_TO(b - 0x20);\n }\n this.lastCmdA = a;\n this.lastCmdB = b;\n this.currChNr = chNr;\n return true;\n },\n\n /**\n * Parse midrow styling command\n * @returns {Boolean}\n */\n parseMidrow : function(a, b) {\n var chNr = null;\n \n if ( ((a === 0x11) || (a === 0x19)) && 0x20 <= b && b <= 0x2f) {\n if (a === 0x11) {\n chNr = 1;\n } else {\n chNr = 2;\n }\n if (chNr !== this.currChNr) {\n logger.log(\"ERROR\", \"Mismatch channel in midrow parsing\");\n return false;\n }\n var channel = this.channels[chNr-1];\n channel.cc_MIDROW(b);\n logger.log(\"DEBUG\", \"MIDROW (\" + numArrayToHexArray([a, b]) + \")\");\n return true;\n }\n return false;\n },\n /**\n * Parse Preable Access Codes (Table 53).\n * @returns {Boolean} Tells if PAC found\n */\n parsePAC : function(a, b) {\n\n var chNr = null;\n var row = null;\n \n var case1 = ((0x11 <= a && a <= 0x17) || (0x19 <= a && a <= 0x1F)) && (0x40 <= b && b <= 0x7F);\n var case2 = (a === 0x10 || a === 0x18) && (0x40 <= b && b <= 0x5F);\n if (! (case1 || case2)) {\n return false;\n }\n\n if (a === this.lastCmdA && b === this.lastCmdB) {\n this.lastCmdA = null;\n this.lastCmdB = null;\n return true; // Repeated commands are dropped (once)\n }\n\n chNr = (a <= 0x17) ? 1 : 2;\n\n if (0x40 <= b && b <= 0x5F) {\n row = (chNr === 1) ? rowsLowCh1[a] : rowsLowCh2[a];\n } else { // 0x60 <= b <= 0x7F\n row = (chNr === 1) ? rowsHighCh1[a] : rowsHighCh2[a];\n }\n var pacData = this.interpretPAC(row, b);\n var channel = this.channels[chNr-1];\n channel.setPAC(pacData);\n this.lastCmdA = a;\n this.lastCmdB = b;\n this.currChNr = chNr;\n return true;\n },\n\n /**\n * Interpret the second byte of the pac, and return the information.\n * @returns {Object} pacData with style parameters.\n */\n interpretPAC : function (row, byte) {\n var pacIndex = byte;\n var pacData = {color : null, italics : false, indent : null, underline : false, row : row};\n \n if (byte > 0x5F) {\n pacIndex = byte - 0x60;\n } else {\n pacIndex = byte - 0x40;\n }\n pacData.underline = (pacIndex & 1) === 1;\n if (pacIndex <= 0xd) {\n pacData.color = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta', 'white'][Math.floor(pacIndex/2)];\n } else if (pacIndex <= 0xf) {\n pacData.italics = true;\n pacData.color = 'white';\n } else {\n pacData.indent = (Math.floor((pacIndex-0x10)/2))*4;\n }\n return pacData; // Note that row has zero offset. The spec uses 1.\n },\n\n /**\n * Parse characters.\n * @returns An array with 1 to 2 codes corresponding to chars, if found. null otherwise.\n */\n parseChars : function(a, b) {\n\n var channelNr = null,\n charCodes = null,\n charCode1 = null,\n charCode2 = null;\n\n if (a >= 0x19) {\n channelNr = 2;\n charCode1 = a - 8;\n } else {\n channelNr = 1;\n charCode1 = a;\n }\n if (0x11 <= charCode1 && charCode1 <= 0x13) {\n // Special character\n var oneCode = b;\n if (charCode1 === 0x11) {\n oneCode = b + 0x50;\n } else if (charCode1 === 0x12) {\n oneCode = b + 0x70;\n } else {\n oneCode = b + 0x90;\n }\n logger.log(\"INFO\", \"Special char '\" + getCharForByte(oneCode) + \"' in channel \" + channelNr);\n charCodes = [oneCode];\n } else if (0x20 <= a && a <= 0x7f) {\n charCodes = (b === 0) ? [a] : [a, b];\n }\n if (charCodes) {\n var hexCodes = numArrayToHexArray(charCodes);\n logger.log(\"DEBUG\", \"Char codes = \" + hexCodes.join(\",\"));\n this.lastCmdA = null;\n this.lastCmdB = null;\n }\n return charCodes;\n },\n \n /**\n * Parse extended background attributes as well as new foreground color black.\n * @returns{Boolean} Tells if background attributes are found\n */\n parseBackgroundAttributes : function(a, b) {\n var bkgData,\n index,\n chNr,\n channel;\n\n var case1 = (a === 0x10 || a === 0x18) && (0x20 <= b && b <= 0x2f);\n var case2 = (a === 0x17 || a === 0x1f) && (0x2d <=b && b <= 0x2f);\n if (!(case1 || case2)) {\n return false;\n }\n bkgData = {};\n if (a === 0x10 || a === 0x18) {\n index = Math.floor((b-0x20)/2);\n bkgData.background = backgroundColors[index];\n if (b % 2 === 1) {\n bkgData.background = bkgData.background + \"_semi\";\n }\n } else if (b === 0x2d) {\n bkgData.background = \"transparent\";\n } else {\n bkgData.foreground = \"black\";\n if (b === 0x2f) {\n bkgData.underline = true;\n }\n }\n chNr = (a < 0x18) ? 1 : 2;\n channel = this.channels[chNr-1];\n channel.setBkgData(bkgData);\n this.lastCmdA = null;\n this.lastCmdB = null;\n return true;\n },\n\n /**\n * Reset state of parser and its channels.\n */\n reset : function() {\n for (var i=0 ; i < this.channels.length ; i++) {\n if (this.channels[i]) {\n this.channels[i].reset();\n }\n }\n this.lastCmdA = null;\n this.lastCmdB = null;\n },\n\n /**\n * Trigger the generation of a cue, and the start of a new one if displayScreens are not empty.\n */\n cueSplitAtTime : function(t) {\n for (var i=0 ; i < this.channels.length ; i++) {\n if (this.channels[i]) {\n this.channels[i].cueSplitAtTime(t);\n }\n }\n },\n };\n\n /**\n * Find ranges corresponding to SEA CEA-608 NALUS in sizeprepended NALU array.\n * @param {raw} dataView of binary data\n * @param {startPos} start position in raw\n * @param {size} total size of data in raw to consider\n * @returns \n */\n var findCea608Nalus = function(raw, startPos, size) {\n var nalSize = 0,\n cursor = startPos,\n nalType = 0,\n cea608NaluRanges = [],\n // Check SEI data according to ANSI-SCTE 128\n isCEA608SEI = function (payloadType, payloadSize, raw, pos) {\n if (payloadType !== 4 || payloadSize < 8) {\n return null;\n }\n var countryCode = raw.getUint8(pos);\n var providerCode = raw.getUint16(pos + 1);\n var userIdentifier = raw.getUint32(pos + 3);\n var userDataTypeCode = raw.getUint8(pos + 7);\n return countryCode == 0xB5 && providerCode == 0x31 && userIdentifier == 0x47413934 && userDataTypeCode == 0x3;\n };\n while (cursor < startPos + size) {\n nalSize = raw.getUint32(cursor);\n nalType = raw.getUint8(cursor + 4) & 0x1F;\n //console.log(time + \" NAL \" + nalType);\n if (nalType === 6) {\n // SEI NAL Unit. The NAL header is the first byte\n //console.log(\"SEI NALU of size \" + nalSize + \" at time \" + time);\n var pos = cursor + 5;\n var payloadType = -1;\n while (pos < cursor + 4 + nalSize - 1) { // The last byte should be rbsp_trailing_bits\n payloadType = 0;\n var b = 0xFF;\n while (b === 0xFF) {\n b = raw.getUint8(pos);\n payloadType += b;\n pos++;\n }\n var payloadSize = 0;\n b = 0xFF;\n while (b === 0xFF) {\n b = raw.getUint8(pos);\n payloadSize += b;\n pos++;\n }\n if (isCEA608SEI(payloadType, payloadSize, raw, pos)) {\n //console.log(\"CEA608 SEI \" + time + \" \" + payloadSize);\n cea608NaluRanges.push([pos, payloadSize]);\n }\n pos += payloadSize;\n }\n }\n cursor += nalSize + 4;\n }\n return cea608NaluRanges;\n };\n \n var extractCea608DataFromRange = function(raw, cea608Range) {\n var pos = cea608Range[0];\n var fieldData = [[], []];\n\n pos += 8; // Skip the identifier up to userDataTypeCode\n var ccCount = raw.getUint8(pos) & 0x1f;\n pos += 2; // Advance 1 and skip reserved byte\n \n for (var i = 0; i < ccCount; i++) {\n var byte = raw.getUint8(pos);\n var ccValid = byte & 0x4;\n var ccType = byte & 0x3;\n pos++;\n var ccData1 = raw.getUint8(pos); // Keep parity bit\n pos++;\n var ccData2 = raw.getUint8(pos); // Keep parity bit\n pos++;\n if (ccValid && ((ccData1 & 0x7f) + (ccData2 & 0x7f) !== 0)) { //Check validity and non-empty data\n if (ccType === 0) {\n fieldData[0].push(ccData1);\n fieldData[0].push(ccData2);\n } else if (ccType === 1) {\n fieldData[1].push(ccData1);\n fieldData[1].push(ccData2);\n }\n }\n }\n return fieldData;\n };\n\n exports.logger = logger;\n exports.PenState = PenState;\n exports.CaptionScreen = CaptionScreen; \n exports.Cea608Parser = Cea608Parser;\n exports.findCea608Nalus = findCea608Nalus;\n exports.extractCea608DataFromRange = extractCea608DataFromRange;\n\n}(typeof exports === 'undefined' ? this.cea608parser = {} : exports));\n","/*\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * author Digital Primates\n * copyright dash-if 2012\n */\n\n/*\n * var parent,\n * child,\n * properties = [\n {\n name: 'profiles',\n merge: false\n }\n ];\n *\n * parent = {};\n * parent.name = \"ParentNode\";\n * parent.isRoor = false;\n * parent.isArray = false;\n * parent.parent = null;\n * parent.children = [];\n * parent.properties = properties;\n *\n * child = {};\n * child.name = \"ChildNode\";\n * child.isRoor = false;\n * child.isArray = true;\n * child.parent = parent;\n * child.children = null;\n * child.properties = properties;\n * parent.children.push(child);\n *\n */\n\nfunction ObjectIron(map) {\n\n var lookup,\n len,\n i;\n\n // create a list of top level items to search for\n lookup = [];\n for (i = 0, len = map.length; i < len; i += 1) {\n if (map[i].isRoot) {\n lookup.push(\"root\");\n } else {\n lookup.push(map[i].name);\n }\n }\n\n var mergeValues = function (parentItem, childItem) {\n var name,\n parentValue,\n childValue;\n\n if (parentItem === null || childItem === null) {\n return;\n }\n\n for (name in parentItem) {\n if (parentItem.hasOwnProperty(name)) {\n if (!childItem.hasOwnProperty(name)) {\n childItem[name] = parentItem[name];\n }\n }\n }\n },\n\n mapProperties = function (properties, parent, child) {\n var i,\n len,\n property,\n parentValue,\n childValue;\n\n if (properties === null || properties.length === 0) {\n return;\n }\n\n for (i = 0, len = properties.length; i < len; i += 1) {\n property = properties[i];\n\n if (parent.hasOwnProperty(property.name)) {\n if (child.hasOwnProperty(property.name)) {\n // check to see if we should merge\n if (property.merge) {\n parentValue = parent[property.name];\n childValue = child[property.name];\n\n // complex objects; merge properties\n if (typeof parentValue === 'object' && typeof childValue === 'object') {\n mergeValues(parentValue, childValue);\n }\n // simple objects; merge them together\n else {\n if (property.mergeFunction != null) {\n child[property.name] = property.mergeFunction(parentValue, childValue);\n } else {\n child[property.name] = parentValue + childValue;\n }\n }\n }\n } else {\n // just add the property\n child[property.name] = parent[property.name];\n }\n }\n }\n },\n\n mapItem = function (obj, node) {\n var item = obj,\n i,\n len,\n v,\n len2,\n array,\n childItem,\n childNode,\n property;\n\n if (item.children === null || item.children.length === 0) {\n return;\n }\n\n for (i = 0, len = item.children.length; i < len; i += 1) {\n childItem = item.children[i];\n\n if (node.hasOwnProperty(childItem.name)) {\n if (childItem.isArray) {\n array = node[childItem.name + \"_asArray\"];\n for (v = 0, len2 = array.length; v < len2; v += 1) {\n childNode = array[v];\n mapProperties(item.properties, node, childNode);\n mapItem(childItem, childNode);\n }\n } else {\n childNode = node[childItem.name];\n mapProperties(item.properties, node, childNode);\n mapItem(childItem, childNode);\n }\n }\n }\n },\n\n performMapping = function (source) {\n var i,\n len,\n pi,\n pp,\n item,\n node,\n array;\n\n if (source === null) {\n return source;\n }\n\n if (typeof source !== 'object') {\n return source;\n }\n\n // first look to see if anything cares about the root node\n for (i = 0, len = lookup.length; i < len; i += 1) {\n if (lookup[i] === \"root\") {\n item = map[i];\n node = source;\n mapItem(item, node);\n }\n }\n\n // iterate over the objects and look for any of the items we care about\n for (pp in source) {\n if (source.hasOwnProperty(pp) && pp != \"__children\") {\n pi = lookup.indexOf(pp);\n if (pi !== -1) {\n item = map[pi];\n\n if (item.isArray) {\n array = source[pp + \"_asArray\"];\n for (i = 0, len = array.length; i < len; i += 1) {\n node = array[i];\n mapItem(item, node);\n }\n } else {\n node = source[pp];\n mapItem(item, node);\n }\n }\n // now check this to see if he has any of the properties we care about\n performMapping(source[pp]);\n }\n }\n\n return source;\n };\n\n return {\n run: performMapping\n };\n}\n\nexport default ObjectIron;","/*\n Copyright 2011 Abdulla Abdurakhmanov\n Original sources are available at https://code.google.com/p/x2js/\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/*\n Modified to keep track of children nodes in order in attribute __children.\n*/\n\nfunction X2JS(matchers, attrPrefix, ignoreRoot) {\n if (attrPrefix === null || attrPrefix === undefined) {\n attrPrefix = \"_\";\n }\n \n if (ignoreRoot === null || ignoreRoot === undefined) {\n ignoreRoot = false;\n }\n \n\tvar VERSION = \"1.0.11\";\n\tvar escapeMode = false;\n\n\tvar DOMNodeTypes = {\n\t\tELEMENT_NODE \t : 1,\n\t\tTEXT_NODE \t : 3,\n\t\tCDATA_SECTION_NODE : 4,\n\t\tCOMMENT_NODE : 8,\n\t\tDOCUMENT_NODE \t : 9\n\t};\n\t\n\tfunction getNodeLocalName( node ) {\n\t\tvar nodeLocalName = node.localName;\t\t\t\n\t\tif(nodeLocalName == null) // Yeah, this is IE!! \n\t\t\tnodeLocalName = node.baseName;\n\t\tif(nodeLocalName == null || nodeLocalName==\"\") // ==\"\" is IE too\n\t\t\tnodeLocalName = node.nodeName;\n\t\treturn nodeLocalName;\n\t}\n\t\n\tfunction getNodePrefix(node) {\n\t\treturn node.prefix;\n\t}\n\t\t\n\tfunction escapeXmlChars(str) {\n\t\tif(typeof(str) == \"string\")\n\t\t\treturn str.replace(/&/g, '&').replace(//g, '>').replace(/\"/g, '"').replace(/'/g, ''').replace(/\\//g, '/');\n\t\telse\n\t\t\treturn str;\n\t}\n\n\tfunction unescapeXmlChars(str) {\n\t\treturn str.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '\"').replace(/'/g, \"'\").replace(///g, '\\/')\n\t}\t\n\n\tfunction parseDOMChildren( node ) {\n\t\tif(node.nodeType == DOMNodeTypes.DOCUMENT_NODE) {\n\t\t\tvar result,\n\t\t\t child = node.firstChild,\n\t\t\t i,\n\t\t\t len; \n\t\t\t\n\t\t\t// get the first node that isn't a comment\n\t\t\tfor(i = 0, len = node.childNodes.length; i < len; i += 1) {\n\t\t\t if (node.childNodes[i].nodeType !== DOMNodeTypes.COMMENT_NODE) {\n\t\t\t child = node.childNodes[i];\n\t\t\t break;\n\t\t\t } \n\t\t\t}\n\t\t\t\n\t\t\tif ( ignoreRoot ) {\n\t\t\t result = parseDOMChildren(child);\n\t\t\t} else {\n\t\t\t result = {};\n\t\t\t var childName = getNodeLocalName(child);\n result[childName] = parseDOMChildren(child);\n\t\t\t}\n\t\t\t\n\t\t\treturn result;\n\t\t}\n\t\telse\n\t\tif(node.nodeType == DOMNodeTypes.ELEMENT_NODE) {\n\t\t\tvar result = new Object;\n\t\t\tresult.__cnt=0;\n\n var children = [];\n\t\t\t\n\t\t\tvar nodeChildren = node.childNodes;\n\t\t\t\n\t\t\t// Children nodes\n\t\t\tfor(var cidx=0; cidx \";\n\t\telse\n\t\t\tresultStr+=\"/>\";\n\t\treturn resultStr;\n\t}\n\t\n\tfunction endTag(jsonObj,elementName) {\n\t\treturn \"\";\n\t}\n\t\n\tfunction endsWith(str, suffix) {\n\t return str.indexOf(suffix, str.length - suffix.length) !== -1;\n\t}\n\t\n\tfunction jsonXmlSpecialElem ( jsonObj, jsonObjField ) {\n\t\tif(endsWith(jsonObjField.toString(),(\"_asArray\")) \n\t\t\t\t|| jsonObjField.toString().indexOf(\"_\")==0 \n\t\t\t\t|| (jsonObj[jsonObjField] instanceof Function) )\n\t\t\treturn true;\n\t\telse\n\t\t\treturn false;\n\t}\n\t\n\tfunction jsonXmlElemCount ( jsonObj ) {\n\t\tvar elementsCnt = 0;\n\t\tif(jsonObj instanceof Object ) {\n\t\t\tfor( var it in jsonObj ) {\n\t\t\t\tif(jsonXmlSpecialElem ( jsonObj, it) )\n\t\t\t\t\tcontinue;\t\t\t\n\t\t\t\telementsCnt++;\n\t\t\t}\n\t\t}\n\t\treturn elementsCnt;\n\t}\n\t\n\tfunction parseJSONAttributes ( jsonObj ) {\n\t\tvar attrList = [];\n\t\tif(jsonObj instanceof Object ) {\n\t\t\tfor( var ait in jsonObj ) {\n\t\t\t\tif(ait.toString().indexOf(\"__\")== -1 && ait.toString().indexOf(\"_\")==0) {\n\t\t\t\t\tattrList.push(ait);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn attrList;\n\t}\n\t\n\tfunction parseJSONTextAttrs ( jsonTxtObj ) {\n\t\tvar result =\"\";\n\t\t\n\t\tif(jsonTxtObj.__cdata!=null) {\t\t\t\t\t\t\t\t\t\t\n\t\t\tresult+=\"\";\t\t\t\t\t\n\t\t}\n\t\t\n\t\tif(jsonTxtObj.__text!=null) {\t\t\t\n\t\t\tif(escapeMode)\n\t\t\t\tresult+=escapeXmlChars(jsonTxtObj.__text);\n\t\t\telse\n\t\t\t\tresult+=jsonTxtObj.__text;\n\t\t}\n\t\treturn result\n\t}\n\t\n\tfunction parseJSONTextObject ( jsonTxtObj ) {\n\t\tvar result =\"\";\n\n\t\tif( jsonTxtObj instanceof Object ) {\n\t\t\tresult+=parseJSONTextAttrs ( jsonTxtObj )\n\t\t}\n\t\telse\n\t\t\tif(jsonTxtObj!=null) {\n\t\t\t\tif(escapeMode)\n\t\t\t\t\tresult+=escapeXmlChars(jsonTxtObj);\n\t\t\t\telse\n\t\t\t\t\tresult+=jsonTxtObj;\n\t\t\t}\n\t\t\n\t\treturn result;\n\t}\n\t\n\tfunction parseJSONArray ( jsonArrRoot, jsonArrObj, attrList ) {\n\t\tvar result = \"\"; \n\t\tif(jsonArrRoot.length == 0) {\n\t\t\tresult+=startTag(jsonArrRoot, jsonArrObj, attrList, true);\n\t\t}\n\t\telse {\n\t\t\tfor(var arIdx = 0; arIdx < jsonArrRoot.length; arIdx++) {\n\t\t\t\tresult+=startTag(jsonArrRoot[arIdx], jsonArrObj, parseJSONAttributes(jsonArrRoot[arIdx]), false);\n\t\t\t\tresult+=parseJSONObject(jsonArrRoot[arIdx]);\n\t\t\t\tresult+=endTag(jsonArrRoot[arIdx],jsonArrObj);\t\t\t\t\t\t\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\t\n\tfunction parseJSONObject ( jsonObj ) {\n\t\tvar result = \"\";\t\n\n\t\tvar elementsCnt = jsonXmlElemCount ( jsonObj );\n\t\t\n\t\tif(elementsCnt > 0) {\n\t\t\tfor( var it in jsonObj ) {\n\t\t\t\t\n\t\t\t\tif(jsonXmlSpecialElem ( jsonObj, it) )\n\t\t\t\t\tcontinue;\t\t\t\n\t\t\t\t\n\t\t\t\tvar subObj = jsonObj[it];\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\tvar attrList = parseJSONAttributes( subObj )\n\t\t\t\t\n\t\t\t\tif(subObj == null || subObj == undefined) {\n\t\t\t\t\tresult+=startTag(subObj, it, attrList, true)\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\tif(subObj instanceof Object) {\n\t\t\t\t\t\n\t\t\t\t\tif(subObj instanceof Array) {\t\t\t\t\t\n\t\t\t\t\t\tresult+=parseJSONArray( subObj, it, attrList )\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tvar subObjElementsCnt = jsonXmlElemCount ( subObj );\n\t\t\t\t\t\tif(subObjElementsCnt > 0 || subObj.__text!=null || subObj.__cdata!=null) {\n\t\t\t\t\t\t\tresult+=startTag(subObj, it, attrList, false);\n\t\t\t\t\t\t\tresult+=parseJSONObject(subObj);\n\t\t\t\t\t\t\tresult+=endTag(subObj,it);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresult+=startTag(subObj, it, attrList, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tresult+=startTag(subObj, it, attrList, false);\n\t\t\t\t\tresult+=parseJSONTextObject(subObj);\n\t\t\t\t\tresult+=endTag(subObj,it);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tresult+=parseJSONTextObject(jsonObj);\n\t\t\n\t\treturn result;\n\t}\n\t\n\tthis.parseXmlString = function(xmlDocStr) {\n\t\tvar xmlDoc,\n\t\t\tparser,\n\t\t\tns;\n\n\t\tif (window.DOMParser) {\n\t\t\tparser = new window.DOMParser();\n\n\t\t\ttry {\n\t\t\t\tns = parser.parseFromString('<', 'text/xml').getElementsByTagName(\"parsererror\")[0].namespaceURI;\n\t\t\t} catch (e) {\n\t\t\t\t// IE11 will definitely throw SyntaxError here\n\t\t\t\t// ns will be undefined\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\txmlDoc = parser.parseFromString( xmlDocStr, \"text/xml\" );\n\n\t\t\t\tif (ns) {\n\t\t\t\t\tif(xmlDoc.getElementsByTagNameNS(ns, 'parsererror').length) {\n\t\t\t\t\t\txmlDoc = undefined;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t// IE11 may throw SyntaxError here if xmlDocStr is\n\t\t\t\t// not well formed. xmlDoc will be undefined\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// IE :(\n\t\t\tif(xmlDocStr.indexOf(\"\") + 2 );\n\t\t\t}\n\t\t\txmlDoc=new ActiveXObject(\"Microsoft.XMLDOM\");\n\t\t\txmlDoc.async=\"false\";\n\t\t\txmlDoc.loadXML(xmlDocStr);\n\t\t}\n\t\treturn xmlDoc;\n\t}\n\n\tthis.xml2json = function (xmlDoc) {\n\t\treturn parseDOMChildren ( xmlDoc );\n\t}\n\t\n\tthis.xml_str2json = function (xmlDocStr) {\n\t\tvar xmlDoc = this.parseXmlString(xmlDocStr);\t\n\t\treturn xmlDoc ? this.xml2json(xmlDoc) : undefined;\n\t}\n\n\tthis.json2xml_str = function (jsonObj) {\n\t\treturn parseJSONObject ( jsonObj );\n\t}\n\n\tthis.json2xml = function (jsonObj) {\n\t\tvar xmlDocStr = this.json2xml_str (jsonObj);\n\t\treturn this.parseXmlString(xmlDocStr);\n\t}\n\t\n\tthis.getVersion = function () {\n\t\treturn VERSION;\n\t}\t\t\n\t\n\tthis.escapeMode = function(enabled) {\n\t\tescapeMode = enabled;\n\t}\n}\nexport default X2JS;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport MediaPlayer from './src/streaming/MediaPlayer.js';\nimport Protection from './src/streaming/protection/Protection.js';\nimport MetricsReporting from './src/streaming/metrics/MetricsReporting.js';\nimport MediaPlayerFactory from './src/streaming/MediaPlayerFactory.js';\n\n\n// Shove both of these into the global scope\nvar context = window || global;\n\nvar dashjs = context.dashjs;\nif (!dashjs) {\n dashjs = context.dashjs = {};\n}\n\ndashjs.MediaPlayer = MediaPlayer;\ndashjs.Protection = Protection;\ndashjs.MetricsReporting = MetricsReporting;\ndashjs.MediaPlayerFactory = MediaPlayerFactory;\n\nexport default dashjs;\nexport { MediaPlayer, Protection, MetricsReporting, MediaPlayerFactory };","/*! codem-isoboxer v0.2.2 https://github.com/madebyhiro/codem-isoboxer/blob/master/LICENSE.txt */\nvar ISOBoxer = {};\n\nISOBoxer.parseBuffer = function(arrayBuffer) {\n return new ISOFile(arrayBuffer).parse();\n};\n\nISOBoxer.Utils = {};\nISOBoxer.Utils.dataViewToString = function(dataView, encoding) {\n var impliedEncoding = encoding || 'utf-8'\n if (typeof TextDecoder !== 'undefined') {\n return new TextDecoder(impliedEncoding).decode(dataView);\n }\n var a = [];\n var i = 0;\n \n if (impliedEncoding === 'utf-8') {\n /* The following algorithm is essentially a rewrite of the UTF8.decode at \n http://bannister.us/weblog/2007/simple-base64-encodedecode-javascript/\n */\n \n while (i < dataView.byteLength) {\n var c = dataView.getUint8(i++);\n if (c < 0x80) {\n // 1-byte character (7 bits)\n } else if (c < 0xe0) {\n // 2-byte character (11 bits)\n c = (c & 0x1f) << 6;\n c |= (dataView.getUint8(i++) & 0x3f);\n } else if (c < 0xf0) {\n // 3-byte character (16 bits)\n c = (c & 0xf) << 12;\n c |= (dataView.getUint8(i++) & 0x3f) << 6;\n c |= (dataView.getUint8(i++) & 0x3f);\n } else {\n // 4-byte character (21 bits)\n c = (c & 0x7) << 18;\n c |= (dataView.getUint8(i++) & 0x3f) << 12;\n c |= (dataView.getUint8(i++) & 0x3f) << 6;\n c |= (dataView.getUint8(i++) & 0x3f);\n }\n a.push(String.fromCharCode(c));\n }\n } else { // Just map byte-by-byte (probably wrong)\n while (i < dataView.byteLength) {\n a.push(String.fromCharCode(dataView.getUint8(i++)));\n }\n }\n return a.join(''); \n};\n\nif (typeof exports !== 'undefined') {\n exports.parseBuffer = ISOBoxer.parseBuffer;\n exports.Utils = ISOBoxer.Utils;\n};\nISOBoxer.Cursor = function(initialOffset) {\n this.offset = (typeof initialOffset == 'undefined' ? 0 : initialOffset);\n};\nvar ISOFile = function(arrayBuffer) {\n this._raw = new DataView(arrayBuffer);\n this._cursor = new ISOBoxer.Cursor();\n this.boxes = [];\n}\n\nISOFile.prototype.fetch = function(type) {\n var result = this.fetchAll(type, true);\n return (result.length ? result[0] : null);\n}\n\nISOFile.prototype.fetchAll = function(type, returnEarly) {\n var result = [];\n ISOFile._sweep.call(this, type, result, returnEarly);\n return result;\n}\n\nISOFile.prototype.parse = function() {\n this._cursor.offset = 0;\n this.boxes = [];\n while (this._cursor.offset < this._raw.byteLength) {\n var box = ISOBox.parse(this);\n\n // Box could not be parsed\n if (typeof box.type === 'undefined') break;\n\n this.boxes.push(box);\n }\n return this;\n}\n\nISOFile._sweep = function(type, result, returnEarly) {\n if (this.type && this.type == type) result.push(this);\n for (var box in this.boxes) {\n if (result.length && returnEarly) return;\n ISOFile._sweep.call(this.boxes[box], type, result, returnEarly);\n }\n};\nvar ISOBox = function() {\n this._cursor = new ISOBoxer.Cursor();\n}\n\nISOBox.parse = function(parent) {\n var newBox = new ISOBox();\n newBox._offset = parent._cursor.offset;\n newBox._root = (parent._root ? parent._root : parent);\n newBox._raw = parent._raw;\n newBox._parent = parent;\n newBox._parseBox();\n parent._cursor.offset = newBox._raw.byteOffset + newBox._raw.byteLength;\n return newBox;\n}\n\nISOBox.prototype._readInt = function(size) {\n var result = null;\n switch(size) {\n case 8:\n result = this._raw.getInt8(this._cursor.offset - this._raw.byteOffset);\n break;\n case 16:\n result = this._raw.getInt16(this._cursor.offset - this._raw.byteOffset);\n break;\n case 32:\n result = this._raw.getInt32(this._cursor.offset - this._raw.byteOffset);\n break;\n case 64:\n // Warning: JavaScript cannot handle 64-bit integers natively.\n // This will give unexpected results for integers >= 2^53\n var s1 = this._raw.getInt32(this._cursor.offset - this._raw.byteOffset);\n var s2 = this._raw.getInt32(this._cursor.offset - this._raw.byteOffset + 4);\n result = (s1 * Math.pow(2,32)) + s2;\n break;\n }\n this._cursor.offset += (size >> 3);\n return result; \n}\n\nISOBox.prototype._readUint = function(size) {\n var result = null;\n switch(size) {\n case 8:\n result = this._raw.getUint8(this._cursor.offset - this._raw.byteOffset);\n break;\n case 16:\n result = this._raw.getUint16(this._cursor.offset - this._raw.byteOffset);\n break;\n case 24:\n var s1 = this._raw.getUint16(this._cursor.offset - this._raw.byteOffset);\n var s2 = this._raw.getUint8(this._cursor.offset - this._raw.byteOffset + 2);\n result = (s1 << 8) + s2;\n break;\n case 32:\n result = this._raw.getUint32(this._cursor.offset - this._raw.byteOffset);\n break;\n case 64:\n // Warning: JavaScript cannot handle 64-bit integers natively.\n // This will give unexpected results for integers >= 2^53\n var s1 = this._raw.getUint32(this._cursor.offset - this._raw.byteOffset);\n var s2 = this._raw.getUint32(this._cursor.offset - this._raw.byteOffset + 4);\n result = (s1 * Math.pow(2,32)) + s2;\n break;\n }\n this._cursor.offset += (size >> 3);\n return result; \n}\n\nISOBox.prototype._readString = function(length) {\n var str = '';\n for (var c = 0; c < length; c++) {\n var char = this._readUint(8);\n str += String.fromCharCode(char);\n }\n return str; \n}\n\nISOBox.prototype._readTerminatedString = function() {\n var str = '';\n while (true) {\n var char = this._readUint(8);\n if (char == 0) break;\n str += String.fromCharCode(char);\n }\n return str;\n}\n\nISOBox.prototype._readTemplate = function(size) {\n var pre = this._readUint(size / 2);\n var post = this._readUint(size / 2);\n return pre + (post / Math.pow(2, size / 2));\n}\n\nISOBox.prototype._parseBox = function() {\n this._cursor.offset = this._offset;\n \n // return immediately if there are not enough bytes to read the header\n if (this._offset + 8 > this._raw.buffer.byteLength) {\n this._root._incomplete = true;\n return;\n }\n \n this.size = this._readUint(32);\n this.type = this._readString(4);\n\n if (this.size == 1) { this.largesize = this._readUint(64); }\n if (this.type == 'uuid') { this.usertype = this._readString(16); }\n\n switch(this.size) {\n case 0:\n this._raw = new DataView(this._raw.buffer, this._offset, (this._raw.byteLength - this._cursor.offset));\n break;\n case 1:\n if (this._offset + this.size > this._raw.buffer.byteLength) {\n this._incomplete = true;\n this._root._incomplete = true;\n } else {\n this._raw = new DataView(this._raw.buffer, this._offset, this.largesize); \n }\n break;\n default:\n if (this._offset + this.size > this._raw.buffer.byteLength) {\n this._incomplete = true;\n this._root._incomplete = true;\n } else {\n this._raw = new DataView(this._raw.buffer, this._offset, this.size); \n }\n }\n\n // additional parsing\n if (!this._incomplete && this._boxParsers[this.type]) this._boxParsers[this.type].call(this); \n}\n\nISOBox.prototype._parseFullBox = function() {\n this.version = this._readUint(8);\n this.flags = this._readUint(24);\n}\n\nISOBox.prototype._boxParsers = {};;\n// Simple container boxes, all from ISO/IEC 14496-12:2012 except vttc which is from 14496-30.\n[\n 'moov', 'trak', 'tref', 'mdia', 'minf', 'stbl', 'edts', 'dinf',\n 'mvex', 'moof', 'traf', 'mfra', 'udta', 'meco', 'strk', 'vttc'\n].forEach(function(boxType) {\n ISOBox.prototype._boxParsers[boxType] = function() {\n this.boxes = [];\n while (this._cursor.offset - this._raw.byteOffset < this._raw.byteLength) {\n this.boxes.push(ISOBox.parse(this));\n } \n } \n})\n;\n// ISO/IEC 14496-12:2012 - 8.6.6 Edit List Box\nISOBox.prototype._boxParsers['elst'] = function() {\n this._parseFullBox();\n this.entry_count = this._readUint(32);\n this.entries = [];\n \n for (var i=1; i <= this.entry_count; i++) {\n var entry = {};\n if (this.version == 1) {\n entry.segment_duration = this._readUint(64);\n entry.media_time = this._readInt(64);\n } else {\n entry.segment_duration = this._readUint(32);\n entry.media_time = this._readInt(32);\n }\n entry.media_rate_integer = this._readInt(16);\n entry.media_rate_fraction = this._readInt(16);\n this.entries.push(entry);\n }\n};\n// ISO/IEC 23009-1:2014 - 5.10.3.3 Event Message Box\nISOBox.prototype._boxParsers['emsg'] = function() {\n this._parseFullBox();\n this.scheme_id_uri = this._readTerminatedString();\n this.value = this._readTerminatedString();\n this.timescale = this._readUint(32);\n this.presentation_time_delta = this._readUint(32);\n this.event_duration = this._readUint(32);\n this.id = this._readUint(32);\n this.message_data = new DataView(this._raw.buffer, this._cursor.offset, this._raw.byteLength - (this._cursor.offset - this._offset));\n};\n// ISO/IEC 14496-12:2012 - 8.1.2 Free Space Box\nISOBox.prototype._boxParsers['free'] = ISOBox.prototype._boxParsers['skip'] = function() {\n this.data = new DataView(this._raw.buffer, this._cursor.offset, this._raw.byteLength - (this._cursor.offset - this._offset));\n};\n// ISO/IEC 14496-12:2012 - 4.3 File Type Box / 8.16.2 Segment Type Box\nISOBox.prototype._boxParsers['ftyp'] = ISOBox.prototype._boxParsers['styp'] = function() {\n this.major_brand = this._readString(4);\n this.minor_versions = this._readUint(32);\n this.compatible_brands = [];\n \n while (this._cursor.offset - this._raw.byteOffset < this._raw.byteLength) {\n this.compatible_brands.push(this._readString(4));\n }\n};\n// ISO/IEC 14496-12:2012 - 8.4.3 Handler Reference Box\nISOBox.prototype._boxParsers['hdlr'] = function() {\n this._parseFullBox();\n this.pre_defined = this._readUint(32);\n this.handler_type = this._readString(4);\n this.reserved = [this._readUint(32), this._readUint(32), this._readUint(32)]\n this.name = this._readTerminatedString()\n};\n// ISO/IEC 14496-12:2012 - 8.1.1 Media Data Box\nISOBox.prototype._boxParsers['mdat'] = function() {\n this.data = new DataView(this._raw.buffer, this._cursor.offset, this._raw.byteLength - (this._cursor.offset - this._offset));\n};\n// ISO/IEC 14496-12:2012 - 8.4.2 Media Header Box\nISOBox.prototype._boxParsers['mdhd'] = function() {\n this._parseFullBox();\n if (this.version == 1) {\n this.creation_time = this._readUint(64);\n this.modification_time = this._readUint(64);\n this.timescale = this._readUint(32);\n this.duration = this._readUint(64);\n } else {\n this.creation_time = this._readUint(32);\n this.modification_time = this._readUint(32);\n this.timescale = this._readUint(32);\n this.duration = this._readUint(32);\n }\n var language = this._readUint(16);\n this.pad = (language >> 15);\n this.language = String.fromCharCode(\n ((language >> 10) & 0x1F) + 0x60,\n ((language >> 5) & 0x1F) + 0x60,\n (language & 0x1F) + 0x60\n );\n this.pre_defined = this._readUint(16);\n};\n// ISO/IEC 14496-12:2012 - 8.8.5 Movie Fragment Header Box\nISOBox.prototype._boxParsers['mfhd'] = function() {\n this._parseFullBox();\n this.sequence_number = this._readUint(32);\n};\n// ISO/IEC 14496-12:2012 - 8.2.2 Movie Header Box\nISOBox.prototype._boxParsers['mvhd'] = function() {\n this._parseFullBox();\n \n if (this.version == 1) {\n this.creation_time = this._readUint(64);\n this.modification_time = this._readUint(64);\n this.timescale = this._readUint(32);\n this.duration = this._readUint(64);\n } else {\n this.creation_time = this._readUint(32);\n this.modification_time = this._readUint(32);\n this.timescale = this._readUint(32);\n this.duration = this._readUint(32); \n }\n \n this.rate = this._readTemplate(32);\n this.volume = this._readTemplate(16);\n this.reserved1 = this._readUint(16);\n this.reserved2 = [ this._readUint(32), this._readUint(32) ];\n this.matrix = [];\n for (var i=0; i<9; i++) {\n this.matrix.push(this._readTemplate(32));\n }\n this.pre_defined = [];\n for (var i=0; i<6; i++) {\n this.pre_defined.push(this._readUint(32));\n }\n this.next_track_ID = this._readUint(32);\n};\n// ISO/IEC 14496-30:2014 - WebVTT Cue Payload Box.\nISOBox.prototype._boxParsers['payl'] = function() {\n var cue_text_raw = new DataView(this._raw.buffer, this._cursor.offset, this._raw.byteLength - (this._cursor.offset - this._offset));\n this.cue_text = ISOBoxer.Utils.dataViewToString(cue_text_raw);\n}\n;\n// ISO/IEC 14496-12:2012 - 8.16.3 Segment Index Box\nISOBox.prototype._boxParsers['sidx'] = function() {\n this._parseFullBox();\n this.reference_ID = this._readUint(32);\n this.timescale = this._readUint(32);\n if (this.version == 0) {\n this.earliest_presentation_time = this._readUint(32);\n this.first_offset = this._readUint(32);\n } else {\n this.earliest_presentation_time = this._readUint(64);\n this.first_offset = this._readUint(64); \n }\n this.reserved = this._readUint(16);\n this.reference_count = this._readUint(16);\n this.references = [];\n for (var i=0; i> 31) & 0x1;\n ref.referenced_size = reference & 0x7FFFFFFF;\n ref.subsegment_duration = this._readUint(32);\n var sap = this._readUint(32);\n ref.starts_with_SAP = (sap >> 31) & 0x1;\n ref.SAP_type = (sap >> 28) & 0x7;\n ref.SAP_delta_time = sap & 0xFFFFFFF;\n this.references.push(ref);\n }\n};\n// ISO/IEC 14496-12:2012 - 8.16.4 Subsegment Index Box\nISOBox.prototype._boxParsers['ssix'] = function() {\n this._parseFullBox();\n this.subsegment_count = this._readUint(32);\n this.subsegments = [];\n\n for (var i=0; i 0) {\n message += ' ';\n }\n\n Array.apply(null, arguments).forEach(function (item) {\n message += item + ' ';\n });\n\n if (logToBrowserConsole) {\n console.log(message);\n }\n\n eventBus.trigger(Events.LOG, {message: message});\n }\n\n instance = {\n log: log,\n setLogTimestampVisible: setLogTimestampVisible,\n setLogToBrowserConsole: setLogToBrowserConsole,\n getLogToBrowserConsole: getLogToBrowserConsole,\n };\n\n setup();\n\n return instance;\n}\n\nDebug.__dashjs_factory_name = 'Debug';\nexport default FactoryMaker.getSingletonFactory(Debug);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport FactoryMaker from './FactoryMaker.js';\n\nfunction EventBus() {\n\n let instance;\n let handlers = {};\n\n\n function on(type, listener, scope) {\n if (!type) {\n throw new Error('event type cannot be null or undefined');\n }\n\n if (!listener || typeof (listener) !== 'function') {\n throw new Error('listener must be a function: ' + listener);\n }\n\n if (getHandlerIdx(type, listener, scope) >= 0) return;\n\n var handler = {\n callback: listener,\n scope: scope\n };\n\n handlers[type] = handlers[type] || [];\n handlers[type].push(handler);\n }\n\n function off(type, listener, scope) {\n if (!type || !listener || !handlers[type]) return;\n\n var idx = getHandlerIdx(type, listener, scope);\n\n if (idx < 0) return;\n\n handlers[type].splice(idx, 1);\n }\n\n function trigger(type, args) {\n if (!type || !handlers[type]) return;\n\n args = args || {};\n\n if (args.hasOwnProperty('type')) {\n throw new Error('\\'type\\' is a reserved word for event dispatching');\n }\n\n args.type = type;\n\n handlers[type].forEach(function (handler) {\n handler.callback.call(handler.scope, args);\n });\n }\n\n function reset() {\n handlers = {};\n }\n\n function getHandlerIdx(type, listener, scope) {\n var handlersForType = handlers[type];\n var result = -1;\n\n if (!handlersForType || handlersForType.length === 0) return result;\n\n for (var i = 0; i < handlersForType.length; i++) {\n if (handlersForType[i].callback === listener && (!scope || scope === handlersForType[i].scope)) return i;\n }\n\n return result;\n }\n\n instance = {\n on: on,\n off: off,\n trigger: trigger,\n reset: reset\n };\n\n return instance;\n}\n\nEventBus.__dashjs_factory_name = 'EventBus';\nexport default FactoryMaker.getSingletonFactory(EventBus);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @Module FactoryMaker\n */\nlet FactoryMaker = (function () {\n\n let instance;\n let extensions = [];\n let singletonContexts = [];\n\n function extend(name, childInstance, override, context) {\n let extensionContext = getExtensionContext(context);\n if (!extensionContext[name] && childInstance) {\n extensionContext[name] = {instance: childInstance, override: override};\n }\n }\n\n /**\n * Use this method from your extended object. this.factory is injected into your object.\n * this.factory.getSingletonInstance(this.context, 'VideoModel')\n * will return the video model for use in the extended object.\n *\n * @param context {Object} injected into extended object as this.context\n * @param className {String} string name found in all dash.js objects\n * with name __dashjs_factory_name Will be at the bottom. Will be the same as the object's name.\n * @returns {*} Context aware instance of specified singleton name.\n * @memberof module:FactoryMaker\n * @instance\n */\n function getSingletonInstance(context, className) {\n for (let i in singletonContexts) {\n let obj = singletonContexts[i];\n if (obj.context === context && obj.name === className) {\n return obj.instance;\n }\n }\n return null;\n }\n\n /**\n * Use this method to add an singleton instance to the system. Useful for unit testing to mock objects etc.\n *\n * @param context\n * @param className\n * @param instance\n * @memberof module:FactoryMaker\n * @instance\n */\n function setSingletonInstance(context, className, instance) {\n for (let i in singletonContexts) {\n let obj = singletonContexts[i];\n if (obj.context === context && obj.name === className) {\n singletonContexts[i].instance = instance;\n return;\n }\n }\n singletonContexts.push({ name: className, context: context, instance: instance });\n }\n\n function getClassFactory(classConstructor) {\n return function (context) {\n if (context === undefined) {\n context = {};\n }\n return {\n create: function () {\n return merge(classConstructor.__dashjs_factory_name, classConstructor.apply({ context: context }, arguments), context, arguments);\n }\n };\n };\n }\n\n function getSingletonFactory(classConstructor) {\n return function (context) {\n let instance;\n if (context === undefined) {\n context = {};\n }\n return {\n getInstance: function () {\n // If we don't have an instance yet check for one on the context\n if (!instance) {\n instance = getSingletonInstance(context, classConstructor.__dashjs_factory_name);\n }\n // If there's no instance on the context then create one\n if (!instance) {\n instance = merge(classConstructor.__dashjs_factory_name, classConstructor.apply({ context: context }, arguments), context, arguments);\n singletonContexts.push({ name: classConstructor.__dashjs_factory_name, context: context, instance: instance });\n }\n return instance;\n }\n };\n };\n }\n\n function merge(name, classConstructor, context, args) {\n let extensionContext = getExtensionContext(context);\n let extensionObject = extensionContext[name];\n if (extensionObject) {\n let extension = extensionObject.instance;\n if (extensionObject.override) { //Override public methods in parent but keep parent.\n extension = extension.apply({ context: context, factory: instance, parent: classConstructor}, args);\n for (const prop in extension) {\n if (classConstructor.hasOwnProperty(prop)) {\n classConstructor[prop] = extension[prop];\n }\n }\n } else { //replace parent object completely with new object. Same as dijon.\n return extension.apply({ context: context, factory: instance}, args);\n }\n }\n return classConstructor;\n }\n\n function getExtensionContext(context) {\n let extensionContext;\n extensions.forEach(function (obj) {\n if (obj === context) {\n extensionContext = obj;\n }\n });\n if (!extensionContext) {\n extensionContext = extensions.push(context);\n }\n return extensionContext;\n }\n\n instance = {\n extend: extend,\n getSingletonInstance: getSingletonInstance,\n setSingletonInstance: setSingletonInstance,\n getSingletonFactory: getSingletonFactory,\n getClassFactory: getClassFactory\n };\n\n return instance;\n\n}());\n\nexport default FactoryMaker;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport EventsBase from './EventsBase.js';\n\n/**\n * @class\n * @ignore\n */\nclass CoreEvents extends EventsBase {\n constructor () {\n super();\n this.AST_IN_FUTURE = 'astinfuture';\n this.BUFFERING_COMPLETED = 'bufferingCompleted';\n this.BUFFER_CLEARED = 'bufferCleared';\n this.BUFFER_LEVEL_STATE_CHANGED = 'bufferStateChanged';\n this.BUFFER_LEVEL_UPDATED = 'bufferLevelUpdated';\n this.BYTES_APPENDED = 'bytesAppended';\n this.CHECK_FOR_EXISTENCE_COMPLETED = 'checkForExistenceCompleted';\n this.CHUNK_APPENDED = 'chunkAppended';\n this.CURRENT_TRACK_CHANGED = 'currenttrackchanged';\n this.DATA_UPDATE_COMPLETED = 'dataUpdateCompleted';\n this.DATA_UPDATE_STARTED = 'dataUpdateStarted';\n this.FRAGMENT_LOADING_COMPLETED = 'fragmentLoadingCompleted';\n this.FRAGMENT_LOADING_STARTED = 'fragmentLoadingStarted';\n this.INITIALIZATION_LOADED = 'initializationLoaded';\n this.INIT_FRAGMENT_LOADED = 'initFragmentLoaded';\n this.INIT_REQUESTED = 'initRequested';\n this.INTERNAL_MANIFEST_LOADED = 'manifestLoaded';\n this.LIVE_EDGE_SEARCH_COMPLETED = 'liveEdgeSearchCompleted';\n this.LOADING_COMPLETED = 'loadingCompleted';\n this.LOADING_PROGRESS = 'loadingProgress';\n this.MANIFEST_UPDATED = 'manifestUpdated';\n this.MEDIA_FRAGMENT_LOADED = 'mediaFragmentLoaded';\n this.QUALITY_CHANGED = 'qualityChanged';\n this.QUOTA_EXCEEDED = 'quotaExceeded';\n this.REPRESENTATION_UPDATED = 'representationUpdated';\n this.SEGMENTS_LOADED = 'segmentsLoaded';\n this.SOURCEBUFFER_APPEND_COMPLETED = 'sourceBufferAppendCompleted';\n this.SOURCEBUFFER_REMOVE_COMPLETED = 'sourceBufferRemoveCompleted';\n this.STREAMS_COMPOSED = 'streamsComposed';\n this.STREAM_BUFFERING_COMPLETED = 'streamBufferingCompleted';\n this.STREAM_COMPLETED = 'streamCompleted';\n this.STREAM_INITIALIZED = 'streaminitialized';\n this.STREAM_TEARDOWN_COMPLETE = 'streamTeardownComplete';\n this.TIMED_TEXT_REQUESTED = 'timedTextRequested';\n this.TIME_SYNCHRONIZATION_COMPLETED = 'timeSynchronizationComplete';\n this.WALLCLOCK_TIME_UPDATED = 'wallclockTimeUpdated';\n this.XLINK_ALL_ELEMENTS_LOADED = 'xlinkAllElementsLoaded';\n this.XLINK_ELEMENT_LOADED = 'xlinkElementLoaded';\n this.XLINK_READY = 'xlinkReady';\n }\n}\n\nexport default CoreEvents;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nimport CoreEvents from './CoreEvents.js';\nclass Events extends CoreEvents {\n}\nlet events = new Events();\nexport default events;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass EventsBase {\n extend (events, config) {\n if (!events) return;\n\n let override = config ? config.override : false;\n let publicOnly = config ? config.publicOnly : false;\n\n\n for (const evt in events) {\n if (!events.hasOwnProperty(evt) || (this[evt] && !override)) continue;\n if (publicOnly && events[evt].indexOf('public_') === -1) continue;\n this[evt] = events[evt];\n\n }\n }\n}\n\nexport default EventsBase;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport TrackInfo from '../streaming/vo/TrackInfo.js';\nimport MediaInfo from '../streaming/vo/MediaInfo.js';\nimport StreamInfo from '../streaming/vo/StreamInfo.js';\nimport ManifestInfo from '../streaming/vo/ManifestInfo.js';\nimport Event from './vo/Event.js';\nimport FactoryMaker from '../core/FactoryMaker.js';\nimport cea608parser from '../../externals/cea608-parser.js';\n\nconst METRIC_LIST = {\n //TODO need to refactor all that reference to be able to export like all other const on factory object.\n TCP_CONNECTION: 'TcpList',\n HTTP_REQUEST: 'HttpList',\n TRACK_SWITCH: 'RepSwitchList',\n BUFFER_LEVEL: 'BufferLevel',\n BUFFER_STATE: 'BufferState',\n DVR_INFO: 'DVRInfo',\n DROPPED_FRAMES: 'DroppedFrames',\n SCHEDULING_INFO: 'SchedulingInfo',\n REQUESTS_QUEUE: 'RequestsQueue',\n MANIFEST_UPDATE: 'ManifestUpdate',\n MANIFEST_UPDATE_STREAM_INFO: 'ManifestUpdatePeriodInfo',\n MANIFEST_UPDATE_TRACK_INFO: 'ManifestUpdateRepresentationInfo',\n PLAY_LIST: 'PlayList',\n DVB_ERRORS: 'DVBErrors'\n};\n\nfunction DashAdapter() {\n\n //let context = this.context;\n\n let instance,\n dashManifestModel,\n periods,\n adaptations;\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.dashManifestModel) {\n dashManifestModel = config.dashManifestModel;\n }\n }\n\n function initialize() {\n periods = [];\n adaptations = {};\n }\n\n\n function getRepresentationForTrackInfo(trackInfo, representationController) {\n return representationController.getRepresentationForQuality(trackInfo.quality);\n }\n\n function getAdaptationForMediaInfo(mediaInfo) {\n return adaptations[mediaInfo.streamInfo.id][mediaInfo.index];\n }\n\n function getPeriodForStreamInfo(streamInfo) {\n var ln = periods.length;\n\n for (let i = 0; i < ln; i++) {\n const period = periods[i];\n\n if (streamInfo.id === period.id) return period;\n }\n\n return null;\n }\n\n function convertRepresentationToTrackInfo(manifest, representation) {\n var trackInfo = new TrackInfo();\n var a = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].AdaptationSet_asArray[representation.adaptation.index];\n var r = dashManifestModel.getRepresentationFor(representation.index, a);\n\n trackInfo.id = representation.id;\n trackInfo.quality = representation.index;\n trackInfo.bandwidth = dashManifestModel.getBandwidth(r);\n trackInfo.DVRWindow = representation.segmentAvailabilityRange;\n trackInfo.fragmentDuration = representation.segmentDuration || (representation.segments && representation.segments.length > 0 ? representation.segments[0].duration : NaN);\n trackInfo.MSETimeOffset = representation.MSETimeOffset;\n trackInfo.useCalculatedLiveEdgeTime = representation.useCalculatedLiveEdgeTime;\n trackInfo.mediaInfo = convertAdaptationToMediaInfo(manifest, representation.adaptation);\n\n return trackInfo;\n }\n\n function convertAdaptationToMediaInfo(manifest, adaptation) {\n var mediaInfo = new MediaInfo();\n var a = adaptation.period.mpd.manifest.Period_asArray[adaptation.period.index].AdaptationSet_asArray[adaptation.index];\n var viewpoint;\n\n mediaInfo.id = adaptation.id;\n mediaInfo.index = adaptation.index;\n mediaInfo.type = adaptation.type;\n mediaInfo.streamInfo = convertPeriodToStreamInfo(manifest, adaptation.period);\n mediaInfo.representationCount = dashManifestModel.getRepresentationCount(a);\n mediaInfo.lang = dashManifestModel.getLanguageForAdaptation(a);\n viewpoint = dashManifestModel.getViewpointForAdaptation(a);\n mediaInfo.viewpoint = viewpoint ? viewpoint.value : undefined;\n mediaInfo.accessibility = dashManifestModel.getAccessibilityForAdaptation(a).map(function (accessibility) {\n let accessibilityValue = accessibility.value;\n let accessibilityData = accessibilityValue;\n if (accessibility.schemeIdUri && (accessibility.schemeIdUri.search('cea-608') >= 0) && typeof (cea608parser) !== 'undefined') {\n if (accessibilityValue) {\n accessibilityData = 'cea-608:' + accessibilityValue;\n } else {\n accessibilityData = 'cea-608';\n }\n mediaInfo.embeddedCaptions = true;\n }\n return accessibilityData;\n });\n mediaInfo.audioChannelConfiguration = dashManifestModel.getAudioChannelConfigurationForAdaptation(a).map(function (audioChannelConfiguration) {\n return audioChannelConfiguration.value;\n });\n mediaInfo.roles = dashManifestModel.getRolesForAdaptation(a).map(function (role) {\n return role.value;\n });\n mediaInfo.codec = dashManifestModel.getCodec(a);\n mediaInfo.mimeType = dashManifestModel.getMimeType(a);\n mediaInfo.contentProtection = dashManifestModel.getContentProtectionData(a);\n mediaInfo.bitrateList = dashManifestModel.getBitrateListForAdaptation(a);\n\n if (mediaInfo.contentProtection) {\n mediaInfo.contentProtection.forEach(function (item) {\n item.KID = dashManifestModel.getKID(item);\n });\n }\n\n mediaInfo.isText = dashManifestModel.getIsTextTrack(mediaInfo.mimeType);\n\n return mediaInfo;\n }\n\n function convertVideoInfoToEmbeddedTextInfo(mediaInfo, channel, lang) {\n mediaInfo.id = channel; // CC1, CC2, CC3, or CC4\n mediaInfo.index = 100 + parseInt(channel.substring(2, 3));\n mediaInfo.type = 'embeddedText';\n mediaInfo.codec = 'cea-608-in-SEI';\n mediaInfo.isText = true;\n mediaInfo.isEmbedded = true;\n mediaInfo.lang = channel + ' ' + lang;\n mediaInfo.roles = ['caption'];\n }\n\n function convertPeriodToStreamInfo(manifest, period) {\n var streamInfo = new StreamInfo();\n var THRESHOLD = 1;\n\n streamInfo.id = period.id;\n streamInfo.index = period.index;\n streamInfo.start = period.start;\n streamInfo.duration = period.duration;\n streamInfo.manifestInfo = convertMpdToManifestInfo(manifest, period.mpd);\n streamInfo.isLast = (manifest.Period_asArray.length === 1) || (Math.abs((streamInfo.start + streamInfo.duration) - streamInfo.manifestInfo.duration) < THRESHOLD);\n\n return streamInfo;\n }\n\n function convertMpdToManifestInfo(manifest, mpd) {\n var manifestInfo = new ManifestInfo();\n\n manifestInfo.DVRWindowSize = mpd.timeShiftBufferDepth;\n manifestInfo.loadedTime = mpd.manifest.loadedTime;\n manifestInfo.availableFrom = mpd.availabilityStartTime;\n manifestInfo.minBufferTime = mpd.manifest.minBufferTime;\n manifestInfo.maxFragmentDuration = mpd.maxSegmentDuration;\n manifestInfo.duration = dashManifestModel.getDuration(manifest);\n manifestInfo.isDynamic = dashManifestModel.getIsDynamic(manifest);\n\n return manifestInfo;\n }\n\n function getMediaInfoForType(manifest, streamInfo, type) {\n var periodInfo = getPeriodForStreamInfo(streamInfo);\n var periodId = periodInfo.id;\n var data = dashManifestModel.getAdaptationForType(manifest, streamInfo.index, type);\n var idx;\n\n if (!data) return null;\n\n idx = dashManifestModel.getIndexForAdaptation(data, manifest, streamInfo.index);\n\n adaptations[periodId] = adaptations[periodId] || dashManifestModel.getAdaptationsForPeriod(manifest, periodInfo);\n\n return convertAdaptationToMediaInfo(manifest, adaptations[periodId][idx]);\n }\n\n function getAllMediaInfoForType(manifest, streamInfo, type) {\n var periodInfo = getPeriodForStreamInfo(streamInfo);\n var periodId = periodInfo.id;\n var adaptationsForType = dashManifestModel.getAdaptationsForType(manifest, streamInfo.index, type !== 'embeddedText' ? type : 'video');\n\n var mediaArr = [];\n\n var data,\n media,\n idx,\n i,\n j,\n ln;\n\n if (!adaptationsForType) return mediaArr;\n\n adaptations[periodId] = adaptations[periodId] || dashManifestModel.getAdaptationsForPeriod(manifest, periodInfo);\n\n for (i = 0, ln = adaptationsForType.length; i < ln; i++) {\n data = adaptationsForType[i];\n idx = dashManifestModel.getIndexForAdaptation(data, manifest, streamInfo.index);\n media = convertAdaptationToMediaInfo(manifest, adaptations[periodId][idx]);\n\n if (type === 'embeddedText') {\n var accessibilityLength = media.accessibility.length;\n for (j = 0; j < accessibilityLength; j++) {\n if (!media) {\n continue;\n }\n var accessibility = media.accessibility[j];\n if (accessibility.indexOf('cea-608:') === 0) {\n var value = accessibility.substring(8);\n var parts = value.split(';');\n if (parts[0].substring(0, 2) === 'CC') {\n for (j = 0; j < parts.length; j++) {\n if (!media) {\n media = convertAdaptationToMediaInfo.call(this, manifest, adaptations[periodId][idx]);\n }\n convertVideoInfoToEmbeddedTextInfo(media, parts[j].substring(0, 3), parts[j].substring(4));\n mediaArr.push(media);\n media = null;\n }\n } else {\n for (j = 0; j < parts.length; j++) { // Only languages for CC1, CC2, ...\n if (!media) {\n media = convertAdaptationToMediaInfo.call(this, manifest, adaptations[periodId][idx]);\n }\n convertVideoInfoToEmbeddedTextInfo(media, 'CC' + (j + 1), parts[j]);\n mediaArr.push(media);\n media = null;\n }\n }\n } else if (accessibility.indexOf('cea-608') === 0) { // Nothing known. We interpret it as CC1=eng\n convertVideoInfoToEmbeddedTextInfo(media, 'CC1', 'eng');\n mediaArr.push(media);\n media = null;\n }\n }\n }\n if (media && type !== 'embeddedText') {\n mediaArr.push(media);\n }\n }\n\n return mediaArr;\n }\n\n function getStreamsInfo(manifest) {\n var streams = [];\n var mpd,\n ln,\n i;\n\n if (!manifest) return null;\n\n mpd = dashManifestModel.getMpd(manifest);\n periods = dashManifestModel.getRegularPeriods(manifest, mpd);\n mpd.checkTime = dashManifestModel.getCheckTime(manifest, periods[0]);\n adaptations = {};\n ln = periods.length;\n\n for (i = 0; i < ln; i++) {\n streams.push(convertPeriodToStreamInfo(manifest, periods[i]));\n }\n\n return streams;\n }\n\n function getManifestInfo(manifest) {\n var mpd = dashManifestModel.getMpd(manifest);\n\n return convertMpdToManifestInfo(manifest, mpd);\n }\n\n function getInitRequest(streamProcessor, quality) {\n var representation = streamProcessor.getRepresentationController().getRepresentationForQuality(quality);\n return streamProcessor.getIndexHandler().getInitRequest(representation);\n }\n\n function getNextFragmentRequest(streamProcessor, trackInfo) {\n var representation = getRepresentationForTrackInfo(trackInfo, streamProcessor.getRepresentationController());\n return streamProcessor.getIndexHandler().getNextSegmentRequest(representation);\n }\n\n function getFragmentRequestForTime(streamProcessor, trackInfo, time, options) {\n var representation = getRepresentationForTrackInfo(trackInfo, streamProcessor.getRepresentationController());\n return streamProcessor.getIndexHandler().getSegmentRequestForTime(representation, time, options);\n }\n\n function generateFragmentRequestForTime(streamProcessor, trackInfo, time) {\n var representation = getRepresentationForTrackInfo(trackInfo, streamProcessor.getRepresentationController());\n return streamProcessor.getIndexHandler().generateSegmentRequestForTime(representation, time);\n }\n\n function getIndexHandlerTime(streamProcessor) {\n return streamProcessor.getIndexHandler().getCurrentTime();\n }\n\n function setIndexHandlerTime(streamProcessor, value) {\n return streamProcessor.getIndexHandler().setCurrentTime(value);\n }\n\n function updateData(manifest, streamProcessor) {\n var periodInfo = getPeriodForStreamInfo(streamProcessor.getStreamInfo());\n var mediaInfo = streamProcessor.getMediaInfo();\n var adaptation = getAdaptationForMediaInfo(mediaInfo);\n var type = streamProcessor.getType();\n\n var id,\n data;\n\n id = mediaInfo.id;\n data = id ? dashManifestModel.getAdaptationForId(id, manifest, periodInfo.index) : dashManifestModel.getAdaptationForIndex(mediaInfo.index, manifest, periodInfo.index);\n streamProcessor.getRepresentationController().updateData(data, adaptation, type);\n }\n\n function getRepresentationInfoForQuality(manifest, representationController, quality) {\n var representation = representationController.getRepresentationForQuality(quality);\n return representation ? convertRepresentationToTrackInfo(manifest, representation) : null;\n }\n\n function getCurrentRepresentationInfo(manifest, representationController) {\n var representation = representationController.getCurrentRepresentation();\n return representation ? convertRepresentationToTrackInfo(manifest, representation) : null;\n }\n\n function getEvent(eventBox, eventStreams, startTime) {\n var event = new Event();\n var schemeIdUri = eventBox.scheme_id_uri;\n var value = eventBox.value;\n var timescale = eventBox.timescale;\n var presentationTimeDelta = eventBox.presentation_time_delta;\n var duration = eventBox.event_duration;\n var id = eventBox.id;\n var messageData = eventBox.message_data;\n var presentationTime = startTime * timescale + presentationTimeDelta;\n\n if (!eventStreams[schemeIdUri]) return null;\n\n event.eventStream = eventStreams[schemeIdUri];\n event.eventStream.value = value;\n event.eventStream.timescale = timescale;\n event.duration = duration;\n event.id = id;\n event.presentationTime = presentationTime;\n event.messageData = messageData;\n event.presentationTimeDelta = presentationTimeDelta;\n\n return event;\n }\n\n function getEventsFor(manifest, info, streamProcessor) {\n var events = [];\n\n if (info instanceof StreamInfo) {\n events = dashManifestModel.getEventsForPeriod(manifest, getPeriodForStreamInfo(info));\n } else if (info instanceof MediaInfo) {\n events = dashManifestModel.getEventStreamForAdaptationSet(manifest, getAdaptationForMediaInfo(info));\n } else if (info instanceof TrackInfo) {\n events = dashManifestModel.getEventStreamForRepresentation(manifest, getRepresentationForTrackInfo(info, streamProcessor.getRepresentationController()));\n }\n\n return events;\n }\n\n function reset() {\n periods = [];\n adaptations = {};\n }\n\n instance = {\n initialize: initialize,\n convertDataToTrack: convertRepresentationToTrackInfo,\n convertDataToMedia: convertAdaptationToMediaInfo,\n convertDataToStream: convertPeriodToStreamInfo,\n getDataForTrack: getRepresentationForTrackInfo,\n getDataForMedia: getAdaptationForMediaInfo,\n getDataForStream: getPeriodForStreamInfo,\n getStreamsInfo: getStreamsInfo,\n getManifestInfo: getManifestInfo,\n getMediaInfoForType: getMediaInfoForType,\n getAllMediaInfoForType: getAllMediaInfoForType,\n getCurrentRepresentationInfo: getCurrentRepresentationInfo,\n getRepresentationInfoForQuality: getRepresentationInfoForQuality,\n updateData: updateData,\n getInitRequest: getInitRequest,\n getNextFragmentRequest: getNextFragmentRequest,\n getFragmentRequestForTime: getFragmentRequestForTime,\n generateFragmentRequestForTime: generateFragmentRequestForTime,\n getIndexHandlerTime: getIndexHandlerTime,\n setIndexHandlerTime: setIndexHandlerTime,\n getEventsFor: getEventsFor,\n getEvent: getEvent,\n setConfig: setConfig,\n reset: reset,\n metricsList: METRIC_LIST\n };\n\n return instance;\n}\n\nDashAdapter.__dashjs_factory_name = 'DashAdapter';\nexport default FactoryMaker.getSingletonFactory(DashAdapter);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Segment from './vo/Segment.js';\nimport FragmentRequest from '../streaming/vo/FragmentRequest.js';\nimport Error from '../streaming/vo/Error.js';\nimport HTTPRequest from '../streaming/vo/metrics/HTTPRequest.js';\nimport Events from '../core/events/Events.js';\nimport EventBus from '../core/EventBus.js';\nimport FactoryMaker from '../core/FactoryMaker.js';\nimport Debug from '../core/Debug.js';\n\nconst SEGMENTS_UNAVAILABLE_ERROR_CODE = 1;\n\nfunction DashHandler(config) {\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n let segmentBaseLoader = config.segmentBaseLoader;\n let timelineConverter = config.timelineConverter;\n let dashMetrics = config.dashMetrics;\n let metricsModel = config.metricsModel;\n\n let instance,\n index,\n requestedTime,\n isDynamic,\n type,\n currentTime,\n absUrl,\n streamProcessor;\n\n function setup() {\n index = -1;\n currentTime = 0;\n absUrl = new RegExp('^(?:(?:[a-z]+:)?\\/)?\\/', 'i');\n\n eventBus.on(Events.INITIALIZATION_LOADED, onInitializationLoaded, instance);\n eventBus.on(Events.SEGMENTS_LOADED, onSegmentsLoaded, instance);\n }\n\n function initialize(StreamProcessor) {\n streamProcessor = StreamProcessor;\n type = streamProcessor.getType();\n isDynamic = streamProcessor.isDynamic();\n }\n\n function getStreamProcessor() {\n return streamProcessor;\n }\n\n function setCurrentTime(value) {\n currentTime = value;\n }\n\n function getCurrentTime() {\n return currentTime;\n }\n\n function getCurrentIndex() {\n return index;\n }\n\n function reset() {\n currentTime = 0;\n requestedTime = NaN;\n index = -1;\n isDynamic = null;\n type = null;\n streamProcessor = null;\n eventBus.off(Events.INITIALIZATION_LOADED, onInitializationLoaded, instance);\n eventBus.off(Events.SEGMENTS_LOADED, onSegmentsLoaded, instance);\n }\n\n function zeroPadToLength(numStr, minStrLength) {\n while (numStr.length < minStrLength) {\n numStr = '0' + numStr;\n }\n return numStr;\n }\n\n function replaceTokenForTemplate(url, token, value) {\n var formatTag = '%0';\n\n var startPos,\n endPos,\n formatTagPos,\n specifier,\n width,\n paddedValue;\n\n var tokenLen = token.length;\n var formatTagLen = formatTag.length;\n\n // keep looping round until all instances of have been\n // replaced. once that has happened, startPos below will be -1\n // and the completed url will be returned.\n while (true) {\n\n // check if there is a valid $...$ identifier\n // if not, return the url as is.\n startPos = url.indexOf('$' + token);\n if (startPos < 0) {\n return url;\n }\n\n // the next '$' must be the end of the identifier\n // if there isn't one, return the url as is.\n endPos = url.indexOf('$', startPos + tokenLen);\n if (endPos < 0) {\n return url;\n }\n\n // now see if there is an additional format tag suffixed to\n // the identifier within the enclosing '$' characters\n formatTagPos = url.indexOf(formatTag, startPos + tokenLen);\n if (formatTagPos > startPos && formatTagPos < endPos) {\n\n specifier = url.charAt(endPos - 1);\n width = parseInt(url.substring(formatTagPos + formatTagLen, endPos - 1), 10);\n\n // support the minimum specifiers required by IEEE 1003.1\n // (d, i , o, u, x, and X) for completeness\n switch (specifier) {\n // treat all int types as uint,\n // hence deliberate fallthrough\n case 'd':\n case 'i':\n case 'u':\n paddedValue = zeroPadToLength(value.toString(), width);\n break;\n case 'x':\n paddedValue = zeroPadToLength(value.toString(16), width);\n break;\n case 'X':\n paddedValue = zeroPadToLength(value.toString(16), width).toUpperCase();\n break;\n case 'o':\n paddedValue = zeroPadToLength(value.toString(8), width);\n break;\n default:\n log('Unsupported/invalid IEEE 1003.1 format identifier string in URL');\n return url;\n }\n } else {\n paddedValue = value;\n }\n\n url = url.substring(0, startPos) + paddedValue + url.substring(endPos + 1);\n }\n }\n\n function unescapeDollarsInTemplate(url) {\n return url.split('$$').join('$');\n }\n\n function replaceIDForTemplate(url, value) {\n if (value === null || url.indexOf('$RepresentationID$') === -1) { return url; }\n var v = value.toString();\n return url.split('$RepresentationID$').join(v);\n }\n\n function getNumberForSegment(segment, segmentIndex) {\n return segment.representation.startNumber + segmentIndex;\n }\n\n function getRequestUrl(destination, representation) {\n var baseURL = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].\n AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].BaseURL;\n var url;\n\n if (destination === baseURL) {\n url = destination;\n } else if (absUrl.test(destination)) {\n url = destination;\n } else {\n url = baseURL + destination;\n }\n\n return url;\n }\n\n function generateInitRequest(representation, mediaType) {\n var request = new FragmentRequest();\n var period,\n presentationStartTime;\n\n period = representation.adaptation.period;\n\n request.mediaType = mediaType;\n request.type = HTTPRequest.INIT_SEGMENT_TYPE;\n request.url = getRequestUrl(representation.initialization, representation);\n request.range = representation.range;\n presentationStartTime = period.start;\n request.availabilityStartTime = timelineConverter.calcAvailabilityStartTimeFromPresentationTime(presentationStartTime, representation.adaptation.period.mpd, isDynamic);\n request.availabilityEndTime = timelineConverter.calcAvailabilityEndTimeFromPresentationTime(presentationStartTime + period.duration, period.mpd, isDynamic);\n request.quality = representation.index;\n request.mediaInfo = streamProcessor.getMediaInfo();\n\n return request;\n }\n\n function getInitRequest(representation) {\n var request;\n\n if (!representation) return null;\n\n request = generateInitRequest(representation, type);\n //log(\"Got an initialization.\");\n\n return request;\n }\n\n function isMediaFinished(representation) { // TODO\n var period = representation.adaptation.period;\n var segmentInfoType = representation.segmentInfoType;\n\n var isFinished = false;\n\n var sDuration,\n seg,\n fTime;\n\n if (index < 0) {\n isFinished = false;\n } else if (isDynamic || index < representation.availableSegmentsNumber) {\n seg = getSegmentByIndex(index, representation);\n\n if (seg) {\n fTime = seg.presentationStartTime - period.start;\n sDuration = representation.adaptation.period.duration;\n log(representation.segmentInfoType + ': ' + fTime + ' / ' + sDuration);\n isFinished = segmentInfoType === 'SegmentTimeline' ? false : (fTime >= sDuration);\n }\n } else {\n isFinished = true;\n }\n\n return isFinished;\n }\n\n function getIndexBasedSegment(representation, index) {\n var seg,\n duration,\n presentationStartTime,\n presentationEndTime;\n\n duration = representation.segmentDuration;\n\n /*\n * From spec - If neither @duration attribute nor SegmentTimeline element is present, then the Representation\n * shall contain exactly one Media Segment. The MPD start time is 0 and the MPD duration is obtained\n * in the same way as for the last Media Segment in the Representation.\n */\n if (isNaN(duration)) {\n duration = representation.adaptation.period.duration;\n }\n\n presentationStartTime = representation.adaptation.period.start + (index * duration);\n presentationEndTime = presentationStartTime + duration;\n\n seg = new Segment();\n\n seg.representation = representation;\n seg.duration = duration;\n seg.presentationStartTime = presentationStartTime;\n\n seg.mediaStartTime = timelineConverter.calcMediaTimeFromPresentationTime(seg.presentationStartTime, representation);\n\n seg.availabilityStartTime = timelineConverter.calcAvailabilityStartTimeFromPresentationTime(seg.presentationStartTime, representation.adaptation.period.mpd, isDynamic);\n seg.availabilityEndTime = timelineConverter.calcAvailabilityEndTimeFromPresentationTime(presentationEndTime, representation.adaptation.period.mpd, isDynamic);\n\n // at this wall clock time, the video element currentTime should be seg.presentationStartTime\n seg.wallStartTime = timelineConverter.calcWallTimeForSegment(seg, isDynamic);\n\n seg.replacementNumber = getNumberForSegment(seg, index);\n seg.availabilityIdx = index;\n\n return seg;\n }\n\n function getSegmentsFromTimeline(representation) {\n var template = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].\n AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].SegmentTemplate;\n var timeline = template.SegmentTimeline;\n var isAvailableSegmentNumberCalculated = representation.availableSegmentsNumber > 0;\n\n var maxSegmentsAhead = 10;\n var time = 0;\n var scaledTime = 0;\n var availabilityIdx = -1;\n var segments = [];\n var isStartSegmentForRequestedTimeFound = false;\n\n var fragments,\n frag,\n i,\n len,\n j,\n repeat,\n repeatEndTime,\n nextFrag,\n calculatedRange,\n hasEnoughSegments,\n requiredMediaTime,\n startIdx,\n endIdx,\n fTimescale;\n\n var createSegment = function (s) {\n return getTimeBasedSegment(\n representation,\n time,\n s.d,\n fTimescale,\n template.media,\n s.mediaRange,\n availabilityIdx);\n };\n\n fTimescale = representation.timescale;\n\n fragments = timeline.S_asArray;\n\n calculatedRange = decideSegmentListRangeForTimeline(representation);\n\n // if calculatedRange exists we should generate segments that belong to this range.\n // Otherwise generate maxSegmentsAhead segments ahead of the requested time\n if (calculatedRange) {\n startIdx = calculatedRange.start;\n endIdx = calculatedRange.end;\n } else {\n requiredMediaTime = timelineConverter.calcMediaTimeFromPresentationTime(requestedTime || 0, representation);\n }\n\n for (i = 0, len = fragments.length; i < len; i++) {\n frag = fragments[i];\n repeat = 0;\n if (frag.hasOwnProperty('r')) {\n repeat = frag.r;\n }\n\n //For a repeated S element, t belongs only to the first segment\n if (frag.hasOwnProperty('t')) {\n time = frag.t;\n scaledTime = time / fTimescale;\n }\n\n //This is a special case: \"A negative value of the @r attribute of the S element indicates that the duration indicated in @d attribute repeats until the start of the next S element, the end of the Period or until the\n // next MPD update.\"\n if (repeat < 0) {\n nextFrag = fragments[i + 1];\n\n if (nextFrag && nextFrag.hasOwnProperty('t')) {\n repeatEndTime = nextFrag.t / fTimescale;\n } else {\n var availabilityEnd = representation.segmentAvailabilityRange ? representation.segmentAvailabilityRange.end : (timelineConverter.calcSegmentAvailabilityRange(representation, isDynamic).end);\n repeatEndTime = timelineConverter.calcMediaTimeFromPresentationTime(availabilityEnd, representation);\n representation.segmentDuration = frag.d / fTimescale;\n }\n\n repeat = Math.ceil((repeatEndTime - scaledTime) / (frag.d / fTimescale)) - 1;\n }\n\n // if we have enough segments in the list, but we have not calculated the total number of the segments yet we\n // should continue the loop and calc the number. Once it is calculated, we can break the loop.\n if (hasEnoughSegments) {\n if (isAvailableSegmentNumberCalculated) break;\n availabilityIdx += repeat + 1;\n continue;\n }\n\n for (j = 0; j <= repeat; j++) {\n availabilityIdx++;\n\n if (calculatedRange) {\n if (availabilityIdx > endIdx) {\n hasEnoughSegments = true;\n if (isAvailableSegmentNumberCalculated) break;\n continue;\n }\n\n if (availabilityIdx >= startIdx) {\n segments.push(createSegment(frag));\n }\n } else {\n if (segments.length > maxSegmentsAhead) {\n hasEnoughSegments = true;\n if (isAvailableSegmentNumberCalculated) break;\n continue;\n }\n\n // In some cases when requiredMediaTime = actual end time of the last segment\n // it is possible that this time a bit exceeds the declared end time of the last segment.\n // in this case we still need to include the last segment in the segment list. to do this we\n // use a correction factor = 1.5. This number is used because the largest possible deviation is\n // is 50% of segment duration.\n if (isStartSegmentForRequestedTimeFound) {\n segments.push(createSegment(frag));\n } else if (scaledTime >= (requiredMediaTime - (frag.d / fTimescale) * 1.5)) {\n isStartSegmentForRequestedTimeFound = true;\n segments.push(createSegment(frag));\n }\n }\n\n time += frag.d;\n scaledTime = time / fTimescale;\n }\n }\n\n if (!isAvailableSegmentNumberCalculated) {\n representation.availableSegmentsNumber = availabilityIdx + 1;\n }\n\n return segments;\n }\n\n function getSegmentsFromTemplate(representation) {\n var template = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].\n AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].SegmentTemplate;\n var duration = representation.segmentDuration;\n var availabilityWindow = representation.segmentAvailabilityRange;\n\n var segments = [];\n var url = null;\n var seg = null;\n\n var segmentRange,\n periodSegIdx,\n startIdx,\n endIdx,\n start;\n\n start = representation.startNumber;\n\n if (isNaN(duration) && !isDynamic) {\n segmentRange = {start: start, end: start};\n }\n else {\n segmentRange = decideSegmentListRangeForTemplate(representation);\n }\n\n startIdx = segmentRange.start;\n endIdx = segmentRange.end;\n\n for (periodSegIdx = startIdx; periodSegIdx <= endIdx; periodSegIdx++) {\n\n seg = getIndexBasedSegment(representation, periodSegIdx);\n seg.replacementTime = (start + periodSegIdx - 1) * representation.segmentDuration;\n url = template.media;\n url = replaceTokenForTemplate(url, 'Number', seg.replacementNumber);\n url = replaceTokenForTemplate(url, 'Time', seg.replacementTime);\n seg.media = url;\n\n segments.push(seg);\n seg = null;\n }\n\n if (isNaN(duration)) {\n representation.availableSegmentsNumber = 1;\n }\n else {\n representation.availableSegmentsNumber = Math.ceil((availabilityWindow.end - availabilityWindow.start) / duration);\n }\n\n return segments;\n }\n\n function decideSegmentListRangeForTemplate(representation) {\n var duration = representation.segmentDuration;\n var minBufferTime = representation.adaptation.period.mpd.manifest.minBufferTime;\n var availabilityWindow = representation.segmentAvailabilityRange;\n var periodRelativeRange = {\n start: timelineConverter.calcPeriodRelativeTimeFromMpdRelativeTime(representation, availabilityWindow.start),\n end: timelineConverter.calcPeriodRelativeTimeFromMpdRelativeTime(representation, availabilityWindow.end)\n };\n var currentSegmentList = representation.segments;\n var availabilityLowerLimit = 2 * duration;\n var availabilityUpperLimit = Math.max(2 * minBufferTime, 10 * duration);\n\n var originAvailabilityTime = NaN;\n var originSegment = null;\n\n var start,\n end,\n range;\n\n if (!periodRelativeRange) {\n periodRelativeRange = timelineConverter.calcSegmentAvailabilityRange(representation, isDynamic);\n }\n\n periodRelativeRange.start = Math.max(periodRelativeRange.start, 0);\n\n if (isDynamic && !timelineConverter.isTimeSyncCompleted()) {\n start = Math.floor(periodRelativeRange.start / duration);\n end = Math.floor(periodRelativeRange.end / duration);\n range = {start: start, end: end};\n return range;\n }\n\n // if segments exist we should try to find the latest buffered time, which is the presentation time of the\n // segment for the current index\n if (currentSegmentList && currentSegmentList.length > 0) {\n originSegment = getSegmentByIndex(index, representation);\n originAvailabilityTime = originSegment ? timelineConverter.calcPeriodRelativeTimeFromMpdRelativeTime(representation, originSegment.presentationStartTime) :\n (index > 0 ? (index * duration) : timelineConverter.calcPeriodRelativeTimeFromMpdRelativeTime(representation, requestedTime || currentSegmentList[0].presentationStartTime));\n } else {\n // If no segments exist, but index > 0, it means that we switch to the other representation, so\n // we should proceed from this time.\n // Otherwise we should start from the beginning for static mpds or from the end (live edge) for dynamic mpds\n originAvailabilityTime = (index > 0) ? (index * duration) : (isDynamic ? periodRelativeRange.end : periodRelativeRange.start);\n }\n\n // segment list should not be out of the availability window range\n start = Math.floor(Math.max(originAvailabilityTime - availabilityLowerLimit, periodRelativeRange.start) / duration);\n end = Math.floor(Math.min(start + availabilityUpperLimit / duration, periodRelativeRange.end / duration));\n\n range = {start: start, end: end};\n\n return range;\n }\n\n function decideSegmentListRangeForTimeline(/*representation*/) {\n var availabilityLowerLimit = 2;\n var availabilityUpperLimit = 10;\n var firstIdx = 0;\n var lastIdx = Number.POSITIVE_INFINITY;\n\n var start,\n end,\n range;\n\n if (isDynamic && !timelineConverter.isTimeSyncCompleted()) {\n range = {start: firstIdx, end: lastIdx};\n return range;\n }\n\n if ((!isDynamic && requestedTime) || index < 0) return null;\n\n // segment list should not be out of the availability window range\n start = Math.max(index - availabilityLowerLimit, firstIdx);\n end = Math.min(index + availabilityUpperLimit, lastIdx);\n\n range = {start: start, end: end};\n\n return range;\n }\n\n function getTimeBasedSegment(representation, time, duration, fTimescale, url, range, index) {\n var scaledTime = time / fTimescale;\n var scaledDuration = Math.min(duration / fTimescale, representation.adaptation.period.mpd.maxSegmentDuration);\n\n var presentationStartTime,\n presentationEndTime,\n seg;\n\n presentationStartTime = timelineConverter.calcPresentationTimeFromMediaTime(scaledTime, representation);\n presentationEndTime = presentationStartTime + scaledDuration;\n\n seg = new Segment();\n\n seg.representation = representation;\n seg.duration = scaledDuration;\n seg.mediaStartTime = scaledTime;\n\n seg.presentationStartTime = presentationStartTime;\n\n // For SegmentTimeline every segment is available at loadedTime\n seg.availabilityStartTime = representation.adaptation.period.mpd.manifest.loadedTime;\n seg.availabilityEndTime = timelineConverter.calcAvailabilityEndTimeFromPresentationTime(presentationEndTime, representation.adaptation.period.mpd, isDynamic);\n\n // at this wall clock time, the video element currentTime should be seg.presentationStartTime\n seg.wallStartTime = timelineConverter.calcWallTimeForSegment(seg, isDynamic);\n\n seg.replacementTime = time;\n\n seg.replacementNumber = getNumberForSegment(seg, index);\n\n url = replaceTokenForTemplate(url, 'Number', seg.replacementNumber);\n url = replaceTokenForTemplate(url, 'Time', seg.replacementTime);\n seg.media = url;\n seg.mediaRange = range;\n seg.availabilityIdx = index;\n\n return seg;\n }\n\n function getSegmentsFromList(representation) {\n var list = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].\n AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].SegmentList;\n var baseURL = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].\n AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].BaseURL;\n var len = list.SegmentURL_asArray.length;\n\n var segments = [];\n\n var periodSegIdx,\n seg,\n s,\n range,\n startIdx,\n endIdx,\n start;\n\n start = representation.startNumber;\n\n range = decideSegmentListRangeForTemplate(representation);\n startIdx = Math.max(range.start, 0);\n endIdx = Math.min(range.end, list.SegmentURL_asArray.length - 1);\n\n for (periodSegIdx = startIdx; periodSegIdx <= endIdx; periodSegIdx++) {\n s = list.SegmentURL_asArray[periodSegIdx];\n\n seg = getIndexBasedSegment(representation, periodSegIdx);\n seg.replacementTime = (start + periodSegIdx - 1) * representation.segmentDuration;\n seg.media = s.media ? s.media : baseURL;\n seg.mediaRange = s.mediaRange;\n seg.index = s.index;\n seg.indexRange = s.indexRange;\n\n segments.push(seg);\n seg = null;\n }\n\n representation.availableSegmentsNumber = len;\n\n return segments;\n }\n\n function getSegments(representation) {\n var segments;\n var type = representation.segmentInfoType;\n\n // Already figure out the segments.\n if (type === 'SegmentBase' || type === 'BaseURL' || !isSegmentListUpdateRequired(representation)) {\n segments = representation.segments;\n } else {\n if (type === 'SegmentTimeline') {\n segments = getSegmentsFromTimeline(representation);\n } else if (type === 'SegmentTemplate') {\n segments = getSegmentsFromTemplate(representation);\n } else if (type === 'SegmentList') {\n segments = getSegmentsFromList(representation);\n }\n\n onSegmentListUpdated(representation, segments);\n }\n\n return segments;\n }\n\n function onSegmentListUpdated(representation, segments) {\n var lastIdx,\n liveEdge,\n metrics,\n lastSegment;\n\n representation.segments = segments;\n lastIdx = segments.length - 1;\n if (isDynamic && isNaN(timelineConverter.getExpectedLiveEdge())) {\n lastSegment = segments[lastIdx];\n liveEdge = lastSegment.presentationStartTime;\n metrics = metricsModel.getMetricsFor('stream');\n // the last segment is supposed to be a live edge\n timelineConverter.setExpectedLiveEdge(liveEdge);\n metricsModel.updateManifestUpdateInfo(dashMetrics.getCurrentManifestUpdate(metrics), {presentationStartTime: liveEdge});\n }\n }\n\n function updateSegmentList(representation) {\n\n if (!representation) {\n throw new Error('no representation');\n }\n\n representation.segments = null;\n\n getSegments(representation);\n\n return representation;\n }\n\n function updateRepresentation(representation, keepIdx) {\n var hasInitialization = representation.initialization;\n var hasSegments = representation.segmentInfoType !== 'BaseURL' && representation.segmentInfoType !== 'SegmentBase';\n var error;\n\n if (!representation.segmentDuration && !representation.segments) {\n updateSegmentList(representation);\n }\n\n representation.segmentAvailabilityRange = null;\n representation.segmentAvailabilityRange = timelineConverter.calcSegmentAvailabilityRange(representation, isDynamic);\n\n if ((representation.segmentAvailabilityRange.end < representation.segmentAvailabilityRange.start) && !representation.useCalculatedLiveEdgeTime) {\n error = new Error(SEGMENTS_UNAVAILABLE_ERROR_CODE, 'no segments are available yet', {availabilityDelay: representation.segmentAvailabilityRange.start - representation.segmentAvailabilityRange.end});\n eventBus.trigger(Events.REPRESENTATION_UPDATED, {sender: this, representation: representation, error: error});\n return;\n }\n\n if (!keepIdx) index = -1;\n\n if (representation.segmentDuration) {\n updateSegmentList(representation);\n }\n\n if (!hasInitialization) {\n segmentBaseLoader.loadInitialization(representation);\n }\n\n if (!hasSegments) {\n segmentBaseLoader.loadSegments(representation, type, representation.indexRange);\n }\n\n if (hasInitialization && hasSegments) {\n eventBus.trigger(Events.REPRESENTATION_UPDATED, {sender: this, representation: representation});\n }\n }\n\n function getIndexForSegments(time, representation, timeThreshold) {\n var segments = representation.segments;\n var ln = segments ? segments.length : null;\n\n var idx = -1;\n var epsilon,\n frag,\n ft,\n fd,\n i;\n\n if (segments && ln > 0) {\n for (i = 0; i < ln; i++) {\n frag = segments[i];\n ft = frag.presentationStartTime;\n fd = frag.duration;\n epsilon = (timeThreshold === undefined || timeThreshold === null) ? fd / 2 : timeThreshold;\n if ((time + epsilon) >= ft &&\n (time - epsilon) < (ft + fd)) {\n idx = frag.availabilityIdx;\n break;\n }\n }\n }\n\n return idx;\n }\n\n function getSegmentByIndex(index, representation) {\n if (!representation || !representation.segments) return null;\n\n var ln = representation.segments.length;\n var seg,\n i;\n\n if (index < ln) {\n seg = representation.segments[index];\n if (seg && seg.availabilityIdx === index) {\n return seg;\n }\n }\n\n for (i = 0; i < ln; i++) {\n seg = representation.segments[i];\n\n if (seg && seg.availabilityIdx === index) {\n return seg;\n }\n }\n\n return null;\n }\n\n function isSegmentListUpdateRequired(representation) {\n var segments = representation.segments;\n var updateRequired = false;\n\n var upperIdx,\n lowerIdx;\n\n if (!segments || segments.length === 0) {\n updateRequired = true;\n } else {\n lowerIdx = segments[0].availabilityIdx;\n upperIdx = segments[segments.length - 1].availabilityIdx;\n updateRequired = (index < lowerIdx) || (index > upperIdx);\n }\n\n return updateRequired;\n }\n\n function getRequestForSegment(segment) {\n if (segment === null || segment === undefined) {\n return null;\n }\n\n var request = new FragmentRequest();\n var representation = segment.representation;\n var bandwidth = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].\n AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].bandwidth;\n var url;\n\n url = getRequestUrl(segment.media, representation);\n url = replaceTokenForTemplate(url, 'Number', segment.replacementNumber);\n url = replaceTokenForTemplate(url, 'Time', segment.replacementTime);\n url = replaceTokenForTemplate(url, 'Bandwidth', bandwidth);\n url = replaceIDForTemplate(url, representation.id);\n url = unescapeDollarsInTemplate(url);\n\n request.mediaType = type;\n request.type = HTTPRequest.MEDIA_SEGMENT_TYPE;\n request.url = url;\n request.range = segment.mediaRange;\n request.startTime = segment.presentationStartTime;\n request.duration = segment.duration;\n request.timescale = representation.timescale;\n request.availabilityStartTime = segment.availabilityStartTime;\n request.availabilityEndTime = segment.availabilityEndTime;\n request.wallStartTime = segment.wallStartTime;\n request.quality = representation.index;\n request.index = segment.availabilityIdx;\n request.mediaInfo = streamProcessor.getMediaInfo();\n\n return request;\n }\n\n function getSegmentRequestForTime(representation, time, options) {\n var request,\n segment,\n finished;\n\n var idx = index;\n\n var keepIdx = options ? options.keepIdx : false;\n var timeThreshold = options ? options.timeThreshold : null;\n var ignoreIsFinished = (options && options.ignoreIsFinished) ? true : false;\n\n if (!representation) {\n return null;\n }\n\n if (requestedTime !== time) { // When playing at live edge with 0 delay we may loop back with same time and index until it is available. Reduces verboseness of logs.\n requestedTime = time;\n log('Getting the request for ' + type + ' time : ' + time);\n }\n\n index = getIndexForSegments(time, representation, timeThreshold);\n //Index may be -1 if getSegments needs to update. So after getSegments is called and updated then try to get index again.\n getSegments(representation);\n if (index < 0) {\n index = getIndexForSegments(time, representation, timeThreshold);\n }\n\n if (index > 0) {\n log('Index for ' + type + ' time ' + time + ' is ' + index );\n }\n\n finished = !ignoreIsFinished ? isMediaFinished(representation) : false;\n if (finished) {\n request = new FragmentRequest();\n request.action = FragmentRequest.ACTION_COMPLETE;\n request.index = index;\n request.mediaType = type;\n request.mediaInfo = streamProcessor.getMediaInfo();\n log('Signal complete.', request);\n\n } else {\n segment = getSegmentByIndex(index, representation);\n request = getRequestForSegment(segment);\n }\n\n if (keepIdx && idx >= 0 && representation.segmentInfoType !== 'SegmentTimeline') {\n index = idx;\n }\n\n return request;\n }\n\n function generateSegmentRequestForTime(representation, time) {\n var step = (representation.segmentAvailabilityRange.end - representation.segmentAvailabilityRange.start) / 2;\n\n representation.segments = null;\n representation.segmentAvailabilityRange = {start: time - step, end: time + step};\n return getSegmentRequestForTime(representation, time, {keepIdx: false, ignoreIsFinished: true});\n }\n\n function getNextSegmentRequest(representation) {\n var request,\n segment,\n finished;\n\n if (!representation || index === -1) {\n return null;\n }\n\n requestedTime = null;\n index++;\n\n log('Getting the next request at index: ' + index);\n\n finished = isMediaFinished(representation);\n if (finished) {\n request = new FragmentRequest();\n request.action = FragmentRequest.ACTION_COMPLETE;\n request.index = index;\n request.mediaType = type;\n request.mediaInfo = streamProcessor.getMediaInfo();\n log('Signal complete.');\n } else {\n getSegments(representation);\n segment = getSegmentByIndex(index, representation);\n request = getRequestForSegment(segment);\n if (!segment && isDynamic) {\n /*\n Sometimes when playing dynamic streams with 0 fragment delay at live edge we ask for\n an index before it is available so we decrement index back and send null request\n which triggers the validate loop to rerun and the next time the segment should be\n available.\n */\n index-- ;\n }\n }\n\n return request;\n }\n\n function onInitializationLoaded(e) {\n var representation = e.representation;\n //log(\"Got an initialization.\");\n if (!representation.segments) return;\n\n eventBus.trigger(Events.REPRESENTATION_UPDATED, {sender: this, representation: representation});\n }\n\n function onSegmentsLoaded(e) {\n if (e.error || (type !== e.mediaType)) return;\n\n var fragments = e.segments;\n var representation = e.representation;\n var segments = [];\n var count = 0;\n\n var i,\n len,\n s,\n seg;\n\n for (i = 0, len = fragments.length; i < len; i++) {\n s = fragments[i];\n\n seg = getTimeBasedSegment(\n representation,\n s.startTime,\n s.duration,\n s.timescale,\n s.media,\n s.mediaRange,\n count);\n\n segments.push(seg);\n seg = null;\n count++;\n }\n\n representation.segmentAvailabilityRange = {start: segments[0].presentationStartTime, end: segments[len - 1].presentationStartTime};\n representation.availableSegmentsNumber = len;\n\n onSegmentListUpdated(representation, segments);\n\n if (!representation.initialization) return;\n\n eventBus.trigger(Events.REPRESENTATION_UPDATED, {sender: this, representation: representation});\n }\n\n instance = {\n initialize: initialize,\n getStreamProcessor: getStreamProcessor,\n getInitRequest: getInitRequest,\n getSegmentRequestForTime: getSegmentRequestForTime,\n getNextSegmentRequest: getNextSegmentRequest,\n generateSegmentRequestForTime: generateSegmentRequestForTime,\n updateRepresentation: updateRepresentation,\n setCurrentTime: setCurrentTime,\n getCurrentTime: getCurrentTime,\n getCurrentIndex: getCurrentIndex,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nDashHandler.__dashjs_factory_name = 'DashHandler';\nlet factory = FactoryMaker.getClassFactory(DashHandler);\nfactory.SEGMENTS_UNAVAILABLE_ERROR_CODE = SEGMENTS_UNAVAILABLE_ERROR_CODE;\nexport default factory;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport HTTPRequest from '../streaming/vo/metrics/HTTPRequest.js';\nimport AbrController from '../streaming/controllers/AbrController.js';\nimport ManifestModel from '../streaming/models/ManifestModel.js';\nimport DashManifestModel from './models/DashManifestModel.js';\nimport FactoryMaker from '../core/FactoryMaker.js';\n\n/**\n * @Module DashMetrics\n */\nfunction DashMetrics() {\n\n let instance;\n let context = this.context;\n let manifestModel = ManifestModel(context).getInstance();//TODO Need to pass this in not bake in\n\n function getBandwidthForRepresentation(representationId, periodId) {\n var representation;\n var manifest = manifestModel.getValue();\n var period = manifest.Period_asArray[periodId];\n\n representation = findRepresentation(period, representationId);\n\n if (representation === null) {\n return null;\n }\n\n return representation.bandwidth;\n }\n\n\n /**\n *\n * @param representationId\n * @param periodIdx\n * @returns {*}\n */\n function getIndexForRepresentation(representationId, periodIdx) {\n var representationIndex;\n var manifest = manifestModel.getValue();\n var period = manifest.Period_asArray[periodIdx];\n\n representationIndex = findRepresentationIndex(period, representationId);\n return representationIndex;\n }\n\n /**\n * This method returns the current max index based on what is defined in the MPD.\n *\n * @param bufferType - String 'audio' or 'video',\n * @param periodIdx - Make sure this is the period index not id\n * @return int\n * @memberof module:DashMetrics\n * @instance\n */\n function getMaxIndexForBufferType(bufferType, periodIdx) {\n var maxIndex;\n var manifest = manifestModel.getValue();\n var period = manifest.Period_asArray[periodIdx];\n\n maxIndex = findMaxBufferIndex(period, bufferType);\n return maxIndex;\n }\n\n /**\n * This method returns the current max index correlated to the max allowed bitrate\n * explicitly set via the MediaPlayer's API setMaxAllowedBitrateFor.\n *\n * @param bufferType - String 'audio' or 'video',\n * @param periodId - Make sure this is the period id not index.\n * @return int\n * @see {@link module:MediaPlayer#setMaxAllowedBitrateFor setMaxAllowedBitrateFor()}\n * @see {@link DashMetrics#getMaxIndexForBufferType getMaxIndexForBufferType()}\n * @memberof module:DashMetrics\n * @instance\n */\n function getMaxAllowedIndexForBufferType(bufferType, periodId) {\n var idx = 0;\n var abrController = AbrController(context).getInstance();\n\n if (abrController) {\n idx = abrController.getTopQualityIndexFor(bufferType, periodId);\n }\n\n return idx;\n }\n\n /**\n * @param metrics\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getCurrentRepresentationSwitch(metrics) {\n if (metrics === null) {\n return null;\n }\n\n var repSwitch = metrics.RepSwitchList;\n var repSwitchLength,\n repSwitchLastIndex,\n currentRepSwitch;\n\n if (repSwitch === null || repSwitch.length <= 0) {\n return null;\n }\n\n repSwitchLength = repSwitch.length;\n repSwitchLastIndex = repSwitchLength - 1;\n\n currentRepSwitch = repSwitch[repSwitchLastIndex];\n return currentRepSwitch;\n }\n\n /**\n * @param metrics\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getLatestBufferLevelVO(metrics) {\n if (metrics === null) {\n return null;\n }\n\n var bufferLevel = metrics.BufferLevel;\n if (bufferLevel === null || bufferLevel.length <= 0) {\n return null;\n }\n\n return bufferLevel[bufferLevel.length - 1];\n }\n\n /**\n * @param metrics\n * @returns {number}\n * @memberof module:DashMetrics\n * @instance\n */\n function getCurrentBufferLevel(metrics) {\n if (metrics === null) {\n return 0;\n }\n\n var bufferLevel = metrics.BufferLevel;\n if (bufferLevel === null || bufferLevel.length <= 0) {\n return 0;\n }\n\n return bufferLevel[bufferLevel.length - 1].level / 1000;\n }\n\n /**\n * @param metrics\n * @returns {null|*|vo}\n * @memberof module:DashMetrics\n * @instance\n */\n function getRequestsQueue(metrics) {\n return metrics.RequestsQueue;\n }\n\n /**\n * @param metrics\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getCurrentHttpRequest(metrics) {\n if (metrics === null) {\n return null;\n }\n\n var httpList = metrics.HttpList;\n var currentHttpList = null;\n\n var httpListLength,\n httpListLastIndex;\n\n if (httpList === null || httpList.length <= 0) {\n return null;\n }\n\n httpListLength = httpList.length;\n httpListLastIndex = httpListLength - 1;\n\n while (httpListLastIndex >= 0) {\n if (httpList[httpListLastIndex].responsecode) {\n currentHttpList = httpList[httpListLastIndex];\n break;\n }\n httpListLastIndex--;\n }\n return currentHttpList;\n }\n\n /**\n * @param metrics\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getHttpRequests(metrics) {\n if (metrics === null) {\n return [];\n }\n\n return !!metrics.HttpList ? metrics.HttpList : [];\n }\n\n /**\n * @param metrics\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getCurrentDroppedFrames(metrics) {\n if (metrics === null) { return null; }\n\n var droppedFrames = metrics.DroppedFrames;\n var droppedFramesLength,\n droppedFramesLastIndex,\n currentDroppedFrames;\n\n if (droppedFrames === null || droppedFrames.length <= 0) {\n return null;\n }\n\n droppedFramesLength = droppedFrames.length;\n droppedFramesLastIndex = droppedFramesLength - 1;\n currentDroppedFrames = droppedFrames[droppedFramesLastIndex];\n\n return currentDroppedFrames;\n }\n\n /**\n * @param metrics\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getCurrentSchedulingInfo(metrics) {\n if (metrics === null) return null;\n\n var schedulingInfo = metrics.SchedulingInfo;\n var ln,\n lastIdx,\n currentSchedulingInfo;\n\n if (schedulingInfo === null || schedulingInfo.length <= 0) {\n return null;\n }\n\n ln = schedulingInfo.length;\n lastIdx = ln - 1;\n\n currentSchedulingInfo = schedulingInfo[lastIdx];\n\n return currentSchedulingInfo;\n }\n\n /**\n * @param metrics\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getCurrentManifestUpdate(metrics) {\n if (metrics === null) return null;\n\n var manifestUpdate = metrics.ManifestUpdate;\n var ln,\n lastIdx,\n currentManifestUpdate;\n\n if (manifestUpdate === null || manifestUpdate.length <= 0) {\n return null;\n }\n\n ln = manifestUpdate.length;\n lastIdx = ln - 1;\n\n currentManifestUpdate = manifestUpdate[lastIdx];\n\n return currentManifestUpdate;\n }\n\n /**\n * @param metrics\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getCurrentDVRInfo(metrics) {\n\n if (metrics === null) {\n return null;\n }\n\n var dvrInfo = metrics.DVRInfo;\n var dvrInfoLastIndex,\n currentDVRInfo;\n\n if (dvrInfo === null || dvrInfo.length <= 0) {\n return null;\n }\n\n dvrInfoLastIndex = dvrInfo.length - 1;\n currentDVRInfo = dvrInfo[dvrInfoLastIndex];\n\n return currentDVRInfo;\n }\n\n /**\n * @param metrics\n * @param id\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getLatestMPDRequestHeaderValueByID(metrics, id) {\n var headers = {};\n var httpRequestList,\n httpRequest,\n i;\n\n if (metrics === null) {\n return null;\n }\n\n httpRequestList = getHttpRequests(metrics);\n\n for (i = httpRequestList.length - 1; i >= 0; i--) {\n httpRequest = httpRequestList[i];\n\n if (httpRequest.type === HTTPRequest.MPD_TYPE) {\n headers = parseResponseHeaders(httpRequest._responseHeaders);\n break;\n }\n }\n\n return headers[id] === undefined ? null : headers[id];\n }\n\n /**\n * @param metrics\n * @param id\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getLatestFragmentRequestHeaderValueByID(metrics, id) {\n\n if (metrics === null) return null;\n\n var httpRequest = getCurrentHttpRequest(metrics);\n var headers;\n\n if (httpRequest === null || httpRequest._responseHeaders === null) return null;\n\n headers = parseResponseHeaders(httpRequest._responseHeaders);\n return headers[id] === undefined ? null : headers[id];\n }\n\n function parseResponseHeaders(headerStr) {\n var headers = {};\n if (!headerStr) {\n return headers;\n }\n var headerPairs = headerStr.split('\\u000d\\u000a');\n for (var i = 0, ilen = headerPairs.length; i < ilen; i++) {\n var headerPair = headerPairs[i];\n var index = headerPair.indexOf('\\u003a\\u0020');\n if (index > 0) {\n headers[headerPair.substring(0, index)] = headerPair.substring(index + 2);\n }\n }\n return headers;\n }\n\n function findRepresentationIndex(period, representationId) {\n var adaptationSet,\n adaptationSetArray,\n representation,\n representationArray,\n adaptationSetArrayIndex,\n representationArrayIndex;\n\n adaptationSetArray = period.AdaptationSet_asArray;\n for (adaptationSetArrayIndex = 0; adaptationSetArrayIndex < adaptationSetArray.length; adaptationSetArrayIndex = adaptationSetArrayIndex + 1) {\n adaptationSet = adaptationSetArray[adaptationSetArrayIndex];\n representationArray = adaptationSet.Representation_asArray;\n for (representationArrayIndex = 0; representationArrayIndex < representationArray.length; representationArrayIndex = representationArrayIndex + 1) {\n representation = representationArray[representationArrayIndex];\n if (representationId === representation.id) {\n return representationArrayIndex;\n }\n }\n }\n\n return -1;\n }\n\n function findRepresentation(period, representationId) {\n var adaptationSet,\n adaptationSetArray,\n representation,\n representationArray,\n adaptationSetArrayIndex,\n representationArrayIndex;\n\n adaptationSetArray = period.AdaptationSet_asArray;\n for (adaptationSetArrayIndex = 0; adaptationSetArrayIndex < adaptationSetArray.length; adaptationSetArrayIndex = adaptationSetArrayIndex + 1) {\n adaptationSet = adaptationSetArray[adaptationSetArrayIndex];\n representationArray = adaptationSet.Representation_asArray;\n for (representationArrayIndex = 0; representationArrayIndex < representationArray.length; representationArrayIndex = representationArrayIndex + 1) {\n representation = representationArray[representationArrayIndex];\n if (representationId === representation.id) {\n return representation;\n }\n }\n }\n\n return null;\n }\n\n function adaptationIsType(adaptation, bufferType) {\n return DashManifestModel(context).getInstance().getIsTypeOf(adaptation, bufferType);\n }\n\n function findMaxBufferIndex(period, bufferType) {\n var adaptationSet,\n adaptationSetArray,\n representationArray,\n adaptationSetArrayIndex;\n\n if (!period || !bufferType) return -1;\n\n adaptationSetArray = period.AdaptationSet_asArray;\n for (adaptationSetArrayIndex = 0; adaptationSetArrayIndex < adaptationSetArray.length; adaptationSetArrayIndex = adaptationSetArrayIndex + 1) {\n adaptationSet = adaptationSetArray[adaptationSetArrayIndex];\n representationArray = adaptationSet.Representation_asArray;\n if (adaptationIsType(adaptationSet, bufferType)) {\n return representationArray.length;\n }\n }\n\n return -1;\n }\n\n instance = {\n getBandwidthForRepresentation: getBandwidthForRepresentation,\n getIndexForRepresentation: getIndexForRepresentation,\n getMaxIndexForBufferType: getMaxIndexForBufferType,\n getMaxAllowedIndexForBufferType: getMaxAllowedIndexForBufferType,\n getCurrentRepresentationSwitch: getCurrentRepresentationSwitch,\n getLatestBufferLevelVO: getLatestBufferLevelVO,\n getCurrentBufferLevel: getCurrentBufferLevel,\n getCurrentHttpRequest: getCurrentHttpRequest,\n getHttpRequests: getHttpRequests,\n getCurrentDroppedFrames: getCurrentDroppedFrames,\n getCurrentSchedulingInfo: getCurrentSchedulingInfo,\n getCurrentDVRInfo: getCurrentDVRInfo,\n getCurrentManifestUpdate: getCurrentManifestUpdate,\n getLatestFragmentRequestHeaderValueByID: getLatestFragmentRequestHeaderValueByID,\n getLatestMPDRequestHeaderValueByID: getLatestMPDRequestHeaderValueByID,\n getRequestsQueue: getRequestsQueue\n };\n\n return instance;\n}\n\nDashMetrics.__dashjs_factory_name = 'DashMetrics';\nexport default FactoryMaker.getSingletonFactory(DashMetrics);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport ErrorHandler from '../streaming/utils/ErrorHandler.js';\nimport FactoryMaker from '../core/FactoryMaker.js';\nimport Debug from '../core/Debug.js';\nimport ObjectIron from '../../externals/objectiron.js';\nimport X2JS from '../../externals/xml2json.js';\n\nfunction DashParser(/*config*/) {\n\n const SECONDS_IN_YEAR = 365 * 24 * 60 * 60;\n const SECONDS_IN_MONTH = 30 * 24 * 60 * 60;\n const SECONDS_IN_DAY = 24 * 60 * 60;\n const SECONDS_IN_HOUR = 60 * 60;\n const SECONDS_IN_MIN = 60;\n const MINUTES_IN_HOUR = 60;\n const MILLISECONDS_IN_SECONDS = 1000;\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n\n let instance,\n durationRegex,\n datetimeRegex,\n numericRegex,\n httpOrHttpsRegex,\n originRegex,\n matchers;\n\n function setup() {\n\n durationRegex = /^([-])?P(([\\d.]*)Y)?(([\\d.]*)M)?(([\\d.]*)D)?T?(([\\d.]*)H)?(([\\d.]*)M)?(([\\d.]*)S)?/;\n datetimeRegex = /^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2})(?::([0-9]*)(\\.[0-9]*)?)?(?:([+-])([0-9]{2})([0-9]{2}))?/;\n numericRegex = /^[-+]?[0-9]+[.]?[0-9]*([eE][-+]?[0-9]+)?$/;\n httpOrHttpsRegex = /^https?:\\/\\//i;\n originRegex = /^(https?:\\/\\/[^\\/]+)\\/?/i;\n //TODO-Refactor clean this up and move into its own util or somewhere else.\n matchers = [\n {\n type: 'duration',\n test: function (attr) {\n\n var attributeList = [\n 'minBufferTime', 'mediaPresentationDuration',\n 'minimumUpdatePeriod', 'timeShiftBufferDepth', 'maxSegmentDuration',\n 'maxSubsegmentDuration', 'suggestedPresentationDelay', 'start',\n 'starttime', 'duration'\n ];\n var len = attributeList.length;\n\n for (var i = 0; i < len; i++) {\n if (attr.nodeName === attributeList[i]) {\n return durationRegex.test(attr.value);\n }\n }\n return false;\n },\n converter: function (str) {\n //str = \"P10Y10M10DT10H10M10.1S\";\n var match = durationRegex.exec(str);\n var result = (parseFloat(match[2] || 0) * SECONDS_IN_YEAR +\n parseFloat(match[4] || 0) * SECONDS_IN_MONTH +\n parseFloat(match[6] || 0) * SECONDS_IN_DAY +\n parseFloat(match[8] || 0) * SECONDS_IN_HOUR +\n parseFloat(match[10] || 0) * SECONDS_IN_MIN +\n parseFloat(match[12] || 0));\n\n if (match[1] !== undefined) {\n result = -result;\n }\n\n return result;\n }\n },\n {\n type: 'datetime',\n test: function (attr) {\n return datetimeRegex.test(attr.value);\n },\n converter: function (str) {\n var match = datetimeRegex.exec(str);\n var utcDate;\n // If the string does not contain a timezone offset different browsers can interpret it either\n // as UTC or as a local time so we have to parse the string manually to normalize the given date value for\n // all browsers\n utcDate = Date.UTC(\n parseInt(match[1], 10),\n parseInt(match[2], 10) - 1, // months start from zero\n parseInt(match[3], 10),\n parseInt(match[4], 10),\n parseInt(match[5], 10),\n (match[6] && parseInt(match[6], 10) || 0),\n (match[7] && parseFloat(match[7]) * MILLISECONDS_IN_SECONDS) || 0);\n // If the date has timezone offset take it into account as well\n if (match[9] && match[10]) {\n var timezoneOffset = parseInt(match[9], 10) * MINUTES_IN_HOUR + parseInt(match[10], 10);\n utcDate += (match[8] === '+' ? -1 : +1) * timezoneOffset * SECONDS_IN_MIN * MILLISECONDS_IN_SECONDS;\n }\n\n return new Date(utcDate);\n }\n },\n {\n type: 'numeric',\n test: function (attr) {\n return numericRegex.test(attr.value);\n },\n converter: function (str) {\n return parseFloat(str);\n }\n }\n ];\n }\n\n\n\n function getCommonValuesMap() {\n var adaptationSet,\n representation,\n subRepresentation,\n common;\n\n common = [\n {\n name: 'profiles',\n merge: false\n },\n {\n name: 'width',\n merge: false\n },\n {\n name: 'height',\n merge: false\n },\n {\n name: 'sar',\n merge: false\n },\n {\n name: 'frameRate',\n merge: false\n },\n {\n name: 'audioSamplingRate',\n merge: false\n },\n {\n name: 'mimeType',\n merge: false\n },\n {\n name: 'segmentProfiles',\n merge: false\n },\n {\n name: 'codecs',\n merge: false\n },\n {\n name: 'maximumSAPPeriod',\n merge: false\n },\n {\n name: 'startsWithSap',\n merge: false\n },\n {\n name: 'maxPlayoutRate',\n merge: false\n },\n {\n name: 'codingDependency',\n merge: false\n },\n {\n name: 'scanType',\n merge: false\n },\n {\n name: 'FramePacking',\n merge: true\n },\n {\n name: 'AudioChannelConfiguration',\n merge: true\n },\n {\n name: 'ContentProtection',\n merge: true\n }\n ];\n\n adaptationSet = {};\n adaptationSet.name = 'AdaptationSet';\n adaptationSet.isRoot = false;\n adaptationSet.isArray = true;\n adaptationSet.parent = null;\n adaptationSet.children = [];\n adaptationSet.properties = common;\n\n representation = {};\n representation.name = 'Representation';\n representation.isRoot = false;\n representation.isArray = true;\n representation.parent = adaptationSet;\n representation.children = [];\n representation.properties = common;\n adaptationSet.children.push(representation);\n\n subRepresentation = {};\n subRepresentation.name = 'SubRepresentation';\n subRepresentation.isRoot = false;\n subRepresentation.isArray = true;\n subRepresentation.parent = representation;\n subRepresentation.children = [];\n subRepresentation.properties = common;\n representation.children.push(subRepresentation);\n\n return adaptationSet;\n }\n\n function getSegmentValuesMap() {\n var period,\n adaptationSet,\n representation,\n common;\n\n common = [\n {\n name: 'SegmentBase',\n merge: true\n },\n {\n name: 'SegmentTemplate',\n merge: true\n },\n {\n name: 'SegmentList',\n merge: true\n }\n ];\n\n period = {};\n period.name = 'Period';\n period.isRoot = false;\n period.isArray = true;\n period.parent = null;\n period.children = [];\n period.properties = common;\n\n adaptationSet = {};\n adaptationSet.name = 'AdaptationSet';\n adaptationSet.isRoot = false;\n adaptationSet.isArray = true;\n adaptationSet.parent = period;\n adaptationSet.children = [];\n adaptationSet.properties = common;\n period.children.push(adaptationSet);\n\n representation = {};\n representation.name = 'Representation';\n representation.isRoot = false;\n representation.isArray = true;\n representation.parent = adaptationSet;\n representation.children = [];\n representation.properties = common;\n adaptationSet.children.push(representation);\n\n return period;\n }\n\n function getBaseUrlValuesMap() {\n var mpd,\n period,\n adaptationSet,\n representation,\n common;\n\n common = [\n {\n name: 'BaseURL',\n merge: true,\n mergeFunction: function (parentValue, childValue) {\n var mergedValue,\n origin;\n\n // child is absolute, don't merge\n if (httpOrHttpsRegex.test(childValue)) {\n mergedValue = childValue;\n } else if (childValue.charAt(0) === '/' && originRegex.test(parentValue)) {\n origin = parentValue.match(originRegex);\n mergedValue = origin[1] + childValue;\n } else {\n mergedValue = parentValue + childValue;\n }\n\n return mergedValue;\n }\n }\n ];\n\n mpd = {};\n mpd.name = 'mpd';\n mpd.isRoot = true;\n mpd.isArray = true;\n mpd.parent = null;\n mpd.children = [];\n mpd.properties = common;\n\n period = {};\n period.name = 'Period';\n period.isRoot = false;\n period.isArray = true;\n period.parent = null;\n period.children = [];\n period.properties = common;\n mpd.children.push(period);\n\n adaptationSet = {};\n adaptationSet.name = 'AdaptationSet';\n adaptationSet.isRoot = false;\n adaptationSet.isArray = true;\n adaptationSet.parent = period;\n adaptationSet.children = [];\n adaptationSet.properties = common;\n period.children.push(adaptationSet);\n\n representation = {};\n representation.name = 'Representation';\n representation.isRoot = false;\n representation.isArray = true;\n representation.parent = adaptationSet;\n representation.children = [];\n representation.properties = common;\n adaptationSet.children.push(representation);\n\n return mpd;\n }\n\n function getDashMap() {\n var result = [];\n\n result.push(getCommonValuesMap());\n result.push(getSegmentValuesMap());\n result.push(getBaseUrlValuesMap());\n\n return result;\n }\n\n function parse(data, baseUrl, xlinkController) {\n\n var converter = new X2JS(matchers, '', true);\n var iron = new ObjectIron(getDashMap());\n var start = new Date();\n\n var manifest;\n var json = null;\n var ironed = null;\n\n try {\n //log(\"Converting from XML.\");\n manifest = converter.xml_str2json(data);\n\n if (!manifest) {\n throw 'parser error';\n }\n\n json = new Date();\n\n if (!manifest.hasOwnProperty('BaseURL')) {\n //log(\"Setting baseURL: \" + baseUrl);\n manifest.BaseURL = baseUrl;\n } else {\n // Setting manifest's BaseURL to the first BaseURL\n manifest.BaseURL = manifest.BaseURL_asArray[0];\n\n if (manifest.BaseURL.toString().indexOf('http') !== 0) {\n manifest.BaseURL = baseUrl + manifest.BaseURL;\n }\n }\n\n if (manifest.hasOwnProperty('Location')) {\n // for now, do not support multiple Locations -\n // just set Location to the first Location.\n manifest.Location = manifest.Location_asArray[0];\n }\n\n //log(\"Flatten manifest properties.\");\n iron.run(manifest);\n ironed = new Date();\n\n xlinkController.setMatchers(matchers);\n xlinkController.setIron(iron);\n\n log('Parsing complete: ( xml2json: ' + (json.getTime() - start.getTime()) + 'ms, objectiron: ' + (ironed.getTime() - json.getTime()) + 'ms, total: ' + ((ironed.getTime() - start.getTime()) / 1000) + 's)');\n } catch (err) {\n ErrorHandler(context).getInstance().manifestError('parsing the manifest failed', 'parse', data);\n return null;\n }\n return manifest;\n }\n\n instance = {\n parse: parse\n };\n\n setup();\n return instance;\n}\n\nDashParser.__dashjs_factory_name = 'DashParser';\nexport default FactoryMaker.getClassFactory(DashParser);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport RequestModifier from '../streaming/utils/RequestModifier.js';\nimport Segment from './vo/Segment.js';\nimport Error from '../streaming/vo/Error.js';\nimport ErrorHandler from '../streaming/utils/ErrorHandler.js';\nimport Events from '../core/events/Events.js';\nimport EventBus from '../core/EventBus.js';\nimport BoxParser from '../streaming/utils/BoxParser.js';\nimport FactoryMaker from '../core/FactoryMaker.js';\nimport Debug from '../core/Debug.js';\n\nfunction SegmentBaseLoader() {\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n errHandler,\n boxParser,\n requestModifier;\n\n function initialize() {\n errHandler = ErrorHandler(context).getInstance();\n boxParser = BoxParser(context).getInstance();\n requestModifier = RequestModifier(context).getInstance();\n }\n\n function loadInitialization(representation, loadingInfo) {\n var needFailureReport = true;\n var initRange = null;\n var isoFile = null;\n var request = new XMLHttpRequest();\n var media = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].\n AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].BaseURL;\n var info = loadingInfo || {\n url: media,\n range: {\n start: 0,\n end: 1500\n },\n searching: false,\n bytesLoaded: 0,\n bytesToLoad: 1500,\n request: request\n };\n\n log('Start searching for initialization.');\n\n request.onload = function () {\n if (request.status < 200 || request.status > 299) return;\n\n needFailureReport = false;\n\n info.bytesLoaded = info.range.end;\n isoFile = boxParser.parse(request.response);\n initRange = findInitRange(isoFile);\n\n if (initRange) {\n representation.range = initRange;\n representation.initialization = media;\n eventBus.trigger(Events.INITIALIZATION_LOADED, {representation: representation});\n } else {\n info.range.end = info.bytesLoaded + info.bytesToLoad;\n loadInitialization(representation, info);\n }\n\n };\n\n request.onloadend = request.onerror = function () {\n if (!needFailureReport) return;\n needFailureReport = false;\n\n errHandler.downloadError('initialization', info.url, request);\n eventBus.trigger(Events.INITIALIZATION_LOADED, {representation: representation});\n };\n\n sendRequest(request, info);\n log('Perform init search: ' + info.url);\n }\n\n function loadSegments(representation, type, range, loadingInfo, callback) {\n if (range && (range.start === undefined || range.end === undefined)) {\n var parts = range ? range.toString().split('-') : null;\n range = parts ? {start: parseFloat(parts[0]), end: parseFloat(parts[1])} : null;\n }\n\n callback = !callback ? onLoaded : callback;\n var needFailureReport = true;\n var isoFile = null;\n var sidx = null;\n var hasRange = !!range;\n var request = new XMLHttpRequest();\n var media = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].\n AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].BaseURL;\n var info = {\n url: media,\n range: hasRange ? range : { start: 0, end: 1500 },\n searching: !hasRange,\n bytesLoaded: loadingInfo ? loadingInfo.bytesLoaded : 0,\n bytesToLoad: 1500,\n request: request\n };\n\n request.onload = function () {\n if (request.status < 200 || request.status > 299) return;\n\n var extraBytes = info.bytesToLoad;\n var loadedLength = request.response.byteLength;\n\n needFailureReport = false;\n info.bytesLoaded = info.range.end - info.range.start;\n isoFile = boxParser.parse(request.response);\n sidx = isoFile.getBox('sidx');\n\n if (!sidx || !sidx.isComplete) {\n if (sidx) {\n info.range.start = sidx.offset || info.range.start;\n info.range.end = info.range.start + (sidx.size || extraBytes);\n } else if (loadedLength < info.bytesLoaded) {\n // if we have reached a search limit or if we have reached the end of the file we have to stop trying to find sidx\n callback(null, representation, type);\n return;\n } else {\n var lastBox = isoFile.getLastBox();\n\n if (lastBox && lastBox.size) {\n info.range.start = lastBox.offset + lastBox.size;\n info.range.end = info.range.start + extraBytes;\n } else {\n info.range.end += extraBytes;\n }\n }\n loadSegments(representation, type, info.range, info, callback);\n } else {\n var ref = sidx.references;\n var loadMultiSidx,\n segments;\n\n if (ref !== null && ref !== undefined && ref.length > 0) {\n loadMultiSidx = (ref[0].reference_type === 1);\n }\n\n if (loadMultiSidx) {\n log('Initiate multiple SIDX load.');\n info.range.end = info.range.start + sidx.size;\n\n var j, len, ss, se, r;\n var segs = [];\n var count = 0;\n var offset = (sidx.offset || info.range.start) + sidx.size;\n var tmpCallback = function (result) {\n if (result) {\n segs = segs.concat(result);\n count++;\n\n if (count >= len) {\n callback(segs, representation, type);\n }\n } else {\n callback(null, representation, type);\n }\n };\n\n for (j = 0, len = ref.length; j < len; j++) {\n ss = offset;\n se = offset + ref[j].referenced_size - 1;\n offset = offset + ref[j].referenced_size;\n r = {start: ss, end: se};\n loadSegments(representation, null, r, info, tmpCallback);\n }\n\n } else {\n log('Parsing segments from SIDX.');\n segments = getSegmentsForSidx(sidx, info);\n callback(segments, representation, type);\n }\n }\n };\n\n request.onloadend = request.onerror = function () {\n if (!needFailureReport) return;\n\n needFailureReport = false;\n errHandler.downloadError('SIDX', info.url, request);\n callback(null, representation, type);\n };\n\n sendRequest(request, info);\n log('Perform SIDX load: ' + info.url);\n }\n\n function reset() {\n errHandler = null;\n boxParser = null;\n requestModifier = null;\n log = null;\n }\n\n function getSegmentsForSidx(sidx, info) {\n\n var refs = sidx.references;\n var len = refs.length;\n var timescale = sidx.timescale;\n var time = sidx.earliest_presentation_time;\n var start = info.range.start + sidx.first_offset + sidx.size;\n var segments = [];\n var segment,\n end,\n duration,\n size;\n\n for (var i = 0; i < len; i++) {\n duration = refs[i].subsegment_duration;\n size = refs[i].referenced_size;\n\n segment = new Segment();\n segment.duration = duration;\n segment.media = info.url;\n segment.startTime = time;\n segment.timescale = timescale;\n end = start + size - 1;\n segment.mediaRange = start + '-' + end;\n segments.push(segment);\n time += duration;\n start += size;\n }\n\n return segments;\n }\n\n function findInitRange(isoFile) {\n var ftyp = isoFile.getBox('ftyp');\n var moov = isoFile.getBox('moov');\n\n var initRange = null;\n var start,\n end;\n\n log('Searching for initialization.');\n\n if (moov && moov.isComplete) {\n start = ftyp ? ftyp.offset : moov.offset;\n end = moov.offset + moov.size - 1;\n initRange = start + '-' + end;\n\n log('Found the initialization. Range: ' + initRange);\n }\n\n return initRange;\n }\n\n function sendRequest(request, info) {\n request.open('GET', requestModifier.modifyRequestURL(info.url));\n request.responseType = 'arraybuffer';\n request.setRequestHeader('Range', 'bytes=' + info.range.start + '-' + info.range.end);\n request = requestModifier.modifyRequestHeader(request);\n request.send(null);\n }\n\n function onLoaded(segments, representation, type) {\n if (segments) {\n eventBus.trigger(Events.SEGMENTS_LOADED, {segments: segments, representation: representation, mediaType: type});\n } else {\n eventBus.trigger(Events.SEGMENTS_LOADED, {segments: null, representation: representation, mediaType: type, error: new Error(null, 'error loading segments', null)});\n }\n }\n\n instance = {\n initialize: initialize,\n loadInitialization: loadInitialization,\n loadSegments: loadSegments,\n reset: reset\n };\n\n return instance;\n}\n\nSegmentBaseLoader.__dashjs_factory_name = 'SegmentBaseLoader';\nexport default FactoryMaker.getSingletonFactory(SegmentBaseLoader);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport DashManifestModel from '../models/DashManifestModel.js';\nimport DashMetrics from '../DashMetrics.js';\nimport TimelineConverter from '../utils/TimelineConverter.js';\nimport AbrController from '../../streaming/controllers/AbrController.js';\nimport PlaybackController from '../../streaming/controllers/PlaybackController.js';\nimport StreamController from '../../streaming/controllers/StreamController.js';\nimport ManifestModel from '../../streaming/models/ManifestModel.js';\nimport MetricsModel from '../../streaming/models/MetricsModel.js';\nimport MediaPlayerModel from '../../streaming/models/MediaPlayerModel.js';\nimport DOMStorage from '../../streaming/utils/DOMStorage.js';\nimport Error from '../../streaming/vo/Error.js';\nimport EventBus from '../../core/EventBus.js';\nimport Events from '../../core/events/Events.js';\nimport FactoryMaker from '../../core/FactoryMaker.js';\n\nfunction RepresentationController() {\n\n const SEGMENTS_UPDATE_FAILED_ERROR_CODE = 1;\n\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n data,\n dataIndex,\n updating,\n availableRepresentations,\n currentRepresentation,\n streamProcessor,\n abrController,\n indexHandler,\n streamController,\n playbackController,\n manifestModel,\n metricsModel,\n domStorage,\n timelineConverter,\n dashManifestModel,\n dashMetrics,\n mediaPlayerModel;\n\n function setup() {\n data = null;\n dataIndex = -1;\n updating = true;\n availableRepresentations = [];\n\n abrController = AbrController(context).getInstance();\n streamController = StreamController(context).getInstance();\n playbackController = PlaybackController(context).getInstance();\n manifestModel = ManifestModel(context).getInstance();\n metricsModel = MetricsModel(context).getInstance();\n domStorage = DOMStorage(context).getInstance();\n timelineConverter = TimelineConverter(context).getInstance();\n dashManifestModel = DashManifestModel(context).getInstance();\n dashMetrics = DashMetrics(context).getInstance();\n mediaPlayerModel = MediaPlayerModel(context).getInstance();\n\n eventBus.on(Events.QUALITY_CHANGED, onQualityChanged, instance);\n eventBus.on(Events.REPRESENTATION_UPDATED, onRepresentationUpdated, instance);\n eventBus.on(Events.WALLCLOCK_TIME_UPDATED, onWallclockTimeUpdated, instance);\n eventBus.on(Events.BUFFER_LEVEL_UPDATED, onBufferLevelUpdated, instance);\n eventBus.on(Events.LIVE_EDGE_SEARCH_COMPLETED, onLiveEdgeSearchCompleted, instance);\n }\n\n function initialize(StreamProcessor) {\n streamProcessor = StreamProcessor;\n indexHandler = streamProcessor.getIndexHandler();\n }\n\n function getStreamProcessor() {\n return streamProcessor;\n }\n\n function getData() {\n return data;\n }\n\n function getDataIndex() {\n return dataIndex;\n }\n\n function isUpdating() {\n return updating;\n }\n\n function getCurrentRepresentation() {\n return currentRepresentation;\n }\n\n function reset() {\n\n eventBus.off(Events.QUALITY_CHANGED, onQualityChanged, instance);\n eventBus.off(Events.REPRESENTATION_UPDATED, onRepresentationUpdated, instance);\n eventBus.off(Events.WALLCLOCK_TIME_UPDATED, onWallclockTimeUpdated, instance);\n eventBus.off(Events.BUFFER_LEVEL_UPDATED, onBufferLevelUpdated, instance);\n eventBus.off(Events.LIVE_EDGE_SEARCH_COMPLETED, onLiveEdgeSearchCompleted, instance);\n\n data = null;\n dataIndex = -1;\n updating = true;\n availableRepresentations = [];\n abrController = null;\n streamController = null;\n playbackController = null;\n manifestModel = null;\n metricsModel = null;\n domStorage = null;\n timelineConverter = null;\n dashManifestModel = null;\n dashMetrics = null;\n mediaPlayerModel = null;\n\n }\n\n function updateData(dataValue, adaptation, type) {\n var quality,\n averageThroughput;\n\n var bitrate = null;\n var streamInfo = streamProcessor.getStreamInfo();\n var maxQuality = abrController.getTopQualityIndexFor(type, streamInfo.id);\n\n updating = true;\n eventBus.trigger(Events.DATA_UPDATE_STARTED, {sender: this});\n\n availableRepresentations = updateRepresentations(adaptation);\n\n if (data === null && type !== 'fragmentedText') {\n averageThroughput = abrController.getAverageThroughput(type);\n bitrate = averageThroughput || abrController.getInitialBitrateFor(type, streamInfo);\n quality = abrController.getQualityForBitrate(streamProcessor.getMediaInfo(), bitrate);\n } else {\n quality = abrController.getQualityFor(type, streamInfo);\n }\n\n if (quality > maxQuality) {\n quality = maxQuality;\n }\n\n currentRepresentation = getRepresentationForQuality(quality);\n data = dataValue;\n\n if (type !== 'video' && type !== 'audio' && type !== 'fragmentedText') {\n updating = false;\n eventBus.trigger(Events.DATA_UPDATE_COMPLETED, {sender: this, data: data, currentRepresentation: currentRepresentation});\n return;\n }\n\n for (var i = 0; i < availableRepresentations.length; i++) {\n indexHandler.updateRepresentation(availableRepresentations[i], true);\n }\n }\n\n function addRepresentationSwitch() {\n var now = new Date();\n var currentRepresentation = getCurrentRepresentation();\n var currentVideoTimeMs = playbackController.getTime() * 1000;\n\n metricsModel.addRepresentationSwitch(currentRepresentation.adaptation.type, now, currentVideoTimeMs, currentRepresentation.id);\n }\n\n function addDVRMetric() {\n var range = timelineConverter.calcSegmentAvailabilityRange(currentRepresentation, streamProcessor.isDynamic());\n metricsModel.addDVRInfo(streamProcessor.getType(), playbackController.getTime(), streamProcessor.getStreamInfo().manifestInfo, range);\n }\n\n function getRepresentationForQuality(quality) {\n return availableRepresentations[quality];\n }\n\n function getQualityForRepresentation(representation) {\n return availableRepresentations.indexOf(representation);\n }\n\n function isAllRepresentationsUpdated() {\n for (var i = 0, ln = availableRepresentations.length; i < ln; i++) {\n var segmentInfoType = availableRepresentations[i].segmentInfoType;\n if (availableRepresentations[i].segmentAvailabilityRange === null || availableRepresentations[i].initialization === null ||\n ((segmentInfoType === 'SegmentBase' || segmentInfoType === 'BaseURL') && !availableRepresentations[i].segments)\n ) {\n return false;\n }\n }\n\n return true;\n }\n\n function updateRepresentations(adaptation) {\n var reps;\n var manifest = manifestModel.getValue();\n\n dataIndex = dashManifestModel.getIndexForAdaptation(data, manifest, adaptation.period.index);\n reps = dashManifestModel.getRepresentationsForAdaptation(manifest, adaptation);\n\n return reps;\n }\n\n function updateAvailabilityWindow(isDynamic) {\n var rep;\n\n for (var i = 0, ln = availableRepresentations.length; i < ln; i++) {\n rep = availableRepresentations[i];\n rep.segmentAvailabilityRange = timelineConverter.calcSegmentAvailabilityRange(rep, isDynamic);\n }\n }\n\n function resetAvailabilityWindow() {\n availableRepresentations.forEach(rep => {\n rep.segmentAvailabilityRange = null;\n });\n }\n\n function postponeUpdate(postponeTimePeriod) {\n var delay = postponeTimePeriod;\n var update = function () {\n if (isUpdating()) return;\n\n updating = true;\n eventBus.trigger(Events.DATA_UPDATE_STARTED, { sender: instance });\n\n // clear the segmentAvailabilityRange for all reps.\n // this ensures all are updated before the live edge search starts\n resetAvailabilityWindow();\n\n for (var i = 0; i < availableRepresentations.length; i++) {\n indexHandler.updateRepresentation(availableRepresentations[i], true);\n }\n };\n\n updating = false;\n eventBus.trigger(Events.AST_IN_FUTURE, { delay: delay });\n setTimeout(update, delay);\n }\n\n function onRepresentationUpdated(e) {\n if (e.sender.getStreamProcessor() !== streamProcessor || !isUpdating()) return;\n\n var r = e.representation;\n var streamMetrics = metricsModel.getMetricsFor('stream');\n var metrics = metricsModel.getMetricsFor(getCurrentRepresentation().adaptation.type);\n var manifestUpdateInfo = dashMetrics.getCurrentManifestUpdate(streamMetrics);\n\n var repInfo,\n err,\n repSwitch;\n var alreadyAdded = false;\n\n var postponeTimePeriod = 0;\n\n if (r.adaptation.period.mpd.manifest.type == 'dynamic')\n {\n var segmentAvailabilityTimePeriod = r.segmentAvailabilityRange.end - r.segmentAvailabilityRange.start;\n // We must put things to sleep unless till e.g. the startTime calculation in ScheduleController.onLiveEdgeSearchCompleted fall after the segmentAvailabilityRange.start\n postponeTimePeriod = ((currentRepresentation.segmentDuration * mediaPlayerModel.getLiveDelayFragmentCount()) - segmentAvailabilityTimePeriod) * 1000;\n }\n\n if (postponeTimePeriod > 0) {\n addDVRMetric();\n postponeUpdate(postponeTimePeriod);\n err = new Error(SEGMENTS_UPDATE_FAILED_ERROR_CODE, 'Segments update failed', null);\n eventBus.trigger(Events.DATA_UPDATE_COMPLETED, {sender: this, data: data, currentRepresentation: currentRepresentation, error: err});\n\n return;\n }\n\n if (manifestUpdateInfo) {\n for (var i = 0; i < manifestUpdateInfo.trackInfo.length; i++) {\n repInfo = manifestUpdateInfo.trackInfo[i];\n if (repInfo.index === r.index && repInfo.mediaType === streamProcessor.getType()) {\n alreadyAdded = true;\n break;\n }\n }\n\n if (!alreadyAdded) {\n metricsModel.addManifestUpdateRepresentationInfo(manifestUpdateInfo, r.id, r.index, r.adaptation.period.index,\n streamProcessor.getType(),r.presentationTimeOffset, r.startNumber, r.segmentInfoType);\n }\n }\n\n if (isAllRepresentationsUpdated()) {\n updating = false;\n abrController.setPlaybackQuality(streamProcessor.getType(), streamProcessor.getStreamInfo(), getQualityForRepresentation(currentRepresentation));\n metricsModel.updateManifestUpdateInfo(manifestUpdateInfo, {latency: currentRepresentation.segmentAvailabilityRange.end - playbackController.getTime()});\n\n repSwitch = dashMetrics.getCurrentRepresentationSwitch(metrics);\n\n if (!repSwitch) {\n addRepresentationSwitch();\n }\n\n eventBus.trigger(Events.DATA_UPDATE_COMPLETED, {sender: this, data: data, currentRepresentation: currentRepresentation});\n }\n }\n\n function onWallclockTimeUpdated(e) {\n if (e.isDynamic) {\n updateAvailabilityWindow(e.isDynamic);\n }\n }\n\n function onLiveEdgeSearchCompleted(e) {\n if (e.error) return;\n\n updateAvailabilityWindow(true);\n indexHandler.updateRepresentation(currentRepresentation, false);\n\n // we need to update checkTime after we have found the live edge because its initial value\n // does not take into account clientServerTimeShift\n var manifest = manifestModel.getValue();\n var period = currentRepresentation.adaptation.period;\n var streamInfo = streamController.getActiveStreamInfo();\n\n if (streamInfo.isLast) {\n period.mpd.checkTime = dashManifestModel.getCheckTime(manifest, period);\n period.duration = dashManifestModel.getEndTimeForLastPeriod(manifestModel.getValue(), period) - period.start;\n streamInfo.duration = period.duration;\n }\n }\n\n function onBufferLevelUpdated(e) {\n if (e.sender.getStreamProcessor() !== streamProcessor) return;\n addDVRMetric();\n }\n\n function onQualityChanged(e) {\n if (e.mediaType !== streamProcessor.getType() || streamProcessor.getStreamInfo().id !== e.streamInfo.id) return;\n\n if (e.oldQuality !== e.newQuality) {\n currentRepresentation = getRepresentationForQuality(e.newQuality);\n setLocalStorage(e.mediaType, currentRepresentation.bandwidth);\n addRepresentationSwitch();\n }\n }\n\n function setLocalStorage(type, bitrate) {\n if (domStorage.isSupported(DOMStorage.STORAGE_TYPE_LOCAL) && (type === 'video' || type === 'audio')) {\n localStorage.setItem(DOMStorage['LOCAL_STORAGE_' + type.toUpperCase() + '_BITRATE_KEY'], JSON.stringify({bitrate: bitrate / 1000, timestamp: new Date().getTime()}));\n }\n }\n\n instance = {\n initialize: initialize,\n getData: getData,\n getDataIndex: getDataIndex,\n isUpdating: isUpdating,\n updateData: updateData,\n getStreamProcessor: getStreamProcessor,\n getCurrentRepresentation: getCurrentRepresentation,\n getRepresentationForQuality: getRepresentationForQuality,\n reset: reset\n };\n\n setup();\n return instance;\n}\n\nRepresentationController.__dashjs_factory_name = 'RepresentationController';\nexport default FactoryMaker.getClassFactory(RepresentationController);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport Representation from '../vo/Representation.js';\nimport AdaptationSet from '../vo/AdaptationSet.js';\nimport Period from '../vo/Period.js';\nimport Mpd from '../vo/Mpd.js';\nimport UTCTiming from '../vo/UTCTiming.js';\nimport TimelineConverter from '../utils/TimelineConverter.js';\nimport Event from '../vo/Event.js';\nimport EventStream from '../vo/EventStream.js';\nimport FactoryMaker from '../../core/FactoryMaker.js';\n\nfunction DashManifestModel() {\n\n let instance;\n let context = this.context;\n let timelineConverter = TimelineConverter(context).getInstance();//TODO Need to pass this in not bake in\n\n function getIsTypeOf(adaptation, type) {\n\n var i,\n len,\n representation;\n var result = false;\n var found = false;\n\n var col = adaptation.ContentComponent_asArray;\n var mimeTypeRegEx = (type !== 'text') ? new RegExp(type) : new RegExp('(vtt|ttml)');\n\n if ((adaptation.Representation_asArray.length > 0) &&\n (adaptation.Representation_asArray[0].hasOwnProperty('codecs')) &&\n (adaptation.Representation_asArray[0].codecs == 'stpp')) {\n return type == 'fragmentedText';\n }\n\n if (col) {\n if (col.length > 1) {\n return (type == 'muxed');\n } else if (col[0] && col[0].contentType === type) {\n result = true;\n found = true;\n }\n }\n\n if (adaptation.hasOwnProperty('mimeType')) {\n result = mimeTypeRegEx.test(adaptation.mimeType);\n found = true;\n }\n\n // couldn't find on adaptationset, so check a representation\n if (!found) {\n i = 0;\n len = adaptation.Representation_asArray.length;\n while (!found && i < len) {\n representation = adaptation.Representation_asArray[i];\n\n if (representation.hasOwnProperty('mimeType')) {\n result = mimeTypeRegEx.test(representation.mimeType);\n found = true;\n }\n\n i++;\n }\n }\n\n return result;\n }\n\n function getIsAudio(adaptation) {\n return getIsTypeOf(adaptation, 'audio');\n }\n\n function getIsVideo(adaptation) {\n return getIsTypeOf(adaptation, 'video');\n }\n\n function getIsFragmentedText(adaptation) {\n return getIsTypeOf(adaptation, 'fragmentedText');\n }\n\n function getIsText(adaptation) {\n return getIsTypeOf(adaptation, 'text');\n }\n\n function getIsMuxed(adaptation) {\n return getIsTypeOf(adaptation, 'muxed');\n }\n\n function getIsTextTrack(type) {\n return (type === 'text/vtt' || type === 'application/ttml+xml');\n }\n\n function getLanguageForAdaptation(adaptation) {\n var lang = '';\n\n if (adaptation.hasOwnProperty('lang')) {\n //Filter out any other characters not allowed according to RFC5646\n lang = adaptation.lang.replace(/[^A-Za-z0-9-]/g,'');\n }\n\n return lang;\n }\n\n function getViewpointForAdaptation(adaptation) {\n return adaptation.hasOwnProperty('Viewpoint') ? adaptation.Viewpoint : null;\n }\n\n function getRolesForAdaptation(adaptation) {\n return adaptation.hasOwnProperty('Role_asArray') ? adaptation.Role_asArray : [];\n }\n\n function getAccessibilityForAdaptation(adaptation) {\n return adaptation.hasOwnProperty('Accessibility_asArray') ? adaptation.Accessibility_asArray : [];\n }\n\n function getAudioChannelConfigurationForAdaptation(adaptation) {\n return adaptation.hasOwnProperty('AudioChannelConfiguration_asArray') ? adaptation.AudioChannelConfiguration_asArray : [];\n }\n\n function getIsMain(adaptation) {\n return getRolesForAdaptation(adaptation).filter(function (role) {\n return role.value === 'main';\n })[0];\n }\n\n function processAdaptation(adaptation) {\n if (adaptation.Representation_asArray !== undefined && adaptation.Representation_asArray !== null) {\n adaptation.Representation_asArray.sort(function (a, b) {\n return a.bandwidth - b.bandwidth;\n });\n }\n\n return adaptation;\n }\n\n function getAdaptationForId(id, manifest, periodIndex) {\n\n var adaptations = manifest.Period_asArray[periodIndex].AdaptationSet_asArray;\n var i,\n len;\n\n for (i = 0, len = adaptations.length; i < len; i++) {\n if (adaptations[i].hasOwnProperty('id') && adaptations[i].id === id) {\n return adaptations[i];\n }\n }\n\n return null;\n }\n\n function getAdaptationForIndex(index, manifest, periodIndex) {\n var adaptations = manifest.Period_asArray[periodIndex].AdaptationSet_asArray;\n return adaptations[index];\n }\n\n function getIndexForAdaptation(adaptation, manifest, periodIndex) {\n\n var adaptations = manifest.Period_asArray[periodIndex].AdaptationSet_asArray;\n var i,\n len;\n\n for (i = 0, len = adaptations.length; i < len; i++) {\n if (adaptations[i] === adaptation) {\n return i;\n }\n }\n\n return -1;\n }\n\n function getAdaptationsForType(manifest, periodIndex, type) {\n\n var adaptationSet = manifest.Period_asArray[periodIndex].AdaptationSet_asArray;\n var i,\n len;\n var adaptations = [];\n\n for (i = 0, len = adaptationSet.length; i < len; i++) {\n if (getIsTypeOf(adaptationSet[i], type)) {\n adaptations.push(processAdaptation(adaptationSet[i]));\n }\n }\n\n return adaptations;\n }\n\n function getAdaptationForType(manifest, periodIndex, type) {\n var i,\n len,\n adaptations;\n\n adaptations = getAdaptationsForType(manifest, periodIndex, type);\n\n if (!adaptations || adaptations.length === 0) return null;\n\n for (i = 0, len = adaptations.length; i < len; i++) {\n if (getIsMain(adaptations[i])) return adaptations[i];\n }\n\n return adaptations[0];\n }\n\n function getCodec(adaptation) {\n var representation = adaptation.Representation_asArray[0];\n return (representation.mimeType + ';codecs=\"' + representation.codecs + '\"');\n }\n\n function getMimeType(adaptation) {\n return adaptation.Representation_asArray[0].mimeType;\n }\n\n function getKID(adaptation) {\n if (!adaptation || !adaptation.hasOwnProperty('cenc:default_KID')) {\n return null;\n }\n return adaptation['cenc:default_KID'];\n }\n\n function getContentProtectionData(adaptation) {\n if (!adaptation || !adaptation.hasOwnProperty('ContentProtection_asArray') || adaptation.ContentProtection_asArray.length === 0) {\n return null;\n }\n return adaptation.ContentProtection_asArray;\n }\n\n function getIsDynamic(manifest) {\n var isDynamic = false;\n if (manifest.hasOwnProperty('type')) {\n isDynamic = (manifest.type === 'dynamic');\n }\n return isDynamic;\n }\n\n function getIsDVR(manifest) {\n var isDynamic = getIsDynamic(manifest);\n var containsDVR,\n isDVR;\n\n containsDVR = !isNaN(manifest.timeShiftBufferDepth);\n isDVR = (isDynamic && containsDVR);\n\n return isDVR;\n }\n\n function getIsOnDemand(manifest) {\n var isOnDemand = false;\n\n if (manifest.profiles && manifest.profiles.length > 0) {\n isOnDemand = (manifest.profiles.indexOf('urn:mpeg:dash:profile:isoff-on-demand:2011') !== -1);\n }\n\n return isOnDemand;\n }\n\n function getDuration(manifest) {\n var mpdDuration;\n //@mediaPresentationDuration specifies the duration of the entire Media Presentation.\n //If the attribute is not present, the duration of the Media Presentation is unknown.\n if (manifest.hasOwnProperty('mediaPresentationDuration')) {\n mpdDuration = manifest.mediaPresentationDuration;\n } else {\n mpdDuration = Number.MAX_VALUE;\n }\n\n return mpdDuration;\n }\n\n function getBandwidth(representation) {\n return representation.bandwidth;\n }\n\n function getRefreshDelay(manifest) {\n var delay = NaN;\n var minDelay = 2;\n\n if (manifest.hasOwnProperty('minimumUpdatePeriod')) {\n delay = Math.max(parseFloat(manifest.minimumUpdatePeriod), minDelay);\n }\n\n return delay;\n }\n\n function getRepresentationCount(adaptation) {\n return adaptation.Representation_asArray.length;\n }\n\n function getBitrateListForAdaptation(adaptation) {\n if (!adaptation || !adaptation.Representation_asArray || !adaptation.Representation_asArray.length) return null;\n\n var a = processAdaptation(adaptation);\n var reps = a.Representation_asArray;\n var ln = reps.length;\n var bitrateList = [];\n\n for (var i = 0; i < ln; i++) {\n bitrateList.push(reps[i].bandwidth);\n }\n\n return bitrateList;\n }\n\n function getRepresentationFor(index, adaptation) {\n return adaptation.Representation_asArray[index];\n }\n\n function getRepresentationsForAdaptation(manifest, adaptation) {\n var a = processAdaptation(manifest.Period_asArray[adaptation.period.index].AdaptationSet_asArray[adaptation.index]);\n var representations = [];\n var representation,\n initialization,\n segmentInfo,\n r,\n s;\n\n for (var i = 0; i < a.Representation_asArray.length; i++) {\n r = a.Representation_asArray[i];\n representation = new Representation();\n representation.index = i;\n representation.adaptation = adaptation;\n\n if (r.hasOwnProperty('id')) {\n representation.id = r.id;\n }\n\n if (r.hasOwnProperty('bandwidth')) {\n representation.bandwidth = r.bandwidth;\n }\n if (r.hasOwnProperty('maxPlayoutRate')) {\n representation.maxPlayoutRate = r.maxPlayoutRate;\n }\n if (r.hasOwnProperty('SegmentBase')) {\n segmentInfo = r.SegmentBase;\n representation.segmentInfoType = 'SegmentBase';\n }\n else if (r.hasOwnProperty('SegmentList')) {\n segmentInfo = r.SegmentList;\n representation.segmentInfoType = 'SegmentList';\n representation.useCalculatedLiveEdgeTime = true;\n }\n else if (r.hasOwnProperty('SegmentTemplate')) {\n segmentInfo = r.SegmentTemplate;\n\n if (segmentInfo.hasOwnProperty('SegmentTimeline')) {\n representation.segmentInfoType = 'SegmentTimeline';\n s = segmentInfo.SegmentTimeline.S_asArray[segmentInfo.SegmentTimeline.S_asArray.length - 1];\n if (!s.hasOwnProperty('r') || s.r >= 0) {\n representation.useCalculatedLiveEdgeTime = true;\n }\n } else {\n representation.segmentInfoType = 'SegmentTemplate';\n }\n\n if (segmentInfo.hasOwnProperty('initialization')) {\n representation.initialization = segmentInfo.initialization.split('$Bandwidth$')\n .join(r.bandwidth).split('$RepresentationID$').join(r.id);\n }\n } else {\n segmentInfo = r.BaseURL;\n representation.segmentInfoType = 'BaseURL';\n }\n\n if (segmentInfo.hasOwnProperty('Initialization')) {\n initialization = segmentInfo.Initialization;\n if (initialization.hasOwnProperty('sourceURL')) {\n representation.initialization = initialization.sourceURL;\n } else if (initialization.hasOwnProperty('range')) {\n representation.initialization = r.BaseURL;\n representation.range = initialization.range;\n }\n } else if (r.hasOwnProperty('mimeType') && getIsTextTrack(r.mimeType)) {\n representation.initialization = r.BaseURL;\n representation.range = 0;\n }\n\n if (segmentInfo.hasOwnProperty('timescale')) {\n representation.timescale = segmentInfo.timescale;\n }\n if (segmentInfo.hasOwnProperty('duration')) {\n // TODO according to the spec @maxSegmentDuration specifies the maximum duration of any Segment in any Representation in the Media Presentation\n // It is also said that for a SegmentTimeline any @d value shall not exceed the value of MPD@maxSegmentDuration, but nothing is said about\n // SegmentTemplate @duration attribute. We need to find out if @maxSegmentDuration should be used instead of calculated duration if the the duration\n // exceeds @maxSegmentDuration\n //representation.segmentDuration = Math.min(segmentInfo.duration / representation.timescale, adaptation.period.mpd.maxSegmentDuration);\n representation.segmentDuration = segmentInfo.duration / representation.timescale;\n }\n if (segmentInfo.hasOwnProperty('startNumber')) {\n representation.startNumber = segmentInfo.startNumber;\n }\n if (segmentInfo.hasOwnProperty('indexRange')) {\n representation.indexRange = segmentInfo.indexRange;\n }\n if (segmentInfo.hasOwnProperty('presentationTimeOffset')) {\n representation.presentationTimeOffset = segmentInfo.presentationTimeOffset / representation.timescale;\n }\n\n representation.MSETimeOffset = timelineConverter.calcMSETimeOffset(representation);\n representations.push(representation);\n }\n\n return representations;\n }\n\n function getAdaptationsForPeriod(manifest, period) {\n var p = manifest.Period_asArray[period.index];\n var adaptations = [];\n var adaptationSet,\n a;\n\n for (var i = 0; i < p.AdaptationSet_asArray.length; i++) {\n a = p.AdaptationSet_asArray[i];\n adaptationSet = new AdaptationSet();\n\n if (a.hasOwnProperty('id')) {\n adaptationSet.id = a.id;\n }\n\n adaptationSet.index = i;\n adaptationSet.period = period;\n\n if (getIsMuxed(a)) {\n adaptationSet.type = 'muxed';\n } else if (getIsAudio(a)) {\n adaptationSet.type = 'audio';\n }else if (getIsVideo(a)) {\n adaptationSet.type = 'video';\n }else if (getIsFragmentedText(a)) {\n adaptationSet.type = 'fragmentedText';\n }else {\n adaptationSet.type = 'text';\n }\n\n adaptations.push(adaptationSet);\n }\n\n return adaptations;\n }\n\n function getRegularPeriods(manifest, mpd) {\n var isDynamic = getIsDynamic(manifest);\n var periods = [];\n var p1 = null;\n var p = null;\n var vo1 = null;\n var vo = null;\n var len,\n i;\n\n for (i = 0, len = manifest.Period_asArray.length; i < len; i++) {\n p = manifest.Period_asArray[i];\n\n // If the attribute @start is present in the Period, then the\n // Period is a regular Period and the PeriodStart is equal\n // to the value of this attribute.\n if (p.hasOwnProperty('start')) {\n vo = new Period();\n vo.start = p.start;\n }\n // If the @start attribute is absent, but the previous Period\n // element contains a @duration attribute then then this new\n // Period is also a regular Period. The start time of the new\n // Period PeriodStart is the sum of the start time of the previous\n // Period PeriodStart and the value of the attribute @duration\n // of the previous Period.\n else if (p1 !== null && p.hasOwnProperty('duration') && vo1 !== null) {\n vo = new Period();\n vo.start = vo1.start + vo1.duration;\n vo.duration = p.duration;\n }\n // If (i) @start attribute is absent, and (ii) the Period element\n // is the first in the MPD, and (iii) the MPD@type is 'static',\n // then the PeriodStart time shall be set to zero.\n else if (i === 0 && !isDynamic) {\n vo = new Period();\n vo.start = 0;\n }\n\n // The Period extends until the PeriodStart of the next Period.\n // The difference between the PeriodStart time of a Period and\n // the PeriodStart time of the following Period.\n if (vo1 !== null && isNaN(vo1.duration))\n {\n vo1.duration = vo.start - vo1.start;\n }\n\n if (vo !== null) {\n vo.id = getPeriodId(p);\n }\n\n if (vo !== null && p.hasOwnProperty('duration')) {\n vo.duration = p.duration;\n }\n\n if (vo !== null) {\n vo.index = i;\n vo.mpd = mpd;\n periods.push(vo);\n p1 = p;\n vo1 = vo;\n }\n\n p = null;\n vo = null;\n }\n\n if (periods.length === 0) {\n return periods;\n }\n\n // The last Period extends until the end of the Media Presentation.\n // The difference between the PeriodStart time of the last Period\n // and the mpd duration\n if (vo1 !== null && isNaN(vo1.duration)) {\n vo1.duration = getEndTimeForLastPeriod(manifest, vo1) - vo1.start;\n }\n\n return periods;\n }\n\n function getPeriodId(p) {\n if (!p) {\n throw new Error('Period cannot be null or undefined');\n }\n\n var id = Period.DEFAULT_ID;\n\n if (p.hasOwnProperty('id') && p.id !== '__proto__') {\n id = p.id;\n }\n\n return id;\n }\n\n function getMpd(manifest) {\n var mpd = new Mpd();\n\n mpd.manifest = manifest;\n\n if (manifest.hasOwnProperty('availabilityStartTime')) {\n mpd.availabilityStartTime = new Date(manifest.availabilityStartTime.getTime());\n } else {\n mpd.availabilityStartTime = new Date(manifest.loadedTime.getTime());\n }\n\n if (manifest.hasOwnProperty('availabilityEndTime')) {\n mpd.availabilityEndTime = new Date(manifest.availabilityEndTime.getTime());\n }\n\n if (manifest.hasOwnProperty('suggestedPresentationDelay')) {\n mpd.suggestedPresentationDelay = manifest.suggestedPresentationDelay;\n }\n\n if (manifest.hasOwnProperty('timeShiftBufferDepth')) {\n mpd.timeShiftBufferDepth = manifest.timeShiftBufferDepth;\n }\n\n if (manifest.hasOwnProperty('maxSegmentDuration')) {\n mpd.maxSegmentDuration = manifest.maxSegmentDuration;\n }\n\n return mpd;\n }\n\n function getFetchTime(manifest, period) {\n // FetchTime is defined as the time at which the server processes the request for the MPD from the client.\n // TODO The client typically should not use the time at which it actually successfully received the MPD, but should\n // take into account delay due to MPD delivery and processing. The fetch is considered successful fetching\n // either if the client obtains an updated MPD or the client verifies that the MPD has not been updated since the previous fetching.\n\n return timelineConverter.calcPresentationTimeFromWallTime(manifest.loadedTime, period);\n }\n\n function getCheckTime(manifest, period) {\n var checkTime = NaN;\n var fetchTime;\n\n // If the MPD@minimumUpdatePeriod attribute in the client is provided, then the check time is defined as the\n // sum of the fetch time of this operating MPD and the value of this attribute,\n // i.e. CheckTime = FetchTime + MPD@minimumUpdatePeriod.\n if (manifest.hasOwnProperty('minimumUpdatePeriod')) {\n fetchTime = getFetchTime(manifest, period);\n checkTime = fetchTime + manifest.minimumUpdatePeriod;\n }\n // TODO If the MPD@minimumUpdatePeriod attribute in the client is not provided, external means are used to\n // determine CheckTime, such as a priori knowledge, or HTTP cache headers, etc.\n\n return checkTime;\n }\n\n function getEndTimeForLastPeriod(manifest, period) {\n var periodEnd;\n var checkTime = getCheckTime(manifest, period);\n\n // if the MPD@mediaPresentationDuration attribute is present, then PeriodEndTime is defined as the end time of the Media Presentation.\n // if the MPD@mediaPresentationDuration attribute is not present, then PeriodEndTime is defined as FetchTime + MPD@minimumUpdatePeriod\n\n if (manifest.mediaPresentationDuration) {\n periodEnd = manifest.mediaPresentationDuration;\n } else if (!isNaN(checkTime)) {\n // in this case the Period End Time should match CheckTime\n periodEnd = checkTime;\n } else {\n throw new Error('Must have @mediaPresentationDuration or @minimumUpdatePeriod on MPD or an explicit @duration on the last period.');\n }\n\n return periodEnd;\n }\n\n function getEventsForPeriod(manifest, period) {\n\n var periodArray = manifest.Period_asArray;\n var eventStreams = periodArray[period.index].EventStream_asArray;\n var events = [];\n\n if (eventStreams) {\n for (var i = 0; i < eventStreams.length; i++) {\n var eventStream = new EventStream();\n eventStream.period = period;\n eventStream.timescale = 1;\n\n if (eventStreams[i].hasOwnProperty('schemeIdUri')) {\n eventStream.schemeIdUri = eventStreams[i].schemeIdUri;\n } else {\n throw 'Invalid EventStream. SchemeIdUri has to be set';\n }\n if (eventStreams[i].hasOwnProperty('timescale')) {\n eventStream.timescale = eventStreams[i].timescale;\n }\n if (eventStreams[i].hasOwnProperty('value')) {\n eventStream.value = eventStreams[i].value;\n }\n for (var j = 0; j < eventStreams[i].Event_asArray.length; j++) {\n var event = new Event();\n event.presentationTime = 0;\n event.eventStream = eventStream;\n\n if (eventStreams[i].Event_asArray[j].hasOwnProperty('presentationTime')) {\n event.presentationTime = eventStreams[i].Event_asArray[j].presentationTime;\n }\n if (eventStreams[i].Event_asArray[j].hasOwnProperty('duration')) {\n event.duration = eventStreams[i].Event_asArray[j].duration;\n }\n if (eventStreams[i].Event_asArray[j].hasOwnProperty('id')) {\n event.id = eventStreams[i].Event_asArray[j].id;\n }\n events.push(event);\n }\n }\n }\n\n return events;\n }\n\n function getEventStreams(inbandStreams, representation) {\n var eventStreams = [];\n\n if (!inbandStreams) return eventStreams;\n\n for (var i = 0; i < inbandStreams.length ; i++ ) {\n var eventStream = new EventStream();\n eventStream.timescale = 1;\n eventStream.representation = representation;\n\n if (inbandStreams[i].hasOwnProperty('schemeIdUri')) {\n eventStream.schemeIdUri = inbandStreams[i].schemeIdUri;\n } else {\n throw 'Invalid EventStream. SchemeIdUri has to be set';\n }\n if (inbandStreams[i].hasOwnProperty('timescale')) {\n eventStream.timescale = inbandStreams[i].timescale;\n }\n if (inbandStreams[i].hasOwnProperty('value')) {\n eventStream.value = inbandStreams[i].value;\n }\n eventStreams.push(eventStream);\n }\n\n return eventStreams;\n }\n\n function getEventStreamForAdaptationSet(manifest, adaptation) {\n var inbandStreams = manifest.Period_asArray[adaptation.period.index].\n AdaptationSet_asArray[adaptation.index].InbandEventStream_asArray;\n\n return getEventStreams(inbandStreams, null);\n }\n\n function getEventStreamForRepresentation(manifest, representation) {\n var inbandStreams = manifest.Period_asArray[representation.adaptation.period.index].\n AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].InbandEventStream_asArray;\n\n return getEventStreams(inbandStreams, representation);\n }\n\n function getUTCTimingSources(manifest) {\n\n var isDynamic = getIsDynamic(manifest);\n var hasAST = manifest.hasOwnProperty('availabilityStartTime');\n var utcTimingsArray = manifest.UTCTiming_asArray;\n var utcTimingEntries = [];\n\n // do not bother synchronizing the clock unless MPD is live,\n // or it is static and has availabilityStartTime attribute\n if ((isDynamic || hasAST)) {\n if (utcTimingsArray) {\n // the order is important here - 23009-1 states that the order\n // in the manifest \"indicates relative preference, first having\n // the highest, and the last the lowest priority\".\n utcTimingsArray.forEach(function (utcTiming) {\n var entry = new UTCTiming();\n\n if (utcTiming.hasOwnProperty('schemeIdUri')) {\n entry.schemeIdUri = utcTiming.schemeIdUri;\n } else {\n // entries of type DescriptorType with no schemeIdUri\n // are meaningless. let's just ignore this entry and\n // move on.\n return;\n }\n\n // this is (incorrectly) interpreted as a number - schema\n // defines it as a string\n if (utcTiming.hasOwnProperty('value')) {\n entry.value = utcTiming.value.toString();\n } else {\n // without a value, there's not a lot we can do with\n // this entry. let's just ignore this one and move on\n return;\n }\n\n // we're not interested in the optional id or any other\n // attributes which might be attached to the entry\n\n utcTimingEntries.push(entry);\n });\n }\n }\n\n return utcTimingEntries;\n }\n\n instance = {\n getIsTypeOf: getIsTypeOf,\n getIsAudio: getIsAudio,\n getIsVideo: getIsVideo,\n getIsText: getIsText,\n getIsMuxed: getIsMuxed,\n getIsTextTrack: getIsTextTrack,\n getIsFragmentedText: getIsFragmentedText,\n getIsMain: getIsMain,\n getLanguageForAdaptation: getLanguageForAdaptation,\n getViewpointForAdaptation: getViewpointForAdaptation,\n getRolesForAdaptation: getRolesForAdaptation,\n getAccessibilityForAdaptation: getAccessibilityForAdaptation,\n getAudioChannelConfigurationForAdaptation: getAudioChannelConfigurationForAdaptation,\n processAdaptation: processAdaptation,\n getAdaptationForIndex: getAdaptationForIndex,\n getIndexForAdaptation: getIndexForAdaptation,\n getAdaptationForId: getAdaptationForId,\n getAdaptationsForType: getAdaptationsForType,\n getAdaptationForType: getAdaptationForType,\n getCodec: getCodec,\n getMimeType: getMimeType,\n getKID: getKID,\n getContentProtectionData: getContentProtectionData,\n getIsDynamic: getIsDynamic,\n getIsDVR: getIsDVR,\n getIsOnDemand: getIsOnDemand,\n getDuration: getDuration,\n getBandwidth: getBandwidth,\n getRefreshDelay: getRefreshDelay,\n getRepresentationCount: getRepresentationCount,\n getBitrateListForAdaptation: getBitrateListForAdaptation,\n getRepresentationFor: getRepresentationFor,\n getRepresentationsForAdaptation: getRepresentationsForAdaptation,\n getAdaptationsForPeriod: getAdaptationsForPeriod,\n getRegularPeriods: getRegularPeriods,\n getPeriodId: getPeriodId,\n getMpd: getMpd,\n getFetchTime: getFetchTime,\n getCheckTime: getCheckTime,\n getEndTimeForLastPeriod: getEndTimeForLastPeriod,\n getEventsForPeriod: getEventsForPeriod,\n getEventStreams: getEventStreams,\n getEventStreamForAdaptationSet: getEventStreamForAdaptationSet,\n getEventStreamForRepresentation: getEventStreamForRepresentation,\n getUTCTimingSources: getUTCTimingSources\n };\n\n return instance;\n}\n\nDashManifestModel.__dashjs_factory_name = 'DashManifestModel';\nexport default FactoryMaker.getSingletonFactory(DashManifestModel);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../core/FactoryMaker.js';\n\nfunction FragmentedTextBoxParser() {\n\n let instance,\n boxParser;\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.boxParser) {\n boxParser = config.boxParser;\n }\n }\n\n function getSamplesInfo(ab) {\n var isoFile = boxParser.parse(ab);\n var tfhdBox = isoFile.getBox('tfhd');\n var tfdtBox = isoFile.getBox('tfdt');\n var trunBox = isoFile.getBox('trun');\n var moofBox = isoFile.getBox('moof');\n var mfhdBox = isoFile.getBox('mfhd');\n\n var sampleDuration,\n sampleCompositionTimeOffset,\n sampleCount,\n sampleSize,\n sampleDts,\n sampleList,\n sample,\n i,\n dataOffset,\n sequenceNumber,\n totalDuration;\n\n sequenceNumber = mfhdBox.sequence_number;\n sampleCount = trunBox.sample_count;\n sampleDts = tfdtBox.baseMediaDecodeTime;\n dataOffset = (tfhdBox.base_data_offset || 0) + (trunBox.data_offset || 0);\n\n sampleList = [];\n for (i = 0; i < sampleCount; i++) {\n sample = trunBox.samples[i];\n sampleDuration = (sample.sample_duration !== undefined) ? sample.sample_duration : tfhdBox.default_sample_duration;\n sampleSize = (sample.sample_size !== undefined) ? sample.sample_size : tfhdBox.default_sample_size;\n sampleCompositionTimeOffset = (sample.sample_composition_time_offset !== undefined) ? sample.sample_composition_time_offset : 0;\n\n sampleList.push({'dts': sampleDts,\n 'cts': (sampleDts + sampleCompositionTimeOffset),\n 'duration': sampleDuration,\n 'offset': moofBox.offset + dataOffset,\n 'size': sampleSize});\n dataOffset += sampleSize;\n sampleDts += sampleDuration;\n }\n totalDuration = sampleDts - tfdtBox.baseMediaDecodeTime;\n return {sampleList: sampleList, sequenceNumber: sequenceNumber, totalDuration: totalDuration};\n }\n\n function getMediaTimescaleFromMoov(ab) {\n var isoFile = boxParser.parse(ab);\n var mdhdBox = isoFile.getBox('mdhd');\n\n return mdhdBox ? mdhdBox.timescale : NaN;\n }\n\n instance = {\n getSamplesInfo: getSamplesInfo,\n getMediaTimescaleFromMoov: getMediaTimescaleFromMoov,\n setConfig: setConfig\n };\n\n return instance;\n}\n\nFragmentedTextBoxParser.__dashjs_factory_name = 'FragmentedTextBoxParser';\nexport default FactoryMaker.getSingletonFactory(FragmentedTextBoxParser);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport EventBus from '../../core/EventBus.js';\nimport Events from '../../core/events/Events.js';\n\nimport FactoryMaker from '../../core/FactoryMaker.js';\n\nfunction TimelineConverter() {\n\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n clientServerTimeShift,\n isClientServerTimeSyncCompleted,\n expectedLiveEdge;\n\n function initialize() {\n\n clientServerTimeShift = 0;\n isClientServerTimeSyncCompleted = false;\n expectedLiveEdge = NaN;\n\n eventBus.on(Events.LIVE_EDGE_SEARCH_COMPLETED, onLiveEdgeSearchCompleted, this);\n eventBus.on(Events.TIME_SYNCHRONIZATION_COMPLETED, onTimeSyncComplete, this);\n }\n\n function isTimeSyncCompleted() {\n return isClientServerTimeSyncCompleted;\n }\n\n function setTimeSyncCompleted(value) {\n isClientServerTimeSyncCompleted = value;\n }\n\n function getClientTimeOffset() {\n return clientServerTimeShift;\n }\n\n function getExpectedLiveEdge() {\n return expectedLiveEdge;\n }\n\n function setExpectedLiveEdge(value) {\n expectedLiveEdge = value;\n }\n\n function calcAvailabilityTimeFromPresentationTime(presentationTime, mpd, isDynamic, calculateEnd) {\n var availabilityTime = NaN;\n\n if (calculateEnd) {\n //@timeShiftBufferDepth specifies the duration of the time shifting buffer that is guaranteed\n // to be available for a Media Presentation with type 'dynamic'.\n // When not present, the value is infinite.\n if (isDynamic && (mpd.timeShiftBufferDepth != Number.POSITIVE_INFINITY)) {\n availabilityTime = new Date(mpd.availabilityStartTime.getTime() + ((presentationTime + mpd.timeShiftBufferDepth) * 1000));\n } else {\n availabilityTime = mpd.availabilityEndTime;\n }\n } else {\n if (isDynamic) {\n availabilityTime = new Date(mpd.availabilityStartTime.getTime() + (presentationTime - clientServerTimeShift) * 1000);\n } else {\n // in static mpd, all segments are available at the same time\n availabilityTime = mpd.availabilityStartTime;\n }\n }\n\n return availabilityTime;\n }\n\n function calcAvailabilityStartTimeFromPresentationTime(presentationTime, mpd, isDynamic) {\n return calcAvailabilityTimeFromPresentationTime.call(this, presentationTime, mpd, isDynamic);\n }\n\n function calcAvailabilityEndTimeFromPresentationTime(presentationTime, mpd, isDynamic) {\n return calcAvailabilityTimeFromPresentationTime.call(this, presentationTime, mpd, isDynamic, true);\n }\n\n function calcPresentationTimeFromWallTime(wallTime, period) {\n return ((wallTime.getTime() - period.mpd.availabilityStartTime.getTime() + clientServerTimeShift * 1000) / 1000);\n }\n\n function calcPresentationTimeFromMediaTime(mediaTime, representation) {\n var periodStart = representation.adaptation.period.start;\n var presentationOffset = representation.presentationTimeOffset;\n\n return mediaTime + (periodStart - presentationOffset);\n }\n\n function calcMediaTimeFromPresentationTime(presentationTime, representation) {\n var periodStart = representation.adaptation.period.start;\n var presentationOffset = representation.presentationTimeOffset;\n\n return presentationTime - periodStart + presentationOffset;\n }\n\n function calcWallTimeForSegment(segment, isDynamic) {\n var suggestedPresentationDelay,\n displayStartTime,\n wallTime;\n\n if (isDynamic) {\n suggestedPresentationDelay = segment.representation.adaptation.period.mpd.suggestedPresentationDelay;\n displayStartTime = segment.presentationStartTime + suggestedPresentationDelay;\n wallTime = new Date(segment.availabilityStartTime.getTime() + (displayStartTime * 1000));\n }\n\n return wallTime;\n }\n\n function calcSegmentAvailabilityRange(representation, isDynamic) {\n var start = representation.adaptation.period.start;\n var end = start + representation.adaptation.period.duration;\n var range = { start: start, end: end };\n var d = representation.segmentDuration || ((representation.segments && representation.segments.length) ? representation.segments[representation.segments.length - 1].duration : 0);\n\n var checkTime,\n now;\n\n if (!isDynamic) return range;\n\n if (!isClientServerTimeSyncCompleted && representation.segmentAvailabilityRange) {\n return representation.segmentAvailabilityRange;\n }\n\n checkTime = representation.adaptation.period.mpd.checkTime;\n now = calcPresentationTimeFromWallTime(new Date(), representation.adaptation.period);\n //the Media Segment list is further restricted by the CheckTime together with the MPD attribute\n // MPD@timeShiftBufferDepth such that only Media Segments for which the sum of the start time of the\n // Media Segment and the Period start time falls in the interval [NOW- MPD@timeShiftBufferDepth - @duration, min(CheckTime, NOW)] are included.\n start = Math.max((now - representation.adaptation.period.mpd.timeShiftBufferDepth), representation.adaptation.period.start);\n var timeAnchor = (isNaN(checkTime) ? now : Math.min(checkTime, now));\n var periodEnd = representation.adaptation.period.start + representation.adaptation.period.duration;\n end = (timeAnchor >= periodEnd && (timeAnchor - d) < periodEnd ? periodEnd : timeAnchor) - d;\n //end = (isNaN(checkTime) ? now : Math.min(checkTime, now)) - d;\n range = {start: start, end: end};\n\n return range;\n }\n\n function calcPeriodRelativeTimeFromMpdRelativeTime(representation, mpdRelativeTime) {\n var periodStartTime = representation.adaptation.period.start;\n return mpdRelativeTime - periodStartTime;\n }\n\n function calcMpdRelativeTimeFromPeriodRelativeTime(representation, periodRelativeTime) {\n var periodStartTime = representation.adaptation.period.start;\n\n return periodRelativeTime + periodStartTime;\n }\n\n function onLiveEdgeSearchCompleted(e) {\n if (isClientServerTimeSyncCompleted || e.error) return;\n\n // the difference between expected and actual live edge time is supposed to be a difference between client\n // and server time as well\n clientServerTimeShift += e.liveEdge - (expectedLiveEdge + e.searchTime);\n isClientServerTimeSyncCompleted = true;\n }\n\n function onTimeSyncComplete(e) {\n if (isClientServerTimeSyncCompleted || e.error) {\n return;\n }\n\n clientServerTimeShift = e.offset / 1000;\n\n isClientServerTimeSyncCompleted = true;\n }\n\n function calcMSETimeOffset(representation) {\n // The MSEOffset is offset from AST for media. It is Period@start - presentationTimeOffset\n var presentationOffset = representation.presentationTimeOffset;\n var periodStart = representation.adaptation.period.start;\n return (periodStart - presentationOffset);\n }\n\n function reset() {\n eventBus.off(Events.LIVE_EDGE_SEARCH_COMPLETED, onLiveEdgeSearchCompleted, this);\n eventBus.off(Events.TIME_SYNCHRONIZATION_COMPLETED, onTimeSyncComplete, this);\n clientServerTimeShift = 0;\n isClientServerTimeSyncCompleted = false;\n expectedLiveEdge = NaN;\n }\n\n instance = {\n initialize: initialize,\n isTimeSyncCompleted: isTimeSyncCompleted,\n setTimeSyncCompleted: setTimeSyncCompleted,\n getClientTimeOffset: getClientTimeOffset,\n getExpectedLiveEdge: getExpectedLiveEdge,\n setExpectedLiveEdge: setExpectedLiveEdge,\n calcAvailabilityStartTimeFromPresentationTime: calcAvailabilityStartTimeFromPresentationTime,\n calcAvailabilityEndTimeFromPresentationTime: calcAvailabilityEndTimeFromPresentationTime,\n calcPresentationTimeFromWallTime: calcPresentationTimeFromWallTime,\n calcPresentationTimeFromMediaTime: calcPresentationTimeFromMediaTime,\n calcPeriodRelativeTimeFromMpdRelativeTime: calcPeriodRelativeTimeFromMpdRelativeTime,\n calcMpdRelativeTimeFromPeriodRelativeTime: calcMpdRelativeTimeFromPeriodRelativeTime,\n calcMediaTimeFromPresentationTime: calcMediaTimeFromPresentationTime,\n calcSegmentAvailabilityRange: calcSegmentAvailabilityRange,\n calcWallTimeForSegment: calcWallTimeForSegment,\n calcMSETimeOffset: calcMSETimeOffset,\n reset: reset\n };\n\n return instance;\n}\n\nTimelineConverter.__dashjs_factory_name = 'TimelineConverter';\nexport default FactoryMaker.getSingletonFactory(TimelineConverter);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass AdaptationSet {\n constructor() {\n this.period = null;\n this.index = -1;\n this.type = null;\n }\n}\n\nexport default AdaptationSet;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass Event {\n constructor() {\n this.duration = NaN;\n this.presentationTime = NaN;\n this.id = NaN;\n this.messageData = '';\n this.eventStream = null;\n this.presentationTimeDelta = NaN; // Specific EMSG Box parameter\n }\n}\n\nexport default Event;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass EventStream {\n constructor() {\n this.adaptionSet = null;\n this.representation = null;\n this.period = null;\n this.timescale = 1;\n this.value = '';\n this.schemeIdUri = '';\n }\n}\n\nexport default EventStream;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass Mpd {\n constructor() {\n this.manifest = null;\n this.suggestedPresentationDelay = 0;\n this.availabilityStartTime = null;\n this.availabilityEndTime = Number.POSITIVE_INFINITY;\n this.timeShiftBufferDepth = Number.POSITIVE_INFINITY;\n this.maxSegmentDuration = Number.POSITIVE_INFINITY;\n this.checkTime = NaN;\n this.clientServerTimeShift = 0;\n this.isClientServerTimeSyncCompleted = false;\n }\n}\n\nexport default Mpd;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass Period {\n constructor() {\n this.id = null;\n this.index = -1;\n this.duration = NaN;\n this.start = NaN;\n this.mpd = null;\n }\n}\n\nPeriod.DEFAULT_ID = 'defaultId';\n\nexport default Period;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass Representation {\n constructor() {\n this.id = null;\n this.index = -1;\n this.adaptation = null;\n this.segmentInfoType = null;\n this.initialization = null;\n this.segmentDuration = NaN;\n this.timescale = 1;\n this.startNumber = 1;\n this.indexRange = null;\n this.range = null;\n this.presentationTimeOffset = 0;\n // Set the source buffer timeOffset to this\n this.MSETimeOffset = NaN;\n this.segmentAvailabilityRange = null;\n this.availableSegmentsNumber = 0;\n this.bandwidth = NaN;\n this.maxPlayoutRate = NaN;\n }\n}\n\nexport default Representation;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass Segment {\n constructor() {\n this.indexRange = null;\n this.index = null;\n this.mediaRange = null;\n this.media = null;\n this.duration = NaN;\n // this is the time that should be inserted into the media url\n this.replacementTime = null;\n // this is the number that should be inserted into the media url\n this.replacementNumber = NaN;\n // This is supposed to match the time encoded in the media Segment\n this.mediaStartTime = NaN;\n // When the source buffer timeOffset is set to MSETimeOffset this is the\n // time that will match the seekTarget and video.currentTime\n this.presentationStartTime = NaN;\n // Do not schedule this segment until\n this.availabilityStartTime = NaN;\n // Ignore and discard this segment after\n this.availabilityEndTime = NaN;\n // The index of the segment inside the availability window\n this.availabilityIdx = NaN;\n // For dynamic mpd's, this is the wall clock time that the video\n // element currentTime should be presentationStartTime\n this.wallStartTime = NaN;\n this.representation = null;\n }\n}\n\nexport default Segment;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass UTCTiming {\n constructor() {\n // UTCTiming is a DescriptorType and doesn't have any additional fields\n this.schemeIdUri = '';\n this.value = '';\n }\n}\n\nexport default UTCTiming;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Error from './vo/Error.js';\nimport EventBus from './../core/EventBus.js';\nimport Events from './../core/events/Events.js';\nimport FactoryMaker from '../core/FactoryMaker.js';\nimport Debug from '../core/Debug.js';\nimport MediaPlayerModel from './models/MediaPlayerModel.js';\n\nfunction FragmentLoader(config) {\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n let metricsModel = config.metricsModel;\n let errHandler = config.errHandler;\n let requestModifier = config.requestModifier;\n\n let instance,\n mediaPlayerModel,\n xhrs;\n\n function setup() {\n mediaPlayerModel = MediaPlayerModel(context).getInstance();\n xhrs = [];\n }\n\n function doLoad(request, remainingAttempts) {\n var req = new XMLHttpRequest();\n var traces = [];\n var firstProgress = true;\n var needFailureReport = true;\n var lastTraceTime = null;\n var lastTraceReceivedCount = 0;\n var self = this;\n var handleLoaded = function (requestVO, succeeded) {\n needFailureReport = false;\n\n var currentTime = new Date();\n var latency,\n download;\n\n if (!requestVO.firstByteDate) {\n requestVO.firstByteDate = requestVO.requestStartDate;\n }\n requestVO.requestEndDate = currentTime;\n\n latency = (requestVO.firstByteDate.getTime() - requestVO.requestStartDate.getTime());\n download = (requestVO.requestEndDate.getTime() - requestVO.firstByteDate.getTime());\n\n log((succeeded ? 'loaded ' : 'failed ') + requestVO.mediaType + ':' + requestVO.type + ':' + requestVO.startTime + ' (' + req.status + ', ' + latency + 'ms, ' + download + 'ms)');\n\n metricsModel.addHttpRequest(\n request.mediaType,\n null,\n request.type,\n request.url,\n req.responseURL || null,\n request.range,\n request.requestStartDate,\n requestVO.firstByteDate,\n requestVO.requestEndDate,\n req.status,\n request.duration,\n req.getAllResponseHeaders(),\n succeeded ? traces : null\n );\n };\n\n xhrs.push(req);\n request.requestStartDate = new Date();\n lastTraceTime = request.requestStartDate;\n\n req.open('GET', requestModifier.modifyRequestURL(request.url), true);\n req.responseType = 'arraybuffer';\n req = requestModifier.modifyRequestHeader(req);\n /*\n req.setRequestHeader(\"Cache-Control\", \"no-cache\");\n req.setRequestHeader(\"Pragma\", \"no-cache\");\n req.setRequestHeader(\"If-Modified-Since\", \"Sat, 1 Jan 2000 00:00:00 GMT\");\n */\n if (request.range) {\n req.setRequestHeader('Range', 'bytes=' + request.range);\n }\n\n req.onprogress = function (event) {\n var currentTime = new Date();\n\n if (firstProgress) {\n firstProgress = false;\n if (!event.lengthComputable || (event.lengthComputable && event.total !== event.loaded)) {\n request.firstByteDate = currentTime;\n }\n }\n\n if (event.lengthComputable) {\n request.bytesLoaded = event.loaded;\n request.bytesTotal = event.total;\n }\n\n traces.push({\n s: lastTraceTime,\n d: currentTime.getTime() - lastTraceTime.getTime(),\n b: [event.loaded ? event.loaded - lastTraceReceivedCount : 0]\n });\n\n lastTraceTime = currentTime;\n lastTraceReceivedCount = event.loaded;\n eventBus.trigger(Events.LOADING_PROGRESS, {request: request});\n };\n\n req.onload = function () {\n if (req.status < 200 || req.status > 299) return;\n handleLoaded(request, true);\n eventBus.trigger(Events.LOADING_COMPLETED, {request: request, response: req.response, sender: instance});\n };\n\n req.onloadend = req.onerror = function () {\n if (xhrs.indexOf(req) === -1) {\n return;\n } else {\n xhrs.splice(xhrs.indexOf(req), 1);\n }\n\n if (!needFailureReport) return;\n\n handleLoaded(request, false);\n\n if (remainingAttempts > 0) {\n log('Failed loading fragment: ' + request.mediaType + ':' + request.type + ':' + request.startTime + ', retry in ' + mediaPlayerModel.getFragmentRetryInterval() + 'ms' + ' attempts: ' + remainingAttempts);\n remainingAttempts--;\n setTimeout(function () {\n doLoad.call(self, request, remainingAttempts);\n }, mediaPlayerModel.getFragmentRetryInterval());\n } else {\n log('Failed loading fragment: ' + request.mediaType + ':' + request.type + ':' + request.startTime + ' no retry attempts left');\n errHandler.downloadError('content', request.url, req);\n eventBus.trigger(Events.LOADING_COMPLETED, {\n request: request,\n bytes: null,\n error: new Error(null, 'failed loading fragment', null),\n sender: self\n });\n }\n };\n\n req.send();\n }\n\n function checkForExistence(request) {\n\n if (!request) {\n eventBus.trigger(Events.CHECK_FOR_EXISTENCE_COMPLETED, { request: request, exists: false });\n return;\n }\n\n var req = new XMLHttpRequest();\n var isSuccessful = false;\n\n req.open('HEAD', request.url, true);\n\n req.onload = function () {\n if (req.status < 200 || req.status > 299) return;\n isSuccessful = true;\n eventBus.trigger(Events.CHECK_FOR_EXISTENCE_COMPLETED, { request: request, exists: true });\n\n };\n\n req.onloadend = req.onerror = function () {\n if (isSuccessful) return;\n eventBus.trigger(Events.CHECK_FOR_EXISTENCE_COMPLETED, { request: request, exists: false });\n };\n\n req.send();\n }\n\n function load(req) {\n if (!req) {\n eventBus.trigger(Events.LOADING_COMPLETED, {\n request: req,\n bytes: null,\n error: new Error(null, 'request is null', null),\n sender: this\n });\n } else {\n doLoad(req, mediaPlayerModel.getFragmentRetryAttempts());\n }\n }\n\n function abort() {\n var i,\n req;\n var ln = xhrs.length;\n\n for (i = 0; i < ln; i++) {\n req = xhrs[i];\n xhrs[i] = null;\n if (!req) continue;\n req.abort();\n req = null;\n }\n\n xhrs = [];\n }\n\n instance = {\n checkForExistence: checkForExistence,\n load: load,\n abort: abort\n };\n\n setup();\n\n return instance;\n}\n\nFragmentLoader.__dashjs_factory_name = 'FragmentLoader';\nexport default FactoryMaker.getClassFactory(FragmentLoader);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport XlinkController from './controllers/XlinkController.js';\nimport XlinkLoader from './XlinkLoader.js';\nimport Error from './vo/Error.js';\nimport HTTPRequest from './vo/metrics/HTTPRequest.js';\nimport EventBus from '../core/EventBus.js';\nimport Events from '../core/events/Events.js';\nimport FactoryMaker from '../core/FactoryMaker.js';\nimport Debug from '../core/Debug.js';\n\nfunction ManifestLoader(config) {\n\n const RETRY_ATTEMPTS = 3;\n const RETRY_INTERVAL = 500;\n const PARSERERROR_ERROR_CODE = 1;\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n let parser = config.parser;\n let errHandler = config.errHandler;\n let metricsModel = config.metricsModel;\n let requestModifier = config.requestModifier;\n\n let instance,\n xlinkController,\n remainingAttempts;\n\n function setup() {\n remainingAttempts = RETRY_ATTEMPTS;\n let xlinkLoader = XlinkLoader(context).create({\n errHandler: errHandler,\n metricsModel: metricsModel,\n requestModifier: requestModifier\n });\n xlinkController = XlinkController(context).create({\n xlinkLoader: xlinkLoader\n });\n eventBus.on(Events.XLINK_READY, onXlinkReady, instance);\n }\n\n function load (url) {\n var baseUrl = parseBaseUrl(url);\n\n var request = new XMLHttpRequest();\n var requestTime = new Date();\n var needFailureReport = true;\n var lastTraceTime = requestTime;\n var lastTraceReceivedCount = 0;\n var traces = [];\n\n var manifest,\n onload,\n report,\n progress,\n firstProgressCall;\n\n onload = function () {\n var actualUrl = null;\n var errorMsg;\n var loadedTime = new Date();\n\n if (request.status < 200 || request.status > 299) {\n return;\n }\n\n\n needFailureReport = false;\n remainingAttempts = RETRY_ATTEMPTS;\n\n // Handle redirects for the MPD - as per RFC3986 Section 5.1.3\n if (request.responseURL && request.responseURL !== url) {\n baseUrl = parseBaseUrl(request.responseURL);\n actualUrl = request.responseURL;\n }\n\n metricsModel.addHttpRequest('stream',\n null,\n HTTPRequest.MPD_TYPE,\n url,\n actualUrl,\n null,\n requestTime,\n request.firstByteDate || null,\n loadedTime,\n request.status,\n null,\n request.getAllResponseHeaders(),\n traces);\n\n manifest = parser.parse(request.responseText, baseUrl, xlinkController);\n\n if (manifest) {\n manifest.url = actualUrl || url;\n\n // URL from which the MPD was originally retrieved (MPD updates will not change this value)\n if (!manifest.originalUrl) {\n manifest.originalUrl = manifest.url;\n }\n\n manifest.loadedTime = loadedTime;\n metricsModel.addManifestUpdate('stream', manifest.type, requestTime, loadedTime, manifest.availabilityStartTime);\n xlinkController.resolveManifestOnLoad(manifest);\n } else {\n errorMsg = 'Failed loading manifest: ' + url + ', parsing failed';\n eventBus.trigger(Events.INTERNAL_MANIFEST_LOADED, {manifest: null, error: new Error(PARSERERROR_ERROR_CODE, errorMsg, null)});\n log(errorMsg);\n }\n };\n\n report = function () {\n if (!needFailureReport) {\n return;\n }\n needFailureReport = false;\n\n metricsModel.addHttpRequest('stream',\n null,\n HTTPRequest.MPD_TYPE,\n url,\n request.responseURL || null,\n null,\n requestTime,\n request.firstByteDate || null,\n new Date(),\n request.status,\n null,\n request.getAllResponseHeaders(),\n null);\n\n if (remainingAttempts > 0) {\n log('Failed loading manifest: ' + url + ', retry in ' + RETRY_INTERVAL + 'ms' + ' attempts: ' + remainingAttempts);\n remainingAttempts--;\n setTimeout(function () {\n load(url);\n }, RETRY_INTERVAL);\n } else {\n log('Failed loading manifest: ' + url + ' no retry attempts left');\n errHandler.downloadError('manifest', url, request);\n eventBus.trigger(Events.INTERNAL_MANIFEST_LOADED, {error: new Error('Failed loading manifest: ' + url + ' no retry attempts left')});\n }\n };\n\n progress = function (event) {\n var currentTime = new Date();\n\n if (firstProgressCall) {\n firstProgressCall = false;\n if (!event.lengthComputable || (event.lengthComputable && event.total !== event.loaded)) {\n request.firstByteDate = currentTime;\n }\n }\n\n if (event.lengthComputable) {\n request.bytesLoaded = event.loaded;\n request.bytesTotal = event.total;\n }\n\n traces.push({\n s: lastTraceTime,\n d: currentTime.getTime() - lastTraceTime.getTime(),\n b: [event.loaded ? event.loaded - lastTraceReceivedCount : 0]\n });\n\n lastTraceTime = currentTime;\n lastTraceReceivedCount = event.loaded;\n };\n\n try {\n //log(\"Start loading manifest: \" + url);\n request.onload = onload;\n request.onloadend = report;\n request.onerror = report;\n request.onprogress = progress;\n request.open('GET', requestModifier.modifyRequestURL(url), true);\n request = requestModifier.modifyRequestHeader(request);\n request.send();\n } catch (e) {\n request.onerror();\n }\n }\n\n function reset() {\n eventBus.off(Events.XLINK_READY, onXlinkReady, instance);\n requestModifier = null;\n xlinkController.reset();\n xlinkController = null;\n }\n\n function parseBaseUrl(url) {\n var base = '';\n\n if (url.indexOf('/') !== -1)\n {\n if (url.indexOf('?') !== -1) {\n url = url.substring(0, url.indexOf('?'));\n }\n base = url.substring(0, url.lastIndexOf('/') + 1);\n }\n\n return base;\n }\n\n function onXlinkReady(event) {\n eventBus.trigger(Events.INTERNAL_MANIFEST_LOADED, { manifest: event.manifest });\n }\n\n instance = {\n load: load,\n reset: reset\n };\n\n setup();\n return instance;\n}\n\nManifestLoader.__dashjs_factory_name = 'ManifestLoader';\nexport default FactoryMaker.getClassFactory(ManifestLoader);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport EventBus from '../core/EventBus.js';\nimport Events from '../core/events/Events.js';\nimport FactoryMaker from '../core/FactoryMaker.js';\nimport Debug from '../core/Debug.js';\n\nfunction ManifestUpdater() {\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n refreshDelay,\n refreshTimer,\n isStopped,\n isUpdating,\n manifestLoader,\n manifestModel,\n dashManifestModel;\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.manifestModel) {\n manifestModel = config.manifestModel;\n }\n if (config.dashManifestModel) {\n dashManifestModel = config.dashManifestModel;\n }\n }\n\n function initialize(loader) {\n manifestLoader = loader;\n refreshDelay = NaN;\n refreshTimer = null;\n isUpdating = false;\n isStopped = true;\n\n eventBus.on(Events.STREAMS_COMPOSED, onStreamsComposed, this);\n eventBus.on(Events.PLAYBACK_STARTED, onPlaybackStarted, this);\n eventBus.on(Events.PLAYBACK_PAUSED, onPlaybackPaused, this);\n eventBus.on(Events.INTERNAL_MANIFEST_LOADED, onManifestLoaded, this);\n }\n\n function setManifest(manifest) {\n update(manifest);\n }\n\n function getManifestLoader() {\n return manifestLoader;\n }\n\n function reset() {\n eventBus.off(Events.PLAYBACK_STARTED, onPlaybackStarted, this);\n eventBus.off(Events.PLAYBACK_PAUSED, onPlaybackPaused, this);\n eventBus.off(Events.STREAMS_COMPOSED, onStreamsComposed, this);\n eventBus.off(Events.INTERNAL_MANIFEST_LOADED, onManifestLoaded, this);\n\n isStopped = true;\n isUpdating = false;\n clear();\n refreshDelay = NaN;\n }\n\n function clear() {\n if (refreshTimer !== null) {\n clearInterval(refreshTimer);\n refreshTimer = null;\n }\n }\n\n function start() {\n clear();\n if (!isNaN(refreshDelay)) {\n log('Refresh manifest in ' + refreshDelay + ' seconds.');\n refreshTimer = setTimeout(onRefreshTimer, Math.min(refreshDelay * 1000, Math.pow(2, 31) - 1), this);\n }\n }\n\n function update(manifest) {\n var delay,\n timeSinceLastUpdate;\n\n var date = new Date();\n\n manifestModel.setValue(manifest);\n log('Manifest has been refreshed at ' + date + '[' + date.getTime() / 1000 + '] ');\n\n delay = dashManifestModel.getRefreshDelay(manifest);\n timeSinceLastUpdate = (new Date().getTime() - manifest.loadedTime.getTime()) / 1000;\n refreshDelay = Math.max(delay - timeSinceLastUpdate, 0);\n\n eventBus.trigger(Events.MANIFEST_UPDATED, {manifest: manifest});\n\n if (!isStopped) {\n start();\n }\n }\n\n function onRefreshTimer() {\n var manifest,\n url;\n\n if (isStopped || isUpdating) return;\n\n isUpdating = true;\n manifest = manifestModel.getValue();\n url = manifest.url;\n\n if (manifest.hasOwnProperty('Location')) {\n url = manifest.Location;\n }\n\n //log(\"Refresh manifest @ \" + url);\n\n manifestLoader.load(url);\n }\n\n function onManifestLoaded(e) {\n if (!e.error) {\n update(e.manifest);\n }\n }\n\n function onPlaybackStarted (/*e*/) {\n isStopped = false;\n start();\n }\n\n function onPlaybackPaused(/*e*/) {\n isStopped = true;\n clear();\n }\n\n function onStreamsComposed(/*e*/) {\n // When streams are ready we can consider manifest update completed. Resolve the update promise.\n isUpdating = false;\n }\n\n instance = {\n initialize: initialize,\n setManifest: setManifest,\n getManifestLoader: getManifestLoader,\n setConfig: setConfig,\n reset: reset\n };\n\n return instance;\n}\nManifestUpdater.__dashjs_factory_name = 'ManifestUpdater';\nexport default FactoryMaker.getSingletonFactory(ManifestUpdater);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport UTCTiming from '../dash/vo/UTCTiming.js';\nimport PlaybackController from './controllers/PlaybackController.js';\nimport StreamController from './controllers/StreamController.js';\nimport MediaController from './controllers/MediaController.js';\nimport ManifestLoader from './ManifestLoader.js';\nimport LiveEdgeFinder from './utils/LiveEdgeFinder.js';\nimport ErrorHandler from './utils/ErrorHandler.js';\nimport Capabilities from './utils/Capabilities.js';\nimport TextTracks from './TextTracks.js';\nimport SourceBufferController from './controllers/SourceBufferController.js';\nimport VirtualBuffer from './VirtualBuffer.js';\nimport RequestModifier from './utils/RequestModifier.js';\nimport TextSourceBuffer from './TextSourceBuffer.js';\nimport URIQueryAndFragmentModel from './models/URIQueryAndFragmentModel.js';\nimport ManifestModel from './models/ManifestModel.js';\nimport MediaPlayerModel from './models/MediaPlayerModel.js';\nimport MetricsModel from './models/MetricsModel.js';\nimport AbrController from './controllers/AbrController.js';\nimport TimeSyncController from './controllers/TimeSyncController.js';\nimport ABRRulesCollection from './rules/abr/ABRRulesCollection.js';\nimport VideoModel from './models/VideoModel.js';\nimport RulesController from './rules/RulesController.js';\nimport ScheduleRulesCollection from './rules/scheduling/ScheduleRulesCollection.js';\nimport SynchronizationRulesCollection from './rules/synchronization/SynchronizationRulesCollection.js';\nimport MediaSourceController from './controllers/MediaSourceController.js';\nimport Debug from './../core/Debug.js';\nimport EventBus from './../core/EventBus.js';\nimport Events from './../core/events/Events.js';\nimport MediaPlayerEvents from './MediaPlayerEvents.js';\nimport FactoryMaker from '../core/FactoryMaker.js';\n//Dash\nimport DashAdapter from '../dash/DashAdapter.js';\nimport DashParser from '../dash/DashParser.js';\nimport DashManifestModel from '../dash/models/DashManifestModel.js';\nimport DashMetrics from '../dash/DashMetrics.js';\nimport TimelineConverter from '../dash/utils/TimelineConverter.js';\n\n/**\n * @Module MediaPlayer\n * @description The MediaPlayer is the primary dash.js Module and a Facade to build your player around.\n * It will allow you access to all the important dash.js properties/methods via the public API and all the\n * events to build a robust DASH media player.\n */\nfunction MediaPlayer() {\n\n const VERSION = '2.0.0';\n const PLAYBACK_NOT_INITIALIZED_ERROR = 'You must first call play() to init playback before calling this method';\n const ELEMENT_NOT_ATTACHED_ERROR = 'You must first call attachView() to set the video element before calling this method';\n const MEDIA_PLAYER_NOT_INITIALIZED_ERROR = 'MediaPlayer not initialized!';\n\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n let debug = Debug(context).getInstance();\n let log = debug.log;\n\n let instance,\n element,\n source,\n protectionData,\n mediaPlayerInitialized,\n playbackInitialized,\n autoPlay,\n abrController,\n mediaController,\n protectionController,\n metricsReportingController,\n adapter,\n metricsModel,\n mediaPlayerModel,\n errHandler,\n capabilities,\n streamController,\n rulesController,\n playbackController,\n dashMetrics,\n dashManifestModel,\n videoModel,\n textSourceBuffer;\n\n function setup() {\n mediaPlayerInitialized = false;\n playbackInitialized = false;\n autoPlay = true;\n protectionController = null;\n protectionData = null;\n adapter = null;\n Events.extend(MediaPlayerEvents);\n mediaPlayerModel = MediaPlayerModel(context).getInstance();\n }\n\n /**\n * Upon creating the MediaPlayer you must call initialize before you call anything else.\n * There is one exception to this rule. It is crucial to call {@link module:MediaPlayer#extend extend()}\n * with all your extensions prior to calling initialize.\n *\n * ALL arguments are optional and there are individual methods to set each argument later on.\n * The args in this method are just for convenience and should only be used for a simple player setup.\n *\n * @param {HTML5MediaElement} view - Optional arg to set the video element. {@link module:MediaPlayer#attachView attachView()}\n * @param {string} source - Optional arg to set the media source. {@link module:MediaPlayer#attachSource attachSource()}\n * @param {boolean} AutoPlay - Optional arg to set auto play. {@link module:MediaPlayer#setAutoPlay setAutoPlay()}\n * @see {@link module:MediaPlayer#attachView attachView()}\n * @see {@link module:MediaPlayer#attachSource attachSource()}\n * @see {@link module:MediaPlayer#setAutoPlay setAutoPlay()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function initialize(view, source, AutoPlay) {\n\n capabilities = Capabilities(context).getInstance();\n errHandler = ErrorHandler(context).getInstance();\n\n if (!capabilities.supportsMediaSource()) {\n errHandler.capabilityError('mediasource');\n return;\n }\n\n if (mediaPlayerInitialized) return;\n mediaPlayerInitialized = true;\n\n abrController = AbrController(context).getInstance();\n\n playbackController = PlaybackController(context).getInstance();\n mediaController = MediaController(context).getInstance();\n mediaController.initialize();\n dashManifestModel = DashManifestModel(context).getInstance();\n dashMetrics = DashMetrics(context).getInstance();\n metricsModel = MetricsModel(context).getInstance();\n metricsModel.setConfig({adapter: createAdaptor()});\n\n restoreDefaultUTCTimingSources();\n setAutoPlay(AutoPlay !== undefined ? AutoPlay : true);\n\n if (view) {\n attachView(view);\n }\n\n if (source) {\n attachSource(source);\n }\n\n log('[dash.js ' + VERSION + '] ' + 'MediaPlayer has been initialized');\n }\n\n /**\n * The ready state of the MediaPlayer based on both the video element and MPD source being defined.\n *\n * @returns {boolean} The current ready state of the MediaPlayer\n * @see {@link module:MediaPlayer#attachView attachView()}\n * @see {@link module:MediaPlayer#attachSource attachSource()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function isReady() {\n return (!!element && !!source);\n }\n\n /**\n * The play method initiates playback of the media defined by the {@link module:MediaPlayer#attachSource attachSource()} method.\n * This method will call play on the native Video Element.\n *\n * @see {@link module:MediaPlayer#attachSource attachSource()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function play() {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n if (!autoPlay || (isPaused() && playbackInitialized)) {\n playbackController.play();\n }\n }\n\n /**\n * This method will call pause on the native Video Element.\n *\n * @memberof module:MediaPlayer\n * @instance\n */\n function pause() {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n playbackController.pause();\n }\n\n /**\n * Returns a Boolean that indicates whether the Video Element is paused.\n * @return {boolean}\n * @memberof module:MediaPlayer\n * @instance\n */\n function isPaused() {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n return playbackController.isPaused();\n }\n\n /**\n * Returns a Boolean that indicates whether the media is in the process of seeking to a new position.\n * @return {boolean}\n * @memberof module:MediaPlayer\n * @instance\n */\n function isSeeking() {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n return playbackController.isSeeking();\n }\n\n /**\n * Use this method to set the native Video Element's muted state. Takes a Boolean that determines whether audio is muted. true if the audio is muted and false otherwise.\n * @param {boolean} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setMute(value) {\n if (!element) {\n throw ELEMENT_NOT_ATTACHED_ERROR;\n }\n element.muted = value;\n }\n\n /**\n * A Boolean that determines whether audio is muted.\n * @returns {boolean}\n * @memberof module:MediaPlayer\n * @instance\n */\n function isMuted() {\n if (!element) {\n throw ELEMENT_NOT_ATTACHED_ERROR;\n }\n return element.muted;\n }\n\n /**\n * A double indicating the audio volume, from 0.0 (silent) to 1.0 (loudest).\n * @param {number} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setVolume(value) {\n if (!element) {\n throw ELEMENT_NOT_ATTACHED_ERROR;\n }\n element.volume = value;\n }\n\n /**\n * Returns the current audio volume, from 0.0 (silent) to 1.0 (loudest).\n * @returns {number}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getVolume() {\n if (!element) {\n throw ELEMENT_NOT_ATTACHED_ERROR;\n }\n return element.volume;\n }\n\n /**\n * The length of the buffer for a given media type, in seconds. Valid media types are \"video\", \"audio\" and \"fragmentedText\". If no type\n * is passed in, then the minimum of the video and the audio buffer length is returned. The value is returned to a precision of two decimal places.\n * NaN is returned if an invalid type is requested, or if the presentation does not contain that type or if no arguments are passed and the\n * presentation doers not include any audio or video adaption sets.\n *\n * @returns {number} The length of the buffer for the given media type, in seconds.\n * @memberof module:MediaPlayer\n * @instance\n */\n function getBufferLength(type) {\n\n if (!type)\n {\n let videoBuffer = getTracksFor('video').length > 0 ? getDashMetrics().getCurrentBufferLevel(getMetricsFor('video')) : Number.MAX_SAFE_INTEGER;\n let audioBuffer = getTracksFor('audio').length > 0 ? getDashMetrics().getCurrentBufferLevel(getMetricsFor('audio')) : Number.MAX_SAFE_INTEGER;\n let textBuffer = getTracksFor('fragmentedText').length > 0 ? getDashMetrics().getCurrentBufferLevel(getMetricsFor('fragmentedText')) : Number.MAX_SAFE_INTEGER;\n return Math.min(videoBuffer,audioBuffer,textBuffer).toPrecision(3);\n }\n else\n {\n if (type === 'video' || type === 'audio' || type === 'fragmentedText')\n {\n let buffer = getDashMetrics().getCurrentBufferLevel(getMetricsFor(type));\n return buffer ? buffer.toPrecision(3) : NaN;\n }\n else\n {\n log('Warning - getBufferLength requested for invalid type');\n return NaN;\n }\n }\n }\n\n /**\n * The timeShiftBufferLength (DVR Window), in seconds.\n *\n * @returns {number} The window of allowable play time behind the live point of a live stream.\n * @memberof module:MediaPlayer\n * @instance\n */\n function getDVRWindowSize() {\n var metric = getDVRInfoMetric();\n if (!metric) {\n return 0;\n }\n return metric.manifestInfo.DVRWindowSize;\n }\n\n /**\n * This method should only be used with a live stream that has a valid timeShiftBufferLength (DVR Window).\n * NOTE - If you do not need the raw offset value (i.e. media analytics, tracking, etc) consider using the {@link module:MediaPlayer#seek seek()} method\n * which will calculate this value for you and set the video element's currentTime property all in one simple call.\n *\n * @param value {number} A relative time, in seconds, based on the return value of the {@link module:MediaPlayer#duration duration()} method is expected.\n * @returns {number} A value that is relative the available range within the timeShiftBufferLength (DVR Window).\n * @see {@link module:MediaPlayer#seek seek()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getDVRSeekOffset(value) {\n var metric = getDVRInfoMetric();\n\n if (!metric) {\n return 0;\n }\n\n var val = metric.range.start + value;\n\n if (val > metric.range.end) {\n val = metric.range.end;\n }\n\n return val;\n }\n\n /**\n * Sets the currentTime property of the attached video element. If it is a live stream with a\n * timeShiftBufferLength, then the DVR window offset will be automatically calculated.\n *\n * @param value {number} A relative time, in seconds, based on the return value of the {@link module:MediaPlayer#duration duration()} method is expected\n * @see {@link module:MediaPlayer#getDVRSeekOffset getDVRSeekOffset()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function seek(value) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n var s = playbackController.getIsDynamic() ? getDVRSeekOffset(value) : value;\n playbackController.seek(s);\n }\n\n\n /**\n * Current time of the playhead, in seconds.\n *\n * @returns {number} The current playhead time of the media.\n * @memberof module:MediaPlayer\n * @instance\n */\n function time() {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n var t = element.currentTime;\n if (playbackController.getIsDynamic()) {\n var metric = getDVRInfoMetric();\n t = (metric === null) ? 0 : duration() - (metric.range.end - metric.time);\n }\n return t;\n }\n\n /**\n * Duration of the media's playback, in seconds.\n *\n * @returns {number} The current duration of the media.\n * @memberof module:MediaPlayer\n * @instance\n */\n function duration() {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n var d = element.duration;\n\n if (playbackController.getIsDynamic()) {\n\n var metric = getDVRInfoMetric();\n var range;\n\n if (!metric) {\n return 0;\n }\n\n range = metric.range.end - metric.range.start;\n d = range < metric.manifestInfo.DVRWindowSize ? range : metric.manifestInfo.DVRWindowSize;\n }\n return d;\n }\n\n /**\n * Use this method to get the current playhead time as an absolute value, the time in seconds since midnight UTC, Jan 1 1970.\n * Note - this property only has meaning for live streams. If called before play() has begun, it will return a value of NaN.\n *\n * @returns {number} The current playhead time as UTC timestamp.\n * @memberof module:MediaPlayer\n * @instance\n */\n function timeAsUTC() {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n if (time() < 0) {\n return NaN;\n }\n return getAsUTC(time());\n }\n\n /**\n * Use this method to get the current duration as an absolute value, the time in seconds since midnight UTC, Jan 1 1970.\n * Note - this property only has meaning for live streams.\n *\n * @returns {number} The current duration as UTC timestamp.\n * @memberof module:MediaPlayer\n * @instance\n */\n function durationAsUTC() {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n return getAsUTC(duration());\n }\n\n /**\n * A utility methods which converts UTC timestamp value into a valid time and date string.\n *\n * @param {number} time - UTC timestamp to be converted into date and time.\n * @param {string} locales - a region identifier (i.e. en_US).\n * @param {boolean} hour12 - 12 vs 24 hour. Set to true for 12 hour time formatting.\n * @returns {string} A formatted time and date string.\n * @memberof module:MediaPlayer\n * @instance\n */\n function formatUTC(time, locales, hour12) {\n var dt = new Date(time * 1000);\n var d = dt.toLocaleDateString(locales);\n var t = dt.toLocaleTimeString(locales, {hour12: hour12});\n return t + ' ' + d;\n }\n\n /**\n * A utility method which converts seconds into TimeCode (i.e. 300 --> 05:00).\n *\n * @param value {number} A number in seconds to be converted into a formatted time code.\n * @returns {string} A formatted time code string.\n * @memberof module:MediaPlayer\n * @instance\n */\n function convertToTimeCode(value) {\n value = Math.max(value, 0);\n\n var h = Math.floor(value / 3600);\n var m = Math.floor((value % 3600) / 60);\n var s = Math.floor((value % 3600) % 60);\n return (h === 0 ? '' : (h < 10 ? '0' + h.toString() + ':' : h.toString() + ':')) + (m < 10 ? '0' + m.toString() : m.toString()) + ':' + (s < 10 ? '0' + s.toString() : s.toString());\n }\n\n /**\n * This method should be used to extend or replace internal dash.js objects.\n * There are two ways to extend dash.js (determined by the override argument):\n *
    \n *
  1. If you set override to true any public method or property in your custom object will\n * override the dash.js parent object's property(ies) and will be used instead but the\n * dashj.s parent module will still be created.
  2. \n *\n *
  3. If you set override to false your object will completely replace the dash.js object.\n * (Note: This is how it was in 1.x of Dash.js with Dijon).
  4. \n *
\n * When you extend you get access to this.context, this.factory and this.parent to operate with in your custom object.\n *
    \n *
  • this.context - can be used to pass context for singleton access.
  • \n *
  • this.factory - can be used to call factory.getSingletonInstance().
  • \n *
  • this.parent - is the reference of the parent object to call other public methods. (this.parent is excluded if you extend with override set to false or option 2)
  • \n *
\n * You must call extend before you call initialize\n * @see {@link module:MediaPlayer#initialize initialize()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function extend(parentNameString, childInstance, override) {\n FactoryMaker.extend(parentNameString, childInstance, override, context);\n }\n\n /**\n * Use the on method to listen for public events found in MediaPlayer.events. {@link MediaPlayerEvents}\n *\n * @param {String} type - {@link MediaPlayerEvents}\n * @param {Function} listener - callback method when the event fires.\n * @param {Object} scope - context of the listener so it can be removed properly.\n * @memberof module:MediaPlayer\n * @instance\n */\n function on(type, listener, scope) {\n eventBus.on(type, listener, scope);\n }\n\n /**\n * Use the off method to remove listeners for public events found in MediaPlayer.events. {@link MediaPlayerEvents}\n *\n * @param {String} type - {@link MediaPlayerEvents}\n * @param {Function} listener - callback method when the event fires.\n * @param {Object} scope - context of the listener so it can be removed properly.\n * @memberof module:MediaPlayer\n * @instance\n */\n function off(type, listener, scope) {\n eventBus.off(type, listener, scope);\n }\n\n /**\n * Current version of Dash.js\n * @returns {string} the current dash.js version string.\n * @memberof module:MediaPlayer\n * @instance\n */\n function getVersion() {\n return VERSION;\n }\n\n /**\n * Use this method to access the dash.js logging class.\n *\n * @returns {@link module:Debug}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getDebug() {\n return debug;\n }\n\n /**\n * @returns {@link VideoModel}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getVideoModel() {\n if (!element) {\n throw ELEMENT_NOT_ATTACHED_ERROR;\n }\n return videoModel;\n }\n\n /**\n * @returns {@link object}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getVideoContainer() {\n return videoModel ? videoModel.getVideoContainer() : null;\n }\n\n /**\n *

Changing this value will lower or increase live stream latency. The detected segment duration will be multiplied by this value\n * to define a time in seconds to delay a live stream from the live edge.

\n *

Lowering this value will lower latency but may decrease the player's ability to build a stable buffer.

\n *\n * @param value {int} Represents how many segment durations to delay the live stream.\n * @default 4\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#useSuggestedPresentationDelay useSuggestedPresentationDelay()}\n * @instance\n */\n function setLiveDelayFragmentCount(value) {\n mediaPlayerModel.setLiveDelayFragmentCount(value);\n }\n\n /**\n *

Set to true if you would like to override the default live delay and honor the SuggestedPresentationDelay attribute in by the manifest.

\n * @param value {boolean}\n * @default false\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#setLiveDelayFragmentCount setLiveDelayFragmentCount()}\n * @instance\n */\n function useSuggestedPresentationDelay(value) {\n mediaPlayerModel.setUseSuggestedPresentationDelay(value);\n }\n\n /**\n * Set to false if you would like to disable the last known bit rate from being stored during playback and used\n * to set the initial bit rate for subsequent playback within the expiration window.\n *\n * The default expiration is one hour, defined in milliseconds. If expired, the default initial bit rate (closest to 1000 kbps) will be used\n * for that session and a new bit rate will be stored during that session.\n *\n * @param enable - Boolean - Will toggle if feature is enabled. True to enable, False to disable.\n * @param ttl Number - (Optional) A value defined in milliseconds representing how long to cache the bit rate for. Time to live.\n * @default enable = True, ttl = 360000 (1 hour)\n * @memberof module:MediaPlayer\n * @instance\n *\n */\n function enableLastBitrateCaching(enable, ttl) {\n mediaPlayerModel.setLastBitrateCachingInfo(enable, ttl);\n }\n\n /**\n * Set to false if you would like to disable the last known lang for audio (or camera angle for video) from being stored during playback and used\n * to set the initial settings for subsequent playback within the expiration window.\n *\n * The default expiration is one hour, defined in milliseconds. If expired, the default settings will be used\n * for that session and a new settings will be stored during that session.\n *\n * @param enable - Boolean - Will toggle if feature is enabled. True to enable, False to disable.\n * @param ttl Number - (Optional) A value defined in milliseconds representing how long to cache the settings for. Time to live.\n * @default enable = True, ttl = 360000 (1 hour)\n * @memberof module:MediaPlayer\n * @instance\n *\n */\n function enableLastMediaSettingsCaching(enable, ttl) {\n mediaPlayerModel.setLastMediaSettingsCachingInfo(enable, ttl);\n }\n\n /**\n * When switching multi-bitrate content (auto or manual mode) this property specifies the maximum bitrate allowed.\n * If you set this property to a value lower than that currently playing, the switching engine will switch down to\n * satisfy this requirement. If you set it to a value that is lower than the lowest bitrate, it will still play\n * that lowest bitrate.\n *\n * You can set or remove this bitrate cap at anytime before or during playback. To clear this setting you must use the API\n * and set the value param to NaN.\n *\n * This feature is typically used to reserve higher bitrates for playback only when the player is in large or full-screen format.\n *\n * @param type {String} 'video' or 'audio' are the type options.\n * @param value {int} Value in kbps representing the maximum bitrate allowed.\n * @memberof module:MediaPlayer\n * @instance\n */\n function setMaxAllowedBitrateFor(type, value) {\n abrController.setMaxAllowedBitrateFor(type, value);\n }\n\n /**\n * @param type {string} 'video' or 'audio' are the type options.\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#setMaxAllowedBitrateFor setMaxAllowedBitrateFor()}\n * @instance\n */\n function getMaxAllowedBitrateFor(type) {\n return abrController.getMaxAllowedBitrateFor(type);\n }\n\n /**\n * When switching multi-bitrate content (auto or manual mode) this property specifies the maximum representation allowed,\n * as a proportion of the size of the representation set.\n *\n * You can set or remove this cap at anytime before or during playback. To clear this setting you must use the API\n * and set the value param to NaN.\n *\n * If both this and maxAllowedBitrate are defined, maxAllowedBitrate is evaluated first, then maxAllowedRepresentation,\n * i.e. the lowest value from executing these rules is used.\n *\n * This feature is typically used to reserve higher representations for playback only when connected over a fast connection.\n *\n * @param type String 'video' or 'audio' are the type options.\n * @param value number between 0 and 1, where 1 is allow all representations, and 0 is allow only the lowest.\n * @memberof module:MediaPlayer\n * @instance\n */\n function setMaxAllowedRepresentationRatioFor(type, value) {\n abrController.setMaxAllowedRepresentationRatioFor(type, value);\n }\n\n /**\n * @param type String 'video' or 'audio' are the type options.\n * @returns {number} The current representation ratio cap.\n * @memberof module:MediaPlayer\n * @see {@link MediaPlayer#setMaxAllowedRepresentationRatioFor setMaxAllowedRepresentationRatioFor()}\n * @instance\n */\n function getMaxAllowedRepresentationRatioFor(type) {\n return abrController.getMaxAllowedRepresentationRatioFor(type);\n }\n\n /**\n *

Set to false to prevent stream from auto-playing when the view is attached.

\n *\n * @param value {boolean}\n * @default true\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#attachView attachView()}\n * @instance\n *\n */\n function setAutoPlay(value) {\n autoPlay = value;\n }\n\n /**\n * @returns {boolean} The current autoPlay state.\n * @memberof module:MediaPlayer\n * @instance\n */\n function getAutoPlay() {\n return autoPlay;\n }\n\n /**\n * Set to true if you would like dash.js to keep downloading fragments in the background\n * when the video element is paused.\n *\n * @default false\n * @param value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setScheduleWhilePaused(value) {\n mediaPlayerModel.setScheduleWhilePaused(value);\n }\n\n /**\n * Returns a boolean of the current state of ScheduleWhilePaused.\n * @returns {boolean}\n * @see {@link module:MediaPlayer#setScheduleWhilePaused setScheduleWhilePaused()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getScheduleWhilePaused() {\n return mediaPlayerModel.getScheduleWhilePaused();\n }\n\n\n /**\n * Returns the DashMetrics.js Module. You use this Module to get access to all the public metrics\n * stored in dash.js\n *\n * @see {@link module:DashMetrics}\n * @returns {object}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getDashMetrics() {\n return dashMetrics;\n }\n\n /**\n *\n * @param type\n * @returns {object}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getMetricsFor(type) {\n return metricsModel.getReadOnlyMetricsFor(type);\n }\n\n /**\n * @param type\n * @returns {object}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getQualityFor(type) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n return abrController.getQualityFor(type, streamController.getActiveStreamInfo());\n }\n\n /**\n * Sets the current quality for media type instead of letting the ABR Heuristics automatically selecting it..\n *\n * @param type\n * @param value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setQualityFor(type, value) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n abrController.setPlaybackQuality(type, streamController.getActiveStreamInfo(), value);\n }\n\n /**\n * @memberof module:MediaPlayer\n * @instance\n */\n function getLimitBitrateByPortal() {\n return abrController.getLimitBitrateByPortal();\n }\n\n /**\n * Sets whether to limit the representation used based on the size of the playback area\n *\n * @param value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setLimitBitrateByPortal(value) {\n abrController.setLimitBitrateByPortal(value);\n }\n\n\n /**\n * Use this method to change the current text track for both external time text files and fragmented text tracks. There is no need to\n * set the track mode on the video object to switch a track when using this method.\n *\n * @param idx - Index of track based on the order of the order the tracks are added Use -1 to disable all tracks. (turn captions off). Use module:MediaPlayer#dashjs.MediaPlayer.events.TEXT_TRACK_ADDED.\n * @see {@link module:MediaPlayer#dashjs.MediaPlayer.events.TEXT_TRACK_ADDED}\n * @memberof module:MediaPlayer\n * @instance\n */\n function setTextTrack(idx) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n //For external time text file, the only action needed to change a track is marking the track mode to showing.\n // Fragmented text tracks need the additional step of calling textSourceBuffer.setTextTrack();\n if (textSourceBuffer === undefined) {\n textSourceBuffer = TextSourceBuffer(context).getInstance();\n }\n\n var tracks = element.textTracks;\n var ln = tracks.length;\n\n for (var i = 0; i < ln; i++) {\n var track = tracks[i];\n var mode = idx === i ? 'showing' : 'hidden';\n\n if (track.mode !== mode) { //checking that mode is not already set by 3rd Party player frameworks that set mode to prevent event retrigger.\n track.mode = mode;\n }\n }\n\n textSourceBuffer.setTextTrack();\n }\n\n /**\n * @param type\n * @returns {Array}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getBitrateInfoListFor(type) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n var stream = getActiveStream();\n return stream ? stream.getBitrateListFor(type) : [];\n }\n\n /**\n * Use this method to explicitly set the starting bitrate for audio | video\n *\n * @param type\n * @param {number} value A value of the initial bitrate, kbps\n * @memberof module:MediaPlayer\n * @instance\n */\n function setInitialBitrateFor(type, value) {\n abrController.setInitialBitrateFor(type, value);\n }\n\n /**\n * @param type\n * @returns {number} A value of the initial bitrate, kbps\n * @memberof module:MediaPlayer\n * @instance\n */\n function getInitialBitrateFor(type) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR; //abrController.getInitialBitrateFor is overloaded with ratioDict logic that needs manifest force it to not be callable pre play.\n }\n return abrController.getInitialBitrateFor(type);\n }\n\n /**\n * @param type\n * @param {number} value A value of the initial Representation Ratio\n * @memberof module:MediaPlayer\n * @instance\n */\n function setInitialRepresentationRatioFor(type, value) {\n abrController.setInitialRepresentationRatioFor(type, value);\n }\n\n /**\n * @param type\n * @returns {number} A value of the initial Representation Ratio\n * @memberof module:MediaPlayer\n * @instance\n */\n function getInitialRepresentationRatioFor(type) {\n return abrController.getInitialRepresentationRatioFor(type);\n }\n\n /**\n * This method returns the list of all available streams from a given manifest\n * @param manifest\n * @returns {Array} list of {@link StreamInfo}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getStreamsFromManifest(manifest) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n return adapter.getStreamsInfo(manifest);\n }\n\n /**\n * This method returns the list of all available tracks for a given media type\n * @param type\n * @returns {Array} list of {@link MediaInfo}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getTracksFor(type) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n let streamInfo = streamController.getActiveStreamInfo();\n if (!streamInfo) return [];\n return mediaController.getTracksFor(type, streamInfo);\n }\n\n /**\n * This method returns the list of all available tracks for a given media type and streamInfo from a given manifest\n * @param type\n * @param manifest\n * @param streamInfo\n * @returns {Array} list of {@link MediaInfo}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getTracksForTypeFromManifest(type, manifest, streamInfo) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n\n streamInfo = streamInfo || adapter.getStreamsInfo(manifest)[0];\n\n return streamInfo ? adapter.getAllMediaInfoForType(manifest, streamInfo, type) : [];\n }\n\n /**\n * @param type\n * @returns {Object} {@link MediaInfo}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getCurrentTrackFor(type) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n var streamInfo = streamController.getActiveStreamInfo();\n\n if (!streamInfo) return null;\n\n return mediaController.getCurrentTrackFor(type, streamInfo);\n }\n\n /**\n * This method allows to set media settings that will be used to pick the initial track. Format of the settings\n * is following:\n * {lang: langValue,\n * viewpoint: viewpointValue,\n * audioChannelConfiguration: audioChannelConfigurationValue,\n * accessibility: accessibilityValue,\n * role: roleValue}\n *\n *\n * @param type\n * @param value {Object}\n * @memberof module:MediaPlayer\n * @instance\n */\n function setInitialMediaSettingsFor(type, value) {\n mediaController.setInitialSettings(type, value);\n }\n\n /**\n * This method returns media settings that is used to pick the initial track. Format of the settings\n * is following:\n * {lang: langValue,\n * viewpoint: viewpointValue,\n * audioChannelConfiguration: audioChannelConfigurationValue,\n * accessibility: accessibilityValue,\n * role: roleValue}\n * @param type\n * @returns {Object}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getInitialMediaSettingsFor(type) {\n return mediaController.getInitialSettings(type);\n }\n\n /**\n * @param track instance of {@link MediaInfo}\n * @memberof module:MediaPlayer\n * @instance\n */\n function setCurrentTrack(track) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n mediaController.setTrack(track);\n }\n\n /**\n * This method returns the current track switch mode.\n *\n * @param type\n * @returns mode\n * @memberof module:MediaPlayer\n * @instance\n */\n function getTrackSwitchModeFor(type) {\n return mediaController.getSwitchMode(type);\n }\n\n /**\n * This method sets the current track switch mode. Available options are:\n *\n * MediaController.TRACK_SWITCH_MODE_NEVER_REPLACE\n * (used to forbid clearing the buffered data (prior to current playback position) after track switch. Default for video)\n *\n * MediaController.TRACK_SWITCH_MODE_ALWAYS_REPLACE\n * (used to clear the buffered data (prior to current playback position) after track switch. Default for audio)\n *\n * @param type\n * @param mode\n * @memberof module:MediaPlayer\n * @instance\n */\n function setTrackSwitchModeFor(type, mode) {\n mediaController.setSwitchMode(type, mode);\n }\n\n /**\n * This method sets the selection mode for the initial track. This mode defines how the initial track will be selected\n * if no initial media settings are set. If initial media settings are set this parameter will be ignored. Available options are:\n *\n * MediaPlayer.dependencies.MediaController.trackSelectionModes.HIGHEST_BITRATE\n * this mode makes the player select the track with a highest bitrate. This mode is a default mode.\n *\n * MediaPlayer.dependencies.MediaController.trackSelectionModes.WIDEST_RANGE\n * this mode makes the player select the track with a widest range of bitrates\n *\n * @param mode\n * @memberof module:MediaPlayer\n * @instance\n */\n function setSelectionModeForInitialTrack(mode) {\n mediaController.setSelectionModeForInitialTrack(mode);\n }\n\n /**\n * This method returns the track selection mode.\n *\n * @returns mode\n * @memberof module:MediaPlayer\n * @instance\n */\n function getSelectionModeForInitialTrack() {\n return mediaController.getSelectionModeForInitialTrack();\n }\n\n /**\n * @deprecated since version 2.0 Instead use {@link module:MediaPlayer#getAutoSwitchQualityFor getAutoSwitchQualityFor()}.\n * @returns {boolean} Current state of adaptive bitrate switching\n * @memberof module:MediaPlayer\n * @instance\n */\n function getAutoSwitchQuality() {\n return abrController.getAutoSwitchBitrateFor('video') || abrController.getAutoSwitchBitrateFor('audio');\n }\n\n /**\n * Set to false to switch off adaptive bitrate switching.\n *\n * @deprecated since version 2.0 Instead use {@link module:MediaPlayer#setAutoSwitchQualityFor setAutoSwitchQualityFor()}.\n * @param value {boolean}\n * @default {boolean} true\n * @memberof module:MediaPlayer\n * @instance\n */\n function setAutoSwitchQuality(value) {\n abrController.setAutoSwitchBitrateFor('video', value);\n abrController.setAutoSwitchBitrateFor('audio', value);\n }\n\n /**\n * @param type {string} 'audio' | 'video'\n * @returns {boolean} Current state of adaptive bitrate switching\n * @memberof module:MediaPlayer\n * @instance\n */\n function getAutoSwitchQualityFor(type) {\n return abrController.getAutoSwitchBitrateFor(type);\n }\n\n /**\n * Set to false to switch off adaptive bitrate switching.\n *\n * @param type {string} 'audio' | 'video'\n * @param value {boolean}\n * @default {boolean} true\n * @memberof module:MediaPlayer\n * @instance\n */\n function setAutoSwitchQualityFor(type, value) {\n abrController.setAutoSwitchBitrateFor(type, value);\n }\n\n\n /**\n * Enabling buffer-occupancy ABR will switch to the *experimental* implementation of BOLA,\n * replacing the throughput-based ABR rule set (ThroughputRule, BufferOccupancyRule,\n * InsufficientBufferRule and AbandonRequestsRule) with the buffer-occupancy-based\n * BOLA rule set (BolaRule, BolaAbandonRule).\n *\n * @see {@link http://arxiv.org/abs/1601.06748 BOLA WhitePaper.}\n * @see {@link https://github.com/Dash-Industry-Forum/dash.js/wiki/BOLA-status More details about the implementation status.}\n * @param value {boolean}\n * @default false\n * @memberof module:MediaPlayer\n * @instance\n */\n function enableBufferOccupancyABR(value) {\n mediaPlayerModel.setBufferOccupancyABREnabled(value);\n }\n\n /**\n * Allows application to retrieve a manifest. Manifest loading is asynchro\n * nous and\n * requires the app-provided callback function\n *\n * @param url {string} url the manifest url\n * @param callback {function} A Callback function provided when retrieving manifests\n * @memberof module:MediaPlayer\n * @instance\n */\n function retrieveManifest(url, callback) {\n var manifestLoader = createManifestLoader();\n var self = this;\n\n var handler = function (e) {\n if (!e.error) {\n callback(e.manifest);\n } else {\n callback(null, e.error);\n }\n eventBus.off(Events.INTERNAL_MANIFEST_LOADED, handler, self);\n manifestLoader.reset();\n };\n\n eventBus.on(Events.INTERNAL_MANIFEST_LOADED, handler, self);\n\n let uriQueryFragModel = URIQueryAndFragmentModel(context).getInstance();\n uriQueryFragModel.initialize();\n manifestLoader.load(uriQueryFragModel.parseURI(url));\n }\n\n /**\n *

Allows you to set a scheme and server source for UTC live edge detection for dynamic streams.\n * If UTCTiming is defined in the manifest, it will take precedence over any time source manually added.

\n *

If you have exposed the Date header, use the method {@link module:MediaPlayer#clearDefaultUTCTimingSources clearDefaultUTCTimingSources()}.\n * This will allow the date header on the manifest to be used instead of a time server

\n * @param {string} schemeIdUri -\n *
    \n *
  • urn:mpeg:dash:utc:http-head:2014
  • \n *
  • urn:mpeg:dash:utc:http-xsdate:2014
  • \n *
  • urn:mpeg:dash:utc:http-iso:2014
  • \n *
  • urn:mpeg:dash:utc:direct:2014
  • \n *
\n *

Some specs referencing early ISO23009-1 drafts incorrectly use\n * 2012 in the URI, rather than 2014. support these for now.

\n *
    \n *
  • urn:mpeg:dash:utc:http-head:2012
  • \n *
  • urn:mpeg:dash:utc:http-xsdate:2012
  • \n *
  • urn:mpeg:dash:utc:http-iso:2012
  • \n *
  • urn:mpeg:dash:utc:direct:2012
  • \n *
\n * @param {string} value - Path to a time source.\n * @default\n *
    \n *
  • schemeIdUri:urn:mpeg:dash:utc:http-xsdate:2014
  • \n *
  • value:http://time.akamai.com
  • \n *
\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#removeUTCTimingSource removeUTCTimingSource()}\n * @instance\n */\n function addUTCTimingSource(schemeIdUri, value) {\n removeUTCTimingSource(schemeIdUri, value);//check if it already exists and remove if so.\n var vo = new UTCTiming();\n vo.schemeIdUri = schemeIdUri;\n vo.value = value;\n mediaPlayerModel.getUTCTimingSources().push(vo);\n }\n\n\n /**\n *

Allows you to remove a UTC time source. Both schemeIdUri and value need to match the Dash.vo.UTCTiming properties in order for the\n * entry to be removed from the array

\n * @param {string} schemeIdUri - see {@link module:MediaPlayer#addUTCTimingSource addUTCTimingSource()}\n * @param {string} value - see {@link module:MediaPlayer#addUTCTimingSource addUTCTimingSource()}\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#clearDefaultUTCTimingSources clearDefaultUTCTimingSources()}\n * @instance\n */\n function removeUTCTimingSource(schemeIdUri, value) {\n let UTCTimingSources = mediaPlayerModel.getUTCTimingSources();\n UTCTimingSources.forEach(function (obj, idx) {\n if (obj.schemeIdUri === schemeIdUri && obj.value === value) {\n UTCTimingSources.splice(idx, 1);\n }\n });\n }\n\n /**\n *

Allows you to clear the stored array of time sources.

\n *

Example use: If you have exposed the Date header, calling this method\n * will allow the date header on the manifest to be used instead of the time server.

\n *

Example use: Calling this method, assuming there is not an exposed date header on the manifest, will default back\n * to using a binary search to discover the live edge

\n *\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#restoreDefaultUTCTimingSources restoreDefaultUTCTimingSources()}\n * @instance\n */\n function clearDefaultUTCTimingSources() {\n mediaPlayerModel.setUTCTimingSources([]);\n }\n\n /**\n *

Allows you to restore the default time sources after calling {@link module:MediaPlayer#clearDefaultUTCTimingSources clearDefaultUTCTimingSources()}

\n *\n * @default\n *
    \n *
  • schemeIdUri:urn:mpeg:dash:utc:http-xsdate:2014
  • \n *
  • value:http://time.akamai.com
  • \n *
\n *\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#addUTCTimingSource addUTCTimingSource()}\n * @instance\n */\n function restoreDefaultUTCTimingSources() {\n addUTCTimingSource(MediaPlayerModel.DEFAULT_UTC_TIMING_SOURCE.scheme, MediaPlayerModel.DEFAULT_UTC_TIMING_SOURCE.value);\n }\n\n\n /**\n *

Allows you to enable the use of the Date Header, if exposed with CORS, as a timing source for live edge detection. The\n * use of the date header will happen only after the other timing source that take precedence fail or are omitted as described.\n * {@link module:MediaPlayer#clearDefaultUTCTimingSources clearDefaultUTCTimingSources()}

\n *\n * @default {boolean} True\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#addUTCTimingSource addUTCTimingSource()}\n * @instance\n */\n function enableManifestDateHeaderTimeSource(value) {\n mediaPlayerModel.setUseManifestDateHeaderTimeSource(value);\n }\n\n /**\n * This value influences the buffer pruning logic.\n * Allows you to modify the buffer that is kept in source buffer in seconds.\n * 0|-----------bufferToPrune-----------|-----bufferToKeep-----|currentTime|\n *\n * @default 30 seconds\n * @param {int} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setBufferToKeep(value) {\n mediaPlayerModel.setBufferToKeep(value);\n }\n\n /**\n * This value influences the buffer pruning logic.\n * Allows you to modify the interval of pruning buffer in seconds.\n *\n * @default 30 seconds\n * @param {int} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setBufferPruningInterval(value) {\n mediaPlayerModel.setBufferPruningInterval(value);\n }\n\n /**\n * The time that the internal buffer target will be set to post startup/seeks (NOT top quality).\n *\n * When the time is set higher than the default you will have to wait longer\n * to see automatic bitrate switches but will have a larger buffer which\n * will increase stability.\n *\n * @default 12 seconds.\n * @param {int} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setStableBufferTime(value) {\n mediaPlayerModel.setStableBufferTime(value);\n }\n\n /**\n * The time that the internal buffer target will be set to once playing the top quality.\n * If there are multiple bitrates in your adaptation, and the media is playing at the highest\n * bitrate, then we try to build a larger buffer at the top quality to increase stability\n * and to maintain media quality.\n *\n * @default 30 seconds.\n * @param {int} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setBufferTimeAtTopQuality (value) {\n mediaPlayerModel.setBufferTimeAtTopQuality(value);\n }\n\n /**\n * The time that the internal buffer target will be set to once playing the top quality for long form content.\n *\n * @default 60 seconds.\n * @see {@link module:MediaPlayer#setLongFormContentDurationThreshold setLongFormContentDurationThreshold()}\n * @see {@link module:MediaPlayer#setBufferTimeAtTopQuality setBufferTimeAtTopQuality()}\n * @param {int} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setBufferTimeAtTopQualityLongForm (value) {\n mediaPlayerModel.setBufferTimeAtTopQualityLongForm(value);\n }\n\n /**\n * The threshold which defines if the media is considered long form content.\n * This will directly affect the buffer targets when playing back at the top quality.\n *\n * @see {@link module:MediaPlayer#setBufferTimeAtTopQualityLongForm setBufferTimeAtTopQualityLongForm()}\n * @default 600 seconds (10 minutes).\n * @param value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setLongFormContentDurationThreshold (value) {\n mediaPlayerModel.setLongFormContentDurationThreshold(value);\n }\n\n /**\n * A threshold, in seconds, of when dashjs abr becomes less conservative since we have a\n * larger \"rich\" buffer.\n * The BufferOccupancyRule.js rule will override the ThroughputRule's decision when the\n * buffer level surpasses this value and while it remains greater than this value.\n *\n * @default 20 seconds\n * @param value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setRichBufferThreshold (value) {\n mediaPlayerModel.setRichBufferThreshold(value);\n }\n\n /**\n * A percentage between 0.0 and 1 to reduce the measured throughput calculations.\n * The default is 0.9. The lower the value the more conservative and restricted the\n * measured throughput calculations will be. please use carefully. This will directly\n * affect the ABR logic in dash.js\n *\n * @param value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setBandwidthSafetyFactor(value) {\n mediaPlayerModel.setBandwidthSafetyFactor(value);\n }\n\n /**\n * Returns the number of the current BandwidthSafetyFactor\n *\n * @return {number} value\n * @see {@link module:MediaPlayer#setBandwidthSafetyFactor setBandwidthSafetyFactor()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getBandwidthSafetyFactor() {\n return mediaPlayerModel.getBandwidthSafetyFactor();\n }\n\n /**\n * A timeout value in seconds, which during the ABRController will block switch-up events.\n * This will only take effect after an abandoned fragment event occurs.\n *\n * @default 10 seconds\n * @param {int} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setAbandonLoadTimeout(value) {\n mediaPlayerModel.setAbandonLoadTimeout(value);\n }\n\n /**\n * Total number of retry attempts that will occur on a fragment load before it fails.\n * Increase this value to a maximum in order to achieve an automatic playback resume\n * in case of completely lost internet connection.\n *\n * @default 3\n * @param {int} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setFragmentLoaderRetryAttempts (value) {\n mediaPlayerModel.setFragmentRetryAttempts(value);\n }\n\n /**\n * Time in milliseconds of which to reload a failed fragment load attempt.\n *\n * @default 1000 milliseconds\n * @param {int} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setFragmentLoaderRetryInterval (value) {\n mediaPlayerModel.setFragmentRetryInterval(value);\n }\n\n /**\n * Detects if Protection is included and returns an instance of ProtectionController.js\n * @memberof module:MediaPlayer\n * @instance\n */\n function getProtectionController() {\n return detectProtection();\n }\n\n /**\n * Will override dash.js protection controller.\n * @param {ProtectionController} [value] valid protection controller instance.\n * @memberof module:MediaPlayer\n * @instance\n */\n function attachProtectionController(value) {\n protectionController = value;\n }\n\n /**\n * @param {ProtectionData} [value] object containing\n * property names corresponding to key system name strings and associated\n * values being instances of.\n * @memberof module:MediaPlayer\n * @instance\n */\n function setProtectionData(value) {\n protectionData = value;\n }\n\n /**\n * This method serves to control captions z-index value. If 'true' is passed, the captions will have the highest z-index and be\n * displayed on top of other html elements. Default value is 'false' (z-index is not set).\n * @param value {Boolean}\n * @memberof module:MediaPlayer\n * @instance\n */\n function displayCaptionsOnTop(value) {\n let textTracks = TextTracks(context).getInstance();\n textTracks.setConfig({videoModel: videoModel});\n textTracks.initialize();\n textTracks.displayCConTop(value);\n }\n\n /**\n * Use this method to attach an HTML5 element that wraps the video element.\n *\n * @param container The HTML5 element containing the video element.\n * @memberof module:MediaPlayer\n * @instance\n */\n function attachVideoContainer(container) {\n if (!videoModel) {\n throw ELEMENT_NOT_ATTACHED_ERROR;\n }\n videoModel.setVideoContainer(container);\n }\n\n /**\n * Use this method to attach an HTML5 VideoElement for dash.js to operate upon.\n *\n * @param view An HTML5 VideoElement that has already been defined in the DOM.\n * @memberof module:MediaPlayer\n * @instance\n */\n function attachView(view) {\n if (!mediaPlayerInitialized) {\n throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;\n }\n videoModel = null;\n element = view;\n if (element) {\n videoModel = VideoModel(context).getInstance();\n videoModel.initialize();\n videoModel.setElement(element);\n // Workaround to force Firefox to fire the canplay event.\n element.preload = 'auto';\n detectProtection();\n detectMetricsReporting();\n }\n resetAndInitializePlayback();\n }\n\n /**\n * Use this method to attach an HTML5 div for dash.js to render rich TTML subtitles.\n *\n * @param div An unstyled div placed after the video element. It will be styled to match the video size and overlay z-order.\n * @memberof module:MediaPlayer\n * @instance\n */\n function attachTTMLRenderingDiv(div) {\n if (!videoModel) {\n throw ELEMENT_NOT_ATTACHED_ERROR;\n }\n videoModel.setTTMLRenderingDiv(div);\n }\n\n /**\n * Use this method to set a source URL to a valid MPD manifest file OR\n * a previously downloaded and parsed manifest object. Optionally, can\n * also provide protection information\n *\n * @param {string | object} urlOrManifest A URL to a valid MPD manifest file, or a\n * parsed manifest object.\n *\n *\n * @throw \"MediaPlayer not initialized!\"\n *\n * @memberof module:MediaPlayer\n * @instance\n */\n function attachSource(urlOrManifest) {\n if (!mediaPlayerInitialized) {\n throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;\n }\n\n if (typeof urlOrManifest === 'string') {\n var uriQueryFragModel = URIQueryAndFragmentModel(context).getInstance();\n uriQueryFragModel.initialize();\n source = uriQueryFragModel.parseURI(urlOrManifest);\n } else {\n source = urlOrManifest;\n }\n\n resetAndInitializePlayback();\n }\n\n /**\n * Sets the MPD source and the video element to null. You can also reset the MediaPlayer by\n * calling attachSource with a new source file.\n *\n * @memberof module:MediaPlayer\n * @instance\n */\n function reset() {\n attachSource(null);\n attachView(null);\n }\n\n //***********************************\n // PRIVATE METHODS\n //***********************************\n\n function resetAndInitializePlayback() {\n if (playbackInitialized) {\n playbackInitialized = false;\n adapter.reset();\n streamController.reset();\n playbackController.reset();\n abrController.reset();\n rulesController.reset();\n mediaController.reset();\n streamController = null;\n metricsReportingController = null;\n protectionController = null;\n protectionData = null;\n if (isReady()) {\n initializePlayback();\n }\n } else if (isReady()) {\n initializePlayback();\n }\n }\n\n function createControllers() {\n\n let synchronizationRulesCollection = SynchronizationRulesCollection(context).getInstance();\n synchronizationRulesCollection.initialize();\n\n let abrRulesCollection = ABRRulesCollection(context).getInstance();\n abrRulesCollection.initialize();\n\n let scheduleRulesCollection = ScheduleRulesCollection(context).getInstance();\n scheduleRulesCollection.initialize();\n\n let sourceBufferController = SourceBufferController(context).getInstance();\n sourceBufferController.setConfig({dashManifestModel: dashManifestModel});\n\n\n let virtualBuffer = VirtualBuffer(context).getInstance();\n virtualBuffer.setConfig({\n sourceBufferController: sourceBufferController\n });\n\n mediaController.initialize();\n mediaController.setConfig({\n errHandler: errHandler\n });\n\n rulesController = RulesController(context).getInstance();\n rulesController.initialize();\n rulesController.setConfig({\n abrRulesCollection: abrRulesCollection,\n scheduleRulesCollection: scheduleRulesCollection,\n synchronizationRulesCollection: synchronizationRulesCollection\n });\n\n streamController = StreamController(context).getInstance();\n streamController.setConfig({\n capabilities: capabilities,\n manifestLoader: createManifestLoader(),\n manifestModel: ManifestModel(context).getInstance(),\n dashManifestModel: dashManifestModel,\n protectionController: protectionController,\n adapter: adapter,\n metricsModel: metricsModel,\n dashMetrics: dashMetrics,\n liveEdgeFinder: LiveEdgeFinder(context).getInstance(),\n mediaSourceController: MediaSourceController(context).getInstance(),\n timeSyncController: TimeSyncController(context).getInstance(),\n virtualBuffer: virtualBuffer,\n errHandler: errHandler,\n timelineConverter: TimelineConverter(context).getInstance()\n });\n streamController.initialize(autoPlay, protectionData);\n\n abrController.setConfig({\n abrRulesCollection: abrRulesCollection,\n rulesController: rulesController,\n streamController: streamController\n });\n }\n\n function createManifestLoader() {\n return ManifestLoader(context).create({\n errHandler: errHandler,\n parser: createManifestParser(),\n metricsModel: metricsModel,\n requestModifier: RequestModifier(context).getInstance()\n });\n }\n\n function createManifestParser() {\n //TODO-Refactor Need to be able to switch this create out so will need API to set which parser to use?\n return DashParser(context).create();\n }\n\n function createAdaptor() {\n //TODO-Refactor Need to be able to switch this create out so will need API to set which adapter to use? Handler is created is inside streamProcessor so need to figure that out as well\n adapter = DashAdapter(context).getInstance();\n adapter.initialize();\n adapter.setConfig({dashManifestModel: dashManifestModel});\n return adapter;\n }\n\n function detectProtection() {\n if (protectionController) {\n return protectionController;\n }\n // do not require Protection as dependencies as this is optional and intended to be loaded separately\n let Protection = dashjs.Protection; /* jshint ignore:line */\n if (typeof Protection == 'function') {//TODO need a better way to register/detect plugin components\n let protection = Protection(context).create();\n Events.extend(Protection.events);\n MediaPlayerEvents.extend(Protection.events, { publicOnly: true });\n protectionController = protection.createProtectionSystem({\n log: log,\n videoModel: videoModel,\n capabilities: capabilities,\n eventBus: eventBus,\n adapter: adapter\n });\n return protectionController;\n }\n\n return null;\n }\n\n function detectMetricsReporting() {\n if (metricsReportingController) {\n return metricsReportingController;\n }\n // do not require MetricsReporting as dependencies as this is optional and intended to be loaded separately\n let MetricsReporting = dashjs.MetricsReporting; /* jshint ignore:line */\n if (typeof MetricsReporting === 'function') {//TODO need a better way to register/detect plugin components\n let metricsReporting = MetricsReporting(context).create();\n\n metricsReportingController = metricsReporting.createMetricsReporting({\n log: log,\n eventBus: eventBus,\n mediaElement: videoModel.getElement(),\n dashManifestModel: dashManifestModel,\n metricsModel: metricsModel\n });\n\n return metricsReportingController;\n }\n\n return null;\n }\n\n function getDVRInfoMetric() {\n var metric = metricsModel.getReadOnlyMetricsFor('video') || metricsModel.getReadOnlyMetricsFor('audio');\n return dashMetrics.getCurrentDVRInfo(metric);\n }\n\n function getAsUTC(valToConvert) {\n var metric = getDVRInfoMetric();\n var availableFrom,\n utcValue;\n\n if (!metric) {\n return 0;\n }\n availableFrom = metric.manifestInfo.availableFrom.getTime() / 1000;\n utcValue = valToConvert + (availableFrom + metric.range.start);\n return utcValue;\n }\n\n function getActiveStream() {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n var streamInfo = streamController.getActiveStreamInfo();\n return streamInfo ? streamController.getStreamById(streamInfo.id) : null;\n }\n\n function initializePlayback() {\n if (!playbackInitialized) {\n if (!mediaPlayerInitialized) {\n throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;\n }\n if (!element || !source) {\n throw 'Missing view or source.';\n }\n\n playbackInitialized = true;\n log('Playback Initialized');\n createControllers();\n if (typeof source === 'string') {\n streamController.load(source);\n } else {\n streamController.loadWithManifest(source);\n }\n }\n }\n\n instance = {\n initialize: initialize,\n on: on,\n off: off,\n extend: extend,\n attachView: attachView,\n attachSource: attachSource,\n isReady: isReady,\n play: play,\n isPaused: isPaused,\n pause: pause,\n isSeeking: isSeeking,\n seek: seek,\n setMute: setMute,\n isMuted: isMuted,\n setVolume: setVolume,\n getVolume: getVolume,\n time: time,\n duration: duration,\n timeAsUTC: timeAsUTC,\n durationAsUTC: durationAsUTC,\n getDVRWindowSize: getDVRWindowSize,\n getDVRSeekOffset: getDVRSeekOffset,\n convertToTimeCode: convertToTimeCode,\n formatUTC: formatUTC,\n getVersion: getVersion,\n getDebug: getDebug,\n getBufferLength: getBufferLength,\n getVideoModel: getVideoModel,\n getVideoContainer: getVideoContainer,\n setLiveDelayFragmentCount: setLiveDelayFragmentCount,\n useSuggestedPresentationDelay: useSuggestedPresentationDelay,\n enableLastBitrateCaching: enableLastBitrateCaching,\n enableLastMediaSettingsCaching: enableLastMediaSettingsCaching,\n setMaxAllowedBitrateFor: setMaxAllowedBitrateFor,\n getMaxAllowedBitrateFor: getMaxAllowedBitrateFor,\n setMaxAllowedRepresentationRatioFor: setMaxAllowedRepresentationRatioFor,\n getMaxAllowedRepresentationRatioFor: getMaxAllowedRepresentationRatioFor,\n setAutoPlay: setAutoPlay,\n getAutoPlay: getAutoPlay,\n setScheduleWhilePaused: setScheduleWhilePaused,\n getScheduleWhilePaused: getScheduleWhilePaused,\n getDashMetrics: getDashMetrics,\n getMetricsFor: getMetricsFor,\n getQualityFor: getQualityFor,\n setQualityFor: setQualityFor,\n getLimitBitrateByPortal: getLimitBitrateByPortal,\n setLimitBitrateByPortal: setLimitBitrateByPortal,\n setTextTrack: setTextTrack,\n getBitrateInfoListFor: getBitrateInfoListFor,\n setInitialBitrateFor: setInitialBitrateFor,\n getInitialBitrateFor: getInitialBitrateFor,\n setInitialRepresentationRatioFor: setInitialRepresentationRatioFor,\n getInitialRepresentationRatioFor: getInitialRepresentationRatioFor,\n getStreamsFromManifest: getStreamsFromManifest,\n getTracksFor: getTracksFor,\n getTracksForTypeFromManifest: getTracksForTypeFromManifest,\n getCurrentTrackFor: getCurrentTrackFor,\n setInitialMediaSettingsFor: setInitialMediaSettingsFor,\n getInitialMediaSettingsFor: getInitialMediaSettingsFor,\n setCurrentTrack: setCurrentTrack,\n getTrackSwitchModeFor: getTrackSwitchModeFor,\n setTrackSwitchModeFor: setTrackSwitchModeFor,\n setSelectionModeForInitialTrack: setSelectionModeForInitialTrack,\n getSelectionModeForInitialTrack: getSelectionModeForInitialTrack,\n getAutoSwitchQuality: getAutoSwitchQuality,\n setAutoSwitchQuality: setAutoSwitchQuality,\n getAutoSwitchQualityFor: getAutoSwitchQualityFor,\n setAutoSwitchQualityFor: setAutoSwitchQualityFor,\n enableBufferOccupancyABR: enableBufferOccupancyABR,\n setBandwidthSafetyFactor: setBandwidthSafetyFactor,\n getBandwidthSafetyFactor: getBandwidthSafetyFactor,\n setAbandonLoadTimeout: setAbandonLoadTimeout,\n retrieveManifest: retrieveManifest,\n addUTCTimingSource: addUTCTimingSource,\n removeUTCTimingSource: removeUTCTimingSource,\n clearDefaultUTCTimingSources: clearDefaultUTCTimingSources,\n restoreDefaultUTCTimingSources: restoreDefaultUTCTimingSources,\n setBufferToKeep: setBufferToKeep,\n setBufferPruningInterval: setBufferPruningInterval,\n setStableBufferTime: setStableBufferTime,\n setBufferTimeAtTopQuality: setBufferTimeAtTopQuality,\n setFragmentLoaderRetryAttempts: setFragmentLoaderRetryAttempts,\n setFragmentLoaderRetryInterval: setFragmentLoaderRetryInterval,\n setBufferTimeAtTopQualityLongForm: setBufferTimeAtTopQualityLongForm,\n setLongFormContentDurationThreshold: setLongFormContentDurationThreshold,\n setRichBufferThreshold: setRichBufferThreshold,\n getProtectionController: getProtectionController,\n attachProtectionController: attachProtectionController,\n setProtectionData: setProtectionData,\n enableManifestDateHeaderTimeSource: enableManifestDateHeaderTimeSource,\n displayCaptionsOnTop: displayCaptionsOnTop,\n attachVideoContainer: attachVideoContainer,\n attachTTMLRenderingDiv: attachTTMLRenderingDiv,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nMediaPlayer.__dashjs_factory_name = 'MediaPlayer';\nlet factory = FactoryMaker.getClassFactory(MediaPlayer);\nfactory.events = MediaPlayerEvents;\nexport default factory;\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport EventsBase from '../core/events/EventsBase.js';\n/**\n * @Class\n * @ignore\n */\nclass MediaPlayerEvents extends EventsBase {\n\n /**\n * @description Public facing external events to be used when developing a player that implements dash.js.\n */\n constructor () {\n super();\n /**\n * Triggered when the video element's buffer state changes to stalled.\n * @event MediaPlayerEvents#BUFFER_EMPTY\n */\n this.BUFFER_EMPTY = 'bufferstalled';\n /**\n * Triggered when the video element's buffer state changes to loaded.\n * @event MediaPlayerEvents#BUFFER_LOADED\n */\n this.BUFFER_LOADED = 'bufferloaded';\n /**\n * Triggered when\n * @event MediaPlayerEvents#ERROR\n */\n this.ERROR = 'error';\n /**\n * Triggered when {@link module:Debug} log method is called.\n * @event MediaPlayerEvents#LOG\n */\n this.LOG = 'log';\n //TODO refactor with internal event\n /**\n * Triggered when the manifest load is complete\n * @event MediaPlayerEvents#MANIFEST_LOADED\n */\n this.MANIFEST_LOADED = 'manifestloaded';\n /**\n * Triggered anytime there is a change to the overall metrics.\n * @event MediaPlayerEvents#METRICS_CHANGED\n */\n this.METRICS_CHANGED = 'metricschanged';\n /**\n * Triggered when an individual metric is added, updated or cleared.\n * @event MediaPlayerEvents#METRIC_CHANGED\n */\n this.METRIC_CHANGED = 'metricchanged';\n /**\n * Triggered every time a new metric is added.\n * @event MediaPlayerEvents#METRIC_ADDED\n */\n this.METRIC_ADDED = 'metricadded';\n /**\n * Triggered every time a metric is updated.\n * @event MediaPlayerEvents#METRIC_UPDATED\n */\n this.METRIC_UPDATED = 'metricupdated';\n /**\n * Triggered at the stream end of a period.\n * @event MediaPlayerEvents#PERIOD_SWITCH_COMPLETED\n */\n this.PERIOD_SWITCH_COMPLETED = 'streamswitchcompleted';\n /**\n * Triggered when a new period starts.\n * @event MediaPlayerEvents#PERIOD_SWITCH_STARTED\n */\n this.PERIOD_SWITCH_STARTED = 'streamswitchstarted';\n /**\n * Triggered when the stream is setup and ready.\n * @event MediaPlayerEvents#STREAM_INITIALIZED\n */\n this.STREAM_INITIALIZED = 'streaminitialized';\n /**\n * Triggered once all text tracks detected in the MPD are added to the video element.\n * @event MediaPlayerEvents#TEXT_TRACKS_ADDED\n */\n this.TEXT_TRACKS_ADDED = 'alltexttracksadded';\n /**\n * Triggered when a text track is added to the video element's TextTrackList\n * @event MediaPlayerEvents#TEXT_TRACK_ADDED\n */\n this.TEXT_TRACK_ADDED = 'texttrackadded';\n\n /**\n * Sent when enough data is available that the media can be played,\n * at least for a couple of frames. This corresponds to the\n * HAVE_ENOUGH_DATA readyState.\n * @event MediaPlayerEvents#CAN_PLAY\n */\n this.CAN_PLAY = 'canPlay';\n\n /**\n * Sent when playback completes.\n * @event MediaPlayerEvents#PLAYBACK_ENDED\n */\n this.PLAYBACK_ENDED = 'playbackEnded';\n\n /**\n * Sent when an error occurs. The element's error\n * attribute contains more information.\n * @event MediaPlayerEvents#PLAYBACK_ERROR\n */\n this.PLAYBACK_ERROR = 'playbackError';\n /**\n * The media's metadata has finished loading; all attributes now\n * contain as much useful information as they're going to.\n * @event MediaPlayerEvents#PLAYBACK_METADATA_LOADED\n */\n this.PLAYBACK_METADATA_LOADED = 'playbackMetaDataLoaded';\n /**\n * Sent when playback is paused.\n * @event MediaPlayerEvents#PLAYBACK_PAUSED\n */\n this.PLAYBACK_PAUSED = 'playbackPaused';\n /**\n * Sent when the media begins to play (either for the first time, after having been paused,\n * or after ending and then restarting).\n *\n * @event MediaPlayerEvents#PLAYBACK_PLAYING\n */\n this.PLAYBACK_PLAYING = 'playbackPlaying';\n /**\n * Sent periodically to inform interested parties of progress downloading\n * the media. Information about the current amount of the media that has\n * been downloaded is available in the media element's buffered attribute.\n * @event MediaPlayerEvents#PLAYBACK_PROGRESS\n */\n this.PLAYBACK_PROGRESS = 'playbackProgress';\n /**\n * Sent when the playback speed changes.\n * @event MediaPlayerEvents#PLAYBACK_RATE_CHANGED\n */\n this.PLAYBACK_RATE_CHANGED = 'playbackRateChanged';\n /**\n * Sent when a seek operation completes.\n * @event MediaPlayerEvents#PLAYBACK_SEEKED\n */\n this.PLAYBACK_SEEKED = 'playbackSeeked';\n /**\n * Sent when a seek operation begins.\n * @event MediaPlayerEvents#PLAYBACK_SEEKING\n */\n this.PLAYBACK_SEEKING = 'playbackSeeking';\n /**\n * Sent when playback of the media starts after having been paused;\n * that is, when playback is resumed after a prior pause event.\n *\n * @event MediaPlayerEvents#PLAYBACK_STARTED\n */\n this.PLAYBACK_STARTED = 'playbackStarted';\n /**\n * The time indicated by the element's currentTime attribute has changed.\n * @event MediaPlayerEvents#PLAYBACK_TIME_UPDATED\n */\n this.PLAYBACK_TIME_UPDATED = 'playbackTimeUpdated';\n }\n}\n\nlet mediaPlayerEvents = new MediaPlayerEvents();\nexport default mediaPlayerEvents;","import MediaPlayer from './MediaPlayer.js';\n\nfunction MediaPlayerFactory() {\n\n /**\n * mime-type identifier for any source content to be accepted as a dash manifest by the create() method.\n * @type {string}\n */\n const SUPPORTED_MIME_TYPE = 'application/dash+xml';\n\n /**\n * A new MediaPlayer is instantiated for the supplied videoElement and optional source and context. If no context is provided,\n * a default DashContext is used. If no source is provided, the videoElement is interrogated to extract the first source whose\n * type is application/dash+xml.\n * The autoplay property of the videoElement is preserved. Any preload attribute is ignored. This method should be called after the page onLoad event is dispatched.\n * @param video\n * @param source\n * @returns {MediaPlayer}\n */\n function create(video, source, context) {\n if (!video || video.nodeName !== 'VIDEO') return null;\n\n if (video._dashjs_player) return video._dashjs_player;\n\n var player;\n var videoID = (video.id || video.name || 'video element');\n\n source = source || [].slice.call(video.querySelectorAll('source')).filter(function (s) {\n return s.type == SUPPORTED_MIME_TYPE;\n })[0];\n if (!source && video.src) {\n source = document.createElement('source');\n source.src = video.src;\n } else if (!source && !video.src) {\n return null;\n }\n\n context = context || {};\n player = MediaPlayer(context).create();\n player.initialize(video, source.src, video.autoplay);\n player.getDebug().log('Converted ' + videoID + ' to dash.js player and added content: ' + source.src);\n\n // Store a reference to the player on the video element so it can be gotten at for debugging and so we know its\n // already been setup.\n video._dashjs_player = player;\n\n return player;\n }\n\n /**\n * Searches the provided scope for all instances of the indicated selector. If no scope is provided, document is used. If no selector is\n * specified, [data-dashjs-player] is used. The declarative setup also looks for source elements with the type attribute set to 'application/dash+xml'.\n * It then looks for those video elements which have a source element defined with a type matching 'application/dash+xml'.\n * A new MediaPlayer is instantiated for each matching video element and the appropriate source is assigned.\n * The autoplay property of the video element is preserved. Any preload attribute is ignored. This method should be called after the page onLoad event is dispatched.\n * Returns an array holding all the MediaPlayer instances that were added by this method.\n * @param selector\n * @param scope\n * @returns {Array} an array of MediaPlayer objects\n */\n function createAll(selector, scope) {\n let aPlayers = [];\n selector = selector || '[data-dashjs-player]';\n scope = scope || document;\n let videos = scope.querySelectorAll(selector);\n for (let i = 0; i < videos.length; i++) {\n let player = create(videos[i], null);\n aPlayers.push(player);\n }\n\n let sources = scope.querySelectorAll('source[type=\"' + SUPPORTED_MIME_TYPE + '\"]');\n for (let i = 0; i < sources.length; i++) {\n let video = findVideo(sources[i]);\n let player = create(video, null);\n aPlayers.push(player);\n }\n\n return aPlayers;\n }\n\n function findVideo(el) {\n if (el.nodeName.toLowerCase() === 'video') {\n return el;\n } else {\n return findVideo(el.parentNode);\n }\n }\n\n return {\n create: create,\n createAll: createAll\n };\n}\n\nlet instance = MediaPlayerFactory();\n\nfunction loadHandler() {\n window.removeEventListener('load', loadHandler);\n instance.createAll();\n}\n\nlet avoidAutoCreate = window && window.dashjs && window.dashjs.skipAutoCreate;\n\nif (!avoidAutoCreate && window && window.addEventListener) {\n if (window.document.readyState === 'complete') {\n instance.createAll();\n } else {\n window.addEventListener('load', loadHandler);\n }\n}\n\nexport default instance;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport LiveEdgeFinder from './utils/LiveEdgeFinder.js';\nimport StreamProcessor from './StreamProcessor.js';\nimport MediaController from './controllers/MediaController.js';\nimport EventController from './controllers/EventController.js';\nimport FragmentController from './controllers/FragmentController.js';\nimport AbrController from './controllers/AbrController.js';\nimport VideoModel from './models/VideoModel.js';\nimport MetricsModel from './models/MetricsModel.js';\nimport PlaybackController from './controllers/PlaybackController.js';\nimport DashHandler from '../dash/DashHandler.js';\nimport SegmentBaseLoader from '../dash/SegmentBaseLoader.js';\nimport DashMetrics from '../dash/DashMetrics.js';\nimport EventBus from '../core/EventBus.js';\nimport Events from '../core/events/Events.js';\nimport Debug from '../core/Debug.js';\nimport FactoryMaker from '../core/FactoryMaker.js';\nimport TextSourceBuffer from './TextSourceBuffer.js';\n\nfunction Stream(config) {\n\n const DATA_UPDATE_FAILED_ERROR_CODE = 1;\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n let manifestModel = config.manifestModel;\n let manifestUpdater = config.manifestUpdater;\n let adapter = config.adapter;\n let capabilities = config.capabilities;\n let errHandler = config.errHandler;\n let timelineConverter = config.timelineConverter;\n\n let instance,\n streamProcessors,\n isStreamActivated,\n isMediaInitialized,\n streamInfo,\n updateError,\n isUpdating,\n initialized,\n protectionController,\n liveEdgeFinder,\n playbackController,\n mediaController,\n fragmentController,\n eventController,\n abrController,\n textSourceBuffer;\n\n\n function setup() {\n streamProcessors = [];\n isStreamActivated = false;\n isMediaInitialized = false;\n streamInfo = null;\n updateError = {};\n isUpdating = false;\n initialized = false;\n\n liveEdgeFinder = LiveEdgeFinder(context).getInstance();\n playbackController = PlaybackController(context).getInstance();\n abrController = AbrController(context).getInstance();\n mediaController = MediaController(context).getInstance();\n fragmentController = FragmentController(context).create();\n textSourceBuffer = TextSourceBuffer(context).getInstance();\n\n eventBus.on(Events.BUFFERING_COMPLETED, onBufferingCompleted, instance);\n eventBus.on(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, instance);\n }\n\n function initialize(StreamInfo, ProtectionController) {\n streamInfo = StreamInfo;\n\n //TODO will need to separate this once DRM is optional.\n protectionController = ProtectionController;\n if (protectionController) {\n eventBus.on(Events.KEY_ERROR, onProtectionError, instance);\n eventBus.on(Events.SERVER_CERTIFICATE_UPDATED, onProtectionError, instance);\n eventBus.on(Events.LICENSE_REQUEST_COMPLETE, onProtectionError, instance);\n eventBus.on(Events.KEY_SYSTEM_SELECTED, onProtectionError, instance);\n eventBus.on(Events.KEY_SESSION_CREATED, onProtectionError, instance);\n }\n }\n\n /**\n * Activates Stream by re-initializing some of its components\n * @param mediaSource {MediaSource}\n * @memberof Stream#\n */\n function activate(mediaSource) {\n if (!isStreamActivated) {\n eventBus.on(Events.CURRENT_TRACK_CHANGED, onCurrentTrackChanged, instance);\n initializeMedia(mediaSource);\n } else {\n createBuffers();\n }\n }\n\n /**\n * Partially resets some of the Stream elements\n * @memberof Stream#\n */\n function deactivate() {\n var ln = streamProcessors.length;\n var i = 0;\n\n for (i; i < ln; i++) {\n streamProcessors[i].reset();\n }\n\n streamProcessors = [];\n isStreamActivated = false;\n isMediaInitialized = false;\n resetEventController();\n eventBus.off(Events.CURRENT_TRACK_CHANGED, onCurrentTrackChanged, instance);\n }\n\n function reset() {\n playbackController.pause();\n fragmentController.reset();\n liveEdgeFinder.abortSearch();\n deactivate();\n\n playbackController = null;\n fragmentController = null;\n mediaController = null;\n abrController = null;\n manifestUpdater = null;\n manifestModel = null;\n adapter = null;\n capabilities = null;\n log = null;\n errHandler = null;\n isUpdating = false;\n initialized = false;\n updateError = {};\n\n eventBus.off(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, instance);\n eventBus.off(Events.BUFFERING_COMPLETED, onBufferingCompleted, instance);\n eventBus.off(Events.KEY_ERROR, onProtectionError, instance);\n eventBus.off(Events.SERVER_CERTIFICATE_UPDATED, onProtectionError, instance);\n eventBus.off(Events.LICENSE_REQUEST_COMPLETE, onProtectionError, instance);\n eventBus.off(Events.KEY_SYSTEM_SELECTED, onProtectionError, instance);\n eventBus.off(Events.KEY_SESSION_CREATED, onProtectionError, instance);\n }\n\n function getDuration() {\n return streamInfo.duration;\n }\n\n function getStartTime() {\n return streamInfo.start;\n }\n\n function getStreamIndex() {\n return streamInfo.index;\n }\n\n function getId() {\n return streamInfo.id;\n }\n\n function getStreamInfo() {\n return streamInfo;\n }\n\n function hasMedia(type) {\n return (getMediaInfo(type) !== null);\n }\n\n /**\n * @param type\n * @returns {Array}\n * @memberof Stream#\n */\n function getBitrateListFor(type) {\n var mediaInfo = getMediaInfo(type);\n return abrController.getBitrateList(mediaInfo);\n }\n\n function startEventController() {\n if (eventController) {\n eventController.start();\n }\n }\n\n function resetEventController() {\n if (eventController) {\n eventController.reset();\n }\n }\n\n function isActivated() {\n return isStreamActivated;\n }\n\n function isInitialized() {\n return initialized;\n }\n\n function onProtectionError(event) {\n if (event.error) {\n errHandler.mediaKeySessionError(event.error);\n log(event.error);\n reset();\n }\n }\n\n function getMimeTypeOrType(mediaInfo) {\n return mediaInfo.type === 'text' ? mediaInfo.mimeType : mediaInfo.type;\n }\n\n function isMediaSupported(mediaInfo, mediaSource, manifest) {\n var type = mediaInfo.type;\n var codec,\n msg;\n\n if (type === 'muxed' && mediaInfo) {\n msg = 'Multiplexed representations are intentionally not supported, as they are not compliant with the DASH-AVC/264 guidelines';\n log(msg);\n errHandler.manifestError(msg, 'multiplexedrep', manifestModel.getValue());\n return false;\n }\n\n if ((type === 'text') || (type === 'fragmentedText') || (type === 'embeddedText')) return true;\n\n codec = mediaInfo.codec;\n log(type + ' codec: ' + codec);\n\n if (!!mediaInfo.contentProtection && !capabilities.supportsEncryptedMedia()) {\n errHandler.capabilityError('encryptedmedia');\n } else if (!capabilities.supportsCodec(VideoModel(context).getInstance().getElement(), codec)) {\n msg = type + 'Codec (' + codec + ') is not supported.';\n errHandler.manifestError(msg, 'codec', manifest);\n log(msg);\n return false;\n }\n\n return true;\n }\n\n function onCurrentTrackChanged(e) {\n if (e.newMediaInfo.streamInfo.id !== streamInfo.id) return;\n\n var processor = getProcessorForMediaInfo(e.oldMediaInfo);\n if (!processor) return;\n\n var currentTime = playbackController.getTime();\n var buffer = processor.getBuffer();\n var mediaInfo = e.newMediaInfo;\n var manifest = manifestModel.getValue();\n var idx = streamProcessors.indexOf(processor);\n var mediaSource = processor.getMediaSource();\n\n if (mediaInfo.type !== 'fragmentedText') {\n processor.reset(true);\n createStreamProcessor(mediaInfo, manifest, mediaSource, {buffer: buffer, replaceIdx: idx, currentTime: currentTime});\n playbackController.seek(playbackController.getTime());\n }else {\n processor.updateMediaInfo(manifest, mediaInfo);\n }\n }\n\n function createIndexHandler() {\n\n let segmentBaseLoader = SegmentBaseLoader(context).getInstance();\n segmentBaseLoader.initialize();\n\n let handler = DashHandler(context).create({\n segmentBaseLoader: segmentBaseLoader,\n timelineConverter: timelineConverter,\n dashMetrics: DashMetrics(context).getInstance(),\n metricsModel: MetricsModel(context).getInstance()\n });\n\n return handler;\n }\n\n function createStreamProcessor(mediaInfo, manifest, mediaSource, optionalSettings) {\n var streamProcessor = StreamProcessor(context).create({\n indexHandler: createIndexHandler(),\n timelineConverter: timelineConverter,\n adapter: adapter,\n manifestModel: manifestModel\n });\n var allMediaForType = adapter.getAllMediaInfoForType(manifest, streamInfo, mediaInfo.type);\n\n streamProcessor.initialize(getMimeTypeOrType(mediaInfo), fragmentController, mediaSource, instance, eventController);\n abrController.updateTopQualityIndex(mediaInfo);\n\n if (optionalSettings) {\n streamProcessor.setBuffer(optionalSettings.buffer);\n streamProcessors[optionalSettings.replaceIdx] = streamProcessor;\n streamProcessor.setIndexHandlerTime(optionalSettings.currentTime);\n } else {\n streamProcessors.push(streamProcessor);\n }\n\n if ((mediaInfo.type === 'text' || mediaInfo.type === 'fragmentedText')) {\n var idx;\n for (var i = 0; i < allMediaForType.length; i++) {\n if (allMediaForType[i].index === mediaInfo.index) {\n idx = i;\n }\n streamProcessor.updateMediaInfo(manifest, allMediaForType[i]);//creates text tracks for all adaptations in one stream processor\n }\n if (mediaInfo.type === 'fragmentedText') {\n streamProcessor.updateMediaInfo(manifest, allMediaForType[idx]);//sets the initial media info\n }\n }else {\n streamProcessor.updateMediaInfo(manifest, mediaInfo);\n }\n\n return streamProcessor;\n }\n\n function initializeMediaForType(type, mediaSource) {\n var manifest = manifestModel.getValue();\n var allMediaForType = adapter.getAllMediaInfoForType(manifest, streamInfo, type);\n\n var mediaInfo = null;\n var initialMediaInfo;\n\n if (!allMediaForType || allMediaForType.length === 0) {\n log('No ' + type + ' data.');\n return;\n }\n\n for (var i = 0, ln = allMediaForType.length; i < ln; i++) {\n mediaInfo = allMediaForType[i];\n\n if (type === 'embeddedText') {\n textSourceBuffer.addEmbeddedTrack(mediaInfo);\n } else {\n if (!isMediaSupported(mediaInfo, mediaSource, manifest)) continue;\n\n if (mediaController.isMultiTrackSupportedByType(mediaInfo.type)) {\n mediaController.addTrack(mediaInfo, streamInfo);\n }\n }\n }\n\n if (type === 'embeddedText' || mediaController.getTracksFor(type, streamInfo).length === 0) {\n return;\n }\n\n mediaController.checkInitialMediaSettings(streamInfo);\n initialMediaInfo = mediaController.getCurrentTrackFor(type, streamInfo);\n\n // TODO : How to tell index handler live/duration?\n // TODO : Pass to controller and then pass to each method on handler?\n\n createStreamProcessor(initialMediaInfo, manifest, mediaSource);\n }\n\n function initializeMedia(mediaSource) {\n var manifest = manifestModel.getValue();\n var events;\n\n eventController = EventController(context).getInstance();\n eventController.initialize();\n eventController.setConfig({\n manifestModel: manifestModel,\n manifestUpdater: manifestUpdater\n });\n events = adapter.getEventsFor(manifest, streamInfo);\n eventController.addInlineEvents(events);\n\n isUpdating = true;\n initializeMediaForType('video', mediaSource);\n initializeMediaForType('audio', mediaSource);\n initializeMediaForType('text', mediaSource);\n initializeMediaForType('fragmentedText', mediaSource);\n initializeMediaForType('embeddedText', mediaSource);\n initializeMediaForType('muxed', mediaSource);\n\n createBuffers();\n\n //TODO. Consider initialization of TextSourceBuffer here if embeddedText, but no sideloadedText.\n\n isMediaInitialized = true;\n isUpdating = false;\n\n if (streamProcessors.length === 0) {\n var msg = 'No streams to play.';\n errHandler.manifestError(msg, 'nostreams', manifest);\n log(msg);\n } else {\n liveEdgeFinder.initialize(timelineConverter, streamProcessors[0]);\n //log(\"Playback initialized!\");\n checkIfInitializationCompleted();\n }\n }\n\n function checkIfInitializationCompleted() {\n var ln = streamProcessors.length;\n var hasError = !!updateError.audio || !!updateError.video;\n var error = hasError ? new Error(DATA_UPDATE_FAILED_ERROR_CODE, 'Data update failed', null) : null;\n var i = 0;\n\n for (i; i < ln; i++) {\n if (streamProcessors[i].isUpdating() || isUpdating) return;\n }\n\n initialized = true;\n isStreamActivated = true;\n eventBus.trigger(Events.STREAM_INITIALIZED, {streamInfo: streamInfo, error: error});\n if (!isMediaInitialized) return;\n if (protectionController) {\n protectionController.initialize(manifestModel.getValue(), getMediaInfo('audio'), getMediaInfo('video'));\n }\n }\n\n function getMediaInfo(type) {\n var ln = streamProcessors.length;\n var mediaCtrl = null;\n\n for (var i = 0; i < ln; i++) {\n mediaCtrl = streamProcessors[i];\n\n if (mediaCtrl.getType() === type) return mediaCtrl.getMediaInfo();\n }\n\n return null;\n }\n\n function createBuffers() {\n for (var i = 0, ln = streamProcessors.length; i < ln; i++) {\n streamProcessors[i].createBuffer();\n }\n }\n\n function onBufferingCompleted(e) {\n if (e.streamInfo !== streamInfo) return;\n\n var processors = getProcessors();\n var ln = processors.length;\n var i = 0;\n\n // if there is at least one buffer controller that has not completed buffering yet do nothing\n for (i; i < ln; i++) {\n if (!processors[i].isBufferingCompleted()) return;\n }\n\n eventBus.trigger(Events.STREAM_BUFFERING_COMPLETED, {streamInfo: streamInfo});\n }\n\n function onDataUpdateCompleted(e) {\n var sp = e.sender.getStreamProcessor();\n\n if (sp.getStreamInfo() !== streamInfo) return;\n\n updateError[sp.getType()] = e.error;\n checkIfInitializationCompleted();\n }\n\n function getProcessorForMediaInfo(mediaInfo) {\n if (!mediaInfo) return false;\n\n var processors = getProcessors();\n\n return processors.filter(function (processor) {\n return (processor.getType() === mediaInfo.type);\n })[0];\n }\n\n function getProcessors() {\n var ln = streamProcessors.length;\n var arr = [];\n var i = 0;\n\n var type,\n controller;\n\n for (i; i < ln; i++) {\n controller = streamProcessors[i];\n type = controller.getType();\n\n if (type === 'audio' || type === 'video' || type === 'fragmentedText') {\n arr.push(controller);\n }\n }\n\n return arr;\n }\n\n function updateData(updatedStreamInfo) {\n var ln = streamProcessors.length;\n var manifest = manifestModel.getValue();\n\n var i = 0;\n var mediaInfo,\n events,\n controller;\n\n isStreamActivated = false;\n streamInfo = updatedStreamInfo;\n log('Manifest updated... set new data on buffers.');\n\n if (eventController) {\n events = adapter.getEventsFor(manifest, streamInfo);\n eventController.addInlineEvents(events);\n }\n\n isUpdating = true;\n initialized = false;\n\n for (i; i < ln; i++) {\n controller = streamProcessors[i];\n mediaInfo = adapter.getMediaInfoForType(manifest, streamInfo, controller.getType());\n abrController.updateTopQualityIndex(mediaInfo);\n controller.updateMediaInfo(manifest, mediaInfo);\n }\n\n isUpdating = false;\n checkIfInitializationCompleted();\n }\n\n instance = {\n initialize: initialize,\n activate: activate,\n deactivate: deactivate,\n getDuration: getDuration,\n getStartTime: getStartTime,\n getStreamIndex: getStreamIndex,\n getId: getId,\n getStreamInfo: getStreamInfo,\n hasMedia: hasMedia,\n getBitrateListFor: getBitrateListFor,\n startEventController: startEventController,\n resetEventController: resetEventController,\n isActivated: isActivated,\n isInitialized: isInitialized,\n updateData: updateData,\n reset: reset,\n getProcessors: getProcessors\n };\n\n setup();\n return instance;\n}\n\nStream.__dashjs_factory_name = 'Stream';\nexport default FactoryMaker.getClassFactory(Stream);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport AbrController from './controllers/AbrController.js';\nimport BufferController from './controllers/BufferController.js';\nimport PlaybackController from './controllers/PlaybackController.js';\nimport StreamController from './controllers/StreamController.js';\nimport MediaController from './controllers/MediaController.js';\nimport TextController from './controllers/TextController.js';\nimport ScheduleController from './controllers/ScheduleController.js';\nimport RulesController from './rules/RulesController.js';\nimport ScheduleRulesCollection from './rules/scheduling/ScheduleRulesCollection.js';\nimport MediaPlayerModel from './models/MediaPlayerModel.js';\nimport MetricsModel from './models/MetricsModel.js';\nimport FragmentLoader from './FragmentLoader.js';\nimport RequestModifier from './utils/RequestModifier.js';\nimport SourceBufferController from './controllers/SourceBufferController';\nimport TextSourceBuffer from './TextSourceBuffer.js';\nimport VirtualBuffer from './VirtualBuffer.js';\nimport MediaSourceController from './controllers/MediaSourceController.js';\nimport DashManifestModel from '../dash/models/DashManifestModel.js';\nimport DashMetrics from '../dash/DashMetrics.js';\nimport RepresentationController from '../dash/controllers/RepresentationController.js';\nimport ErrorHandler from './utils/ErrorHandler.js';\nimport FactoryMaker from '../core/FactoryMaker.js';\n\nfunction StreamProcessor(config) {\n\n let context = this.context;\n\n let indexHandler = config.indexHandler;\n let timelineConverter = config.timelineConverter;\n let adapter = config.adapter;\n let manifestModel = config.manifestModel;\n\n let instance,\n dynamic,\n mediaInfo,\n type,\n mediaInfoArr,\n stream,\n eventController,\n abrController,\n bufferController,\n scheduleController,\n representationController,\n fragmentController,\n fragmentLoader,\n fragmentModel;\n\n\n function setup() {\n mediaInfoArr = [];\n }\n\n function initialize(Type, FragmentController, mediaSource, Stream, EventController) {\n\n type = Type;\n stream = Stream;\n eventController = EventController;\n fragmentController = FragmentController;\n dynamic = stream.getStreamInfo().manifestInfo.isDynamic;\n\n\n abrController = AbrController(context).getInstance();\n abrController.initialize(type, this);\n\n bufferController = createBufferControllerForType(Type);\n bufferController.initialize(type, mediaSource, this);\n\n scheduleController = ScheduleController(context).create({\n metricsModel: MetricsModel(context).getInstance(),\n manifestModel: manifestModel,\n adapter: adapter,\n dashMetrics: DashMetrics(context).getInstance(),\n dashManifestModel: DashManifestModel(context).getInstance(),\n timelineConverter: timelineConverter,\n scheduleRulesCollection: ScheduleRulesCollection(context).getInstance(),\n rulesController: RulesController(context).getInstance(),\n mediaPlayerModel: MediaPlayerModel(context).getInstance(),\n });\n\n scheduleController.initialize(type, this);\n\n fragmentLoader = FragmentLoader(context).create({\n metricsModel: MetricsModel(context).getInstance(),\n errHandler: ErrorHandler(context).getInstance(),\n requestModifier: RequestModifier(context).getInstance()\n });\n\n indexHandler.initialize(this);\n indexHandler.setCurrentTime(PlaybackController(context).getInstance().getStreamStartTime(getStreamInfo()));\n\n representationController = RepresentationController(context).create();\n representationController.initialize(this);\n\n fragmentModel = scheduleController.getFragmentModel();\n fragmentModel.setLoader(fragmentLoader);\n }\n\n function reset(errored) {\n fragmentModel.reset();\n indexHandler.reset();\n bufferController.reset(errored);\n scheduleController.reset();\n representationController.reset();\n bufferController = null;\n scheduleController = null;\n representationController = null;\n fragmentController = null;\n fragmentLoader = null;\n fragmentModel = null;\n eventController = null;\n stream = null;\n dynamic = null;\n mediaInfo = null;\n mediaInfoArr = [];\n type = null;\n }\n\n function isUpdating() {\n return representationController.isUpdating();\n }\n\n function getType() {\n return type;\n }\n\n function getABRController() {\n return abrController;\n }\n\n function getRepresentationController() {\n return representationController;\n }\n\n function getFragmentLoader() {\n return fragmentLoader;\n }\n\n function getIndexHandler() {\n return indexHandler;\n }\n\n function getFragmentController() {\n return fragmentController;\n }\n\n function getBuffer() {\n return bufferController.getBuffer();\n }\n\n function setBuffer(buffer) {\n bufferController.setBuffer(buffer);\n }\n\n function getBufferController() {\n return bufferController;\n }\n\n function getFragmentModel() {\n return fragmentModel;\n }\n\n function getStreamInfo() {\n return stream.getStreamInfo();\n }\n\n function updateMediaInfo(manifest, newMediaInfo) {\n if (newMediaInfo !== mediaInfo && (!newMediaInfo || !mediaInfo || (newMediaInfo.type === mediaInfo.type))) {\n mediaInfo = newMediaInfo;\n }\n if (mediaInfoArr.indexOf(newMediaInfo) === -1) {\n mediaInfoArr.push(newMediaInfo);\n }\n adapter.updateData(manifest, this);\n }\n\n function getMediaInfoArr() {\n return mediaInfoArr;\n }\n\n function getMediaInfo() {\n return mediaInfo;\n }\n\n function getMediaSource() {\n return bufferController.getMediaSource();\n }\n\n function getScheduleController() {\n return scheduleController;\n }\n\n function getEventController() {\n return eventController;\n }\n\n function start() {\n scheduleController.start();\n }\n\n function stop() {\n scheduleController.stop();\n }\n\n function getIndexHandlerTime() {\n return adapter.getIndexHandlerTime(this);\n }\n\n function setIndexHandlerTime(value) {\n adapter.setIndexHandlerTime(this, value);\n }\n\n function getCurrentRepresentationInfo() {\n return adapter.getCurrentRepresentationInfo(manifestModel.getValue(), representationController);\n }\n\n function getRepresentationInfoForQuality(quality) {\n return adapter.getRepresentationInfoForQuality(manifestModel.getValue(), representationController, quality);\n }\n\n function isBufferingCompleted() {\n return bufferController.getIsBufferingCompleted();\n }\n\n function createBuffer() {\n return (bufferController.getBuffer() || bufferController.createBuffer(mediaInfo));\n }\n\n function isDynamic() {\n return dynamic;\n }\n\n function createBufferControllerForType(type) {\n var controller = null;\n\n if (type === 'video' || type === 'audio' || type === 'fragmentedText') {\n controller = BufferController(context).create({\n metricsModel: MetricsModel(context).getInstance(),\n manifestModel: manifestModel,\n sourceBufferController: SourceBufferController(context).getInstance(),\n errHandler: ErrorHandler(context).getInstance(),\n mediaSourceController: MediaSourceController(context).getInstance(),\n streamController: StreamController(context).getInstance(),\n mediaController: MediaController(context).getInstance(),\n adapter: adapter,\n virtualBuffer: VirtualBuffer(context).getInstance(),\n textSourceBuffer: TextSourceBuffer(context).getInstance(),\n });\n }else {\n controller = TextController(context).create({\n errHandler: ErrorHandler(context).getInstance(),\n sourceBufferController: SourceBufferController(context).getInstance()\n });\n }\n\n return controller;\n }\n\n instance = {\n initialize: initialize,\n isUpdating: isUpdating,\n getType: getType,\n getBufferController: getBufferController,\n getABRController: getABRController,\n getFragmentLoader: getFragmentLoader,\n getFragmentModel: getFragmentModel,\n getScheduleController: getScheduleController,\n getEventController: getEventController,\n getFragmentController: getFragmentController,\n getRepresentationController: getRepresentationController,\n getIndexHandler: getIndexHandler,\n getIndexHandlerTime: getIndexHandlerTime,\n setIndexHandlerTime: setIndexHandlerTime,\n getCurrentRepresentationInfo: getCurrentRepresentationInfo,\n getRepresentationInfoForQuality: getRepresentationInfoForQuality,\n isBufferingCompleted: isBufferingCompleted,\n createBuffer: createBuffer,\n getStreamInfo: getStreamInfo,\n updateMediaInfo: updateMediaInfo,\n getMediaInfoArr: getMediaInfoArr,\n getMediaInfo: getMediaInfo,\n getMediaSource: getMediaSource,\n getBuffer: getBuffer,\n setBuffer: setBuffer,\n start: start,\n stop: stop,\n isDynamic: isDynamic,\n reset: reset\n };\n\n setup();\n return instance;\n}\nStreamProcessor.__dashjs_factory_name = 'StreamProcessor';\nexport default FactoryMaker.getClassFactory(StreamProcessor);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport TextTrackInfo from './vo/TextTrackInfo.js';\nimport FragmentedTextBoxParser from '../dash/utils/FragmentedTextBoxParser.js';\nimport BoxParser from './utils/BoxParser.js';\nimport CustomTimeRanges from './utils/CustomTimeRanges.js';\nimport FactoryMaker from '../core/FactoryMaker.js';\nimport Debug from '../core/Debug.js';\nimport VideoModel from './models/VideoModel.js';\nimport TextTracks from './TextTracks.js';\nimport ISOBoxer from 'codem-isoboxer';\nimport cea608parser from '../../externals/cea608-parser.js';\n\nfunction TextSourceBuffer() {\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let embeddedInitialized = false;\n let captionId = 0;\n\n let instance,\n boxParser,\n errHandler,\n adapter,\n dashManifestModel,\n mediaController,\n allTracksAreDisabled,\n parser,\n VTTParser,\n TTMLParser,\n fragmentedTextBoxParser,\n mediaInfos,\n textTracks,\n isFragmented,\n fragmentModel,\n initializationSegmentReceived,\n timescale,\n fragmentedTracks,\n videoModel,\n streamController,\n firstSubtitleStart,\n currFragmentedTrackIdx,\n embeddedTracks,\n embeddedInitializationSegmentReceived,\n embeddedTimescale,\n embeddedLastSequenceNumber,\n embeddedSequenceNumbers,\n embeddedCea608FieldParsers;\n\n function initialize(type, bufferController) {\n allTracksAreDisabled = false;\n parser = null;\n fragmentModel = null;\n initializationSegmentReceived = false;\n timescale = NaN;\n fragmentedTracks = [];\n firstSubtitleStart = null;\n\n if (!embeddedInitialized) {\n initEmbedded();\n }\n\n let streamProcessor = bufferController.getStreamProcessor();\n\n mediaInfos = streamProcessor.getMediaInfoArr();\n textTracks.setConfig({videoModel: videoModel});\n textTracks.initialize();\n isFragmented = !dashManifestModel.getIsTextTrack(type);\n boxParser = BoxParser(context).getInstance();\n fragmentedTextBoxParser = FragmentedTextBoxParser(context).getInstance();\n fragmentedTextBoxParser.setConfig({boxParser: boxParser});\n\n if (isFragmented) {\n fragmentModel = streamProcessor.getFragmentModel();\n this.buffered = CustomTimeRanges(context).create();\n fragmentedTracks = mediaController.getTracksFor('fragmentedText', streamController.getActiveStreamInfo());\n var currFragTrack = mediaController.getCurrentTrackFor('fragmentedText', streamController.getActiveStreamInfo());\n for (var i = 0 ; i < fragmentedTracks.length; i++) {\n if (fragmentedTracks[i] === currFragTrack) {\n currFragmentedTrackIdx = i;\n break;\n }\n }\n }\n }\n\n function initEmbedded() {\n embeddedTracks = [];\n mediaInfos = [];\n videoModel = VideoModel(context).getInstance();\n textTracks = TextTracks(context).getInstance();\n textTracks.setConfig({videoModel: videoModel});\n textTracks.initialize();\n boxParser = BoxParser(context).getInstance();\n fragmentedTextBoxParser = FragmentedTextBoxParser(context).getInstance();\n fragmentedTextBoxParser.setConfig({boxParser: boxParser});\n isFragmented = false;\n currFragmentedTrackIdx = null;\n embeddedInitializationSegmentReceived = false;\n embeddedTimescale = 0;\n embeddedCea608FieldParsers = [];\n embeddedSequenceNumbers = [];\n embeddedLastSequenceNumber = null;\n embeddedInitialized = true;\n }\n\n function append(bytes, chunk) {\n var result,\n sampleList,\n i,\n samplesInfo,\n ccContent;\n var mediaInfo = chunk.mediaInfo;\n var mediaType = mediaInfo.type;\n var mimeType = mediaInfo.mimeType;\n\n function createTextTrackFromMediaInfo(captionData, mediaInfo) {\n var textTrackInfo = new TextTrackInfo();\n var trackKindMap = { subtitle: 'subtitles', caption: 'captions' }; //Dash Spec has no \"s\" on end of KIND but HTML needs plural.\n var getKind = function () {\n var kind = (mediaInfo.roles.length > 0) ? trackKindMap[mediaInfo.roles[0]] : trackKindMap.caption;\n kind = (kind === trackKindMap.caption || kind === trackKindMap.subtitle) ? kind : trackKindMap.caption;\n return kind;\n };\n\n var checkTTML = function () {\n var ttml = false;\n if (mediaInfo.codec && mediaInfo.codec.search('stpp') >= 0) {\n ttml = true;\n }\n if (mediaInfo.mimeType && mediaInfo.mimeType.search('ttml') >= 0) {\n ttml = true;\n }\n return ttml;\n };\n\n textTrackInfo.captionData = captionData;\n textTrackInfo.lang = mediaInfo.lang;\n textTrackInfo.label = mediaInfo.id; // AdaptationSet id (an unsigned int)\n textTrackInfo.index = mediaInfo.index; // AdaptationSet index in manifest\n textTrackInfo.isTTML = checkTTML();\n textTrackInfo.video = videoModel.getElement();\n textTrackInfo.defaultTrack = getIsDefault(mediaInfo);\n textTrackInfo.isFragmented = isFragmented;\n textTrackInfo.isEmbedded = mediaInfo.isEmbedded ? true : false;\n textTrackInfo.kind = getKind();\n var totalNrTracks = (mediaInfos ? mediaInfos.length : 0) + embeddedTracks.length;\n textTracks.addTextTrack(textTrackInfo, totalNrTracks);\n }\n\n if (mediaType === 'fragmentedText') {\n if (!initializationSegmentReceived) {\n initializationSegmentReceived = true;\n for (i = 0; i < mediaInfos.length; i++) {\n createTextTrackFromMediaInfo(null, mediaInfos[i]);\n }\n timescale = fragmentedTextBoxParser.getMediaTimescaleFromMoov(bytes);\n } else {\n samplesInfo = fragmentedTextBoxParser.getSamplesInfo(bytes);\n sampleList = samplesInfo.sampleList;\n for (i = 0 ; i < sampleList.length ; i++) {\n if (!firstSubtitleStart) {\n firstSubtitleStart = sampleList[0].cts - chunk.start * timescale;\n }\n sampleList[i].cts -= firstSubtitleStart;\n this.buffered.add(sampleList[i].cts / timescale,(sampleList[i].cts + sampleList[i].duration) / timescale);\n let dataView = new DataView(bytes, sampleList[i].offset, sampleList[i].size);\n ccContent = ISOBoxer.Utils.dataViewToString(dataView, 'utf-8');\n parser = parser !== null ? parser : getParser(mimeType);\n try {\n result = parser.parse(ccContent);\n textTracks.addCaptions(currFragmentedTrackIdx, firstSubtitleStart / timescale, result);\n } catch (e) {\n //empty cue ?\n }\n }\n }\n } else if (mediaType === 'text') {\n let dataView = new DataView(bytes, 0, bytes.byteLength);\n ccContent = ISOBoxer.Utils.dataViewToString(dataView, 'utf-8');\n try {\n result = getParser(mimeType).parse(ccContent);\n createTextTrackFromMediaInfo(result, mediaInfo);\n } catch (e) {\n errHandler.timedTextError(e, 'parse', ccContent);\n }\n } else if (mediaType === 'video') { //embedded text\n if (chunk.segmentType === 'InitializationSegment') {\n if (embeddedTimescale === 0) {\n embeddedTimescale = fragmentedTextBoxParser.getMediaTimescaleFromMoov(bytes);\n for (i = 0; i < embeddedTracks.length; i++) {\n createTextTrackFromMediaInfo(null, embeddedTracks[i]);\n }\n }\n } else { // MediaSegment\n if (embeddedTimescale === 0) {\n log('CEA-608: No timescale for embeddedTextTrack yet');\n return;\n }\n var makeCueAdderForIndex = function (self, trackIndex) {\n function newCue(startTime, endTime, captionScreen) {\n var captionsArray = null;\n if (videoModel.getTTMLRenderingDiv()) {\n captionsArray = createHTMLCaptionsFromScreen(videoModel.getElement(), startTime, endTime, captionScreen);\n } else {\n var text = captionScreen.getDisplayText();\n //console.log(\"CEA text: \" + startTime + \"-\" + endTime + \" '\" + text + \"'\");\n captionsArray = [{ start: startTime, end: endTime, data: text, styles: {} }];\n }\n if (captionsArray) {\n textTracks.addCaptions(trackIndex, 0, captionsArray);\n }\n }\n return newCue;\n };\n\n\n samplesInfo = fragmentedTextBoxParser.getSamplesInfo(bytes);\n var sequenceNumber = samplesInfo.sequenceNumber;\n\n if (!embeddedCea608FieldParsers[0] && !embeddedCea608FieldParsers[1]) {\n // Time to setup the CEA-608 parsing\n let field, handler, trackIdx;\n for (i = 0; i < embeddedTracks.length; i++) {\n if (embeddedTracks[i].id === 'CC1') {\n field = 0;\n trackIdx = textTracks.getTrackIdxForId('CC1');\n } else if (embeddedTracks[i].id === 'CC3') {\n field = 1;\n trackIdx = textTracks.getTrackIdxForId('CC3');\n }\n if (trackIdx === -1) {\n console.log('CEA-608: data before track is ready.');\n return;\n }\n handler = makeCueAdderForIndex(this, trackIdx);\n embeddedCea608FieldParsers[i] = new cea608parser.Cea608Parser(i, { 'newCue': handler }, null);\n }\n }\n\n if (embeddedTimescale && embeddedSequenceNumbers.indexOf(sequenceNumber) == -1) {\n if (embeddedLastSequenceNumber !== null && sequenceNumber !== embeddedLastSequenceNumber + 1) {\n for (i = 0; i < embeddedCea608FieldParsers.length; i++) {\n if (embeddedCea608FieldParsers[i]) {\n embeddedCea608FieldParsers[i].reset();\n }\n }\n }\n var allCcData = extractCea608Data(bytes);\n\n for (var fieldNr = 0; fieldNr < embeddedCea608FieldParsers.length; fieldNr++) {\n var ccData = allCcData.fields[fieldNr];\n var fieldParser = embeddedCea608FieldParsers[fieldNr];\n if (fieldParser) {\n /*if (ccData.length > 0 ) {\n console.log(\"CEA-608 adding Data to field \" + fieldNr + \" \" + ccData.length + \"bytes\");\n }*/\n for (i = 0; i < ccData.length; i++) {\n fieldParser.addData(ccData[i][0] / embeddedTimescale, ccData[i][1]);\n }\n if (allCcData.endTime) {\n fieldParser.cueSplitAtTime(allCcData.endTime / embeddedTimescale);\n }\n }\n }\n embeddedLastSequenceNumber = sequenceNumber;\n embeddedSequenceNumbers.push(sequenceNumber);\n }\n }\n }\n else {\n log('Warning: Non-supported text type: ' + mediaType);\n }\n\n }\n /**\n * Extract CEA-608 data from a buffer of data.\n * @parameter(data) ArrayBuffer of data\n * @returns ccData corresponding to one segment.\n */\n function extractCea608Data(data) {\n\n /** Insert [time, data] pairs in order into array. */\n var insertInOrder = function (arr, time, data) {\n var len = arr.length;\n if (len > 0) {\n if (time >= arr[len - 1][0]) {\n arr.push([time, data]);\n } else {\n for (var pos = len - 1; pos >= 0; pos--) {\n if (time < arr[pos][0]) {\n arr.splice(pos, 0, [time, data]);\n break;\n }\n }\n }\n } else {\n arr.push([time, data]);\n }\n };\n\n var isoFile = boxParser.parse(data);\n var moof = isoFile.getBox('moof');\n var tfdt = isoFile.getBox('tfdt');\n //var tfhd = isoFile.getBox('tfhd'); //Can have a base_data_offset and other default values\n //console.log(\"tfhd: \" + tfhd);\n //var saio = isoFile.getBox('saio'); // Offset possibly\n //var saiz = isoFile.getBox('saiz'); // Possible sizes\n var truns = isoFile.getBoxes('trun'); //\n var trun = null;\n\n if (truns.length === 0) {\n return null;\n }\n trun = truns[0];\n if (truns.length > 1) {\n console.log('Warning: Too many truns');\n }\n var baseOffset = moof.offset + trun.data_offset;\n //Doublecheck that trun.offset == moof.size + 8\n var sampleCount = trun.sample_count;\n var startPos = baseOffset;\n var baseSampleTime = tfdt.baseMediaDecodeTime;\n var raw = new DataView(data);\n var allCcData = { 'startTime': null, 'endTime': null, fields: [[], []] };\n var accDuration = 0;\n for (var i = 0; i < sampleCount; i++) {\n var sample = trun.samples[i];\n var sampleTime = baseSampleTime + accDuration + sample.sample_composition_time_offset;\n var cea608Ranges = cea608parser.findCea608Nalus(raw, startPos, sample.sample_size);\n for (var j = 0; j < cea608Ranges.length; j++) {\n var ccData = cea608parser.extractCea608DataFromRange(raw, cea608Ranges[j]);\n for (var k = 0; k < 2; k++) {\n if (ccData[k].length > 0) {\n insertInOrder(allCcData.fields[k], sampleTime, ccData[k]);\n }\n }\n }\n\n accDuration += sample.sample_duration;\n startPos += sample.sample_size;\n }\n var endSampleTime = baseSampleTime + accDuration;\n allCcData.startTime = baseSampleTime;\n allCcData.endTime = endSampleTime;\n return allCcData;\n }\n\n /* HTML Rendering functions */\n function checkIndent(chars) {\n var line = '';\n\n for (var c = 0; c < chars.length; ++c) {\n var uc = chars[c];\n line += uc.uchar;\n }\n\n var l = line.length;\n var ll = line.replace(/^\\s+/,'').length;\n return l - ll;\n }\n\n function getRegionProperties(region) {\n return 'left: ' + (region.x * 3.125) + '%; top: ' + (region.y1 * 6.66) + '%; width: ' + (100 - (region.x * 3.125)) + '%; height: ' + (Math.max((region.y2 - 1) - region.y1, 1) * 6.66) + '%; align-items: flex-start; overflow: visible; -webkit-writing-mode: horizontal-tb;';\n }\n\n function createRGB(color) {\n if (color == 'red') {\n return 'rgb(255, 0, 0)';\n } else if (color == 'green') {\n return 'rgb(0, 255, 0)';\n } else if (color == 'blue') {\n return 'rgb(0, 0, 255)';\n } else if (color == 'cyan') {\n return 'rgb(0, 255, 255)';\n } else if (color == 'magenta') {\n return 'rgb(255, 0, 255)';\n } else if (color == 'yellow') {\n return 'rgb(255, 255, 0)';\n } else if (color == 'white') {\n return 'rgb(255, 255, 255)';\n } else if (color == 'black') {\n return 'rgb(0, 0, 0)';\n }\n return color;\n }\n\n function getStyle(videoElement, style) {\n var fontSize = videoElement.videoHeight / 15.0;\n if (style) {\n return 'font-size: ' + fontSize + 'px; font-family: Menlo, Consolas, \\'Cutive Mono\\', monospace; color: ' + ((style.foreground) ? createRGB(style.foreground) : 'rgb(255, 255, 255)') + '; font-style: ' + (style.italics ? 'italic' : 'normal') + '; text-decoration: ' + (style.underline ? 'underline' : 'none') + '; white-space: pre; background-color: ' + ((style.background) ? createRGB(style.background) : 'transparent') + ';';\n } else {\n return 'font-size: ' + fontSize + 'px; font-family: Menlo, Consolas, \\'Cutive Mono\\', monospace; justify-content: flex-start; text-align: left; color: rgb(255, 255, 255); font-style: normal; white-space: pre; line-height: normal; font-weight: normal; text-decoration: none; width: 100%; display: flex;';\n }\n }\n\n function ltrim(s) {\n var trimmed = s.replace(/^\\s+/g, '');\n return trimmed;\n }\n function rtrim(s) {\n var trimmed = s.replace(/\\s+$/g, '');\n return trimmed;\n }\n\n\n function createHTMLCaptionsFromScreen(videoElement, startTime, endTime, captionScreen) {\n\n let currRegion = null;\n let existingRegion = null;\n let lastRowHasText = false;\n let lastRowIndentL = -1;\n let currP = { start: startTime, end: endTime, spans: [] };\n let currentStyle = 'style_cea608_white_black';\n let seenRegions = { };\n let styleStates = { };\n let regions = [];\n let r, s;\n\n for (r = 0; r < 15; ++r) {\n let row = captionScreen.rows[r];\n let line = '';\n let prevPenState = null;\n\n if (false === row.isEmpty()) {\n /* Row is not empty */\n\n /* Get indentation of this row */\n let rowIndent = checkIndent(row.chars);\n\n /* Create a new region is there is none */\n if (currRegion === null) {\n currRegion = { x: rowIndent, y1: r, y2: (r + 1), p: [] };\n }\n\n /* Check if indentation has changed and we had text of last row */\n if ((rowIndent !== lastRowIndentL) && lastRowHasText) {\n currRegion.p.push(currP);\n currP = { start: startTime, end: endTime, spans: [] };\n currRegion.y2 = r;\n currRegion.name = 'region_' + currRegion.x + '_' + currRegion.y1 + '_' + currRegion.y2;\n if (false === seenRegions.hasOwnProperty(currRegion.name)) {\n regions.push(currRegion);\n seenRegions[currRegion.name] = currRegion;\n } else {\n existingRegion = seenRegions[currRegion.name];\n existingRegion.p.contat(currRegion.p);\n }\n\n currRegion = { x: rowIndent, y1: r, y2: (r + 1), p: [] };\n }\n\n for (let c = 0; c < row.chars.length; ++c) {\n let uc = row.chars[c];\n let currPenState = uc.penState;\n if ((prevPenState === null) || (!currPenState.equals(prevPenState))) {\n if (line.trim().length > 0) {\n currP.spans.push({ name: currentStyle, line: line, row: r });\n line = '';\n }\n\n let currPenStateString = 'style_cea608_' + currPenState.foreground + '_' + currPenState.background;\n if (currPenState.underline) {\n currPenStateString += '_underline';\n }\n if (currPenState.italics) {\n currPenStateString += '_italics';\n }\n\n if (!styleStates.hasOwnProperty(currPenStateString)) {\n styleStates[currPenStateString] = JSON.parse(JSON.stringify(currPenState));\n }\n\n prevPenState = currPenState;\n\n currentStyle = currPenStateString;\n }\n\n line += uc.uchar;\n }\n\n if (line.trim().length > 0) {\n currP.spans.push({ name: currentStyle, line: line, row: r });\n }\n\n lastRowHasText = true;\n lastRowIndentL = rowIndent;\n } else {\n /* Row is empty */\n lastRowHasText = false;\n lastRowIndentL = -1;\n\n if (currRegion) {\n currRegion.p.push(currP);\n currP = { start: startTime, end: endTime, spans: [] };\n currRegion.y2 = r;\n currRegion.name = 'region_' + currRegion.x + '_' + currRegion.y1 + '_' + currRegion.y2;\n if (false === seenRegions.hasOwnProperty(currRegion.name)) {\n regions.push(currRegion);\n seenRegions[currRegion.name] = currRegion;\n } else {\n existingRegion = seenRegions[currRegion.name];\n existingRegion.p.contat(currRegion.p);\n }\n\n currRegion = null;\n }\n\n }\n }\n\n if (currRegion) {\n currRegion.p.push(currP);\n currRegion.y2 = r + 1;\n currRegion.name = 'region_' + currRegion.x + '_' + currRegion.y1 + '_' + currRegion.y2;\n if (false === seenRegions.hasOwnProperty(currRegion.name)) {\n regions.push(currRegion);\n seenRegions[currRegion.name] = currRegion;\n } else {\n existingRegion = seenRegions[currRegion.name];\n existingRegion.p.contat(currRegion.p);\n }\n\n currRegion = null;\n }\n\n //console.log(styleStates);\n //console.log(regions);\n\n let captionsArray = [];\n\n /* Loop thru regions */\n for (r = 0; r < regions.length; ++r) {\n let region = regions[r];\n\n let cueID = 'sub_' + (captionId++);\n let finalDiv = document.createElement('div');\n finalDiv.id = 'subtitle_' + cueID;\n let cueRegionProperties = getRegionProperties(region);\n finalDiv.style.cssText = 'position: absolute; margin: 0; display: flex; box-sizing: border-box; pointer-events: none;' + cueRegionProperties;\n\n let bodyDiv = document.createElement('div');\n bodyDiv.className = 'paragraph bodyStyle';\n bodyDiv.style.cssText = getStyle(videoElement);\n\n let cueUniWrapper = document.createElement('div');\n cueUniWrapper.className = 'cueUniWrapper';\n cueUniWrapper.style.cssText = 'unicode-bidi: normal; direction: ltr;';\n\n for (let p = 0; p < region.p.length; ++p) {\n let ptag = region.p[p];\n let lastSpanRow = 0;\n for (s = 0; s < ptag.spans.length; ++s) {\n let span = ptag.spans[s];\n if (span.line.length > 0) {\n if ((s !== 0) && lastSpanRow != span.row) {\n let brElement = document.createElement('br');\n brElement.className = 'lineBreak';\n cueUniWrapper.appendChild(brElement);\n }\n let sameRow = false;\n if (lastSpanRow === span.row) {\n sameRow = true;\n }\n lastSpanRow = span.row;\n let spanStyle = styleStates[span.name];\n let spanElement = document.createElement('span');\n spanElement.className = 'spanPadding ' + span.name + ' customSpanColor';\n spanElement.style.cssText = getStyle(videoElement, spanStyle);\n if ((s !== 0) && sameRow) {\n if (s === ptag.spans.length - 1) {\n spanElement.textContent = rtrim(span.line);\n } else {\n spanElement.textContent = span.line;\n }\n } else {\n if (s === 0) {\n if (ptag.spans.length > 1) {\n /* Check if next text is on same row */\n if (span.row === ptag.spans[1].row) {\n /* Next element on same row, trim start */\n spanElement.textContent = ltrim(span.line);\n } else {\n /* Different rows, trim */\n spanElement.textContent = span.line.trim();\n }\n } else {\n spanElement.textContent = span.line.trim();\n }\n } else {\n spanElement.textContent = span.line.trim();\n }\n }\n cueUniWrapper.appendChild(spanElement);\n }\n }\n }\n\n bodyDiv.appendChild(cueUniWrapper);\n\n finalDiv.appendChild(bodyDiv);\n\n let fontSize = { 'bodyStyle': 90 };\n for (s in styleStates) {\n if (styleStates.hasOwnProperty(s)) {\n fontSize[s] = 90;\n }\n }\n\n captionsArray.push({ type: 'html',\n start: startTime,\n end: endTime,\n cueHTMLElement: finalDiv,\n cueID: cueID,\n cellResolution: [32, 15],\n isFromCEA608: true,\n regions: regions,\n regionID: region.name,\n videoHeight: videoElement.videoHeight,\n videoWidth: videoElement.videoWidth,\n fontSize: fontSize || {\n defaultFontSize: '100'\n },\n lineHeight: {},\n linePadding: {},\n });\n }\n return captionsArray;\n }\n\n function abort() {\n textTracks.deleteAllTextTracks();\n allTracksAreDisabled = false;\n parser = null;\n fragmentedTextBoxParser = null;\n mediaInfos = null;\n textTracks = null;\n isFragmented = false;\n fragmentModel = null;\n initializationSegmentReceived = false;\n timescale = NaN;\n fragmentedTracks = [];\n videoModel = null;\n streamController = null;\n embeddedInitialized = false;\n embeddedTracks = null;\n }\n\n function addEmbeddedTrack(mediaInfo) {\n if (!embeddedInitialized) {\n initEmbedded();\n }\n if (mediaInfo.id === 'CC1' || mediaInfo.id === 'CC3') {\n embeddedTracks.push(mediaInfo);\n } else {\n log('Warning: Embedded track ' + mediaInfo.id + ' not supported!');\n }\n }\n\n function resetEmbedded() {\n embeddedInitialized = false;\n embeddedTracks = [];\n embeddedCea608FieldParsers = [null, null];\n embeddedSequenceNumbers = [];\n embeddedLastSequenceNumber = null;\n }\n\n function getAllTracksAreDisabled() {\n return allTracksAreDisabled;\n }\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.errHandler) {\n errHandler = config.errHandler;\n }\n if (config.adapter) {\n adapter = config.adapter;\n }\n if (config.dashManifestModel) {\n dashManifestModel = config.dashManifestModel;\n }\n if (config.mediaController) {\n mediaController = config.mediaController;\n }\n if (config.videoModel) {\n videoModel = config.videoModel;\n }\n if (config.streamController) {\n streamController = config.streamController;\n }\n if (config.textTracks) {\n textTracks = config.textTracks;\n }\n if (config.VTTParser) {\n VTTParser = config.VTTParser;\n }\n if (config.TTMLParser) {\n TTMLParser = config.TTMLParser;\n }\n }\n\n function setTextTrack() {\n\n var el = videoModel.getElement();\n var tracks = el.textTracks;\n var ln = tracks.length;\n var nrNonEmbeddedTracks = ln - embeddedTracks.length;\n var oldTrackIdx = textTracks.getCurrentTrackIdx();\n\n for (var i = 0; i < ln; i++ ) {\n var track = tracks[i];\n allTracksAreDisabled = track.mode !== 'showing';\n if (track.mode === 'showing') {\n if (oldTrackIdx !== i) { // do not reset track if already the current track. This happens when all captions get turned off via UI and then turned on again and with videojs.\n textTracks.setCurrentTrackIdx(i);\n textTracks.addCaptions(i, 0, null); // Make sure that previously queued captions are added as cues\n if (isFragmented && i < nrNonEmbeddedTracks) {\n var currentFragTrack = mediaController.getCurrentTrackFor('fragmentedText', streamController.getActiveStreamInfo());\n var newFragTrack = fragmentedTracks[i];\n if (newFragTrack !== currentFragTrack) {\n fragmentModel.abortRequests();\n textTracks.deleteTrackCues(currentFragTrack);\n mediaController.setTrack(newFragTrack);\n currFragmentedTrackIdx = i;\n }\n }\n }\n break;\n }\n }\n\n if (allTracksAreDisabled) {\n textTracks.setCurrentTrackIdx(-1);\n }\n }\n\n function getIsDefault(mediaInfo) {\n //TODO How to tag default. currently same order as listed in manifest.\n // Is there a way to mark a text adaptation set as the default one? DASHIF meeting talk about using role which is being used for track KIND\n // Eg subtitles etc. You can have multiple role tags per adaptation Not defined in the spec yet.\n var isDefault = false;\n if (embeddedTracks.length > 1) {\n isDefault = (mediaInfo.id && mediaInfo.id === 'CC1'); // CC1 if both CC1 and CC3 exist\n } else if (embeddedTracks.length === 1) {\n if (mediaInfo.id && mediaInfo.id.substring(0, 2) === 'CC') {// Either CC1 or CC3\n isDefault = true;\n }\n } else {\n isDefault = (mediaInfo.index === mediaInfos[0].index);\n }\n return isDefault;\n }\n\n function getParser(mimeType) {\n var parser;\n if (mimeType === 'text/vtt') {\n parser = VTTParser;\n } else if (mimeType === 'application/ttml+xml' || mimeType === 'application/mp4') {\n parser = TTMLParser;\n parser.setConfig({videoModel: videoModel});\n }\n return parser;\n }\n\n instance = {\n initialize: initialize,\n append: append,\n abort: abort,\n getAllTracksAreDisabled: getAllTracksAreDisabled,\n setTextTrack: setTextTrack,\n setConfig: setConfig,\n addEmbeddedTrack: addEmbeddedTrack,\n resetEmbedded: resetEmbedded\n };\n\n return instance;\n}\n\nTextSourceBuffer.__dashjs_factory_name = 'TextSourceBuffer';\nexport default FactoryMaker.getSingletonFactory(TextSourceBuffer);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport EventBus from '../core/EventBus.js';\nimport Events from '../core/events/Events.js';\nimport FactoryMaker from '../core/FactoryMaker.js';\nimport Debug from '../core/Debug.js';\n\nfunction TextTracks() {\n\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n let log = Debug(context).getInstance().log;\n\n let instance,\n Cue,\n videoModel,\n video,\n textTrackQueue,\n trackElementArr,\n currentTrackIdx,\n actualVideoLeft,\n actualVideoTop,\n actualVideoWidth,\n actualVideoHeight,\n captionContainer,\n videoSizeCheckInterval,\n isChrome,\n fullscreenAttribute,\n displayCCOnTop,\n topZIndex;\n\n function initialize () {\n Cue = window.VTTCue || window.TextTrackCue;\n textTrackQueue = [];\n trackElementArr = [];\n currentTrackIdx = -1;\n actualVideoLeft = 0;\n actualVideoTop = 0;\n actualVideoWidth = 0;\n actualVideoHeight = 0;\n captionContainer = null;\n videoSizeCheckInterval = null;\n displayCCOnTop = false;\n topZIndex = 2147483647;\n\n //TODO Check if IE has resolved issues: Then revert to not using the addTextTrack API for all browsers.\n // https://connect.microsoft.com/IE/feedbackdetail/view/1660701/text-tracks-do-not-fire-change-addtrack-or-removetrack-events\n // https://connect.microsoft.com/IE/feedback/details/1573380/htmltrackelement-track-addcue-throws-invalidstateerror-when-adding-new-cue\n // Same issue with Firefox.\n //isIE11orEdge = !!navigator.userAgent.match(/Trident.*rv[ :]*11\\./) || navigator.userAgent.match(/Edge/);\n //isFirefox = !!navigator.userAgent.match(/Firefox/);\n isChrome = !!navigator.userAgent.match(/Chrome/) && !navigator.userAgent.match(/Edge/);\n if (document.fullscreenElement !== undefined) {\n fullscreenAttribute = 'fullscreenElement'; // Standard and Edge\n } else if (document.webkitIsFullScreen !== undefined) {\n fullscreenAttribute = 'webkitIsFullScreen'; // Chrome and Safari (and Edge)\n } else if (document.msFullscreenElement) { // IE11\n fullscreenAttribute = 'msFullscreenElement';\n } else if (document.mozFullScreen) { // Firefox\n fullscreenAttribute = 'mozFullScreen';\n }\n }\n\n function createTrackForUserAgent (i) {\n var kind = textTrackQueue[i].kind;\n var label = textTrackQueue[i].label !== undefined ? textTrackQueue[i].label : textTrackQueue[i].lang;\n var lang = textTrackQueue[i].lang;\n var track = isChrome ? document.createElement('track') : video.addTextTrack(kind, label, lang);\n\n if (isChrome) {\n track.kind = kind;\n track.label = label;\n track.srclang = lang;\n }\n\n return track;\n }\n\n function displayCConTop (value) {\n displayCCOnTop = value;\n if (!captionContainer || document[fullscreenAttribute]) return;\n captionContainer.style.zIndex = value ? topZIndex : null;\n }\n\n function addTextTrack(textTrackInfoVO, totalTextTracks) {\n\n if (textTrackQueue.length === totalTextTracks) {\n log('Trying to add too many tracks.');\n return;\n }\n\n textTrackQueue.push(textTrackInfoVO);\n if (video === undefined) {\n video = textTrackInfoVO.video;\n }\n\n if (textTrackQueue.length === totalTextTracks) {\n textTrackQueue.sort(function (a, b) { //Sort in same order as in manifest\n return a.index - b.index;\n });\n captionContainer = videoModel.getTTMLRenderingDiv();\n var defaultIndex = -1;\n for (var i = 0 ; i < textTrackQueue.length; i++) {\n var track = createTrackForUserAgent.call(this, i);\n trackElementArr.push(track); //used to remove tracks from video element when added manually\n\n if (textTrackQueue[i].defaultTrack) {\n // track.default is an object property identifier that is a reserved word\n // The following jshint directive is used to suppressed the warning \"Expected an identifier and instead saw 'default' (a reserved word)\"\n /*jshint -W024 */\n track.default = true;\n defaultIndex = i;\n }\n if (isChrome) {\n video.appendChild(track);\n }\n var textTrack = video.textTracks[i];\n textTrack.nonAddedCues = [];\n if (captionContainer && (textTrackQueue[i].isTTML || textTrackQueue[i].isEmbedded)) {\n textTrack.renderingType = 'html';\n } else {\n textTrack.renderingType = 'default';\n }\n this.addCaptions(i, 0, textTrackQueue[i].captionData);\n eventBus.trigger(Events.TEXT_TRACK_ADDED);\n }\n setCurrentTrackIdx.call(this, defaultIndex);\n if (defaultIndex >= 0) {\n video.textTracks[defaultIndex].mode = 'showing';\n this.addCaptions(defaultIndex, 0, null);\n }\n eventBus.trigger(Events.TEXT_TRACKS_ADDED, {index: currentTrackIdx, tracks: textTrackQueue});//send default idx.\n }\n }\n\n function getVideoVisibleVideoSize(viewWidth, viewHeight, videoWidth, videoHeight, aspectRatio, use80Percent) {\n var viewAspectRatio = viewWidth / viewHeight;\n var videoAspectRatio = videoWidth / videoHeight;\n\n var videoPictureX = 0;\n var videoPictureY = 0;\n var videoPictureWidth = 0;\n var videoPictureHeight = 0;\n\n if (viewAspectRatio > videoAspectRatio) {\n videoPictureHeight = viewHeight;\n videoPictureWidth = (videoPictureHeight / videoHeight) * videoWidth;\n videoPictureX = (viewWidth - videoPictureWidth) / 2;\n videoPictureY = 0;\n } else {\n videoPictureWidth = viewWidth;\n videoPictureHeight = (videoPictureWidth / videoWidth) * videoHeight;\n videoPictureX = 0;\n videoPictureY = (viewHeight - videoPictureHeight) / 2;\n }\n\n var videoPictureXAspect = 0;\n var videoPictureYAspect = 0;\n var videoPictureWidthAspect = 0;\n var videoPictureHeightAspect = 0;\n var videoPictureAspect = videoPictureWidth / videoPictureHeight;\n\n if (videoPictureAspect > aspectRatio) {\n videoPictureHeightAspect = videoPictureHeight;\n videoPictureWidthAspect = videoPictureHeight / (1 / aspectRatio);\n videoPictureXAspect = (viewWidth - videoPictureWidthAspect) / 2;\n videoPictureYAspect = 0;\n } else {\n videoPictureWidthAspect = videoPictureWidth;\n videoPictureHeightAspect = videoPictureWidth / aspectRatio;\n videoPictureXAspect = 0;\n videoPictureYAspect = (viewHeight - videoPictureHeightAspect) / 2;\n }\n\n if (use80Percent) {\n return { x: videoPictureXAspect + (videoPictureWidthAspect * 0.1),\n y: videoPictureYAspect + (videoPictureHeightAspect * 0.1),\n w: videoPictureWidthAspect * 0.8,\n h: videoPictureHeightAspect * 0.8 }; /* Maximal picture size in videos aspect ratio */\n } else {\n return { x: videoPictureXAspect,\n y: videoPictureYAspect,\n w: videoPictureWidthAspect,\n h: videoPictureHeightAspect }; /* Maximal picture size in videos aspect ratio */\n }\n }\n\n\n function checkVideoSize() {\n var track = this.getCurrentTextTrack();\n if (track && track.renderingType === 'html') {\n if (!track.activeCues || track.activeCues.length === 0) {\n return;\n }\n var newVideoWidth = video.clientWidth;\n var newVideoHeight = video.clientHeight;\n\n // Create aspect ratio from cellResolutions\n let aspectRatio = 1;\n if (track.cellResolution) {\n aspectRatio = track.cellResolution[0] / track.cellResolution[1];\n }\n let use80Percent = false;\n if (track.isFromCEA608) {\n // If this is CEA608 then use predefined aspect ratio\n aspectRatio = 3.5 / 3.0;\n use80Percent = true;\n }\n\n var realVideoSize = getVideoVisibleVideoSize.call(this, video.clientWidth, video.clientHeight, video.videoWidth, video.videoHeight, aspectRatio, use80Percent);\n\n newVideoWidth = realVideoSize.w;\n newVideoHeight = realVideoSize.h;\n\n if (newVideoWidth != actualVideoWidth || newVideoHeight != actualVideoHeight) {\n actualVideoLeft = realVideoSize.x;\n actualVideoTop = realVideoSize.y;\n actualVideoWidth = newVideoWidth;\n actualVideoHeight = newVideoHeight;\n captionContainer.style.left = actualVideoLeft + 'px';\n captionContainer.style.top = actualVideoTop + 'px';\n captionContainer.style.width = actualVideoWidth + 'px';\n captionContainer.style.height = actualVideoHeight + 'px';\n\n // Video view has changed size, so resize all active cues\n for (var i = 0; i < track.activeCues.length; ++i) {\n var cue = track.activeCues[i];\n cue.scaleCue(cue);\n }\n\n if ((fullscreenAttribute && document[fullscreenAttribute]) || displayCCOnTop) {\n captionContainer.style.zIndex = topZIndex;\n } else {\n captionContainer.style.zIndex = null;\n }\n }\n }\n }\n\n function scaleCue(activeCue) {\n var videoWidth = actualVideoWidth;\n var videoHeight = actualVideoHeight;\n var key,\n replaceValue,\n elements;\n\n var cellUnit = [videoWidth / activeCue.cellResolution[0], videoHeight / activeCue.cellResolution[1]];\n\n if (activeCue.linePadding) {\n for (key in activeCue.linePadding) {\n if (activeCue.linePadding.hasOwnProperty(key)) {\n var valueLinePadding = activeCue.linePadding[key];\n replaceValue = (valueLinePadding * cellUnit[0]).toString();\n // Compute the CellResolution unit in order to process properties using sizing (fontSize, linePadding, etc).\n var elementsSpan = document.getElementsByClassName('spanPadding');\n for (var i = 0; i < elementsSpan.length; i++) {\n elementsSpan[i].style.cssText = elementsSpan[i].style.cssText.replace(/(padding-left\\s*:\\s*)[\\d.,]+(?=\\s*px)/gi, '$1' + replaceValue);\n elementsSpan[i].style.cssText = elementsSpan[i].style.cssText.replace(/(padding-right\\s*:\\s*)[\\d.,]+(?=\\s*px)/gi, '$1' + replaceValue);\n }\n }\n }\n }\n\n if (activeCue.fontSize) {\n for (key in activeCue.fontSize) {\n if (activeCue.fontSize.hasOwnProperty(key)) {\n var valueFontSize = activeCue.fontSize[key] / 100;\n replaceValue = (valueFontSize * cellUnit[1]).toString();\n\n if (key !== 'defaultFontSize') {\n elements = document.getElementsByClassName(key);\n } else {\n elements = document.getElementsByClassName('paragraph');\n }\n\n for (var j = 0; j < elements.length; j++) {\n elements[j].style.cssText = elements[j].style.cssText.replace(/(font-size\\s*:\\s*)[\\d.,]+(?=\\s*px)/gi, '$1' + replaceValue);\n }\n }\n }\n }\n\n if (activeCue.lineHeight) {\n for (key in activeCue.lineHeight) {\n if (activeCue.lineHeight.hasOwnProperty(key)) {\n var valueLineHeight = activeCue.lineHeight[key] / 100;\n replaceValue = (valueLineHeight * cellUnit[1]).toString();\n elements = document.getElementsByClassName(key);\n for (var k = 0; k < elements.length; k++) {\n elements[k].style.cssText = elements[k].style.cssText.replace(/(line-height\\s*:\\s*)[\\d.,]+(?=\\s*px)/gi, '$1' + replaceValue);\n }\n }\n }\n }\n }\n\n /**\n * Add captions to track, store for later adding, or add captions added before\n */\n function addCaptions(trackIdx, timeOffset, captionData) {\n var track = trackIdx >= 0 ? video.textTracks[trackIdx] : null;\n var self = this;\n\n if (!track) return;\n if (track.mode !== 'showing') {\n if (captionData && captionData.length > 0) {\n track.nonAddedCues = track.nonAddedCues.concat(captionData);\n }\n return;\n }\n\n if (!captionData) {\n captionData = track.nonAddedCues;\n track.nonAddedCues = [];\n }\n\n if (!captionData || captionData.length === 0) {\n return;\n }\n\n for (var item in captionData) {\n var cue;\n var currentItem = captionData[item];\n\n track.cellResolution = currentItem.cellResolution;\n track.isFromCEA608 = currentItem.isFromCEA608;\n\n if (!videoSizeCheckInterval && currentItem.type == 'html') {\n videoSizeCheckInterval = setInterval(checkVideoSize.bind(this), 500);\n }\n\n //image subtitle extracted from TTML\n if (currentItem.type == 'image') {\n cue = new Cue(currentItem.start - timeOffset, currentItem.end - timeOffset, '');\n cue.image = currentItem.data;\n cue.id = currentItem.id;\n cue.size = 0; //discard the native display for this subtitles\n cue.type = 'image'; // active image overlay\n cue.onenter = function () {\n var img = new Image();\n img.id = 'ttmlImage_' + this.id;\n img.src = this.image;\n img.className = 'cue-image';\n if (captionContainer) {\n captionContainer.appendChild(img);\n } else {\n video.parentNode.appendChild(img);\n }\n };\n\n cue.onexit = function () {\n var container,\n i,\n imgs;\n if (captionContainer) {\n container = captionContainer;\n } else {\n container = video.parentNode;\n }\n imgs = container.childNodes;\n for (i = 0; i < imgs.length; i++) {\n if (imgs[i].id == 'ttmlImage_' + this.id) {\n container.removeChild(imgs[i]);\n }\n }\n };\n }\n else if (currentItem.type === 'html') {\n cue = new Cue(currentItem.start - timeOffset, currentItem.end - timeOffset, '');\n cue.cueHTMLElement = currentItem.cueHTMLElement;\n cue.regions = currentItem.regions;\n cue.regionID = currentItem.regionID;\n cue.cueID = currentItem.cueID;\n cue.videoWidth = currentItem.videoWidth;\n cue.videoHeight = currentItem.videoHeight;\n cue.cellResolution = currentItem.cellResolution;\n cue.fontSize = currentItem.fontSize;\n cue.lineHeight = currentItem.lineHeight;\n cue.linePadding = currentItem.linePadding;\n cue.scaleCue = scaleCue.bind(self);\n captionContainer.style.left = actualVideoLeft + 'px';\n captionContainer.style.top = actualVideoTop + 'px';\n captionContainer.style.width = actualVideoWidth + 'px';\n captionContainer.style.height = actualVideoHeight + 'px';\n\n cue.onenter = function () {\n if (track.mode == 'showing') {\n captionContainer.appendChild(this.cueHTMLElement);\n scaleCue.call(self, this);\n }\n };\n\n cue.onexit = function () {\n var divs = captionContainer.childNodes;\n for (var i = 0; i < divs.length; ++i) {\n if (divs[i].id == 'subtitle_' + this.cueID) {\n captionContainer.removeChild(divs[i]);\n }\n }\n };\n }\n else {\n cue = new Cue(currentItem.start - timeOffset, currentItem.end - timeOffset, currentItem.data);\n if (currentItem.styles) {\n if (currentItem.styles.align !== undefined && cue.hasOwnProperty('align')) {\n cue.align = currentItem.styles.align;\n }\n if (currentItem.styles.line !== undefined && cue.hasOwnProperty('line')) {\n cue.line = currentItem.styles.line;\n }\n if (currentItem.styles.position !== undefined && cue.hasOwnProperty('position')) {\n cue.position = currentItem.styles.position ;\n }\n if (currentItem.styles.size !== undefined && cue.hasOwnProperty('size')) {\n cue.size = currentItem.styles.size;\n }\n }\n }\n\n track.addCue(cue);\n }\n }\n\n function getCurrentTextTrack() {\n return currentTrackIdx >= 0 ? video.textTracks[currentTrackIdx] : null;\n }\n\n function getCurrentTrackIdx() {\n return currentTrackIdx;\n }\n\n function getTrackIdxForId(trackId) {\n var idx = -1;\n for (var i = 0; i < video.textTracks.length; i++) {\n if (video.textTracks[i].label === trackId) {\n idx = i;\n break;\n }\n }\n return idx;\n }\n\n function setCurrentTrackIdx(idx) {\n currentTrackIdx = idx;\n clearCues.call(this);\n if (idx >= 0) {\n var track = video.textTracks[idx];\n if (track.renderingType === 'html') {\n setNativeCueStyle.call(this);\n } else {\n removeNativeCueStyle.call(this);\n }\n } else {\n removeNativeCueStyle.call(this);\n }\n }\n\n function getTextTrack(idx) {\n return video.textTracks[idx];\n }\n\n function deleteTrackCues(track) {\n if (track.cues) {\n var cues = track.cues;\n var lastIdx = cues.length - 1;\n\n for (var r = lastIdx; r >= 0 ; r--) {\n track.removeCue(cues[r]);\n }\n\n track.mode = 'disabled';\n }\n }\n\n function deleteAllTextTracks() {\n var ln = trackElementArr.length;\n for (var i = 0; i < ln; i++) {\n if (isChrome) {\n video.removeChild(trackElementArr[i]);\n }else {\n var track = getTextTrack.call(this, i);\n track.nonAddedCues = [];\n deleteTrackCues.call(this, track);\n }\n\n }\n trackElementArr = [];\n textTrackQueue = [];\n if (videoSizeCheckInterval) {\n clearInterval(videoSizeCheckInterval);\n videoSizeCheckInterval = null;\n }\n clearCues.call(this);\n }\n\n function deleteTextTrack(idx) {\n video.removeChild(trackElementArr[idx]);\n trackElementArr.splice(idx, 1);\n }\n\n /* Set native cue style to transparent background to avoid it being displayed. */\n function setNativeCueStyle() {\n if (!isChrome) return;\n var styleElement = document.getElementById('native-cue-style');\n if (styleElement) return; //Already set\n\n styleElement = document.createElement('style');\n styleElement.id = 'native-cue-style';\n document.head.appendChild(styleElement);\n var stylesheet = styleElement.sheet;\n if (video.id) {\n stylesheet.insertRule('#' + video.id + '::cue {background: transparent}', 0);\n } else if (video.classList.length !== 0) {\n stylesheet.insertRule('.' + video.className + '::cue {background: transparent}', 0);\n } else {\n stylesheet.insertRule('video::cue {background: transparent}', 0);\n }\n }\n\n /* Remove the extra cue style with transparent background for native cues. */\n function removeNativeCueStyle() {\n if (!isChrome) return;\n var styleElement = document.getElementById('native-cue-style');\n if (styleElement) {\n document.head.removeChild(styleElement);\n }\n }\n\n function clearCues() {\n if (captionContainer) {\n while (captionContainer.firstChild) {\n captionContainer.removeChild(captionContainer.firstChild);\n }\n }\n }\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.videoModel) {\n videoModel = config.videoModel;\n }\n }\n\n instance = {\n initialize: initialize,\n displayCConTop: displayCConTop,\n addTextTrack: addTextTrack,\n addCaptions: addCaptions,\n getTextTrack: getTextTrack,\n getCurrentTextTrack: getCurrentTextTrack,\n getCurrentTrackIdx: getCurrentTrackIdx,\n setCurrentTrackIdx: setCurrentTrackIdx,\n getTrackIdxForId: getTrackIdxForId,\n deleteTrackCues: deleteTrackCues,\n deleteAllTextTracks: deleteAllTextTracks,\n deleteTextTrack: deleteTextTrack,\n setConfig: setConfig\n };\n\n return instance;\n}\n\nTextTracks.__dashjs_factory_name = 'TextTracks';\nexport default FactoryMaker.getSingletonFactory(TextTracks);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Represents data structure to keep and drive {@link DataChunk}\n */\nimport MediaController from './controllers/MediaController.js';\nimport CustomTimeRanges from './utils/CustomTimeRanges.js';\nimport HTTPRequest from './vo/metrics/HTTPRequest.js';\nimport EventBus from '../core/EventBus.js';\nimport Events from '../core/events/Events.js';\nimport FactoryMaker from '../core/FactoryMaker.js';\n\nfunction VirtualBuffer() {\n\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n data,\n sourceBufferController;\n\n function setup() {\n data = {};\n }\n\n /**\n * Adds DataChunk to array of chunks\n * @param {@link DataChunk}\n * @memberof VirtualBuffer#\n */\n function append(chunk) {\n var streamId = chunk.streamId;\n var mediaType = chunk.mediaInfo.type;\n var segmentType = chunk.segmentType;\n var start = chunk.start;\n var end = chunk.end;\n\n data[streamId] = data[streamId] || createDataStorage();\n data[streamId][mediaType][segmentType].push(chunk);\n sortArrayByProperty(data[streamId][mediaType][segmentType], 'index');\n\n if (!isNaN(start) && !isNaN(end)) {\n data[streamId][mediaType].calculatedBufferedRanges.add(start, end);\n eventBus.trigger(Events.CHUNK_APPENDED, {chunk: chunk, sender: this});\n }\n }\n\n /**\n * Adds DataChunk to array of appended chunks and updates virual ranges of appended chunks\n * @param {@link DataChunk}\n * @param buffer {SourceBuffer}\n * @memberof VirtualBuffer#\n */\n function storeAppendedChunk(chunk, buffer) {\n if (!chunk || !buffer) return;\n\n // after the media segment has bee appended we check how the buffered ranges of SourceBuffer have been change. The\n // difference is the actual buffered range of the appended segment.\n // We need to update actualBufferedRanges so that it reflects SourceBuffer ranges.\n // Also we store the appended chunk so that any BufferController has access to the list\n // of appended chunks.\n var streamId = chunk.streamId;\n var mediaType = chunk.mediaInfo.type;\n var bufferedRanges = data[streamId][mediaType].actualBufferedRanges;\n var oldChunk = getChunks({ streamId: streamId, mediaType: mediaType, appended: true, start: chunk.start })[0];\n\n var diff,\n idx;\n\n if (oldChunk) {\n idx = data[streamId][mediaType].appended.indexOf(oldChunk);\n data[streamId][mediaType].appended[idx] = chunk;\n } else {\n data[streamId][mediaType].appended.push(chunk);\n }\n\n sortArrayByProperty(data[streamId][mediaType].appended, 'start');\n diff = sourceBufferController.getRangeDifference(bufferedRanges, buffer);\n\n if (!diff) {\n if (oldChunk) {\n chunk.bufferedRange = oldChunk.bufferedRange;\n } else {\n //TODO this is dirty fix for a case when segments are not aligned across representations and thus oldChunk is not found\n // We should not use a calculated range here, only actual one should be used, but we don't know yet how to find it.\n chunk.bufferedRange = {start: chunk.start, end: chunk.end};\n }\n return;\n }\n\n chunk.bufferedRange = diff;\n bufferedRanges.add(diff.start, diff.end);\n\n if (!oldChunk) return;\n\n // if there is an old chunk already appended for the same index, we may need to adjust bufferedRange of a new chunk, because\n // it may be not valid.\n //\n // Example:\n //\n // Before appending the old chunk\n //\n // 0|-----Range-------|4\n // 0|--occupied space-|4\n //\n // After appending the old chunk\n //\n // 0|-----------------Range----------------|10\n // 0|-occupied space-4|-------Old chunk----|10\n //\n // After clearing the buffer from 7s to 10s\n //\n // 0|-----------------Range----|7\n // 0|-occupied space-4|OldChunk|7\n //\n // Since the old chunk has been cut only partially, after appending the new chunk its range will be detected as\n //\n // |-----------------Range-----------------|10\n // |----occupied space--------7|-New chunk-|10\n // This is not a valid value because the actual range of a new chunk is the same as the original range of\n // the old chunk, so we do the following adjustment\n chunk.bufferedRange.start = Math.min(oldChunk.bufferedRange.start, diff.start);\n chunk.bufferedRange.end = Math.max(oldChunk.bufferedRange.end, diff.end);\n }\n\n /**\n * Updates virual ranges of appended chunks according to the given ranges\n * @param filter\n * @param ranges\n * @memberof VirtualBuffer#\n */\n function updateBufferedRanges(filter, ranges) {\n if (!filter) return;\n\n var streamId = filter.streamId;\n var mediaType = filter.mediaType;\n var appendedChunks = getChunks({ streamId: streamId, mediaType: mediaType, appended: true });\n\n var remainingChunks = [];\n var start,\n end;\n\n data[streamId][mediaType].actualBufferedRanges = CustomTimeRanges(context).create();\n\n if (!ranges || ranges.length === 0) {\n data[streamId][mediaType].appended = [];\n return;\n }\n\n for (var i = 0, ln = ranges.length; i < ln; i++) {\n start = ranges.start(i);\n end = ranges.end(i);\n data[streamId][mediaType].actualBufferedRanges.add(start, end);\n // we need to select chunks that belong only to the new ranges\n remainingChunks = remainingChunks.concat(findChunksForRange(appendedChunks, {start: start, end: end}, true));\n }\n\n data[streamId][mediaType].appended = remainingChunks;\n }\n\n /**\n * Finds and returns {@link DataChunk} that satisfies filtering options\n * @param filter - an object that contains properties by which the method search for chunks\n * @returns {Array}\n * @memberof VirtualBuffer#\n */\n function getChunks(filter) {\n var originData = findData(filter);\n var segmentType = filter.segmentType;\n var appended = filter.appended;\n var removeOrigin = filter.removeOrigin;\n var limit = filter.limit || Number.POSITIVE_INFINITY;\n var mediaController = MediaController(context).getInstance();\n\n var ln = 0;\n var result = [];\n var sourceArr;\n\n if (!originData) return result;\n\n delete filter.streamId;\n delete filter.mediaType;\n delete filter.segmentType;\n delete filter.removeOrigin;\n delete filter.limit;\n delete filter.appended;\n\n sourceArr = appended ? originData.appended : (segmentType ? originData[segmentType] : []);\n\n result = sourceArr.filter(function (item, idx, arr) {\n if (ln >= limit) return false;\n\n for (var prop in filter) {\n if (prop === 'mediaInfo') {\n return mediaController.isTracksEqual(item[prop], filter[prop]);\n }\n\n if (filter.hasOwnProperty(prop) && item[prop] != filter[prop]) return false;\n }\n\n if (removeOrigin) {\n originData.calculatedBufferedRanges.remove(item.start, item.end);\n arr.splice(idx, 1);\n }\n\n ln++;\n\n return true;\n });\n\n if (filter.forRange) {\n result = findChunksForRange(result, filter.forRange, false);\n }\n\n return result;\n }\n\n /**\n * Finds and returns {@link DataChunk} that satisfies filtering options. Filtered chunks are removed\n * from the original array\n * @param filter - an object that contains properties by which the method search for chunks\n * @returns {Array}\n * @memberof VirtualBuffer#\n */\n function extract(filter) {\n filter.removeOrigin = true;\n return getChunks(filter);\n }\n\n /**\n * Calculates total buffer size across all Periods\n * @param {@link MediaInfo}\n * @returns {Number}\n * @memberof VirtualBuffer#\n */\n function getTotalBufferLevel(mediaInfo) {\n var mediaType = mediaInfo.type;\n var level = 0;\n\n for (var streamId in data) {\n if (data.hasOwnProperty(streamId)) {\n level += sourceBufferController.getTotalBufferedTime({buffered: data[streamId][mediaType].calculatedBufferedRanges});\n }\n }\n\n return level;\n }\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.sourceBufferController) {\n sourceBufferController = config.sourceBufferController;\n }\n }\n\n /**\n * @memberof VirtualBuffer#\n */\n function reset() {\n data = {};\n }\n\n function sortArrayByProperty(array, sortProp) {\n var compare = function (obj1, obj2) {\n if (obj1[sortProp] < obj2[sortProp]) return -1;\n if (obj1[sortProp] > obj2[sortProp]) return 1;\n return 0;\n };\n\n array.sort(compare);\n }\n\n function findData(filter) {\n var streamId = filter.streamId;\n var mediaType = filter.mediaType;\n\n if (!data[streamId]) return null;\n\n return data[streamId][mediaType];\n }\n\n function findChunksForRange(chunks, range, truncateChunk) {\n var rangeStart = range.start;\n var rangeEnd = range.end;\n var chunksForRange = [];\n\n var chunkStart,\n chunkEnd,\n isStartIncluded,\n isEndIncluded;\n\n chunks.forEach(function (chunk) {\n chunkStart = chunk.bufferedRange.start;\n chunkEnd = chunk.bufferedRange.end;\n isStartIncluded = (chunkStart >= rangeStart && chunkStart < rangeEnd);\n isEndIncluded = (chunkEnd > rangeStart && chunkEnd <= rangeEnd);\n\n // if a segment has been partially removed from SourceBuffer we select it as well, but we\n // need to update its bufferedRange\n //\n // Example 1:\n // |-----------------Range----------------|\n // |----Chunk-----|\n // becomes\n // |-----------------Range----------------|\n // |----Chunk--|\n // Example 2:\n // |-----------------Range----------------|\n // |-------Chunk-----|\n // becomes\n // |-----------------Range----------------|\n // |-Chunk-----|\n\n if (isStartIncluded || isEndIncluded) {\n chunksForRange.push(chunk);\n\n if (truncateChunk) {\n chunk.bufferedRange.start = isStartIncluded ? chunkStart : rangeStart;\n chunk.bufferedRange.end = isEndIncluded ? chunkEnd : rangeEnd;\n }\n }\n });\n\n return chunksForRange;\n }\n\n function createDataStorage() {\n var data = {};\n\n data.audio = {calculatedBufferedRanges: CustomTimeRanges(context).create(),\n actualBufferedRanges: CustomTimeRanges(context).create(),\n appended: []};\n data.audio[HTTPRequest.MEDIA_SEGMENT_TYPE] = [];\n data.audio[HTTPRequest.INIT_SEGMENT_TYPE] = [];\n data.video = {calculatedBufferedRanges: CustomTimeRanges(context).create(),\n actualBufferedRanges: CustomTimeRanges(context).create(),\n appended: []};\n data.video[HTTPRequest.MEDIA_SEGMENT_TYPE] = [];\n data.video[HTTPRequest.INIT_SEGMENT_TYPE] = [];\n data.fragmentedText = {calculatedBufferedRanges: CustomTimeRanges(context).create(),\n actualBufferedRanges: CustomTimeRanges(context).create(),\n appended: []};\n data.fragmentedText[HTTPRequest.MEDIA_SEGMENT_TYPE] = [];\n data.fragmentedText[HTTPRequest.INIT_SEGMENT_TYPE] = [];\n\n return data;\n }\n\n instance = {\n append: append,\n extract: extract,\n getChunks: getChunks,\n storeAppendedChunk: storeAppendedChunk,\n updateBufferedRanges: updateBufferedRanges,\n getTotalBufferLevel: getTotalBufferLevel,\n setConfig: setConfig,\n reset: reset\n };\n\n setup();\n return instance;\n}\nVirtualBuffer.__dashjs_factory_name = 'VirtualBuffer';\nexport default FactoryMaker.getSingletonFactory(VirtualBuffer);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Error from './vo/Error.js';\nimport HTTPRequest from './vo/metrics/HTTPRequest.js';\nimport EventBus from '../core/EventBus.js';\nimport Events from '../core/events/Events.js';\nimport Debug from '../core/Debug.js';\nimport FactoryMaker from '../core/FactoryMaker.js';\n\nfunction XlinkLoader(config) {\n\n const RETRY_ATTEMPTS = 1;\n const RETRY_INTERVAL = 500;\n const RESOLVE_TO_ZERO = 'urn:mpeg:dash:resolve-to-zero:2013';\n\n let instance;\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n let errHandler = config.errHandler;\n let metricsModel = config.metricsModel;\n let requestModifier = config.requestModifier;\n\n function load(url, element, resolveObject) {\n if (url === RESOLVE_TO_ZERO) {\n element.resolvedContent = null;\n element.resolved = true;\n eventBus.trigger(Events.XLINK_ELEMENT_LOADED, {element: element, resolveObject: resolveObject});\n } else {\n doLoad(url, element, resolveObject, RETRY_ATTEMPTS);\n }\n }\n\n function doLoad(url, element, resolveObject, remainingAttempts) {\n var request = new XMLHttpRequest();\n var needFailureReport = true;\n var firstProgressCall = true;\n var requestTime = new Date();\n var traces = [];\n var lastTraceTime = requestTime;\n var lastTraceReceivedCount = 0;\n\n var report,\n onload,\n progress,\n content;\n\n onload = function () {\n if (request.status < 200 || request.status > 299) {\n return;\n }\n needFailureReport = false;\n\n metricsModel.addHttpRequest('stream',\n null,\n HTTPRequest.XLINK_EXPANSION_TYPE,\n url,\n request.responseURL || null,\n null,\n requestTime,\n request.firstByteDate || null,\n new Date(),\n request.status,\n null,\n request.getAllResponseHeaders(),\n traces);\n\n content = request.responseText;\n element.resolved = true;\n\n if (content) {\n element.resolvedContent = content;\n eventBus.trigger(Events.XLINK_ELEMENT_LOADED, {element: element, resolveObject: resolveObject});\n } else {\n element.resolvedContent = null;\n eventBus.trigger(Events.XLINK_ELEMENT_LOADED,\n {\n element: element,\n resolveObject: resolveObject,\n error: new Error(null, 'Failed loading Xlink element: ' + url, null)\n });\n }\n };\n\n report = function () {\n if (!needFailureReport) {\n return;\n }\n needFailureReport = false;\n\n metricsModel.addHttpRequest('stream',\n null,\n HTTPRequest.XLINK_EXPANSION_TYPE,\n url,\n request.responseURL || null,\n null,\n requestTime,\n request.firstByteDate || null,\n new Date(),\n request.status,\n null,\n request.getAllResponseHeaders(),\n null);\n\n if (remainingAttempts > 0) {\n log('Failed loading xLink content: ' + url + ', retry in ' + RETRY_INTERVAL + 'ms' + ' attempts: ' + remainingAttempts);\n remainingAttempts--;\n setTimeout(function () {\n doLoad(url, element, resolveObject, remainingAttempts);\n }, RETRY_INTERVAL);\n } else {\n log('Failed loading Xlink content: ' + url + ' no retry attempts left');\n errHandler.downloadError('xlink', url, request);\n element.resolved = true;\n element.resolvedContent = null;\n eventBus.trigger(Events.XLINK_ELEMENT_LOADED,\n {\n element: element,\n resolveObject: resolveObject,\n error: new Error('Failed loading xlink Element: ' + url + ' no retry attempts left')\n });\n }\n };\n\n progress = function (event) {\n var currentTime = new Date();\n\n if (firstProgressCall) {\n firstProgressCall = false;\n if (!event.lengthComputable || (event.lengthComputable && event.total !== event.loaded)) {\n request.firstByteDate = currentTime;\n }\n }\n\n if (event.lengthComputable) {\n request.bytesLoaded = event.loaded;\n request.bytesTotal = event.total;\n }\n\n traces.push({\n s: lastTraceTime,\n d: currentTime.getTime() - lastTraceTime.getTime(),\n b: [event.loaded ? event.loaded - lastTraceReceivedCount : 0]\n });\n\n lastTraceTime = currentTime;\n lastTraceReceivedCount = event.loaded;\n };\n\n try {\n //log(\"Start loading manifest: \" + url);\n request.onload = onload;\n request.onloadend = report;\n request.onerror = report;\n request.onprogress = progress;\n request.open('GET', requestModifier.modifyRequestURL(url), true);\n request.send();\n } catch (e) {\n log('Xlink loading Error');\n request.onerror();\n }\n }\n\n instance = {\n load: load\n };\n\n return instance;\n}\n\nXlinkLoader.__dashjs_factory_name = 'XlinkLoader';\nexport default FactoryMaker.getClassFactory(XlinkLoader);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport SwitchRequest from '../rules/SwitchRequest';\nimport BitrateInfo from '../vo/BitrateInfo.js';\nimport DOMStorage from '../utils/DOMStorage.js';\nimport ABRRulesCollection from '../rules/abr/ABRRulesCollection.js';\nimport MediaPlayerModel from '../models/MediaPlayerModel.js';\nimport FragmentModel from '../models/FragmentModel.js';\nimport EventBus from '../../core/EventBus.js';\nimport Events from '../../core/events/Events.js';\nimport FactoryMaker from '../../core/FactoryMaker.js';\nimport ManifestModel from '../models/ManifestModel.js';\nimport DashManifestModel from '../../dash/models/DashManifestModel.js';\nimport VideoModel from '../models/VideoModel.js';\n\nconst ABANDON_LOAD = 'abandonload';\nconst ALLOW_LOAD = 'allowload';\nconst DEFAULT_VIDEO_BITRATE = 1000;\nconst DEFAULT_AUDIO_BITRATE = 100;\n\nfunction AbrController() {\n\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n abrRulesCollection,\n rulesController,\n streamController,\n autoSwitchBitrate,\n topQualities,\n qualityDict,\n confidenceDict,\n bitrateDict,\n ratioDict,\n averageThroughputDict,\n streamProcessorDict,\n abandonmentStateDict,\n abandonmentTimeout,\n limitBitrateByPortal,\n manifestModel,\n dashManifestModel,\n videoModel,\n mediaPlayerModel,\n domStorage;\n\n function setup() {\n autoSwitchBitrate = {video: true, audio: true};\n topQualities = {};\n qualityDict = {};\n confidenceDict = {};\n bitrateDict = {};\n ratioDict = {};\n averageThroughputDict = {};\n abandonmentStateDict = {};\n streamProcessorDict = {};\n limitBitrateByPortal = false;\n domStorage = DOMStorage(context).getInstance();\n mediaPlayerModel = MediaPlayerModel(context).getInstance();\n manifestModel = ManifestModel(context).getInstance();\n dashManifestModel = DashManifestModel(context).getInstance();\n videoModel = VideoModel(context).getInstance();\n }\n\n function initialize(type, streamProcessor) {\n streamProcessorDict[type] = streamProcessor;\n abandonmentStateDict[type] = abandonmentStateDict[type] || {};\n abandonmentStateDict[type].state = ALLOW_LOAD;\n eventBus.on(Events.LOADING_PROGRESS, onFragmentLoadProgress, this);\n }\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.abrRulesCollection) {\n abrRulesCollection = config.abrRulesCollection;\n }\n if (config.rulesController) {\n rulesController = config.rulesController;\n }\n if (config.streamController) {\n streamController = config.streamController;\n }\n }\n\n function getTopQualityIndexFor(type, id) {\n var idx;\n topQualities[id] = topQualities[id] || {};\n\n if (!topQualities[id].hasOwnProperty(type)) {\n topQualities[id][type] = 0;\n }\n\n idx = checkMaxBitrate(topQualities[id][type], type);\n idx = checkMaxRepresentationRatio(idx, type, topQualities[id][type]);\n idx = checkPortalSize(idx, type);\n return idx;\n }\n\n /**\n * @param type\n * @returns {number} A value of the initial bitrate, kbps\n * @memberof AbrController#\n */\n function getInitialBitrateFor(type) {\n\n let savedBitrate = domStorage.getSavedBitrateSettings(type);\n\n if (!bitrateDict.hasOwnProperty(type)) {\n if (ratioDict.hasOwnProperty(type)) {\n let manifest = manifestModel.getValue();\n let representation = dashManifestModel.getAdaptationForType(manifest, 0, type).Representation;\n\n if (Array.isArray(representation)) {\n bitrateDict[type] = representation[Math.round(representation.length * ratioDict[type]) - 1].bandwidth;\n } else {\n bitrateDict[type] = 0;\n }\n } else if (!isNaN(savedBitrate)) {\n bitrateDict[type] = savedBitrate;\n } else {\n bitrateDict[type] = (type === 'video') ? DEFAULT_VIDEO_BITRATE : DEFAULT_AUDIO_BITRATE;\n }\n }\n\n return bitrateDict[type];\n }\n\n /**\n * @param type\n * @param {number} value A value of the initial bitrate, kbps\n * @memberof AbrController#\n */\n function setInitialBitrateFor(type, value) {\n bitrateDict[type] = value;\n }\n\n function getInitialRepresentationRatioFor(type) {\n if (!ratioDict.hasOwnProperty(type)) {\n return null;\n }\n\n return ratioDict[type];\n }\n\n function setInitialRepresentationRatioFor(type, value) {\n ratioDict[type] = value;\n }\n\n function getMaxAllowedBitrateFor(type) {\n if (bitrateDict.hasOwnProperty('max') && bitrateDict.max.hasOwnProperty(type)) {\n return bitrateDict.max[type];\n }\n return NaN;\n }\n\n //TODO change bitrateDict structure to hold one object for video and audio with initial and max values internal.\n // This means you need to update all the logic around initial bitrate DOMStorage, RebController etc...\n function setMaxAllowedBitrateFor(type, value) {\n bitrateDict.max = bitrateDict.max || {};\n bitrateDict.max[type] = value;\n }\n\n function getMaxAllowedRepresentationRatioFor(type) {\n if (ratioDict.hasOwnProperty('max') && ratioDict.max.hasOwnProperty(type)) {\n return ratioDict.max[type];\n }\n return 1;\n }\n\n function setMaxAllowedRepresentationRatioFor(type, value) {\n ratioDict.max = ratioDict.max || {};\n ratioDict.max[type] = value;\n }\n\n function getAutoSwitchBitrateFor(type) {\n return autoSwitchBitrate[type];\n }\n\n function setAutoSwitchBitrateFor(type, value) {\n autoSwitchBitrate[type] = value;\n }\n\n function getLimitBitrateByPortal() {\n return limitBitrateByPortal;\n }\n\n function setLimitBitrateByPortal(value) {\n limitBitrateByPortal = value;\n }\n\n function getPlaybackQuality(streamProcessor, completedCallback) {\n var type = streamProcessor.getType();\n var streamInfo = streamProcessor.getStreamInfo();\n var streamId = streamInfo.id;\n var quality,\n oldQuality,\n rules,\n confidence;\n var callback = function (res) {\n var topQualityIdx = getTopQualityIndexFor(type, streamId);\n\n quality = res.value;\n confidence = res.confidence;\n\n // be sure the quality valid!\n if (quality < 0) {\n quality = 0;\n }\n // zero based\n if (quality > topQualityIdx) {\n quality = topQualityIdx;\n }\n\n oldQuality = getQualityFor(type, streamInfo);\n if (quality === oldQuality || (abandonmentStateDict[type].state === ABANDON_LOAD && quality > oldQuality)) return;\n if (quality !== oldQuality) {\n\n setInternalQuality(type, streamId, quality);\n //log(\"New quality of \" + quality);\n setConfidenceFor(type, streamId, confidence);\n //log(\"New confidence of \" + confidence);\n eventBus.trigger(Events.QUALITY_CHANGED, {mediaType: type, streamInfo: streamProcessor.getStreamInfo(), oldQuality: oldQuality, newQuality: quality});\n\n }\n\n if (completedCallback !== undefined) {\n completedCallback();\n }\n };\n\n quality = getQualityFor(type, streamInfo);\n confidence = getConfidenceFor(type, streamId);\n\n //log(\"ABR enabled? (\" + autoSwitchBitrate + \")\");\n if (!getAutoSwitchBitrateFor(type)) {\n if (completedCallback !== undefined) {\n completedCallback();\n }\n } else {\n rules = abrRulesCollection.getRules(ABRRulesCollection.QUALITY_SWITCH_RULES);\n rulesController.applyRules(rules, streamProcessor, callback, quality, function (currentValue, newValue) {\n currentValue = currentValue === SwitchRequest.NO_CHANGE ? 0 : currentValue;\n return Math.max(currentValue, newValue);\n });\n }\n }\n\n function setPlaybackQuality(type, streamInfo, newPlaybackQuality) {\n var id = streamInfo.id;\n var quality = getQualityFor(type, streamInfo);\n var isInt = newPlaybackQuality !== null && !isNaN(newPlaybackQuality) && (newPlaybackQuality % 1 === 0);\n\n if (!isInt) throw 'argument is not an integer';\n\n if (newPlaybackQuality !== quality && newPlaybackQuality >= 0 && newPlaybackQuality <= getTopQualityIndexFor(type, id)) {\n setInternalQuality(type, id, newPlaybackQuality);\n eventBus.trigger(Events.QUALITY_CHANGED, {mediaType: type, streamInfo: streamInfo, oldQuality: quality, newQuality: newPlaybackQuality});\n }\n }\n\n function setAbandonmentStateFor(type, state) {\n abandonmentStateDict[type].state = state;\n }\n\n function getAbandonmentStateFor(type) {\n return abandonmentStateDict[type].state;\n }\n\n /**\n * @param mediaInfo\n * @param bitrate A bitrate value, kbps\n * @returns {number} A quality index <= for the given bitrate\n * @memberof AbrController#\n */\n function getQualityForBitrate(mediaInfo, bitrate) {\n var bitrateList = getBitrateList(mediaInfo);\n var ln = bitrateList.length;\n var bitrateInfo;\n\n for (var i = 0; i < ln; i++) {\n bitrateInfo = bitrateList[i];\n\n if (bitrate * 1000 <= bitrateInfo.bitrate) {\n return Math.max(i - 1, 0);\n }\n }\n\n return (ln - 1);\n }\n\n /**\n * @param mediaInfo\n * @returns {Array} A list of {@link BitrateInfo} objects\n * @memberof AbrController#\n */\n function getBitrateList(mediaInfo) {\n if (!mediaInfo || !mediaInfo.bitrateList) return null;\n\n var bitrateList = mediaInfo.bitrateList;\n var type = mediaInfo.type;\n\n var infoList = [];\n var bitrateInfo;\n\n for (var i = 0, ln = bitrateList.length; i < ln; i++) {\n bitrateInfo = new BitrateInfo();\n bitrateInfo.mediaType = type;\n bitrateInfo.qualityIndex = i;\n bitrateInfo.bitrate = bitrateList[i];\n infoList.push(bitrateInfo);\n }\n\n return infoList;\n }\n\n function setAverageThroughput(type, value) {\n averageThroughputDict[type] = value;\n }\n\n function getAverageThroughput(type) {\n return averageThroughputDict[type];\n }\n\n function updateTopQualityIndex(mediaInfo) {\n var type = mediaInfo.type;\n var streamId = mediaInfo.streamInfo.id;\n var max = mediaInfo.representationCount - 1;\n\n setTopQualityIndex(type, streamId, max);\n\n return max;\n }\n\n function isPlayingAtTopQuality(streamInfo) {\n var isAtTop;\n var streamId = streamInfo.id;\n var audioQuality = getQualityFor('audio', streamInfo);\n var videoQuality = getQualityFor('video', streamInfo);\n\n isAtTop = (audioQuality === getTopQualityIndexFor('audio', streamId)) &&\n (videoQuality === getTopQualityIndexFor('video', streamId));\n\n return isAtTop;\n }\n\n function reset () {\n eventBus.off(Events.LOADING_PROGRESS, onFragmentLoadProgress, this);\n clearTimeout(abandonmentTimeout);\n abandonmentTimeout = null;\n setup();\n }\n\n function getQualityFor(type, streamInfo) {\n var id = streamInfo.id;\n var quality;\n\n qualityDict[id] = qualityDict[id] || {};\n\n if (!qualityDict[id].hasOwnProperty(type)) {\n qualityDict[id][type] = 0;\n }\n\n quality = qualityDict[id][type];\n return quality;\n }\n\n function setInternalQuality(type, id, value) {\n qualityDict[id] = qualityDict[id] || {};\n qualityDict[id][type] = value;\n }\n\n function getConfidenceFor(type, id) {\n var confidence;\n\n confidenceDict[id] = confidenceDict[id] || {};\n\n if (!confidenceDict[id].hasOwnProperty(type)) {\n confidenceDict[id][type] = 0;\n }\n\n confidence = confidenceDict[id][type];\n\n return confidence;\n }\n\n function setConfidenceFor(type, id, value) {\n confidenceDict[id] = confidenceDict[id] || {};\n confidenceDict[id][type] = value;\n }\n\n function setTopQualityIndex(type, id, value) {\n topQualities[id] = topQualities[id] || {};\n topQualities[id][type] = value;\n }\n\n function checkMaxBitrate(idx, type) {\n var maxBitrate = getMaxAllowedBitrateFor(type);\n if (isNaN(maxBitrate) || !streamProcessorDict[type]) {\n return idx;\n }\n var maxIdx = getQualityForBitrate(streamProcessorDict[type].getMediaInfo(), maxBitrate);\n return Math.min (idx , maxIdx);\n }\n\n function checkMaxRepresentationRatio(idx, type, maxIdx) {\n var maxRepresentationRatio = getMaxAllowedRepresentationRatioFor(type);\n if (isNaN(maxRepresentationRatio) || maxRepresentationRatio >= 1 || maxRepresentationRatio < 0) {\n return idx;\n }\n return Math.min( idx , Math.round(maxIdx * maxRepresentationRatio) );\n }\n\n function checkPortalSize(idx, type) {\n if (type !== 'video' || !limitBitrateByPortal || !streamProcessorDict[type]) {\n return idx;\n }\n\n let element = videoModel.getElement();\n let elementWidth = element.clientWidth;\n let elementHeight = element.clientHeight;\n let manifest = manifestModel.getValue();\n let representation = dashManifestModel.getAdaptationForType(manifest, 0, type).Representation;\n let newIdx = idx;\n\n if (elementWidth > 0 && elementHeight > 0) {\n while (\n newIdx > 0 &&\n representation[newIdx] &&\n elementWidth < representation[newIdx].width &&\n elementWidth - representation[newIdx - 1].width < representation[newIdx].width - elementWidth\n ) {\n newIdx = newIdx - 1;\n }\n\n if (representation.length - 2 >= newIdx && representation[newIdx].width === representation[newIdx + 1].width) {\n newIdx = Math.min(idx, newIdx + 1);\n }\n }\n\n return newIdx;\n }\n\n function onFragmentLoadProgress(e) {\n var type = e.request.mediaType;\n if (getAutoSwitchBitrateFor(type)) { //check to see if there are parallel request or just one at a time.\n\n var rules = abrRulesCollection.getRules(ABRRulesCollection.ABANDON_FRAGMENT_RULES);\n var scheduleController = streamProcessorDict[type].getScheduleController();\n var fragmentModel = scheduleController.getFragmentModel();\n var callback = function (switchRequest) {\n\n function setupTimeout(type) {\n abandonmentTimeout = setTimeout(function () {\n setAbandonmentStateFor(type, ALLOW_LOAD);\n }, mediaPlayerModel.getAbandonLoadTimeout());\n }\n\n if (switchRequest.confidence === SwitchRequest.STRONG) {\n\n var requests = fragmentModel.getRequests({ state: FragmentModel.FRAGMENT_MODEL_LOADING});\n var newQuality = switchRequest.value;\n var currentQuality = getQualityFor(type, streamController.getActiveStreamInfo());\n\n if (newQuality < currentQuality) {\n\n fragmentModel.abortRequests();\n setAbandonmentStateFor(type, ABANDON_LOAD);\n setPlaybackQuality(type, streamController.getActiveStreamInfo(), newQuality);\n scheduleController.replaceCanceledRequests(requests);\n setupTimeout(type);\n }\n }\n };\n\n rulesController.applyRules(rules, streamProcessorDict[type], callback, e, function (currentValue, newValue) {\n return newValue;\n });\n }\n }\n\n instance = {\n isPlayingAtTopQuality: isPlayingAtTopQuality,\n updateTopQualityIndex: updateTopQualityIndex,\n getAverageThroughput: getAverageThroughput,\n getBitrateList: getBitrateList,\n getQualityForBitrate: getQualityForBitrate,\n getMaxAllowedBitrateFor: getMaxAllowedBitrateFor,\n setMaxAllowedBitrateFor: setMaxAllowedBitrateFor,\n getMaxAllowedRepresentationRatioFor: getMaxAllowedRepresentationRatioFor,\n setMaxAllowedRepresentationRatioFor: setMaxAllowedRepresentationRatioFor,\n getInitialBitrateFor: getInitialBitrateFor,\n setInitialBitrateFor: setInitialBitrateFor,\n getInitialRepresentationRatioFor: getInitialRepresentationRatioFor,\n setInitialRepresentationRatioFor: setInitialRepresentationRatioFor,\n setAutoSwitchBitrateFor: setAutoSwitchBitrateFor,\n getAutoSwitchBitrateFor: getAutoSwitchBitrateFor,\n setLimitBitrateByPortal: setLimitBitrateByPortal,\n getLimitBitrateByPortal: getLimitBitrateByPortal,\n getConfidenceFor: getConfidenceFor,\n getQualityFor: getQualityFor,\n getAbandonmentStateFor: getAbandonmentStateFor,\n setAbandonmentStateFor: setAbandonmentStateFor,\n setPlaybackQuality: setPlaybackQuality,\n getPlaybackQuality: getPlaybackQuality,\n setAverageThroughput: setAverageThroughput,\n getTopQualityIndexFor: getTopQualityIndexFor,\n initialize: initialize,\n setConfig: setConfig,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nAbrController.__dashjs_factory_name = 'AbrController';\nlet factory = FactoryMaker.getSingletonFactory(AbrController);\nfactory.ABANDON_LOAD = ABANDON_LOAD;\nexport default factory;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FragmentModel from '../models/FragmentModel.js';\nimport MediaPlayerModel from '../models/MediaPlayerModel.js';\nimport HTTPRequest from '../vo/metrics/HTTPRequest.js';\nimport SourceBufferController from './SourceBufferController.js';\nimport AbrController from './AbrController.js';\nimport PlaybackController from './PlaybackController.js';\nimport MediaController from './MediaController.js';\nimport CustomTimeRanges from '../utils/CustomTimeRanges.js';\nimport EventBus from '../../core/EventBus.js';\nimport Events from '../../core/events/Events.js';\nimport BoxParser from '../utils/BoxParser.js';\nimport FactoryMaker from '../../core/FactoryMaker.js';\nimport Debug from '../../core/Debug.js';\n\nconst BUFFER_LOADED = 'bufferLoaded';\nconst BUFFER_EMPTY = 'bufferStalled';\nconst STALL_THRESHOLD = 0.5;\n\nfunction BufferController(config) {\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n let metricsModel = config.metricsModel;\n let manifestModel = config.manifestModel;\n let sourceBufferController = config.sourceBufferController;\n let errHandler = config.errHandler;\n let mediaSourceController = config.mediaSourceController;\n let streamController = config.streamController;\n let mediaController = config.mediaController;\n let adapter = config.adapter;\n let virtualBuffer = config.virtualBuffer;\n let textSourceBuffer = config.textSourceBuffer;\n\n let instance,\n requiredQuality,\n currentQuality,\n isBufferingCompleted,\n bufferLevel,\n bufferTarget,\n criticalBufferLevel,\n mediaSource,\n maxAppendedIndex,\n lastIndex,\n type,\n buffer,\n minBufferTime,\n bufferState,\n appendedBytesInfo,\n wallclockTicked,\n appendingMediaChunk,\n isAppendingInProgress,\n isPruningInProgress,\n inbandEventFound,\n playbackController,\n streamProcessor,\n abrController,\n fragmentController,\n scheduleController,\n mediaPlayerModel;\n\n function setup() {\n requiredQuality = -1;\n currentQuality = -1;\n isBufferingCompleted = false;\n bufferLevel = 0;\n bufferTarget = 0;\n criticalBufferLevel = Number.POSITIVE_INFINITY;\n maxAppendedIndex = -1;\n lastIndex = -1;\n buffer = null;\n bufferState = BUFFER_EMPTY;\n wallclockTicked = 0;\n appendingMediaChunk = false;\n isAppendingInProgress = false;\n isPruningInProgress = false;\n inbandEventFound = false;\n }\n\n function initialize(Type, Source, StreamProcessor) {\n type = Type;\n setMediaSource(Source);\n streamProcessor = StreamProcessor;\n mediaPlayerModel = MediaPlayerModel(context).getInstance();\n playbackController = PlaybackController(context).getInstance();\n abrController = AbrController(context).getInstance();\n fragmentController = streamProcessor.getFragmentController();\n scheduleController = streamProcessor.getScheduleController();\n requiredQuality = abrController.getQualityFor(type, streamProcessor.getStreamInfo());\n\n eventBus.on(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, this);\n eventBus.on(Events.INIT_FRAGMENT_LOADED, onInitFragmentLoaded, this);\n eventBus.on(Events.MEDIA_FRAGMENT_LOADED, onMediaFragmentLoaded, this);\n eventBus.on(Events.QUALITY_CHANGED, onQualityChanged, this);\n eventBus.on(Events.STREAM_COMPLETED, onStreamCompleted, this);\n eventBus.on(Events.PLAYBACK_PROGRESS, onPlaybackProgression, this);\n eventBus.on(Events.PLAYBACK_TIME_UPDATED, onPlaybackProgression, this);\n eventBus.on(Events.PLAYBACK_RATE_CHANGED, onPlaybackRateChanged, this);\n eventBus.on(Events.PLAYBACK_SEEKING, onPlaybackSeeking, this);\n eventBus.on(Events.WALLCLOCK_TIME_UPDATED, onWallclockTimeUpdated, this);\n eventBus.on(Events.CURRENT_TRACK_CHANGED, onCurrentTrackChanged, this);\n eventBus.on(Events.SOURCEBUFFER_APPEND_COMPLETED, onAppended, this);\n eventBus.on(Events.SOURCEBUFFER_REMOVE_COMPLETED, onRemoved, this);\n eventBus.on(Events.CHUNK_APPENDED, onChunkAppended, this);\n }\n\n function createBuffer(mediaInfo) {\n if (!mediaInfo || !mediaSource || !streamProcessor) return null;\n\n var sourceBuffer = null;\n\n try {\n sourceBuffer = sourceBufferController.createSourceBuffer(mediaSource, mediaInfo);\n\n if (sourceBuffer && sourceBuffer.hasOwnProperty('initialize')) {\n sourceBuffer.initialize(type, this);\n }\n } catch (e) {\n errHandler.mediaSourceError('Error creating ' + type + ' source buffer.');\n }\n\n setBuffer(sourceBuffer);\n updateBufferTimestampOffset(streamProcessor.getRepresentationInfoForQuality(requiredQuality).MSETimeOffset);\n // We may already have some segments in a virtual buffer by this moment. Let's try to append them to the real one.\n appendNext();\n\n return sourceBuffer;\n }\n\n function isActive() {\n var thisStreamId = streamProcessor.getStreamInfo().id;\n var activeStreamId = streamController.getActiveStreamInfo().id;\n\n return thisStreamId === activeStreamId;\n }\n\n function onInitFragmentLoaded(e) {\n // We received a new init chunk.\n // We just want to cache it in the virtual buffer here.\n // Then pass control to appendNext() to handle any other logic.\n\n var chunk;\n\n if (e.fragmentModel !== streamProcessor.getFragmentModel()) return;\n\n log('Initialization finished loading');\n chunk = e.chunk;\n // cache the initialization data to use it next time the quality has changed\n virtualBuffer.append(chunk);\n switchInitData(getStreamId(), requiredQuality);\n }\n\n function onMediaFragmentLoaded(e) {\n if (e.fragmentModel !== streamProcessor.getFragmentModel()) return;\n\n var events;\n var chunk = e.chunk;\n var bytes = chunk.bytes;\n var quality = chunk.quality;\n var index = chunk.index;\n var request = streamProcessor.getFragmentModel().getRequests({ state: FragmentModel.FRAGMENT_MODEL_EXECUTED, quality: quality, index: index })[0];\n var currentRepresentation = streamProcessor.getRepresentationInfoForQuality(quality);\n var manifest = manifestModel.getValue();\n var eventStreamMedia = adapter.getEventsFor(manifest, currentRepresentation.mediaInfo, streamProcessor);\n var eventStreamTrack = adapter.getEventsFor(manifest, currentRepresentation, streamProcessor);\n\n if (eventStreamMedia.length > 0 || eventStreamTrack.length > 0) {\n events = handleInbandEvents(bytes, request, eventStreamMedia, eventStreamTrack);\n streamProcessor.getEventController().addInbandEvents(events);\n }\n\n chunk.bytes = deleteInbandEvents(bytes);\n\n virtualBuffer.append(chunk);\n appendNext();\n }\n\n function appendNext() {\n // If we have an appendingMediaChunk in progress, process it.\n // Otherwise, try to get a media chunk from the virtual buffer.\n // If we have no media chunk available, do nothing - return.\n // If the media chunk we have matches currentQuality, append the media chunk to the source buffer.\n // Otherwise, leave the media chunk in appendingMediaChunk and check the init chunk corresponding to the media chunk.\n // If we have the corresponding init chunk, append the init chunk to the source buffer; appendingMediaChunk will be processed shortly through onAppended().\n // Otherwise, fire the Events.INIT_REQUESTED event.\n if (!buffer || isAppendingInProgress || !hasEnoughSpaceToAppend()) return;\n\n var streamId = getStreamId();\n var chunk;\n\n if (appendingMediaChunk) {\n chunk = appendingMediaChunk;\n } else {\n\n chunk = virtualBuffer.extract({streamId: streamId, mediaType: type, segmentType: HTTPRequest.MEDIA_SEGMENT_TYPE, limit: 1})[0];\n if (!chunk) {\n return;\n }\n\n appendingMediaChunk = chunk;\n }\n\n if (chunk.quality === currentQuality) {\n\n //TODO May need this for MP buffer switch as buffer will be null while new SB established. But returning here and blocking progression may require validate to be called.\n //if (!buffer || isAppendingInProgress || !hasEnoughSpaceToAppend()) return;\n\n appendingMediaChunk = false;\n appendToBuffer(chunk);\n }\n else {\n // we need to change currentQuality by init data\n switchInitData(streamId, appendingMediaChunk.quality);\n }\n }\n\n function switchInitData(streamId, quality) {\n\n var filter = { streamId: streamId, mediaType: type, segmentType: HTTPRequest.INIT_SEGMENT_TYPE, quality: quality };\n var chunk = virtualBuffer.getChunks(filter)[0];\n\n if (chunk) {\n if (!buffer) return;\n\n appendToBuffer(chunk);\n } else {\n // if we have not loaded the init fragment for the current quality, do it\n eventBus.trigger(Events.INIT_REQUESTED, {sender: instance, requiredQuality: quality});\n }\n }\n\n function appendToBuffer(chunk) {\n isAppendingInProgress = true;\n appendedBytesInfo = chunk;\n sourceBufferController.append(buffer, chunk);\n\n if (chunk.mediaInfo.type === 'video') {\n if (chunk.mediaInfo.embeddedCaptions) {\n textSourceBuffer.append(chunk.bytes, chunk);\n }\n }\n }\n\n function onAppended(e) {\n if (buffer !== e.buffer) return;\n\n onPlaybackProgression();\n\n if (isBufferingCompleted && streamProcessor.getStreamInfo().isLast) {\n mediaSourceController.signalEndOfStream(mediaSource);\n }\n\n var ranges;\n\n if (e.error) {\n // if the append has failed because the buffer is full we should store the data\n // that has not been appended and stop request scheduling. We also need to store\n // the promise for this append because the next data can be appended only after\n // this promise is resolved.\n if (e.error.code === SourceBufferController.QUOTA_EXCEEDED_ERROR_CODE) {\n virtualBuffer.append(appendedBytesInfo);\n criticalBufferLevel = sourceBufferController.getTotalBufferedTime(buffer) * 0.8;\n eventBus.trigger(Events.QUOTA_EXCEEDED, {sender: instance, criticalBufferLevel: criticalBufferLevel});\n clearBuffer(getClearRange());\n }\n isAppendingInProgress = false;\n return;\n }\n\n if (!hasEnoughSpaceToAppend()) {\n eventBus.trigger(Events.QUOTA_EXCEEDED, {sender: instance, criticalBufferLevel: criticalBufferLevel});\n clearBuffer(getClearRange());\n }\n\n ranges = sourceBufferController.getAllRanges(buffer);\n\n if (ranges) {\n //log(\"Append complete: \" + ranges.length);\n if (ranges.length > 0) {\n var i,\n len;\n\n //log(\"Number of buffered ranges: \" + ranges.length);\n for (i = 0, len = ranges.length; i < len; i++) {\n log('Buffered Range: ' + ranges.start(i) + ' - ' + ranges.end(i));\n }\n }\n }\n\n //finish appending\n isAppendingInProgress = false;\n if (!isNaN(appendedBytesInfo.index)) {\n virtualBuffer.storeAppendedChunk(appendedBytesInfo, buffer);\n removeOldTrackData();\n maxAppendedIndex = Math.max(appendedBytesInfo.index, maxAppendedIndex);\n checkIfBufferingCompleted();\n } else {\n currentQuality = appendedBytesInfo.quality;\n if (!streamProcessor.isDynamic()) {\n appendNext();\n }\n }\n\n eventBus.trigger(Events.BYTES_APPENDED, {sender: instance, quality: appendedBytesInfo.quality, startTime: appendedBytesInfo.start, index: appendedBytesInfo.index, bufferedRanges: ranges});\n }\n\n function onQualityChanged(e) {\n var newQuality = e.newQuality;\n if (requiredQuality === newQuality || type !== e.mediaType || streamProcessor.getStreamInfo().id !== e.streamInfo.id) return;\n\n updateBufferTimestampOffset(streamProcessor.getRepresentationInfoForQuality(newQuality).MSETimeOffset);\n requiredQuality = newQuality;\n }\n\n //**********************************************************************\n // START Buffer Level, State & Sufficiency Handling.\n //**********************************************************************\n function onPlaybackSeeking() {\n isAppendingInProgress = false;\n onPlaybackProgression();\n\n }\n\n function onPlaybackProgression() {\n updateBufferLevel();\n addBufferMetrics();\n }\n\n function updateBufferLevel() {\n var currentTime = playbackController.getTime();\n\n bufferLevel = sourceBufferController.getBufferLength(buffer, currentTime);\n eventBus.trigger(Events.BUFFER_LEVEL_UPDATED, {sender: instance, bufferLevel: bufferLevel});\n checkIfSufficientBuffer();\n }\n\n function addBufferMetrics() {\n if (!isActive()) return;\n\n //TODO will need to fix how we get bufferTarget... since we ony load one at a time. but do it in the addBufferMetrics call not here\n //bufferTarget = fragmentsToLoad > 0 ? (fragmentsToLoad * fragmentDuration) + bufferLevel : bufferTarget;\n metricsModel.addBufferState(type, bufferState, bufferTarget);\n\n //TODO may be needed for MULTIPERIOD PLEASE CHECK Turning this off for now... not really needed since we load sync...\n //var level = bufferLevel,\n // virtualLevel;\n //virtualLevel = virtualBuffer.getTotalBufferLevel(streamProcessor.getMediaInfo());\n //if (virtualLevel) {\n // level += virtualLevel;\n //}\n\n metricsModel.addBufferLevel(type, new Date(), bufferLevel * 1000);\n }\n\n function checkIfBufferingCompleted() {\n var isLastIdxAppended = maxAppendedIndex === (lastIndex - 1);\n\n if (!isLastIdxAppended || isBufferingCompleted) return;\n\n isBufferingCompleted = true;\n eventBus.trigger(Events.BUFFERING_COMPLETED, {sender: instance, streamInfo: streamProcessor.getStreamInfo()});\n }\n\n function checkIfSufficientBuffer() {\n if (bufferLevel < STALL_THRESHOLD && !isBufferingCompleted) {\n notifyBufferStateChanged(BUFFER_EMPTY);\n } else {\n notifyBufferStateChanged(BUFFER_LOADED);\n }\n }\n\n function notifyBufferStateChanged(state) {\n if (bufferState === state || (type === 'fragmentedText' && textSourceBuffer.getAllTracksAreDisabled())) return;\n\n bufferState = state;\n addBufferMetrics();\n eventBus.trigger(Events.BUFFER_LEVEL_STATE_CHANGED, {sender: instance, state: state, mediaType: type, streamInfo: streamProcessor.getStreamInfo()});\n log(state === BUFFER_LOADED ? ('Got enough buffer to start.') : ('Waiting for more buffer before starting playback.'));\n }\n\n\n function handleInbandEvents(data, request, mediaInbandEvents, trackInbandEvents) {\n var fragmentStarttime = Math.max(isNaN(request.startTime) ? 0 : request.startTime, 0);\n var eventStreams = [];\n var events = [];\n\n var eventBoxes,\n event,\n isoFile,\n inbandEvents;\n\n inbandEventFound = false;\n /* Extract the possible schemeIdUri : If a DASH client detects an event message box with a scheme that is not defined in MPD, the client is expected to ignore it */\n inbandEvents = mediaInbandEvents.concat(trackInbandEvents);\n for (var loop = 0; loop < inbandEvents.length; loop++) {\n eventStreams[inbandEvents[loop].schemeIdUri] = inbandEvents[loop];\n }\n\n isoFile = BoxParser(context).getInstance().parse(data);\n eventBoxes = isoFile.getBoxes('emsg');\n\n for (var i = 0, ln = eventBoxes.length; i < ln; i++) {\n event = adapter.getEvent(eventBoxes[i], eventStreams, fragmentStarttime);\n\n if (event) {\n events.push(event);\n }\n }\n\n return events;\n }\n\n function deleteInbandEvents(data) {\n\n if (!inbandEventFound) {\n return data;\n }\n\n var length = data.length;\n var expTwo = Math.pow(256, 2);\n var expThree = Math.pow(256, 3);\n var modData = new Uint8Array(data.length);\n\n var identifier,\n size;\n var i = 0;\n var j = 0;\n\n while (i < length) {\n\n identifier = String.fromCharCode(data[i + 4],data[i + 5],data[i + 6],data[i + 7]);\n size = data[i] * expThree + data[i + 1] * expTwo + data[i + 2] * 256 + data[i + 3] * 1;\n\n if (identifier != 'emsg' ) {\n for (var l = i ; l < i + size; l++) {\n modData[j] = data[l];\n j++;\n }\n }\n i += size;\n\n }\n\n return modData.subarray(0,j);\n }\n\n function hasEnoughSpaceToAppend() {\n var totalBufferedTime = sourceBufferController.getTotalBufferedTime(buffer);\n return (totalBufferedTime < criticalBufferLevel);\n }\n\n /* prune buffer on our own in background to avoid browsers pruning buffer silently */\n function pruneBuffer() {\n if (type === 'fragmentedText') return;\n\n log('try to prune buffer');\n\n var start = buffer.buffered.length ? buffer.buffered.start(0) : 0;\n var currentTime = playbackController.getTime();\n // we want to get rid off buffer that is more than x seconds behind current time\n var bufferToPrune = currentTime - start - mediaPlayerModel.getBufferToKeep();\n\n if (bufferToPrune > 0) {\n log('pruning buffer: ' + bufferToPrune + ' seconds.');\n isPruningInProgress = true;\n sourceBufferController.remove(buffer, 0, Math.round(start + bufferToPrune), mediaSource);\n }\n }\n\n function getClearRange() {\n var currentTime,\n removeStart,\n removeEnd,\n range,\n req;\n\n if (!buffer) return null;\n\n currentTime = playbackController.getTime();\n // we need to remove data that is more than one fragment before the video currentTime\n req = streamProcessor.getFragmentModel().getRequests({state: FragmentModel.FRAGMENT_MODEL_EXECUTED, time: currentTime})[0];\n removeEnd = (req && !isNaN(req.startTime)) ? req.startTime : Math.floor(currentTime);\n\n range = sourceBufferController.getBufferRange(buffer, currentTime);\n\n if ((range === null) && (buffer.buffered.length > 0)) {\n removeEnd = buffer.buffered.end(buffer.buffered.length - 1 );\n }\n\n removeStart = buffer.buffered.start(0);\n\n return {start: removeStart, end: removeEnd};\n }\n\n function clearBuffer(range) {\n if (!range || !buffer) return;\n\n var removeStart = range.start;\n var removeEnd = range.end;\n\n sourceBufferController.remove(buffer, removeStart, removeEnd, mediaSource);\n }\n\n function onRemoved(e) {\n if (buffer !== e.buffer) return;\n\n // After the buffer has been cleared we need to update the virtual range that reflects the actual ranges\n // of SourceBuffer. We also need to update the list of appended chunks\n if (isPruningInProgress) {\n isPruningInProgress = false;\n }\n virtualBuffer.updateBufferedRanges({streamId: getStreamId(), mediaType: type}, sourceBufferController.getAllRanges(buffer));\n updateBufferLevel();\n eventBus.trigger(Events.BUFFER_CLEARED, {sender: instance, from: e.from, to: e.to, hasEnoughSpaceToAppend: hasEnoughSpaceToAppend()});\n if (hasEnoughSpaceToAppend()) return;\n\n setTimeout(clearBuffer(getClearRange()), minBufferTime * 1000);\n }\n\n function updateBufferTimestampOffset(MSETimeOffset) {\n // each track can have its own @presentationTimeOffset, so we should set the offset\n // if it has changed after switching the quality or updating an mpd\n if (buffer && buffer.timestampOffset !== MSETimeOffset && !isNaN(MSETimeOffset)) {\n buffer.timestampOffset = MSETimeOffset;\n }\n }\n\n function getStreamId() {\n return streamProcessor.getStreamInfo().id;\n }\n\n function removeOldTrackData() {\n var allAppendedChunks = virtualBuffer.getChunks({ streamId: getStreamId(), mediaType: type, segmentType: HTTPRequest.MEDIA_SEGMENT_TYPE, appended: true });\n\n const customTimeRangesFactory = CustomTimeRanges(context);\n var rangesToClear = customTimeRangesFactory.create();\n var rangesToLeave = customTimeRangesFactory.create();\n\n var currentTime = playbackController.getTime();\n var safeBufferLength = streamProcessor.getCurrentRepresentationInfo().fragmentDuration * 2;\n\n var currentTrackBufferLength,\n ranges,\n range;\n\n allAppendedChunks.forEach(function (chunk) {\n ranges = mediaController.isCurrentTrack(chunk.mediaInfo) ? rangesToLeave : rangesToClear;\n ranges.add(chunk.bufferedRange.start, chunk.bufferedRange.end);\n });\n\n if ((rangesToClear.length === 0) || (rangesToLeave.length === 0)) return;\n\n currentTrackBufferLength = sourceBufferController.getBufferLength({buffered: rangesToLeave}, currentTime);\n\n if (currentTrackBufferLength < safeBufferLength) return;\n\n for (var i = 0, ln = rangesToClear.length; i < ln; i++) {\n range = {start: rangesToClear.start(i), end: rangesToClear.end(i)};\n if (mediaController.getSwitchMode(type) === MediaController.TRACK_SWITCH_MODE_ALWAYS_REPLACE || range.start > currentTime) {\n clearBuffer(range);\n }\n }\n }\n\n function onDataUpdateCompleted(e) {\n if (e.sender.getStreamProcessor() !== streamProcessor) return;\n if (e.error) return;\n\n var bufferLength;\n\n updateBufferTimestampOffset(e.currentRepresentation.MSETimeOffset);\n\n bufferLength = streamProcessor.getStreamInfo().manifestInfo.minBufferTime;\n //log(\"Min Buffer time: \" + bufferLength);\n if (minBufferTime !== bufferLength) {\n setMinBufferTime(bufferLength);\n }\n }\n\n function onStreamCompleted(e) {\n if (e.fragmentModel !== streamProcessor.getFragmentModel()) return;\n lastIndex = e.request.index;\n checkIfBufferingCompleted();\n }\n\n function onChunkAppended(e) {\n if (e.sender !== virtualBuffer) return;\n addBufferMetrics();\n }\n\n function onCurrentTrackChanged(e) {\n if (!buffer || (e.newMediaInfo.type !== type) || (e.newMediaInfo.streamInfo.id !== streamProcessor.getStreamInfo().id)) return;\n\n var newMediaInfo = e.newMediaInfo;\n var mediaType = newMediaInfo.type;\n var switchMode = e.switchMode;\n var currentTime = playbackController.getTime();\n var range = { start: 0, end: currentTime };\n\n if (type !== mediaType) return;\n\n switch (switchMode) {\n case MediaController.TRACK_SWITCH_MODE_ALWAYS_REPLACE:\n clearBuffer(range);\n break;\n case MediaController.TRACK_SWITCH_MODE_NEVER_REPLACE:\n break;\n default:\n log('track switch mode is not supported: ' + switchMode);\n }\n }\n\n function onWallclockTimeUpdated() {\n var secondsElapsed;\n //constantly prune buffer every x seconds\n wallclockTicked++;\n secondsElapsed = (wallclockTicked * (mediaPlayerModel.getWallclockTimeUpdateInterval() / 1000));\n if ((secondsElapsed >= mediaPlayerModel.getBufferPruningInterval()) && !isAppendingInProgress) {\n wallclockTicked = 0;\n pruneBuffer();\n }\n }\n\n function onPlaybackRateChanged() {\n checkIfSufficientBuffer();\n }\n\n function getType() {\n return type;\n }\n\n function getStreamProcessor() {\n return streamProcessor;\n }\n\n function setStreamProcessor(value) {\n streamProcessor = value;\n }\n\n function getBuffer() {\n return buffer;\n }\n\n function setBuffer(value) {\n buffer = value;\n }\n\n function getBufferLevel() {\n return bufferLevel;\n }\n\n function getMinBufferTime() {\n return minBufferTime;\n }\n\n function setMinBufferTime(value) {\n minBufferTime = value;\n }\n\n function getCriticalBufferLevel() {\n return criticalBufferLevel;\n }\n\n function setMediaSource(value) {\n mediaSource = value;\n }\n\n function getMediaSource() {\n return mediaSource;\n }\n\n function getIsBufferingCompleted() {\n return isBufferingCompleted;\n }\n\n function getIsAppendingInProgress() {\n return isAppendingInProgress;\n }\n\n function reset(errored) {\n\n eventBus.off(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, this);\n eventBus.off(Events.QUALITY_CHANGED, onQualityChanged, this);\n eventBus.off(Events.INIT_FRAGMENT_LOADED, onInitFragmentLoaded, this);\n eventBus.off(Events.MEDIA_FRAGMENT_LOADED, onMediaFragmentLoaded, this);\n eventBus.off(Events.STREAM_COMPLETED, onStreamCompleted, this);\n eventBus.off(Events.CURRENT_TRACK_CHANGED, onCurrentTrackChanged, this);\n eventBus.off(Events.PLAYBACK_PROGRESS, onPlaybackProgression, this);\n eventBus.off(Events.PLAYBACK_TIME_UPDATED, onPlaybackProgression, this);\n eventBus.off(Events.PLAYBACK_RATE_CHANGED, onPlaybackRateChanged, this);\n eventBus.off(Events.PLAYBACK_SEEKING, onPlaybackSeeking, this);\n eventBus.off(Events.WALLCLOCK_TIME_UPDATED, onWallclockTimeUpdated, this);\n eventBus.off(Events.SOURCEBUFFER_APPEND_COMPLETED, onAppended, this);\n eventBus.off(Events.SOURCEBUFFER_REMOVE_COMPLETED, onRemoved, this);\n eventBus.off(Events.CHUNK_APPENDED, onChunkAppended, this);\n\n criticalBufferLevel = Number.POSITIVE_INFINITY;\n bufferState = BUFFER_EMPTY;\n minBufferTime = null;\n currentQuality = -1;\n lastIndex = -1;\n maxAppendedIndex = -1;\n requiredQuality = 0;\n appendedBytesInfo = null;\n appendingMediaChunk = false;\n isBufferingCompleted = false;\n isAppendingInProgress = false;\n isPruningInProgress = false;\n playbackController = null;\n streamProcessor = null;\n abrController = null;\n fragmentController = null;\n scheduleController = null;\n\n if (!errored) {\n sourceBufferController.abort(mediaSource, buffer);\n sourceBufferController.removeSourceBuffer(mediaSource, buffer);\n }\n\n buffer = null;\n }\n\n instance = {\n initialize: initialize,\n createBuffer: createBuffer,\n getType: getType,\n getStreamProcessor: getStreamProcessor,\n setStreamProcessor: setStreamProcessor,\n getBuffer: getBuffer,\n setBuffer: setBuffer,\n getBufferLevel: getBufferLevel,\n getMinBufferTime: getMinBufferTime,\n setMinBufferTime: setMinBufferTime,\n getCriticalBufferLevel: getCriticalBufferLevel,\n setMediaSource: setMediaSource,\n getMediaSource: getMediaSource,\n getIsBufferingCompleted: getIsBufferingCompleted,\n getIsAppendingInProgress: getIsAppendingInProgress,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nBufferController.__dashjs_factory_name = 'BufferController';\nlet factory = FactoryMaker.getClassFactory(BufferController);\nfactory.BUFFER_LOADED = BUFFER_LOADED;\nfactory.BUFFER_EMPTY = BUFFER_EMPTY;\nexport default factory;\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport PlaybackController from '../controllers/PlaybackController.js';\nimport FactoryMaker from '../../core/FactoryMaker.js';\nimport Debug from '../../core/Debug.js';\nimport EventBus from '../../core/EventBus.js';\n\nfunction EventController() {\n\n const MPD_RELOAD_SCHEME = 'urn:mpeg:dash:event:2012';\n const MPD_RELOAD_VALUE = 1;\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n inlineEvents, // Holds all Inline Events not triggered yet\n inbandEvents, // Holds all Inband Events not triggered yet\n activeEvents, // Holds all Events currently running\n eventInterval, // variable holding the setInterval\n refreshDelay, // refreshTime for the setInterval\n presentationTimeThreshold,\n manifestModel,\n manifestUpdater,\n playbackController,\n isStarted;\n\n function initialize() {\n isStarted = false;\n inlineEvents = {};\n inbandEvents = {};\n activeEvents = {};\n eventInterval = null;\n refreshDelay = 100;\n presentationTimeThreshold = refreshDelay / 1000;\n playbackController = PlaybackController(context).getInstance();\n }\n\n function clear() {\n if (eventInterval !== null && isStarted) {\n clearInterval(eventInterval);\n eventInterval = null;\n isStarted = false;\n }\n }\n\n function start() {\n log('Start Event Controller');\n if (!isStarted && !isNaN(refreshDelay)) {\n isStarted = true;\n eventInterval = setInterval(onEventTimer, refreshDelay);\n }\n }\n\n /**\n * Add events to the eventList. Events that are not in the mpd anymore but not triggered yet will still be deleted\n * @param values\n */\n function addInlineEvents(values) {\n inlineEvents = {};\n\n if (values) {\n for (var i = 0; i < values.length; i++) {\n var event = values[i];\n inlineEvents[event.id] = event;\n log('Add inline event with id ' + event.id);\n }\n }\n log('Added ' + values.length + ' inline events');\n }\n\n /**\n * i.e. processing of any one event message box with the same id is sufficient\n * @param values\n */\n function addInbandEvents(values) {\n for (var i = 0; i < values.length; i++) {\n var event = values[i];\n if (!(event.id in inbandEvents)) {\n inbandEvents[event.id] = event;\n log('Add inband event with id ' + event.id);\n } else {\n log('Repeated event with id ' + event.id);\n }\n }\n }\n\n /**\n * Remove events which are over from the list\n */\n function removeEvents() {\n if (activeEvents) {\n var currentVideoTime = playbackController.getTime();\n var eventIds = Object.keys(activeEvents);\n\n for (var i = 0; i < eventIds.length; i++) {\n var eventId = eventIds[i];\n var curr = activeEvents[eventId];\n if (curr !== null && (curr.duration + curr.presentationTime) / curr.eventStream.timescale < currentVideoTime) {\n log('Remove Event ' + eventId + ' at time ' + currentVideoTime);\n curr = null;\n delete activeEvents[eventId];\n }\n }\n }\n }\n\n /**\n * Iterate through the eventList and trigger/remove the events\n */\n function onEventTimer() {\n triggerEvents(inbandEvents);\n triggerEvents(inlineEvents);\n removeEvents();\n }\n\n function refreshManifest() {\n var manifest = manifestModel.getValue();\n var url = manifest.url;\n\n if (manifest.hasOwnProperty('Location')) {\n url = manifest.Location;\n }\n log('Refresh manifest @ ' + url);\n manifestUpdater.getManifestLoader().load(url);\n }\n\n function triggerEvents(events) {\n var currentVideoTime = playbackController.getTime();\n var presentationTime;\n\n /* == Trigger events that are ready == */\n if (events) {\n var eventIds = Object.keys(events);\n for (var i = 0; i < eventIds.length; i++) {\n var eventId = eventIds[i];\n var curr = events[eventId];\n\n if (curr !== undefined) {\n presentationTime = curr.presentationTime / curr.eventStream.timescale;\n if (presentationTime === 0 || (presentationTime <= currentVideoTime && presentationTime + presentationTimeThreshold > currentVideoTime)) {\n log('Start Event ' + eventId + ' at ' + currentVideoTime);\n if (curr.duration > 0) {\n activeEvents[eventId] = curr;\n }\n if (curr.eventStream.schemeIdUri == MPD_RELOAD_SCHEME && curr.eventStream.value == MPD_RELOAD_VALUE) {\n refreshManifest();\n } else {\n eventBus.trigger(curr.eventStream.schemeIdUri, {event: curr});\n }\n delete events[eventId];\n }\n }\n }\n }\n }\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.manifestModel) {\n manifestModel = config.manifestModel;\n }\n\n if (config.manifestUpdater) {\n manifestUpdater = config.manifestUpdater;\n }\n }\n\n function reset() {\n clear();\n inlineEvents = null;\n inbandEvents = null;\n activeEvents = null;\n playbackController = null;\n }\n\n instance = {\n initialize: initialize,\n addInlineEvents: addInlineEvents,\n addInbandEvents: addInbandEvents,\n clear: clear,\n start: start,\n setConfig: setConfig,\n reset: reset\n };\n\n return instance;\n}\n\nEventController.__dashjs_factory_name = 'EventController';\nexport default FactoryMaker.getSingletonFactory(EventController);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport HTTPRequest from '../vo/metrics/HTTPRequest.js';\nimport DataChunk from '../vo/DataChunk.js';\nimport FragmentModel from '../models/FragmentModel.js';\nimport MetricsModel from '../models/MetricsModel.js';\nimport EventBus from '../../core/EventBus.js';\nimport Events from '../../core/events/Events.js';\nimport FactoryMaker from '../../core/FactoryMaker.js';\nimport Debug from '../../core/Debug.js';\n\nfunction FragmentController(/*config*/) {\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n fragmentModels;\n\n function setup() {\n fragmentModels = [];\n eventBus.on(Events.FRAGMENT_LOADING_COMPLETED, onFragmentLoadingCompleted, instance);\n }\n\n function process(bytes) {\n var result = null;\n\n if (bytes !== null && bytes !== undefined && bytes.byteLength > 0) {\n result = new Uint8Array(bytes);\n }\n\n return result;\n }\n\n function getModel(scheduleController) {\n if (!scheduleController) return null;\n // Wrap the buffer controller into model and store it to track the loading state and execute the requests\n var model = findModel(scheduleController);\n\n if (!model) {\n model = FragmentModel(context).create({metricsModel: MetricsModel(context).getInstance()});\n model.setScheduleController(scheduleController);\n fragmentModels.push(model);\n }\n\n return model;\n }\n\n function detachModel(model) {\n var idx = fragmentModels.indexOf(model);\n // If we have the model for the given buffer just remove it from array\n if (idx > -1) {\n fragmentModels.splice(idx, 1);\n }\n }\n\n function isInitializationRequest(request) {\n return (request && request.type && request.type === HTTPRequest.INIT_SEGMENT_TYPE);\n }\n\n function reset() {\n eventBus.off(Events.FRAGMENT_LOADING_COMPLETED, onFragmentLoadingCompleted, this);\n fragmentModels = [];\n }\n\n function findModel(scheduleController) {\n var ln = fragmentModels.length;\n // We expect one-to-one relation between FragmentModel and context,\n // so just compare the given context object with the one that stored in the model to find the model for it\n for (var i = 0; i < ln; i++) {\n if (fragmentModels[i].getScheduleController() == scheduleController) {\n return fragmentModels[i];\n }\n }\n\n return null;\n }\n\n function createDataChunk(bytes, request, streamId) {\n var chunk = new DataChunk();\n\n chunk.streamId = streamId;\n chunk.mediaInfo = request.mediaInfo;\n chunk.segmentType = request.type;\n chunk.start = request.startTime;\n chunk.duration = request.duration;\n chunk.end = chunk.start + chunk.duration;\n chunk.bytes = bytes;\n chunk.index = request.index;\n chunk.quality = request.quality;\n\n return chunk;\n }\n\n function onFragmentLoadingCompleted(e) {\n let scheduleController = e.sender.getScheduleController();\n if (!findModel(scheduleController)) return;\n\n let request = e.request;\n let bytes = e.response;\n let isInit = isInitializationRequest(request);\n let streamId = scheduleController.getStreamProcessor().getStreamInfo().id;\n let chunk;\n\n if (!bytes) {\n log('No ' + request.mediaType + ' bytes to push.');\n return;\n }\n\n chunk = createDataChunk(bytes, request, streamId);\n eventBus.trigger(isInit ? Events.INIT_FRAGMENT_LOADED : Events.MEDIA_FRAGMENT_LOADED, {chunk: chunk, fragmentModel: e.sender});\n }\n\n instance = {\n process: process,\n getModel: getModel,\n detachModel: detachModel,\n isInitializationRequest: isInitializationRequest,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nFragmentController.__dashjs_factory_name = 'FragmentController';\nexport default FactoryMaker.getClassFactory(FragmentController);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Events from '../../core/events/Events.js';\nimport EventBus from '../../core/EventBus.js';\nimport FactoryMaker from '../../core/FactoryMaker.js';\nimport Debug from '../../core/Debug.js';\nimport TextSourceBuffer from '../TextSourceBuffer.js';\nimport DOMStorage from '../utils/DOMStorage.js';\n\nconst TRACK_SWITCH_MODE_NEVER_REPLACE = 'neverReplace';\nconst TRACK_SWITCH_MODE_ALWAYS_REPLACE = 'alwaysReplace';\nconst TRACK_SELECTION_MODE_HIGHEST_BITRATE = 'highestBitrate';\nconst TRACK_SELECTION_MODE_WIDEST_RANGE = 'widestRange';\nconst DEFAULT_INIT_TRACK_SELECTION_MODE = TRACK_SELECTION_MODE_HIGHEST_BITRATE;\n\nfunction MediaController() {\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n let textSourceBuffer = TextSourceBuffer(context).getInstance();\n let domStorage = DOMStorage(context).getInstance();\n\n let instance,\n tracks,\n initialSettings,\n selectionMode,\n switchMode,\n errHandler;\n\n function initialize() {\n tracks = {};\n resetInitialSettings();\n resetSwitchMode();\n }\n\n /**\n * @param streamInfo\n * @memberof MediaController#\n */\n function checkInitialMediaSettings(streamInfo) {\n\n ['audio', 'video', 'text', 'fragmentedText'].forEach(function (type) {\n var settings = getInitialSettings(type);\n var tracksForType = getTracksFor(type, streamInfo);\n var tracks = [];\n\n if (!settings) {\n settings = domStorage.getSavedMediaSettings(type);\n setInitialSettings(type, settings);\n }\n\n if (!tracksForType || (tracksForType.length === 0)) return;\n\n if (settings) {\n tracksForType.forEach(function (track) {\n if (!matchSettings(settings, track)) {\n tracks.push(track);\n }\n });\n }\n\n if (tracks.length === 0) {\n setTrack(selectInitialTrack(tracksForType));\n } else {\n if (tracks.length > 1) {\n setTrack(selectInitialTrack(tracks));\n } else {\n setTrack(tracks[0]);\n }\n }\n });\n }\n\n /**\n * @param track\n * @returns {Boolean}\n * @memberof MediaController#\n */\n function addTrack(track) {\n var mediaType = track ? track.type : null;\n var streamId = track ? track.streamInfo.id : null;\n var initSettings = getInitialSettings(mediaType);\n\n if (!track || (!isMultiTrackSupportedByType(mediaType))) return false;\n\n tracks[streamId] = tracks[streamId] || createTrackInfo();\n\n if (tracks[streamId][mediaType].list.indexOf(track) >= 0) return false;\n\n tracks[streamId][mediaType].list.push(track);\n\n if (initSettings && (matchSettings(initSettings, track)) && !getCurrentTrackFor(mediaType, track.streamInfo)) {\n setTrack(track);\n }\n\n return true;\n }\n\n /**\n * @param type\n * @param streamInfo\n * @returns {Array}\n * @memberof MediaController#\n */\n function getTracksFor(type, streamInfo) {\n if (!type || !streamInfo) return [];\n\n var id = streamInfo.id;\n\n if (!tracks[id] || !tracks[id][type]) return [];\n\n return tracks[id][type].list;\n }\n\n /**\n * @param type\n * @param streamInfo\n * @returns {Object}\n * @memberof MediaController#\n */\n function getCurrentTrackFor(type, streamInfo) {\n if (!type || !streamInfo) return null;\n\n return tracks[streamInfo.id][type].current;\n }\n\n /**\n * @param track\n * @returns {Boolean}\n * @memberof MediaController#\n */\n function isCurrentTrack(track) {\n var type = track.type;\n var id = track.streamInfo.id;\n\n return (tracks[id] && tracks[id][type] && isTracksEqual(tracks[id][type].current, track));\n }\n\n /**\n * @param track\n * @memberof MediaController#\n */\n function setTrack(track) {\n if (!track) return;\n\n var type = track.type;\n var streamInfo = track.streamInfo;\n var id = streamInfo.id;\n var current = getCurrentTrackFor(type, streamInfo);\n\n if (!tracks[id] || !tracks[id][type] || (current && isTracksEqual(track, current))) return;\n\n tracks[id][type].current = track;\n\n if (current) {\n eventBus.trigger(Events.CURRENT_TRACK_CHANGED, {oldMediaInfo: current, newMediaInfo: track, switchMode: switchMode[type]});\n }\n\n var settings = extractSettings(track);\n\n if (!settings || !tracks[id][type].storeLastSettings) return;\n\n if (settings.roles) {\n settings.role = settings.roles[0];\n delete settings.roles;\n }\n\n if (settings.accessibility) {\n settings.accessibility = settings.accessibility[0];\n }\n\n if (settings.audioChannelConfiguration) {\n settings.audioChannelConfiguration = settings.audioChannelConfiguration[0];\n }\n\n storeLastSettings(type, settings);\n }\n\n /**\n * @param type\n * @param {Object}\n * @memberof MediaController#\n */\n function setInitialSettings(type, value) {\n if (!type || !value) return;\n\n initialSettings[type] = value;\n }\n\n /**\n * @param type\n * @returns {Object}\n * @memberof MediaController#\n */\n function getInitialSettings(type) {\n if (!type) return null;\n\n return initialSettings[type];\n }\n\n /**\n * @param type\n * @param mode\n * @memberof MediaController#\n */\n function setSwitchMode(type, mode) {\n var isModeSupported = !!MediaController[mode];\n\n if (!isModeSupported) {\n log('track switch mode is not supported: ' + mode);\n return;\n }\n\n switchMode[type] = mode;\n }\n\n /**\n * @param type\n * @returns mode\n * @memberof MediaController#\n */\n function getSwitchMode(type) {\n return switchMode[type];\n }\n\n /**\n * @param mode\n * @memberof MediaController#\n */\n function setSelectionModeForInitialTrack(mode) {\n var isModeSupported = !!MediaController.trackSelectionModes[mode];\n\n if (!isModeSupported) {\n log('track selection mode is not supported: ' + mode);\n return;\n }\n selectionMode = mode;\n }\n\n /**\n * @returns mode\n * @memberof MediaController#\n */\n function getSelectionModeForInitialTrack() {\n return selectionMode || DEFAULT_INIT_TRACK_SELECTION_MODE;\n }\n\n /**\n * @param type\n * @returns {Boolean}\n * @memberof MediaController#\n */\n function isMultiTrackSupportedByType(type) {\n return (type === 'audio' || type === 'video' || type === 'text' || type === 'fragmentedText');\n }\n\n /**\n * @param t1 first track to compare\n * @param t2 second track to compare\n * @returns {Boolean}\n * @memberof MediaController#\n */\n function isTracksEqual(t1, t2) {\n var sameId = t1.id === t2.id;\n var sameViewpoint = t1.viewpoint === t2.viewpoint;\n var sameLang = t1.lang === t2.lang;\n var sameRoles = t1.roles.toString() == t2.roles.toString();\n var sameAccessibility = t1.accessibility.toString() == t2.accessibility.toString();\n var sameAudioChannelConfiguration = t1.audioChannelConfiguration.toString() == t2.audioChannelConfiguration.toString();\n\n return (sameId && sameViewpoint && sameLang && sameRoles && sameAccessibility && sameAudioChannelConfiguration);\n }\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.errHandler) {\n errHandler = config.errHandler;\n }\n }\n\n /**\n * @memberof MediaController#\n */\n function reset() {\n initialize();\n textSourceBuffer.resetEmbedded();\n }\n\n function storeLastSettings(type, value) {\n if (domStorage.isSupported(DOMStorage.STORAGE_TYPE_LOCAL) && (type === 'video' || type === 'audio')) {\n localStorage.setItem(DOMStorage['LOCAL_STORAGE_' + type.toUpperCase() + '_SETTINGS_KEY'], JSON.stringify({settings: value, timestamp: new Date().getTime()}));\n }\n }\n\n function extractSettings(mediaInfo) {\n var settings = {\n lang: mediaInfo.lang,\n viewpoint: mediaInfo.viewpoint,\n roles: mediaInfo.roles,\n accessibility: mediaInfo.accessibility,\n audioChannelConfiguration: mediaInfo.audioChannelConfiguration\n };\n var notEmpty = settings.lang || settings.viewpoint || (settings.role && settings.role.length > 0) ||\n (settings.accessibility && settings.accessibility.length > 0) || (settings.audioChannelConfiguration && settings.audioChannelConfiguration.length > 0);\n\n return notEmpty ? settings : null;\n }\n\n function matchSettings(settings, track) {\n var matchLang = !settings.lang || (settings.lang === track.lang);\n var matchViewPoint = !settings.viewpoint || (settings.viewpoint === track.viewpoint);\n var matchRole = !settings.role || !!track.roles.filter(function (item) {\n return item === settings.role;\n })[0];\n var matchAccessibility = !settings.accessibility || !!track.accessibility.filter(function (item) {\n return item === settings.accessibility;\n })[0];\n var matchAudioChannelConfiguration = !settings.audioChannelConfiguration || !!track.audioChannelConfiguration.filter(function (item) {\n return item === settings.audioChannelConfiguration;\n })[0];\n\n return (matchLang && matchViewPoint && matchRole && matchAccessibility && matchAudioChannelConfiguration);\n }\n\n function resetSwitchMode() {\n switchMode = {\n audio: TRACK_SWITCH_MODE_ALWAYS_REPLACE,\n video: TRACK_SWITCH_MODE_NEVER_REPLACE\n };\n }\n\n function resetInitialSettings() {\n initialSettings = {\n audio: null,\n video: null\n };\n }\n\n function selectInitialTrack(tracks) {\n var mode = getSelectionModeForInitialTrack();\n var tmpArr = [];\n var getTracksWithHighestBitrate = function (trackArr) {\n var max = 0;\n var result = [];\n var tmp;\n\n trackArr.forEach(function (track) {\n tmp = Math.max.apply(Math, track.bitrateList);\n\n if (tmp > max) {\n max = tmp;\n result = [track];\n } else if (tmp === max) {\n result.push(track);\n }\n });\n\n return result;\n };\n var getTracksWithWidestRange = function (trackArr) {\n var max = 0;\n var result = [];\n var tmp;\n\n trackArr.forEach(function (track) {\n tmp = track.representationCount;\n\n if (tmp > max) {\n max = tmp;\n result = [track];\n } else if (tmp === max) {\n result.push(track);\n }\n });\n\n return result;\n };\n\n switch (mode) {\n case TRACK_SELECTION_MODE_HIGHEST_BITRATE:\n tmpArr = getTracksWithHighestBitrate(tracks);\n\n if (tmpArr.length > 1) {\n tmpArr = getTracksWithWidestRange(tmpArr);\n }\n break;\n case TRACK_SELECTION_MODE_WIDEST_RANGE:\n tmpArr = getTracksWithWidestRange(tracks);\n\n if (tmpArr.length > 1) {\n tmpArr = getTracksWithHighestBitrate(tracks);\n }\n break;\n default:\n log('track selection mode is not supported: ' + mode);\n break;\n }\n\n return tmpArr[0];\n }\n\n function createTrackInfo() {\n return {\n audio: {\n list: [],\n storeLastSettings: true,\n current: null\n },\n video: {\n list: [],\n storeLastSettings: true,\n current: null\n },\n text: {\n list: [],\n storeLastSettings: true,\n current: null\n },\n fragmentedText: {\n list: [],\n storeLastSettings: true,\n current: null\n }\n };\n }\n\n instance = {\n initialize: initialize,\n checkInitialMediaSettings: checkInitialMediaSettings,\n addTrack: addTrack,\n getTracksFor: getTracksFor,\n getCurrentTrackFor: getCurrentTrackFor,\n isCurrentTrack: isCurrentTrack,\n setTrack: setTrack,\n setInitialSettings: setInitialSettings,\n getInitialSettings: getInitialSettings,\n setSwitchMode: setSwitchMode,\n getSwitchMode: getSwitchMode,\n setSelectionModeForInitialTrack: setSelectionModeForInitialTrack,\n getSelectionModeForInitialTrack: getSelectionModeForInitialTrack,\n isMultiTrackSupportedByType: isMultiTrackSupportedByType,\n isTracksEqual: isTracksEqual,\n setConfig: setConfig,\n reset: reset\n };\n\n return instance;\n}\n\nMediaController.__dashjs_factory_name = 'MediaController';\nlet factory = FactoryMaker.getSingletonFactory(MediaController);\nfactory.TRACK_SWITCH_MODE_NEVER_REPLACE = TRACK_SWITCH_MODE_NEVER_REPLACE;\nfactory.TRACK_SWITCH_MODE_ALWAYS_REPLACE = TRACK_SWITCH_MODE_ALWAYS_REPLACE;\nfactory.TRACK_SELECTION_MODE_HIGHEST_BITRATE = TRACK_SELECTION_MODE_HIGHEST_BITRATE;\nfactory.TRACK_SELECTION_MODE_WIDEST_RANGE = TRACK_SELECTION_MODE_WIDEST_RANGE;\nfactory.DEFAULT_INIT_TRACK_SELECTION_MODE = DEFAULT_INIT_TRACK_SELECTION_MODE;\nexport default factory;\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport FactoryMaker from '../../core/FactoryMaker.js';\n\nfunction MediaSourceController() {\n\n let instance;\n\n function createMediaSource() {\n\n var hasWebKit = ('WebKitMediaSource' in window);\n var hasMediaSource = ('MediaSource' in window);\n\n if (hasMediaSource) {\n return new MediaSource();\n } else if (hasWebKit) {\n return new WebKitMediaSource();\n }\n\n return null;\n }\n\n function attachMediaSource(source, videoModel) {\n\n var objectURL = window.URL.createObjectURL(source);\n\n videoModel.setSource(objectURL);\n\n return objectURL;\n }\n\n function detachMediaSource(videoModel) {\n // it seems that any value passed to the setSource is cast to a sting when setting element.src,\n // so we cannot use null or undefined to reset the element. Use empty string instead.\n videoModel.setSource('');\n }\n\n function setDuration(source, value) {\n\n if (source.duration != value)\n source.duration = value;\n\n return source.duration;\n }\n\n function signalEndOfStream(source) {\n\n var buffers = source.sourceBuffers;\n var ln = buffers.length;\n var i = 0;\n\n if (source.readyState !== 'open') return;\n\n for (i; i < ln; i++) {\n if (buffers[i].updating) return;\n if (buffers[i].buffered.length === 0) return;\n }\n\n source.endOfStream();\n }\n\n instance = {\n createMediaSource: createMediaSource,\n attachMediaSource: attachMediaSource,\n detachMediaSource: detachMediaSource,\n setDuration: setDuration,\n signalEndOfStream: signalEndOfStream\n };\n\n return instance;\n}\n\nMediaSourceController.__dashjs_factory_name = 'MediaSourceController';\nexport default FactoryMaker.getSingletonFactory(MediaSourceController);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport BufferController from './BufferController.js';\nimport URIQueryAndFragmentModel from '../models/URIQueryAndFragmentModel.js';\nimport MediaPlayerModel from '../../streaming/models/MediaPlayerModel.js';\nimport EventBus from '../../core/EventBus.js';\nimport Events from '../../core/events/Events.js';\nimport FactoryMaker from '../../core/FactoryMaker.js';\nimport Debug from '../../core/Debug.js';\n\nfunction PlaybackController() {\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n element,\n streamController,\n timelineConverter,\n metricsModel,\n dashMetrics,\n manifestModel,\n dashManifestModel,\n adapter,\n videoModel,\n currentTime,\n liveStartTime,\n wallclockTimeIntervalId,\n commonEarliestTime,\n firstAppended,\n streamInfo,\n isDynamic,\n mediaPlayerModel,\n playOnceInitialized;\n\n function setup() {\n currentTime = 0;\n liveStartTime = NaN;\n wallclockTimeIntervalId = null;\n isDynamic = null;\n commonEarliestTime = {};\n firstAppended = {};\n playOnceInitialized = false;\n mediaPlayerModel = MediaPlayerModel(context).getInstance();\n }\n\n function initialize(StreamInfo) {\n streamInfo = StreamInfo;\n element = videoModel.getElement();\n addAllListeners();\n isDynamic = streamInfo.manifestInfo.isDynamic;\n liveStartTime = streamInfo.start;\n\n eventBus.on(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, this);\n eventBus.on(Events.LIVE_EDGE_SEARCH_COMPLETED, onLiveEdgeSearchCompleted, this);\n eventBus.on(Events.BYTES_APPENDED, onBytesAppended, this);\n eventBus.on(Events.BUFFER_LEVEL_STATE_CHANGED, onBufferLevelStateChanged, this);\n\n if (playOnceInitialized) {\n playOnceInitialized = false;\n play();\n }\n }\n\n function getTimeToStreamEnd() {\n return ((getStreamStartTime(streamInfo) + streamInfo.duration) - getTime());\n }\n\n function isPlaybackStarted() {\n return getTime() > 0;\n }\n\n function getStreamId() {\n return streamInfo.id;\n }\n\n function getStreamDuration() {\n return streamInfo.duration;\n }\n\n function play() {\n if (element) {\n element.autoplay = true;\n element.play();\n } else {\n playOnceInitialized = true;\n }\n }\n\n function isPaused() {\n if (!element) return;\n return element.paused;\n }\n\n function pause() {\n if (!element) return;\n element.pause();\n element.autoplay = false;\n }\n\n function isSeeking() {\n if (!element) return;\n return element.seeking;\n }\n\n function seek(time) {\n if (!videoModel) return;\n log('Requesting seek to time: ' + time);\n videoModel.setCurrentTime(time);\n }\n\n function getTime() {\n if (!element) return;\n return element.currentTime;\n }\n\n function getPlaybackRate() {\n if (!element) return;\n return element.playbackRate;\n }\n\n function getPlayedRanges() {\n if (!element) return;\n return element.played;\n }\n\n function getEnded() {\n if (!element) return;\n return element.ended;\n }\n\n function getIsDynamic() {\n return isDynamic;\n }\n\n function setLiveStartTime(value) {\n liveStartTime = value;\n }\n\n function getLiveStartTime() {\n return liveStartTime;\n }\n\n /**\n * Gets a desirable delay for the live edge to avoid a risk of getting 404 when playing at the bleeding edge\n * @returns {Number} object\n * @memberof PlaybackController#\n * */\n function getLiveDelay(fragmentDuration) {\n var delay;\n var mpd = dashManifestModel.getMpd(manifestModel.getValue());\n\n if (mediaPlayerModel.getUseSuggestedPresentationDelay() && mpd.hasOwnProperty('suggestedPresentationDelay')) {\n delay = mpd.suggestedPresentationDelay;\n } else if (!isNaN(fragmentDuration)) {\n delay = fragmentDuration * mediaPlayerModel.getLiveDelayFragmentCount();\n } else {\n delay = streamInfo.manifestInfo.minBufferTime * 2;\n }\n return delay;\n }\n\n function reset() {\n if (videoModel && element) {\n eventBus.off(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, this);\n eventBus.off(Events.BUFFER_LEVEL_STATE_CHANGED, onBufferLevelStateChanged, this);\n eventBus.off(Events.LIVE_EDGE_SEARCH_COMPLETED, onLiveEdgeSearchCompleted, this);\n eventBus.off(Events.BYTES_APPENDED, onBytesAppended, this);\n stopUpdatingWallclockTime();\n removeAllListeners();\n }\n videoModel = null;\n streamInfo = null;\n element = null;\n isDynamic = null;\n setup();\n }\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.streamController) {\n streamController = config.streamController;\n }\n if (config.timelineConverter) {\n timelineConverter = config.timelineConverter;\n }\n if (config.metricsModel) {\n metricsModel = config.metricsModel;\n }\n if (config.dashMetrics) {\n dashMetrics = config.dashMetrics;\n }\n if (config.manifestModel) {\n manifestModel = config.manifestModel;\n }\n if (config.dashManifestModel) {\n dashManifestModel = config.dashManifestModel;\n }\n if (config.adapter) {\n adapter = config.adapter;\n }\n if (config.videoModel) {\n videoModel = config.videoModel;\n }\n }\n\n /**\n * @param streamInfo object\n * @returns {Number} object\n * @memberof PlaybackController#\n */\n function getStreamStartTime(streamInfo) {\n var presentationStartTime;\n var startTimeOffset = parseInt(URIQueryAndFragmentModel(context).getInstance().getURIFragmentData().s, 10);\n\n if (isDynamic) {\n\n if (!isNaN(startTimeOffset) && startTimeOffset > 1262304000) {\n\n presentationStartTime = startTimeOffset - (streamInfo.manifestInfo.availableFrom.getTime() / 1000);\n\n if (presentationStartTime > liveStartTime ||\n presentationStartTime < (liveStartTime - streamInfo.manifestInfo.DVRWindowSize)) {\n\n presentationStartTime = null;\n }\n }\n presentationStartTime = presentationStartTime || liveStartTime;\n\n } else {\n if (!isNaN(startTimeOffset) && startTimeOffset < streamInfo.duration && startTimeOffset >= 0) {\n presentationStartTime = startTimeOffset;\n } else {\n presentationStartTime = streamInfo.start;\n }\n }\n\n return presentationStartTime;\n }\n\n function getActualPresentationTime(currentTime) {\n var metrics = metricsModel.getReadOnlyMetricsFor('video') || metricsModel.getReadOnlyMetricsFor('audio');\n var DVRMetrics = dashMetrics.getCurrentDVRInfo(metrics);\n var DVRWindow = DVRMetrics ? DVRMetrics.range : null;\n var actualTime;\n\n if (!DVRWindow) return NaN;\n\n if ((currentTime >= DVRWindow.start) && (currentTime <= DVRWindow.end)) {\n return currentTime;\n }\n\n actualTime = Math.max(DVRWindow.end - streamInfo.manifestInfo.minBufferTime * 2, DVRWindow.start);\n\n return actualTime;\n }\n\n function startUpdatingWallclockTime() {\n if (wallclockTimeIntervalId !== null) return;\n\n var tick = function () {\n onWallclockTime();\n };\n\n wallclockTimeIntervalId = setInterval(tick, mediaPlayerModel.getWallclockTimeUpdateInterval());\n }\n\n function stopUpdatingWallclockTime() {\n clearInterval(wallclockTimeIntervalId);\n wallclockTimeIntervalId = null;\n }\n\n function initialStart() {\n if (firstAppended[streamInfo.id] || isSeeking()) {\n return;\n }\n\n let initialSeekTime = getStreamStartTime(streamInfo);\n eventBus.trigger(Events.PLAYBACK_SEEKING, {seekTime: initialSeekTime});\n log('Starting playback at offset: ' + initialSeekTime);\n }\n\n function updateCurrentTime() {\n if (isPaused() || !isDynamic || element.readyState === 0) return;\n var currentTime = getTime();\n var actualTime = getActualPresentationTime(currentTime);\n var timeChanged = (!isNaN(actualTime) && actualTime !== currentTime);\n if (timeChanged) {\n seek(actualTime);\n }\n }\n\n function onDataUpdateCompleted(e) {\n if (e.error) return;\n\n var representationInfo = adapter.convertDataToTrack(manifestModel.getValue(), e.currentRepresentation);\n var info = representationInfo.mediaInfo.streamInfo;\n\n if (streamInfo.id !== info.id) return;\n\n streamInfo = representationInfo.mediaInfo.streamInfo;\n updateCurrentTime();\n }\n\n function onLiveEdgeSearchCompleted(e) {\n if (e.error || element.readyState === 0) return;\n\n initialStart();\n }\n\n function onCanPlay(/*e*/) {\n eventBus.trigger(Events.CAN_PLAY);\n }\n\n function onPlaybackStart() {\n log('Native video element event: play');\n updateCurrentTime();\n startUpdatingWallclockTime();\n eventBus.trigger(Events.PLAYBACK_STARTED, {startTime: getTime()});\n }\n\n function onPlaybackPlaying() {\n log('Native video element event: playing');\n eventBus.trigger(Events.PLAYBACK_PLAYING, {playingTime: getTime()});\n }\n\n function onPlaybackPaused() {\n log('Native video element event: pause');\n eventBus.trigger(Events.PLAYBACK_PAUSED, {ended: getEnded()});\n }\n\n function onPlaybackSeeking() {\n let seekTime = getTime();\n log('Seeking to: ' + seekTime);\n startUpdatingWallclockTime();\n eventBus.trigger(Events.PLAYBACK_SEEKING, {seekTime: seekTime});\n }\n\n function onPlaybackSeeked() {\n log('Native video element event: seeked');\n eventBus.trigger(Events.PLAYBACK_SEEKED);\n }\n\n function onPlaybackTimeUpdated() {\n //log(\"Native video element event: timeupdate\");\n var time = getTime();\n if (time === currentTime) return;\n currentTime = time;\n eventBus.trigger(Events.PLAYBACK_TIME_UPDATED, {timeToEnd: getTimeToStreamEnd(), time: time});\n }\n\n function onPlaybackProgress() {\n //log(\"Native video element event: progress\");\n var ranges = element.buffered;\n var lastRange,\n bufferEndTime,\n remainingUnbufferedDuration;\n\n if (ranges.length) {\n lastRange = ranges.length - 1;\n bufferEndTime = ranges.end(lastRange);\n remainingUnbufferedDuration = getStreamStartTime(streamInfo) + streamInfo.duration - bufferEndTime;\n }\n eventBus.trigger(Events.PLAYBACK_PROGRESS, { bufferedRanges: element.buffered, remainingUnbufferedDuration: remainingUnbufferedDuration });\n }\n\n function onPlaybackRateChanged() {\n var rate = getPlaybackRate();\n log('Native video element event: ratechange: ', rate);\n eventBus.trigger(Events.PLAYBACK_RATE_CHANGED, { playbackRate: rate });\n }\n\n function onPlaybackMetaDataLoaded() {\n log('Native video element event: loadedmetadata');\n if (!isDynamic || timelineConverter.isTimeSyncCompleted()) {\n initialStart();\n }\n eventBus.trigger(Events.PLAYBACK_METADATA_LOADED);\n startUpdatingWallclockTime();\n }\n\n function onPlaybackEnded() {\n log('Native video element event: ended');\n element.autoplay = false;\n stopUpdatingWallclockTime();\n eventBus.trigger(Events.PLAYBACK_ENDED);\n }\n\n function onPlaybackError(event) {\n let target = event.target || event.srcElement;\n eventBus.trigger(Events.PLAYBACK_ERROR, {error: target.error});\n }\n\n function onWallclockTime() {\n eventBus.trigger(Events.WALLCLOCK_TIME_UPDATED, {isDynamic: isDynamic, time: new Date()});\n }\n\n function onBytesAppended(e) {\n var bufferedStart;\n var ranges = e.bufferedRanges;\n var id = streamInfo.id;\n var time = getTime();\n var sp = e.sender.getStreamProcessor();\n var type = sp.getType();\n var stream = streamController.getStreamById(streamInfo.id);\n var streamStart = getStreamStartTime(streamInfo);\n var segStart = e.startTime;\n var currentEarliestTime = commonEarliestTime[id];\n\n // if index is zero it means that the first segment of the Period has been appended\n if (segStart === streamStart) {\n firstAppended[id] = firstAppended[id] || {};\n firstAppended[id][type] = true;\n firstAppended[id].ready = !((stream.hasMedia('audio') && !firstAppended[id].audio) || (stream.hasMedia('video') && !firstAppended[id].video));\n }\n\n if (!ranges || !ranges.length || (firstAppended[id] && firstAppended[id].seekCompleted)) return;\n\n bufferedStart = Math.max(ranges.start(0), streamInfo.start);\n commonEarliestTime[id] = (commonEarliestTime[id] === undefined) ? bufferedStart : Math.max(commonEarliestTime[id], bufferedStart);\n\n // do nothing if common earliest time has not changed or if the first segment has not been appended or if current\n // time exceeds the common earliest time\n if ((currentEarliestTime === commonEarliestTime[id] && (time === currentEarliestTime)) || !firstAppended[id] || !firstAppended[id].ready || (time > commonEarliestTime[id])) return;\n\n //reset common earliest time every time user seeks\n //to avoid mismatches when buffers have been discarded/pruned\n if (isSeeking()) {\n commonEarliestTime = {};\n } else {\n // seek to the max of period start or start of buffered range to avoid stalling caused by a shift between audio and video media time\n seek(Math.max(commonEarliestTime[id], streamStart));\n // prevents seeking the second time for the same Period\n firstAppended[id].seekCompleted = true;\n }\n }\n\n function onBufferLevelStateChanged(e) {\n // do not stall playback when get an event from Stream that is not active\n if (e.streamInfo.id !== streamInfo.id) return;\n videoModel.setStallState(e.mediaType, e.state === BufferController.BUFFER_EMPTY);\n }\n\n function addAllListeners() {\n element.addEventListener('canplay', onCanPlay);\n element.addEventListener('play', onPlaybackStart);\n element.addEventListener('playing', onPlaybackPlaying);\n element.addEventListener('pause', onPlaybackPaused);\n element.addEventListener('error', onPlaybackError);\n element.addEventListener('seeking', onPlaybackSeeking);\n element.addEventListener('seeked', onPlaybackSeeked);\n element.addEventListener('timeupdate', onPlaybackTimeUpdated);\n element.addEventListener('progress', onPlaybackProgress);\n element.addEventListener('ratechange', onPlaybackRateChanged);\n element.addEventListener('loadedmetadata', onPlaybackMetaDataLoaded);\n element.addEventListener('ended', onPlaybackEnded);\n }\n\n function removeAllListeners() {\n element.removeEventListener('canplay', onCanPlay);\n element.removeEventListener('play', onPlaybackStart);\n element.removeEventListener('playing', onPlaybackPlaying);\n element.removeEventListener('pause', onPlaybackPaused);\n element.removeEventListener('error', onPlaybackError);\n element.removeEventListener('seeking', onPlaybackSeeking);\n element.removeEventListener('seeked', onPlaybackSeeked);\n element.removeEventListener('timeupdate', onPlaybackTimeUpdated);\n element.removeEventListener('progress', onPlaybackProgress);\n element.removeEventListener('ratechange', onPlaybackRateChanged);\n element.removeEventListener('loadedmetadata', onPlaybackMetaDataLoaded);\n element.removeEventListener('ended', onPlaybackEnded);\n }\n\n instance = {\n initialize: initialize,\n setConfig: setConfig,\n getStreamStartTime: getStreamStartTime,\n getTimeToStreamEnd: getTimeToStreamEnd,\n isPlaybackStarted: isPlaybackStarted,\n getStreamId: getStreamId,\n getStreamDuration: getStreamDuration,\n getTime: getTime,\n getPlaybackRate: getPlaybackRate,\n getPlayedRanges: getPlayedRanges,\n getEnded: getEnded,\n getIsDynamic: getIsDynamic,\n setLiveStartTime: setLiveStartTime,\n getLiveStartTime: getLiveStartTime,\n getLiveDelay: getLiveDelay,\n play: play,\n isPaused: isPaused,\n pause: pause,\n isSeeking: isSeeking,\n seek: seek,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nPlaybackController.__dashjs_factory_name = 'PlaybackController';\nexport default FactoryMaker.getSingletonFactory(PlaybackController);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport PlayList from '../vo/metrics/PlayList.js';\nimport ScheduleRulesCollection from '../rules/scheduling/ScheduleRulesCollection.js';\nimport SwitchRequest from '../rules/SwitchRequest.js';\nimport PlaybackController from './PlaybackController.js';\nimport AbrController from './AbrController.js';\nimport BufferController from './BufferController.js';\nimport LiveEdgeFinder from '../utils/LiveEdgeFinder.js';\nimport EventBus from '../../core/EventBus.js';\nimport Events from '../../core/events/Events.js';\nimport FactoryMaker from '../../core/FactoryMaker.js';\nimport Debug from '../../core/Debug.js';\n\nfunction ScheduleController(config) {\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n let metricsModel = config.metricsModel;\n let manifestModel = config.manifestModel;\n let adapter = config.adapter;\n let dashMetrics = config.dashMetrics;\n let dashManifestModel = config.dashManifestModel;\n let timelineConverter = config.timelineConverter;\n let scheduleRulesCollection = config.scheduleRulesCollection;\n let rulesController = config.rulesController;\n let mediaPlayerModel = config.mediaPlayerModel;\n\n let instance,\n type,\n ready,\n fragmentModel,\n isDynamic,\n currentRepresentationInfo,\n initialPlayback,\n isStopped,\n playListMetrics,\n playListTraceMetrics,\n playListTraceMetricsClosed,\n isFragmentLoading,\n timeToLoadDelay,\n validateTimeout,\n seekTarget,\n playbackController,\n abrController,\n streamProcessor,\n fragmentController,\n liveEdgeFinder,\n bufferController,\n scheduleWhilePaused;\n\n\n function setup() {\n initialPlayback = true;\n isStopped = false;\n playListMetrics = null;\n playListTraceMetrics = null;\n playListTraceMetricsClosed = true;\n isFragmentLoading = false;\n timeToLoadDelay = 0;\n seekTarget = NaN;\n }\n\n function initialize(Type, StreamProcessor) {\n type = Type;\n streamProcessor = StreamProcessor;\n liveEdgeFinder = LiveEdgeFinder(context).getInstance();\n playbackController = PlaybackController(context).getInstance();\n abrController = AbrController(context).getInstance();\n fragmentController = streamProcessor.getFragmentController();\n bufferController = streamProcessor.getBufferController();\n fragmentModel = fragmentController.getModel(this);\n isDynamic = streamProcessor.isDynamic();\n scheduleWhilePaused = mediaPlayerModel.getScheduleWhilePaused();\n\n if (dashManifestModel.getIsTextTrack(type)) {\n eventBus.on(Events.TIMED_TEXT_REQUESTED, onTimedTextRequested, this);\n }\n\n eventBus.on(Events.LIVE_EDGE_SEARCH_COMPLETED, onLiveEdgeSearchCompleted, this);\n eventBus.on(Events.QUALITY_CHANGED, onQualityChanged, this);\n eventBus.on(Events.DATA_UPDATE_STARTED, onDataUpdateStarted, this);\n eventBus.on(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, this);\n eventBus.on(Events.FRAGMENT_LOADING_COMPLETED, onFragmentLoadingCompleted, this);\n eventBus.on(Events.STREAM_COMPLETED, onStreamCompleted, this);\n eventBus.on(Events.STREAM_INITIALIZED, onStreamInitialized, this);\n eventBus.on(Events.BUFFER_LEVEL_STATE_CHANGED, onBufferLevelStateChanged, this);\n eventBus.on(Events.BUFFER_CLEARED, onBufferCleared, this);\n eventBus.on(Events.BYTES_APPENDED, onBytesAppended, this);\n eventBus.on(Events.INIT_REQUESTED, onInitRequested, this);\n eventBus.on(Events.QUOTA_EXCEEDED, onQuotaExceeded, this);\n eventBus.on(Events.BUFFER_LEVEL_STATE_CHANGED, onBufferLevelStateChanged, this);\n eventBus.on(Events.PLAYBACK_STARTED, onPlaybackStarted, this);\n eventBus.on(Events.PLAYBACK_SEEKING, onPlaybackSeeking, this);\n eventBus.on(Events.PLAYBACK_RATE_CHANGED, onPlaybackRateChanged, this);\n }\n\n function clearPlayListTraceMetrics(endTime, stopreason) {\n var duration = 0;\n var startTime = null;\n\n if (playListMetrics && playListTraceMetricsClosed === false) {\n startTime = playListTraceMetrics.start;\n duration = endTime.getTime() - startTime.getTime();\n\n playListTraceMetrics.duration = duration;\n playListTraceMetrics.stopreason = stopreason;\n\n playListMetrics.trace.push(playListTraceMetrics);\n\n playListTraceMetricsClosed = true;\n }\n }\n\n function start() {\n if (!ready) return;\n\n addPlaylistTraceMetrics();\n\n isStopped = false;\n if (initialPlayback) {\n initialPlayback = false;\n }\n log('Schedule controller starting for ' + type);\n //if starting from a pause we want to call validate to kick off the cycle that was stopped by pausing stream.\n if (playbackController.getPlayedRanges().length > 0) {\n validate();\n }\n }\n\n function startOnReady() {\n if (initialPlayback) {\n getInitRequest(currentRepresentationInfo.quality);\n }\n\n start();\n }\n\n function stop() {\n if (isStopped) return;\n isStopped = true;\n log('Schedule controller stopping for ' + type);\n clearInterval(validateTimeout);\n }\n\n function getInitRequest(quality) {\n var request = adapter.getInitRequest(streamProcessor, quality);\n\n if (request !== null) {\n fragmentModel.executeRequest(request);\n }\n\n return request;\n }\n\n function replaceCanceledRequests(canceledRequests) {\n var ln = canceledRequests.length;\n // EPSILON is used to avoid javascript floating point issue, e.g. if request.startTime = 19.2,\n // request.duration = 3.83, than request.startTime + request.startTime = 19.2 + 1.92 = 21.119999999999997\n var EPSILON = 0.1;\n var request,\n time,\n i;\n\n for (i = 0; i < ln; i++) {\n request = canceledRequests[i];\n time = request.startTime + (request.duration / 2) + EPSILON;\n request = adapter.getFragmentRequestForTime(streamProcessor, currentRepresentationInfo, time, {timeThreshold: 0, ignoreIsFinished: true});\n fragmentModel.executeRequest(request);\n }\n }\n\n function validate() {\n if (isStopped || (playbackController.isPaused() && (playbackController.getPlayedRanges().length > 0) && !scheduleWhilePaused)) return;\n getRequiredFragmentCount();\n //log(\"validate\", type);\n }\n\n function getRequiredFragmentCount() {\n let rules = scheduleRulesCollection.getRules(ScheduleRulesCollection.FRAGMENTS_TO_SCHEDULE_RULES);\n rulesController.applyRules(rules, streamProcessor, onGetRequiredFragmentCount, 0, function (currentValue, newValue) {\n currentValue = currentValue === SwitchRequest.NO_CHANGE ? 0 : currentValue;\n return Math.max(currentValue, newValue);\n });\n }\n\n function onGetRequiredFragmentCount(result) {\n if (result.value === 1 && !isFragmentLoading && (dashManifestModel.getIsTextTrack(type) || !bufferController.getIsAppendingInProgress())) {\n isFragmentLoading = true;\n abrController.getPlaybackQuality(streamProcessor, getNextFragment());\n } else {\n startValidateTimer(1000);\n }\n }\n\n function getNextFragment() {\n let rules = scheduleRulesCollection.getRules(ScheduleRulesCollection.NEXT_FRAGMENT_RULES);\n rulesController.applyRules(rules, streamProcessor, onGetNextFragment, null, function (currentValue, newValue) {\n return newValue;\n });\n }\n\n function onGetNextFragment(result) {\n if (result.value) {\n fragmentModel.executeRequest(result.value);\n } else {\n isFragmentLoading = false;\n startValidateTimer(1000);\n }\n }\n\n function startValidateTimer(value) {\n validateTimeout = setTimeout(function () {\n //log(\"timeout going back to validate\")\n validate();\n }, value);\n }\n\n function onQualityChanged(e) {\n if (type !== e.mediaType || streamProcessor.getStreamInfo().id !== e.streamInfo.id) return;\n\n currentRepresentationInfo = streamProcessor.getRepresentationInfoForQuality(e.newQuality);\n if (currentRepresentationInfo === null || currentRepresentationInfo === undefined) {\n throw 'Unexpected error! - currentRepresentationInfo is null or undefined';\n }\n\n clearPlayListTraceMetrics(new Date(), PlayList.Trace.REPRESENTATION_SWITCH_STOP_REASON);\n addPlaylistTraceMetrics();\n }\n\n function onDataUpdateCompleted(e) {\n if (e.error) return;\n currentRepresentationInfo = adapter.convertDataToTrack(manifestModel.getValue(), e.currentRepresentation);\n }\n\n function onStreamInitialized(e) {\n if (e.error) return;\n\n currentRepresentationInfo = streamProcessor.getCurrentRepresentationInfo();\n\n if (!isDynamic || liveEdgeFinder.getLiveEdge() !== null) {\n ready = true;\n }\n\n if (ready) {\n startOnReady();\n }\n }\n\n function onStreamCompleted(e) {\n if (e.fragmentModel !== fragmentModel) return;\n log('Stream is complete');\n }\n\n function onFragmentLoadingCompleted(e) {\n if (e.sender !== fragmentModel) return;\n\n if (!isNaN(e.request.index)) {\n isFragmentLoading = false;\n }\n if (!e.error) return;\n stop();\n }\n\n function onBytesAppended(e) {\n if (e.sender.getStreamProcessor() !== streamProcessor) return;\n\n validate();\n }\n\n function onDataUpdateStarted(e) {\n if (e.sender.getStreamProcessor() !== streamProcessor) return;\n stop();\n }\n\n function onInitRequested(e) {\n if (e.sender.getStreamProcessor() !== streamProcessor) return;\n\n getInitRequest(e.requiredQuality);\n }\n\n function onBufferCleared(e) {\n if (e.sender.getStreamProcessor() !== streamProcessor) return;\n // after the data has been removed from the buffer we should remove the requests from the list of\n // the executed requests for which playback time is inside the time interval that has been removed from the buffer\n fragmentModel.removeExecutedRequestsBeforeTime(e.to);\n\n if (e.hasEnoughSpaceToAppend && !bufferController.getIsBufferingCompleted()) {\n start();\n }\n }\n\n function onBufferLevelStateChanged(e) {\n if ((e.sender.getStreamProcessor() === streamProcessor) && e.state === BufferController.BUFFER_EMPTY && !playbackController.isSeeking()) {\n log('Stalling Buffer');\n clearPlayListTraceMetrics(new Date(), PlayList.Trace.REBUFFERING_REASON);\n }\n }\n\n function onQuotaExceeded(e) {\n if (e.sender.getStreamProcessor() !== streamProcessor) return;\n stop();\n }\n\n function addPlaylistTraceMetrics() {\n if (playListMetrics && playListTraceMetricsClosed === true && currentRepresentationInfo) {\n playListTraceMetricsClosed = false;\n\n playListTraceMetrics = new PlayList.Trace();\n playListTraceMetrics.representationid = currentRepresentationInfo.id;\n playListTraceMetrics.start = new Date();\n playListTraceMetrics.mstart = playbackController.getTime() * 1000;\n playListTraceMetrics.playbackspeed = playbackController.getPlaybackRate().toString();\n }\n }\n\n function onTimedTextRequested(e) {\n if (e.sender.getStreamProcessor() !== streamProcessor) return;\n getInitRequest(e.index);\n }\n\n function onPlaybackStarted() {\n start();\n }\n\n function onPlaybackSeeking(e) {\n if (!initialPlayback) {\n isFragmentLoading = false;\n }\n\n let metrics = metricsModel.getMetricsFor('stream');\n let manifestUpdateInfo = dashMetrics.getCurrentManifestUpdate(metrics);\n\n seekTarget = e.seekTime;\n\n let latency = currentRepresentationInfo.DVRWindow ? currentRepresentationInfo.DVRWindow.end - playbackController.getTime() : NaN;\n metricsModel.updateManifestUpdateInfo(manifestUpdateInfo, {latency: latency});\n\n if (isDynamic) { // need to validate again for dynamic after first seek\n validate();\n }\n }\n\n function onPlaybackRateChanged(e) {\n if (playListTraceMetrics) {\n playListTraceMetrics.playbackspeed = e.playbackRate.toString();\n }\n }\n\n function onLiveEdgeSearchCompleted (e) {\n if (e.error) return;\n\n // step back from a found live edge time to be able to buffer some data\n var liveEdgeTime = e.liveEdge;\n var manifestInfo = currentRepresentationInfo.mediaInfo.streamInfo.manifestInfo;\n var startTime = liveEdgeTime - Math.min((playbackController.getLiveDelay(currentRepresentationInfo.fragmentDuration)), manifestInfo.DVRWindowSize / 2);\n var metrics = metricsModel.getMetricsFor('stream');\n var manifestUpdateInfo = dashMetrics.getCurrentManifestUpdate(metrics);\n var currentLiveStart = playbackController.getLiveStartTime();\n\n var request,\n actualStartTime;\n\n // get a request for a start time\n request = adapter.getFragmentRequestForTime(streamProcessor, currentRepresentationInfo, startTime, {ignoreIsFinished: true});\n actualStartTime = request.startTime;\n\n if (isNaN(currentLiveStart) || (actualStartTime > currentLiveStart)) {\n playbackController.setLiveStartTime(actualStartTime);\n }\n\n metricsModel.updateManifestUpdateInfo(manifestUpdateInfo, {currentTime: actualStartTime, presentationStartTime: liveEdgeTime, latency: liveEdgeTime - actualStartTime, clientTimeOffset: timelineConverter.getClientTimeOffset()});\n\n ready = true;\n startOnReady();\n }\n\n function getSeekTarget() {\n return seekTarget;\n }\n\n function setSeekTarget(value) {\n seekTarget = value;\n }\n\n function getFragmentModel() {\n return fragmentModel;\n }\n\n function setTimeToLoadDelay(value) {\n timeToLoadDelay = value;\n }\n\n function getTimeToLoadDelay() {\n return timeToLoadDelay;\n }\n\n function getStreamProcessor() {\n return streamProcessor;\n }\n\n function setPlayList(playList) {\n playListMetrics = playList;\n }\n\n function finalisePlayList(time, reason) {\n clearPlayListTraceMetrics(time, reason);\n playListMetrics = null;\n }\n\n function reset() {\n eventBus.off(Events.LIVE_EDGE_SEARCH_COMPLETED, onLiveEdgeSearchCompleted, this);\n eventBus.off(Events.DATA_UPDATE_STARTED, onDataUpdateStarted, this);\n eventBus.off(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, this);\n eventBus.off(Events.BUFFER_LEVEL_STATE_CHANGED, onBufferLevelStateChanged, this);\n eventBus.off(Events.QUALITY_CHANGED, onQualityChanged, this);\n eventBus.off(Events.FRAGMENT_LOADING_COMPLETED, onFragmentLoadingCompleted, this);\n eventBus.off(Events.STREAM_COMPLETED, onStreamCompleted, this);\n eventBus.off(Events.STREAM_INITIALIZED, onStreamInitialized, this);\n eventBus.off(Events.QUOTA_EXCEEDED, onQuotaExceeded, this);\n eventBus.off(Events.BYTES_APPENDED, onBytesAppended, this);\n eventBus.off(Events.BUFFER_CLEARED, onBufferCleared, this);\n eventBus.off(Events.INIT_REQUESTED, onInitRequested, this);\n eventBus.off(Events.PLAYBACK_RATE_CHANGED, onPlaybackRateChanged, this);\n eventBus.off(Events.PLAYBACK_SEEKING, onPlaybackSeeking, this);\n eventBus.off(Events.PLAYBACK_STARTED, onPlaybackStarted, this);\n\n\n if (dashManifestModel.getIsTextTrack(type)) {\n eventBus.off(Events.TIMED_TEXT_REQUESTED, onTimedTextRequested, this);\n }\n\n stop();\n fragmentController.detachModel(fragmentModel);\n isFragmentLoading = false;\n timeToLoadDelay = 0;\n seekTarget = NaN;\n playbackController = null;\n playListMetrics = null;\n }\n\n instance = {\n initialize: initialize,\n getStreamProcessor: getStreamProcessor,\n getSeekTarget: getSeekTarget,\n setSeekTarget: setSeekTarget,\n getFragmentModel: getFragmentModel,\n setTimeToLoadDelay: setTimeToLoadDelay,\n getTimeToLoadDelay: getTimeToLoadDelay,\n replaceCanceledRequests: replaceCanceledRequests,\n start: start,\n stop: stop,\n reset: reset,\n setPlayList: setPlayList,\n finalisePlayList: finalisePlayList\n };\n\n setup();\n\n return instance;\n}\n\nScheduleController.__dashjs_factory_name = 'ScheduleController';\nexport default FactoryMaker.getClassFactory(ScheduleController);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport TextSourceBuffer from '../TextSourceBuffer.js';\nimport MediaController from './MediaController.js';\nimport DashAdapter from '../../dash/DashAdapter.js';\nimport ErrorHandler from '../utils/ErrorHandler.js';\nimport StreamController from './StreamController.js';\nimport TextTracks from '../TextTracks.js';\nimport VTTParser from '../utils/VTTParser.js';\nimport TTMLParser from '../utils/TTMLParser.js';\nimport VideoModel from '../models/VideoModel.js';\nimport Error from '../vo/Error.js';\nimport EventBus from '../../core/EventBus.js';\nimport Events from '../../core/events/Events.js';\nimport FactoryMaker from '../../core/FactoryMaker.js';\n\n\nconst QUOTA_EXCEEDED_ERROR_CODE = 22;\n\nfunction SourceBufferController() {\n\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n dashManifestModel;\n\n function createSourceBuffer(mediaSource, mediaInfo) {\n\n var codec = mediaInfo.codec;\n var buffer = null;\n\n try {\n // Safari claims to support anything starting 'application/mp4'.\n // it definitely doesn't understand 'application/mp4;codecs=\"stpp\"'\n // - currently no browser does, so check for it and use our own\n // implementation.\n if (codec.match(/application\\/mp4;\\s*codecs=\"stpp\"/i)) {\n throw new Error('not really supported');\n }\n\n buffer = mediaSource.addSourceBuffer(codec);\n\n } catch (ex) {\n if ((mediaInfo.isText) || (codec.indexOf('codecs=\"stpp\"') !== -1)) {\n buffer = TextSourceBuffer(context).getInstance();\n buffer.setConfig({\n errHandler: ErrorHandler(context).getInstance(),\n adapter: DashAdapter(context).getInstance(),\n dashManifestModel: dashManifestModel,\n mediaController: MediaController(context).getInstance(),\n videoModel: VideoModel(context).getInstance(),\n streamController: StreamController(context).getInstance(),\n textTracks: TextTracks(context).getInstance(),\n VTTParser: VTTParser(context).getInstance(),\n TTMLParser: TTMLParser(context).getInstance()\n\n });\n } else {\n throw ex;\n }\n }\n\n return buffer;\n }\n\n function removeSourceBuffer(mediaSource, buffer) {\n try {\n mediaSource.removeSourceBuffer(buffer);\n } catch (ex) {\n }\n }\n\n function getBufferRange(buffer, time, tolerance) {\n var ranges = null;\n var start = 0;\n var end = 0;\n var firstStart = null;\n var lastEnd = null;\n var gap = 0;\n\n var len,\n i;\n\n var toler = (tolerance || 0.15);\n\n try {\n ranges = buffer.buffered;\n } catch (ex) {\n return null;\n }\n\n if (ranges !== null && ranges !== undefined) {\n for (i = 0, len = ranges.length; i < len; i++) {\n start = ranges.start(i);\n end = ranges.end(i);\n if (firstStart === null) {\n gap = Math.abs(start - time);\n if (time >= start && time < end) {\n // start the range\n firstStart = start;\n lastEnd = end;\n } else if (gap <= toler) {\n // start the range even though the buffer does not contain time 0\n firstStart = start;\n lastEnd = end;\n }\n } else {\n gap = start - lastEnd;\n if (gap <= toler) {\n // the discontinuity is smaller than the tolerance, combine the ranges\n lastEnd = end;\n } else {\n break;\n }\n }\n }\n\n if (firstStart !== null) {\n return {start: firstStart, end: lastEnd};\n }\n }\n\n return null;\n }\n\n function getAllRanges(buffer) {\n var ranges = null;\n\n try {\n ranges = buffer.buffered;\n return ranges;\n } catch (ex) {\n return null;\n }\n }\n\n function getTotalBufferedTime(buffer) {\n var ranges = getAllRanges(buffer);\n var totalBufferedTime = 0;\n var ln,\n i;\n\n if (!ranges) return totalBufferedTime;\n\n for (i = 0, ln = ranges.length; i < ln; i++) {\n totalBufferedTime += ranges.end(i) - ranges.start(i);\n }\n\n return totalBufferedTime;\n }\n\n function getBufferLength(buffer, time, tolerance) {\n\n var range,\n length;\n\n range = getBufferRange(buffer, time, tolerance);\n\n if (range === null) {\n length = 0;\n } else {\n length = range.end - time;\n }\n\n return length;\n }\n\n function getRangeDifference(currentRanges, buffer) {\n if (!buffer) return null;\n\n //TODO we may need to look for a more elegant and robust method\n // The logic below checks that is the difference between currentRanges and actual SourceBuffer ranges\n\n var newRanges = getAllRanges(buffer);\n var newStart,\n newEnd,\n equalStart,\n equalEnd,\n currentRange,\n nextCurrentRange,\n nextNewRange,\n hasRange,\n diff;\n\n if (!newRanges) return null;\n\n for (var i = 0, ln = newRanges.length; i < ln; i++) {\n hasRange = currentRanges.length > i;\n currentRange = hasRange ? {start: currentRanges.start(i), end: currentRanges.end(i)} : null;\n newStart = newRanges.start(i);\n newEnd = newRanges.end(i);\n\n // if there is no range with the same index it means that a new range has been added. This range is\n // the difference we are looking for\n // Example\n // current ranges\n // 0|---range1---|4 8|--range2--|12\n // new ranges\n // 0|---range1---|4| 8|--range2--|12 16|--range3--|20\n\n if (!currentRange) {\n diff = {start: newStart, end: newEnd};\n return diff;\n }\n\n equalStart = currentRange.start === newStart;\n equalEnd = currentRange.end === newEnd;\n\n // if ranges are equal do nothing here and go the next ranges\n if (equalStart && equalEnd) continue;\n\n // start or/and end of the range has been changed\n if (equalStart) {\n diff = {start: currentRange.end, end: newEnd};\n } else if (equalEnd) {\n diff = {start: newStart, end: currentRange.start};\n } else {\n // new range has been added before the current one\n diff = {start: newStart, end: newEnd};\n return diff;\n }\n\n // if there is next current range but no next new range (it it is not equal the next current range) it means\n // that the ranges have been merged\n // Example 1\n // current ranges\n // 0|---range1---|4 8|--range2--|12 16|---range3---|\n // new ranges\n // 0|-----------range1-----------|12 16|---range3--|\n nextCurrentRange = currentRanges.length > (i + 1) ? {start: currentRanges.start(i + 1), end: currentRanges.end(i + 1)} : null;\n nextNewRange = (i + 1) < ln ? {start: newRanges.start(i + 1), end: newRanges.end(i + 1)} : null;\n\n if (nextCurrentRange && (!nextNewRange || (nextNewRange.start !== nextCurrentRange.start || nextNewRange.end !== nextCurrentRange.end))) {\n diff.end = nextCurrentRange.start;\n }\n\n return diff;\n }\n\n return null;\n }\n\n function append(buffer, chunk) {\n var bytes = chunk.bytes;\n var appendMethod = ('append' in buffer) ? 'append' : (('appendBuffer' in buffer) ? 'appendBuffer' : null);\n // our user-defined sourcebuffer-like object has Object as its\n // prototype whereas built-in SourceBuffers will have something\n // more sensible. do not pass chunk to built-in append.\n var acceptsChunk = Object.prototype.toString.call(buffer).slice(8, -1) === 'Object';\n\n if (!appendMethod) return;\n\n try {\n waitForUpdateEnd(buffer, function () {\n if (acceptsChunk) {\n // chunk.start is used in calculations by TextSourceBuffer\n buffer[appendMethod](bytes, chunk);\n } else {\n buffer[appendMethod](bytes);\n }\n // updating is in progress, we should wait for it to complete before signaling that this operation is done\n waitForUpdateEnd(buffer, function () {\n eventBus.trigger(Events.SOURCEBUFFER_APPEND_COMPLETED, {buffer: buffer, bytes: bytes});\n });\n });\n } catch (err) {\n eventBus.trigger(Events.SOURCEBUFFER_APPEND_COMPLETED, {buffer: buffer, bytes: bytes, error: new Error(err.code, err.message, null)});\n }\n }\n\n function remove(buffer, start, end, mediaSource) {\n\n try {\n // make sure that the given time range is correct. Otherwise we will get InvalidAccessError\n waitForUpdateEnd(buffer, function () {\n if ((start >= 0) && (end > start) && (mediaSource.readyState !== 'ended')) {\n buffer.remove(start, end);\n }\n // updating is in progress, we should wait for it to complete before signaling that this operation is done\n waitForUpdateEnd(buffer, function () {\n eventBus.trigger(Events.SOURCEBUFFER_REMOVE_COMPLETED, {buffer: buffer, from: start, to: end});\n });\n });\n } catch (err) {\n eventBus.trigger(Events.SOURCEBUFFER_REMOVE_COMPLETED, {buffer: buffer, from: start, to: end, error: new Error(err.code, err.message, null)});\n }\n }\n\n function abort(mediaSource, buffer) {\n try {\n if (mediaSource.readyState === 'open') {\n buffer.abort();\n }\n } catch (ex) {\n }\n }\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.dashManifestModel) {\n dashManifestModel = config.dashManifestModel;\n }\n }\n\n //private\n function waitForUpdateEnd(buffer, callback) {\n var intervalId;\n var CHECK_INTERVAL = 50;\n\n var checkIsUpdateEnded = function () {\n // if updating is still in progress do nothing and wait for the next check again.\n if (buffer.updating) return;\n // updating is completed, now we can stop checking and resolve the promise\n clearInterval(intervalId);\n callback();\n };\n\n var updateEndHandler = function () {\n if (buffer.updating) return;\n\n buffer.removeEventListener('updateend', updateEndHandler, false);\n callback();\n };\n\n if (!buffer.updating) {\n callback();\n return;\n }\n\n // use updateend event if possible\n if (typeof buffer.addEventListener === 'function') {\n try {\n buffer.addEventListener('updateend', updateEndHandler, false);\n } catch (err) {\n // use setInterval to periodically check if updating has been completed\n intervalId = setInterval(checkIsUpdateEnded, CHECK_INTERVAL);\n }\n } else {\n // use setInterval to periodically check if updating has been completed\n intervalId = setInterval(checkIsUpdateEnded, CHECK_INTERVAL);\n }\n }\n\n instance = {\n append: append,\n remove: remove,\n abort: abort,\n createSourceBuffer: createSourceBuffer,\n removeSourceBuffer: removeSourceBuffer,\n getBufferRange: getBufferRange,\n getAllRanges: getAllRanges,\n getTotalBufferedTime: getTotalBufferedTime,\n getBufferLength: getBufferLength,\n getRangeDifference: getRangeDifference,\n setConfig: setConfig\n };\n\n return instance;\n}\n\nSourceBufferController.__dashjs_factory_name = 'SourceBufferController';\nlet factory = FactoryMaker.getSingletonFactory(SourceBufferController);\nfactory.QUOTA_EXCEEDED_ERROR_CODE = QUOTA_EXCEEDED_ERROR_CODE;\nexport default factory;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport PlaybackController from './PlaybackController.js';\nimport Stream from '../Stream.js';\nimport ManifestUpdater from '../ManifestUpdater.js';\nimport EventBus from '../../core/EventBus.js';\nimport Events from '../../core/events/Events.js';\nimport URIQueryAndFragmentModel from '../models/URIQueryAndFragmentModel.js';\nimport VideoModel from '../models/VideoModel.js';\nimport MediaPlayerModel from '../models/MediaPlayerModel.js';\nimport FactoryMaker from '../../core/FactoryMaker.js';\nimport PlayList from '../vo/metrics/PlayList.js';\nimport Debug from '../../core/Debug.js';\n\nfunction StreamController() {\n\n const STREAM_END_THRESHOLD = 0.2;\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n capabilities,\n manifestUpdater,\n manifestLoader,\n manifestModel,\n dashManifestModel,\n adapter,\n metricsModel,\n dashMetrics,\n liveEdgeFinder,\n mediaSourceController,\n timeSyncController,\n virtualBuffer,\n errHandler,\n timelineConverter,\n streams,\n activeStream,\n protectionController,\n protectionData,\n autoPlay,\n isStreamSwitchingInProgress,\n isUpdating,\n hasMediaError,\n hasInitialisationError,\n mediaSource,\n videoModel,\n playbackController,\n mediaPlayerModel,\n isPaused,\n initialPlayback,\n playListMetrics;\n\n function setup() {\n protectionController = null;\n streams = [];\n mediaPlayerModel = MediaPlayerModel(context).getInstance();\n autoPlay = true;\n isStreamSwitchingInProgress = false;\n isUpdating = false;\n isPaused = false;\n initialPlayback = true;\n playListMetrics = null;\n hasMediaError = false;\n hasInitialisationError = false;\n }\n\n function initialize(autoPl, protData) {\n autoPlay = autoPl;\n protectionData = protData;\n timelineConverter.initialize();\n\n manifestUpdater = ManifestUpdater(context).getInstance();\n manifestUpdater.setConfig({\n log: log,\n manifestModel: manifestModel,\n dashManifestModel: dashManifestModel\n });\n manifestUpdater.initialize(manifestLoader);\n\n videoModel = VideoModel(context).getInstance();\n playbackController = PlaybackController(context).getInstance();\n playbackController.setConfig({\n streamController: instance,\n timelineConverter: timelineConverter,\n metricsModel: metricsModel,\n dashMetrics: dashMetrics,\n manifestModel: manifestModel,\n dashManifestModel: dashManifestModel,\n adapter: adapter,\n videoModel: videoModel\n });\n\n eventBus.on(Events.TIME_SYNCHRONIZATION_COMPLETED, onTimeSyncCompleted, this);\n eventBus.on(Events.PLAYBACK_SEEKING, onPlaybackSeeking, this);\n eventBus.on(Events.PLAYBACK_TIME_UPDATED, onPlaybackTimeUpdated, this);\n eventBus.on(Events.PLAYBACK_ENDED, onEnded, this);\n eventBus.on(Events.PLAYBACK_ERROR, onPlaybackError, this);\n eventBus.on(Events.PLAYBACK_STARTED, onPlaybackStarted, this);\n eventBus.on(Events.PLAYBACK_PAUSED, onPlaybackPaused, this);\n eventBus.on(Events.MANIFEST_UPDATED, onManifestUpdated, this);\n eventBus.on(Events.STREAM_BUFFERING_COMPLETED, onStreamBufferingCompleted, this);\n }\n\n function flushPlaylistMetrics(reason, time) {\n time = time || new Date();\n\n if (playListMetrics) {\n if (activeStream) {\n activeStream.getProcessors().forEach(p => {\n var ctrlr = p.getScheduleController();\n if (ctrlr) {\n ctrlr.finalisePlayList(\n time,\n reason\n );\n }\n });\n }\n\n metricsModel.addPlayList(playListMetrics);\n\n playListMetrics = null;\n }\n }\n\n function addPlaylistMetrics(startReason) {\n playListMetrics = new PlayList();\n playListMetrics.start = new Date();\n playListMetrics.mstart = playbackController.getTime() * 1000;\n playListMetrics.starttype = startReason;\n\n if (activeStream) {\n activeStream.getProcessors().forEach(p => {\n var ctrlr = p.getScheduleController();\n if (ctrlr) {\n ctrlr.setPlayList(playListMetrics);\n }\n });\n }\n }\n /*\n * StreamController aggregates all streams defined in the manifest file\n * and implements corresponding logic to switch between them.\n */\n function fireSwitchEvent(eventType, fromStream, toStream) {\n eventBus.trigger(eventType, {fromStreamInfo: fromStream ? fromStream.getStreamInfo() : null, toStreamInfo: toStream.getStreamInfo()});\n }\n\n function startAutoPlay() {\n if (!activeStream.isActivated()) return;\n // only first stream must be played automatically during playback initialization\n if (activeStream.getStreamInfo().index === 0) {\n activeStream.startEventController();\n if (autoPlay) {\n playbackController.play();\n }\n }\n }\n\n function onPlaybackError(e) {\n var code = e.error ? e.error.code : 0;\n var msg = '';\n\n if (code === -1) {\n // not an error!\n return;\n }\n\n switch (code) {\n case 1:\n msg = 'MEDIA_ERR_ABORTED';\n break;\n case 2:\n msg = 'MEDIA_ERR_NETWORK';\n break;\n case 3:\n msg = 'MEDIA_ERR_DECODE';\n break;\n case 4:\n msg = 'MEDIA_ERR_SRC_NOT_SUPPORTED';\n break;\n case 5:\n msg = 'MEDIA_ERR_ENCRYPTED';\n break;\n default:\n msg = 'UNKNOWN';\n break;\n }\n\n hasMediaError = true;\n\n if (e.error.msExtendedCode) {\n msg += ' (0x' + (e.error.msExtendedCode >>> 0).toString(16).toUpperCase() + ')';\n }\n\n log('Video Element Error: ' + msg);\n if (e.error) {\n log(e.error);\n }\n errHandler.mediaSourceError(msg);\n reset();\n }\n\n /*\n * Called when current playback position is changed.\n * Used to determine the time current stream is finished and we should switch to the next stream.\n */\n function onPlaybackTimeUpdated(e) {\n var playbackQuality = videoModel.getPlaybackQuality();\n if (playbackQuality) {\n metricsModel.addDroppedFrames('video', playbackQuality);\n }\n\n // Sometimes after seeking timeUpdateHandler is called before seekingHandler and a new stream starts\n // from beginning instead of from a chosen position. So we do nothing if the player is in the seeking state\n if (playbackController.isSeeking()) return;\n\n // check if stream end is reached\n if (e.timeToEnd < STREAM_END_THRESHOLD) {\n mediaSourceController.signalEndOfStream(mediaSource);\n }\n }\n\n function onEnded(/*e*/) {\n var nextStream = getNextStream();\n\n switchStream(activeStream, nextStream);\n\n flushPlaylistMetrics(\n nextStream ?\n PlayList.Trace.END_OF_PERIOD_STOP_REASON :\n PlayList.Trace.END_OF_CONTENT_STOP_REASON\n );\n }\n\n function onPlaybackSeeking(e) {\n var seekingStream = getStreamForTime(e.seekTime);\n\n if (seekingStream && seekingStream !== activeStream) {\n flushPlaylistMetrics(PlayList.Trace.END_OF_PERIOD_STOP_REASON);\n switchStream(activeStream, seekingStream, e.seekTime);\n } else {\n flushPlaylistMetrics(PlayList.Trace.USER_REQUEST_STOP_REASON);\n }\n\n addPlaylistMetrics(PlayList.SEEK_START_REASON);\n }\n\n function onPlaybackStarted(/*e*/) {\n if (initialPlayback) {\n initialPlayback = false;\n addPlaylistMetrics(PlayList.INITIAL_PLAYOUT_START_REASON);\n } else {\n if (isPaused) {\n isPaused = false;\n addPlaylistMetrics(PlayList.RESUME_FROM_PAUSE_START_REASON);\n }\n }\n }\n\n function onPlaybackPaused(e) {\n if (!e.ended) {\n isPaused = true;\n flushPlaylistMetrics(PlayList.Trace.USER_REQUEST_STOP_REASON);\n }\n }\n\n /*\n * Handles the current stream buffering end moment to start the next stream buffering\n */\n function onStreamBufferingCompleted(e) {\n var nextStream = getNextStream();\n var isLast = e.streamInfo.isLast;\n\n // buffering has been completed, now we can signal end of stream\n if (mediaSource && isLast) {\n mediaSourceController.signalEndOfStream(mediaSource);\n }\n\n if (!nextStream) return;\n\n nextStream.activate(mediaSource);\n }\n\n function getNextStream() {\n var start = activeStream.getStreamInfo().start;\n var duration = activeStream.getStreamInfo().duration;\n\n return streams.filter(function (stream) {\n return (stream.getStreamInfo().start === (start + duration));\n })[0];\n }\n\n function getStreamForTime(time) {\n var duration = 0;\n var stream = null;\n\n var ln = streams.length;\n\n if (ln > 0) {\n duration += streams[0].getStartTime();\n }\n\n for (var i = 0; i < ln; i++) {\n stream = streams[i];\n duration += stream.getDuration();\n\n if (time < duration) {\n return stream;\n }\n }\n\n return null;\n }\n\n function switchStream(from, to, seekTo) {\n\n if (isStreamSwitchingInProgress || !from || !to || from === to) return;\n\n fireSwitchEvent(Events.PERIOD_SWITCH_STARTED, from, to);\n isStreamSwitchingInProgress = true;\n\n var onMediaSourceReady = function () {\n if (seekTo !== undefined) {\n playbackController.seek(seekTo);\n }\n\n playbackController.play();\n activeStream.startEventController();\n isStreamSwitchingInProgress = false;\n fireSwitchEvent(Events.PERIOD_SWITCH_COMPLETED, from, to);\n };\n\n //Removed a hack from 1.5 using setTimeout due to dijon. Try without hack but remember.\n from.deactivate();\n activeStream = to;\n playbackController.initialize(activeStream.getStreamInfo());\n setupMediaSource(onMediaSourceReady);\n }\n\n function setupMediaSource(callback) {\n var sourceUrl;\n\n var onMediaSourceOpen = function (e) {\n log('MediaSource is open!');\n log(e);\n window.URL.revokeObjectURL(sourceUrl);\n\n mediaSource.removeEventListener('sourceopen', onMediaSourceOpen);\n mediaSource.removeEventListener('webkitsourceopen', onMediaSourceOpen);\n\n //log(\"MediaSource set up.\");\n setMediaDuration();\n\n activeStream.activate(mediaSource);\n\n if (callback) {\n callback();\n }\n };\n\n if (!mediaSource) {\n mediaSource = mediaSourceController.createMediaSource();\n //log(\"MediaSource created.\");\n //log(\"MediaSource should be closed. The actual readyState is: \" + mediaSource.readyState);\n } else {\n mediaSourceController.detachMediaSource(videoModel);\n }\n\n mediaSource.addEventListener('sourceopen', onMediaSourceOpen, false);\n mediaSource.addEventListener('webkitsourceopen', onMediaSourceOpen, false);\n sourceUrl = mediaSourceController.attachMediaSource(mediaSource, videoModel);\n //log(\"MediaSource attached to video. Waiting on open...\");\n }\n\n function setMediaDuration() {\n var manifestDuration,\n mediaDuration;\n\n manifestDuration = activeStream.getStreamInfo().manifestInfo.duration;\n mediaDuration = mediaSourceController.setDuration(mediaSource, manifestDuration);\n log('Duration successfully set to: ' + mediaDuration);\n }\n\n function composeStreams() {\n var manifest = manifestModel.getValue();\n var metrics = metricsModel.getMetricsFor('stream');\n var manifestUpdateInfo = dashMetrics.getCurrentManifestUpdate(metrics);\n var remainingStreams = [];\n var streamInfo,\n pLen,\n sLen,\n pIdx,\n sIdx,\n streamsInfo,\n stream;\n\n if (!manifest) return;\n\n streamsInfo = adapter.getStreamsInfo(manifest);\n if ( protectionController) {\n eventBus.trigger(Events.PROTECTION_CREATED, {controller: protectionController, manifest: manifest});\n protectionController.setMediaElement(videoModel.getElement());\n if (protectionData) {\n protectionController.setProtectionData(protectionData);\n }\n }\n\n try {\n if (streamsInfo.length === 0) {\n throw new Error('There are no streams');\n }\n\n metricsModel.updateManifestUpdateInfo(manifestUpdateInfo, {\n currentTime: playbackController.getTime(),\n buffered: videoModel.getElement().buffered,\n presentationStartTime: streamsInfo[0].start,\n clientTimeOffset: timelineConverter.getClientTimeOffset()\n });\n\n isUpdating = true;\n\n for (pIdx = 0, pLen = streamsInfo.length; pIdx < pLen; pIdx++) {\n streamInfo = streamsInfo[pIdx];\n for (sIdx = 0, sLen = streams.length; sIdx < sLen; sIdx++) {\n // If the stream already exists we just need to update the values we got from the updated manifest\n if (streams[sIdx].getId() === streamInfo.id) {\n stream = streams[sIdx];\n remainingStreams.push(stream);\n stream.updateData(streamInfo);\n }\n }\n // If the Stream object does not exist we probably loaded the manifest the first time or it was\n // introduced in the updated manifest, so we need to create a new Stream and perform all the initialization operations\n if (!stream) {\n\n stream = Stream(context).create({\n manifestModel: manifestModel,\n manifestUpdater: manifestUpdater,\n adapter: adapter,\n timelineConverter: timelineConverter,\n capabilities: capabilities,\n errHandler: errHandler\n });\n stream.initialize(streamInfo, protectionController);\n\n eventBus.on(Events.STREAM_INITIALIZED, onStreamInitialized, this);\n remainingStreams.push(stream);\n\n if (activeStream) {\n stream.updateData(streamInfo);\n }\n }\n metricsModel.addManifestUpdateStreamInfo(manifestUpdateInfo, streamInfo.id, streamInfo.index, streamInfo.start, streamInfo.duration);\n stream = null;\n }\n\n streams = remainingStreams;\n\n // If the active stream has not been set up yet, let it be the first Stream in the list\n if (!activeStream) {\n activeStream = streams[0];\n fireSwitchEvent(Events.PERIOD_SWITCH_STARTED, null, activeStream);\n playbackController.initialize(activeStream.getStreamInfo());\n fireSwitchEvent(Events.PERIOD_SWITCH_COMPLETED, null, activeStream);\n }\n\n if (!mediaSource) {\n setupMediaSource();\n }\n\n isUpdating = false;\n checkIfUpdateCompleted();\n } catch (e) {\n errHandler.manifestError(e.message, 'nostreamscomposed', manifest);\n hasInitialisationError = true;\n reset();\n }\n }\n\n function checkIfUpdateCompleted() {\n if (isUpdating) return;\n\n var ln = streams.length;\n var i = 0;\n\n\n startAutoPlay();\n\n for (i; i < ln; i++) {\n if (!streams[i].isInitialized()) return;\n }\n\n eventBus.trigger(Events.STREAMS_COMPOSED);\n\n }\n\n function onStreamInitialized(/*e*/) {\n checkIfUpdateCompleted();\n }\n\n function onTimeSyncCompleted(/*e*/) {\n composeStreams();\n }\n\n function onManifestUpdated(e) {\n if (!e.error) {\n //Since streams are not composed yet , need to manually look up useCalculatedLiveEdgeTime to detect if stream\n //is SegmentTimeline to avoid using time source\n var manifest = e.manifest;\n var streamInfo = adapter.getStreamsInfo(manifest)[0];\n var mediaInfo = (\n adapter.getMediaInfoForType(manifest, streamInfo, 'video') ||\n adapter.getMediaInfoForType(manifest, streamInfo, 'audio')\n );\n\n var adaptation,\n useCalculatedLiveEdgeTime;\n\n if (mediaInfo) {\n adaptation = adapter.getDataForMedia(mediaInfo);\n useCalculatedLiveEdgeTime = dashManifestModel.getRepresentationsForAdaptation(manifest, adaptation)[0].useCalculatedLiveEdgeTime;\n\n if (useCalculatedLiveEdgeTime) {\n log('SegmentTimeline detected using calculated Live Edge Time');\n mediaPlayerModel.setUseManifestDateHeaderTimeSource(false);\n }\n }\n\n var manifestUTCTimingSources = dashManifestModel.getUTCTimingSources(e.manifest);\n var allUTCTimingSources = (!dashManifestModel.getIsDynamic(manifest) || useCalculatedLiveEdgeTime) ? manifestUTCTimingSources : manifestUTCTimingSources.concat(mediaPlayerModel.getUTCTimingSources());\n var isHTTPS = URIQueryAndFragmentModel(context).getInstance().isManifestHTTPS();\n\n //If https is detected on manifest then lets apply that protocol to only the default time source(s). In the future we may find the need to apply this to more then just default so left code at this level instead of in MediaPlayer.\n allUTCTimingSources.forEach(function (item) {\n if (item.value.replace(/.*?:\\/\\//g, '') === MediaPlayerModel.DEFAULT_UTC_TIMING_SOURCE.value.replace(/.*?:\\/\\//g, '')) {\n item.value = item.value.replace(isHTTPS ? new RegExp(/^(http:)?\\/\\//i) : new RegExp(/^(https:)?\\/\\//i), isHTTPS ? 'https://' : 'http://');\n log('Matching default timing source protocol to manifest protocol: ' , item.value);\n }\n });\n\n timeSyncController.setConfig({\n metricsModel: metricsModel,\n dashMetrics: dashMetrics\n });\n timeSyncController.initialize(allUTCTimingSources, mediaPlayerModel.getUseManifestDateHeaderTimeSource());\n } else {\n hasInitialisationError = true;\n reset();\n }\n }\n\n function getAutoPlay() {\n return autoPlay;\n }\n\n function getActiveStreamInfo() {\n return activeStream ? activeStream.getStreamInfo() : null;\n }\n\n function isStreamActive(streamInfo) {\n return (activeStream.getId() === streamInfo.id);\n }\n\n function getStreamById(id) {\n return streams.filter(function (item) {\n return item.getId() === id;\n })[0];\n }\n\n function load(url) {\n manifestLoader.load(url);\n }\n\n function loadWithManifest(manifest) {\n manifestUpdater.setManifest(manifest);\n }\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.capabilities) {\n capabilities = config.capabilities;\n }\n if (config.manifestLoader) {\n manifestLoader = config.manifestLoader;\n }\n if (config.manifestModel) {\n manifestModel = config.manifestModel;\n }\n if (config.dashManifestModel) {\n dashManifestModel = config.dashManifestModel;\n }\n if (config.protectionController) {\n protectionController = config.protectionController;\n }\n if (config.adapter) {\n adapter = config.adapter;\n }\n if (config.metricsModel) {\n metricsModel = config.metricsModel;\n }\n if (config.dashMetrics) {\n dashMetrics = config.dashMetrics;\n }\n if (config.liveEdgeFinder) {\n liveEdgeFinder = config.liveEdgeFinder;\n }\n if (config.mediaSourceController) {\n mediaSourceController = config.mediaSourceController;\n }\n if (config.timeSyncController) {\n timeSyncController = config.timeSyncController;\n }\n if (config.virtualBuffer) {\n virtualBuffer = config.virtualBuffer;\n }\n if (config.errHandler) {\n errHandler = config.errHandler;\n }\n if (config.timelineConverter) {\n timelineConverter = config.timelineConverter;\n }\n }\n\n function reset() {\n timeSyncController.reset();\n\n flushPlaylistMetrics(\n hasMediaError || hasInitialisationError ?\n PlayList.Trace.FAILURE_STOP_REASON :\n PlayList.Trace.USER_REQUEST_STOP_REASON\n );\n\n for (let i = 0, ln = streams.length; i < ln; i++) {\n let stream = streams[i];\n eventBus.off(Events.STREAM_INITIALIZED, onStreamInitialized, this);\n stream.reset(hasMediaError);\n }\n\n streams = [];\n\n eventBus.off(Events.PLAYBACK_TIME_UPDATED, onPlaybackTimeUpdated, this);\n eventBus.off(Events.PLAYBACK_SEEKING, onPlaybackSeeking, this);\n eventBus.off(Events.PLAYBACK_ERROR, onPlaybackError, this);\n eventBus.off(Events.PLAYBACK_STARTED, onPlaybackStarted, this);\n eventBus.off(Events.PLAYBACK_PAUSED, onPlaybackPaused, this);\n eventBus.off(Events.PLAYBACK_ENDED, onEnded, this);\n eventBus.off(Events.STREAM_BUFFERING_COMPLETED, onStreamBufferingCompleted, this);\n eventBus.off(Events.MANIFEST_UPDATED, onManifestUpdated, this);\n\n manifestUpdater.reset();\n metricsModel.clearAllCurrentMetrics();\n manifestModel.setValue(null);\n manifestLoader.reset();\n timelineConverter.reset();\n liveEdgeFinder.reset();\n adapter.reset();\n virtualBuffer.reset();\n isStreamSwitchingInProgress = false;\n isUpdating = false;\n activeStream = null;\n hasMediaError = false;\n hasInitialisationError = false;\n initialPlayback = true;\n isPaused = false;\n\n if (mediaSource) {\n mediaSourceController.detachMediaSource(videoModel);\n mediaSource = null;\n }\n videoModel = null;\n if (protectionController) {\n protectionController.setMediaElement(null);\n protectionController = null;\n protectionData = null;\n if (manifestModel.getValue()) {\n eventBus.trigger(Events.PROTECTION_DESTROYED, {data: manifestModel.getValue().url});\n }\n }\n\n eventBus.trigger(Events.STREAM_TEARDOWN_COMPLETE);\n }\n\n instance = {\n initialize: initialize,\n getAutoPlay: getAutoPlay,\n getActiveStreamInfo: getActiveStreamInfo,\n isStreamActive: isStreamActive,\n getStreamById: getStreamById,\n load: load,\n loadWithManifest: loadWithManifest,\n setConfig: setConfig,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nStreamController.__dashjs_factory_name = 'StreamController';\n\nexport default FactoryMaker.getSingletonFactory(StreamController);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport EventBus from '../../core/EventBus.js';\nimport Events from '../../core/events/Events.js';\nimport FactoryMaker from '../../core/FactoryMaker.js';\n\nfunction TextController(config) {\n\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n\n let sourceBufferController = config.sourceBufferController;\n let errHandler = config.errHandler;\n\n let instance,\n initialized,\n mediaSource,\n buffer,\n type,\n streamProcessor,\n representationController;\n\n function setup() {\n\n initialized = false;\n mediaSource = null;\n buffer = null;\n type = null;\n streamProcessor = null;\n representationController = null;\n\n eventBus.on(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, this);\n eventBus.on(Events.INIT_FRAGMENT_LOADED, onInitFragmentLoaded, this);\n }\n\n function initialize(Type, source, StreamProcessor) {\n type = Type;\n setMediaSource(source);\n streamProcessor = StreamProcessor;\n representationController = streamProcessor.getRepresentationController();\n }\n\n /**\n * @param mediaInfo object\n * @returns SourceBuffer object\n * @memberof BufferController#\n */\n function createBuffer(mediaInfo) {\n try {\n buffer = sourceBufferController.createSourceBuffer(mediaSource, mediaInfo);\n\n if (!initialized) {\n if (buffer.hasOwnProperty('initialize')) {\n buffer.initialize(type, this);\n }\n initialized = true;\n }\n } catch (e) {\n errHandler.mediaSourceError('Error creating ' + type + ' source buffer.');\n }\n\n return buffer;\n }\n\n function getBuffer() {\n return buffer;\n }\n\n function setBuffer(value) {\n buffer = value;\n }\n\n function setMediaSource(value) {\n mediaSource = value;\n }\n\n function getStreamProcessor() {\n return streamProcessor;\n }\n\n function reset(errored) {\n\n eventBus.off(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, this);\n eventBus.off(Events.INIT_FRAGMENT_LOADED, onInitFragmentLoaded, this);\n\n if (!errored) {\n sourceBufferController.abort(mediaSource, buffer);\n sourceBufferController.removeSourceBuffer(mediaSource, buffer);\n }\n }\n\n function onDataUpdateCompleted(e) {\n if (e.sender.getStreamProcessor() !== streamProcessor) return;\n eventBus.trigger(Events.TIMED_TEXT_REQUESTED, { index: 0, sender: e.sender }); //TODO make index dynamic if referring to MP?\n }\n\n function onInitFragmentLoaded(e) {\n if (e.fragmentModel !== streamProcessor.getFragmentModel() || (!e.chunk.bytes)) return;\n sourceBufferController.append(buffer, e.chunk);\n }\n\n instance = {\n initialize: initialize,\n createBuffer: createBuffer,\n getBuffer: getBuffer,\n setBuffer: setBuffer,\n getStreamProcessor: getStreamProcessor,\n setMediaSource: setMediaSource,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nTextController.__dashjs_factory_name = 'TextController';\nexport default FactoryMaker.getClassFactory(TextController);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport Error from './../vo/Error.js';\nimport EventBus from './../../core/EventBus.js';\nimport Events from './../../core/events/Events.js';\nimport FactoryMaker from '../../core/FactoryMaker.js';\nimport Debug from '../../core/Debug.js';\n\nconst TIME_SYNC_FAILED_ERROR_CODE = 1;\nconst HTTP_TIMEOUT_MS = 5000;\n\nfunction TimeSyncController() {\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n offsetToDeviceTimeMs,\n isSynchronizing,\n isInitialised,\n useManifestDateHeaderTimeSource,\n handlers,\n metricsModel,\n dashMetrics;\n\n function initialize(timingSources, useManifestDateHeader) {\n useManifestDateHeaderTimeSource = useManifestDateHeader;\n offsetToDeviceTimeMs = 0;\n isSynchronizing = false;\n isInitialised = false;\n\n // a list of known schemeIdUris and a method to call with @value\n handlers = {\n 'urn:mpeg:dash:utc:http-head:2014': httpHeadHandler,\n 'urn:mpeg:dash:utc:http-xsdate:2014': httpHandler.bind(null, xsdatetimeDecoder),\n 'urn:mpeg:dash:utc:http-iso:2014': httpHandler.bind(null, iso8601Decoder),\n 'urn:mpeg:dash:utc:direct:2014': directHandler,\n\n // some specs referencing early ISO23009-1 drafts incorrectly use\n // 2012 in the URI, rather than 2014. support these for now.\n 'urn:mpeg:dash:utc:http-head:2012': httpHeadHandler,\n 'urn:mpeg:dash:utc:http-xsdate:2012': httpHandler.bind(null, xsdatetimeDecoder),\n 'urn:mpeg:dash:utc:http-iso:2012': httpHandler.bind(null, iso8601Decoder),\n 'urn:mpeg:dash:utc:direct:2012': directHandler,\n\n // it isn't clear how the data returned would be formatted, and\n // no public examples available so http-ntp not supported for now.\n // presumably you would do an arraybuffer type xhr and decode the\n // binary data returned but I would want to see a sample first.\n 'urn:mpeg:dash:utc:http-ntp:2014': notSupportedHandler,\n\n // not clear how this would be supported in javascript (in browser)\n 'urn:mpeg:dash:utc:ntp:2014': notSupportedHandler,\n 'urn:mpeg:dash:utc:sntp:2014': notSupportedHandler\n };\n\n if (!getIsSynchronizing()) {\n attemptSync(timingSources);\n setIsInitialised(true);\n }\n }\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.metricsModel) {\n metricsModel = config.metricsModel;\n }\n\n if (config.dashMetrics) {\n dashMetrics = config.dashMetrics;\n }\n }\n\n function getOffsetToDeviceTimeMs() {\n return getOffsetMs();\n }\n\n function setIsSynchronizing(value) {\n isSynchronizing = value;\n }\n\n function getIsSynchronizing() {\n return isSynchronizing;\n }\n\n function setIsInitialised(value) {\n isInitialised = value;\n }\n\n function setOffsetMs(value) {\n offsetToDeviceTimeMs = value;\n }\n\n function getOffsetMs() {\n return offsetToDeviceTimeMs;\n }\n\n // takes xsdatetime and returns milliseconds since UNIX epoch\n // may not be necessary as xsdatetime is very similar to ISO 8601\n // which is natively understood by javascript Date parser\n function alternateXsdatetimeDecoder(xsdatetimeStr) {\n // taken from DashParser - should probably refactor both uses\n var SECONDS_IN_MIN = 60;\n var MINUTES_IN_HOUR = 60;\n var MILLISECONDS_IN_SECONDS = 1000;\n var datetimeRegex = /^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2})(?::([0-9]*)(\\.[0-9]*)?)?(?:([+\\-])([0-9]{2})([0-9]{2}))?/;\n\n var utcDate,\n timezoneOffset;\n\n var match = datetimeRegex.exec(xsdatetimeStr);\n\n // If the string does not contain a timezone offset different browsers can interpret it either\n // as UTC or as a local time so we have to parse the string manually to normalize the given date value for\n // all browsers\n utcDate = Date.UTC(\n parseInt(match[1], 10),\n parseInt(match[2], 10) - 1, // months start from zero\n parseInt(match[3], 10),\n parseInt(match[4], 10),\n parseInt(match[5], 10),\n (match[6] && (parseInt(match[6], 10) || 0)),\n (match[7] && parseFloat(match[7]) * MILLISECONDS_IN_SECONDS) || 0\n );\n // If the date has timezone offset take it into account as well\n if (match[9] && match[10]) {\n timezoneOffset = parseInt(match[9], 10) * MINUTES_IN_HOUR + parseInt(match[10], 10);\n utcDate += (match[8] === '+' ? -1 : +1) * timezoneOffset * SECONDS_IN_MIN * MILLISECONDS_IN_SECONDS;\n }\n\n return new Date(utcDate).getTime();\n }\n\n // try to use the built in parser, since xsdate is a constrained ISO8601\n // which is supported natively by Date.parse. if that fails, try a\n // regex-based version used elsewhere in this application.\n function xsdatetimeDecoder(xsdatetimeStr) {\n var parsedDate = Date.parse(xsdatetimeStr);\n\n if (isNaN(parsedDate)) {\n parsedDate = alternateXsdatetimeDecoder(xsdatetimeStr);\n }\n\n return parsedDate;\n }\n\n // takes ISO 8601 timestamp and returns milliseconds since UNIX epoch\n function iso8601Decoder(isoStr) {\n return Date.parse(isoStr);\n }\n\n // takes RFC 1123 timestamp (which is same as ISO8601) and returns\n // milliseconds since UNIX epoch\n function rfc1123Decoder(dateStr) {\n return Date.parse(dateStr);\n }\n\n function notSupportedHandler(url, onSuccessCB, onFailureCB) {\n onFailureCB();\n }\n\n function directHandler(xsdatetimeStr, onSuccessCB, onFailureCB) {\n var time = xsdatetimeDecoder(xsdatetimeStr);\n\n if (!isNaN(time)) {\n onSuccessCB(time);\n return;\n }\n\n onFailureCB();\n }\n\n function httpHandler(decoder, url, onSuccessCB, onFailureCB, isHeadRequest) {\n var oncomplete,\n onload;\n var complete = false;\n var req = new XMLHttpRequest();\n\n var verb = isHeadRequest ? 'HEAD' : 'GET';\n var urls = url.match(/\\S+/g);\n\n // according to ISO 23009-1, url could be a white-space\n // separated list of URLs. just handle one at a time.\n url = urls.shift();\n\n oncomplete = function () {\n if (complete) {\n return;\n }\n\n // we only want to pass through here once per xhr,\n // regardless of whether the load was successful.\n complete = true;\n\n // if there are more urls to try, call self.\n if (urls.length) {\n httpHandler(decoder, urls.join(' '), onSuccessCB, onFailureCB, isHeadRequest);\n } else {\n onFailureCB();\n }\n };\n\n onload = function () {\n var time,\n result;\n\n if (req.status === 200) {\n time = isHeadRequest ?\n req.getResponseHeader('Date') :\n req.response;\n\n result = decoder(time);\n\n // decoder returns NaN if non-standard input\n if (!isNaN(result)) {\n onSuccessCB(result);\n complete = true;\n }\n }\n };\n\n req.open(verb, url);\n req.timeout = HTTP_TIMEOUT_MS || 0;\n req.onload = onload;\n req.onloadend = oncomplete;\n req.send();\n }\n\n function httpHeadHandler(url, onSuccessCB, onFailureCB) {\n httpHandler(rfc1123Decoder, url, onSuccessCB, onFailureCB, true);\n }\n\n function checkForDateHeader() {\n var metrics = metricsModel.getReadOnlyMetricsFor('stream');\n var dateHeaderValue = dashMetrics.getLatestMPDRequestHeaderValueByID(metrics, 'Date');\n var dateHeaderTime = dateHeaderValue !== null ? new Date(dateHeaderValue).getTime() : Number.NaN;\n\n if (!isNaN(dateHeaderTime)) {\n setOffsetMs(dateHeaderTime - new Date().getTime());\n completeTimeSyncSequence(false, dateHeaderTime / 1000, offsetToDeviceTimeMs);\n }else {\n completeTimeSyncSequence(true);\n }\n }\n\n function completeTimeSyncSequence(failed, time, offset) {\n setIsSynchronizing(false);\n eventBus.trigger(Events.TIME_SYNCHRONIZATION_COMPLETED, { time: time, offset: offset, error: failed ? new Error(TIME_SYNC_FAILED_ERROR_CODE) : null });\n }\n\n function attemptSync(sources, sourceIndex) {\n\n // if called with no sourceIndex, use zero (highest priority)\n var index = sourceIndex || 0;\n\n // the sources should be ordered in priority from the manifest.\n // try each in turn, from the top, until either something\n // sensible happens, or we run out of sources to try.\n var source = sources[index];\n\n // callback to emit event to listeners\n var onComplete = function (time, offset) {\n var failed = !time || !offset;\n if (failed && useManifestDateHeaderTimeSource) {\n //Before falling back to binary search , check if date header exists on MPD. if so, use for a time source.\n checkForDateHeader();\n } else {\n completeTimeSyncSequence(failed, time, offset);\n }\n };\n\n setIsSynchronizing(true);\n\n if (source) {\n // check if there is a handler for this @schemeIdUri\n if (handlers.hasOwnProperty(source.schemeIdUri)) {\n // if so, call it with its @value\n handlers[source.schemeIdUri](\n source.value,\n function (serverTime) {\n // the timing source returned something useful\n var deviceTime = new Date().getTime();\n var offset = serverTime - deviceTime;\n\n setOffsetMs(offset);\n\n log('Local time: ' + new Date(deviceTime));\n log('Server time: ' + new Date(serverTime));\n log('Difference (ms): ' + offset);\n\n onComplete(serverTime, offset);\n },\n function () {\n // the timing source was probably uncontactable\n // or returned something we can't use - try again\n // with the remaining sources\n attemptSync(sources, index + 1);\n }\n );\n } else {\n // an unknown schemeIdUri must have been found\n // try again with the remaining sources\n attemptSync(sources, index + 1);\n }\n } else {\n // no valid time source could be found, just use device time\n setOffsetMs(0);\n onComplete();\n }\n }\n\n function reset() {\n setIsInitialised(false);\n setIsSynchronizing(false);\n }\n\n instance = {\n initialize: initialize,\n getOffsetToDeviceTimeMs: getOffsetToDeviceTimeMs,\n setConfig: setConfig,\n reset: reset\n };\n\n return instance;\n}\n\nTimeSyncController.__dashjs_factory_name = 'TimeSyncController';\nlet factory = FactoryMaker.getSingletonFactory(TimeSyncController);\nfactory.TIME_SYNC_FAILED_ERROR_CODE = TIME_SYNC_FAILED_ERROR_CODE;\nfactory.HTTP_TIMEOUT_MS = HTTP_TIMEOUT_MS;\nexport default factory;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport EventBus from '../../core/EventBus.js';\nimport Events from '../../core/events/Events.js';\nimport FactoryMaker from '../../core/FactoryMaker.js';\nimport X2JS from '../../../externals/xml2json.js';\n\nconst RESOLVE_TYPE_ONLOAD = 'onLoad';\nconst RESOLVE_TYPE_ONACTUATE = 'onActuate';\nconst ELEMENT_TYPE_PERIOD = 'Period';\nconst ELEMENT_TYPE_ADAPTATIONSET = 'AdaptationSet';\nconst ELEMENT_TYPE_EVENTSTREAM = 'EventStream';\nconst RESOLVE_TO_ZERO = 'urn:mpeg:dash:resolve-to-zero:2013';\n\nfunction XlinkController(config) {\n\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n\n let xlinkLoader = config.xlinkLoader;\n\n let instance,\n matchers,\n iron,\n manifest,\n converter;\n\n function setup() {\n eventBus.on(Events.XLINK_ELEMENT_LOADED, onXlinkElementLoaded, instance);\n }\n\n function setMatchers(value) {\n matchers = value;\n }\n\n function setIron(value) {\n iron = value;\n }\n\n /**\n *

Triggers the resolution of the xlink.onLoad attributes in the manifest file

\n * @param manifest\n */\n function resolveManifestOnLoad(mpd) {\n var elements;\n // First resolve all periods, so unnecessary requests inside onLoad Periods with Default content are avoided\n converter = new X2JS(matchers, '', true);\n manifest = mpd;\n elements = getElementsToResolve(manifest.Period_asArray, manifest, ELEMENT_TYPE_PERIOD, RESOLVE_TYPE_ONLOAD);\n resolve(elements, ELEMENT_TYPE_PERIOD, RESOLVE_TYPE_ONLOAD);\n }\n\n function reset() {\n eventBus.off(Events.XLINK_ELEMENT_LOADED, onXlinkElementLoaded, instance);\n }\n\n function resolve(elements, type, resolveType) {\n var resolveObject = {};\n var element,\n url,\n i;\n\n resolveObject.elements = elements;\n resolveObject.type = type;\n resolveObject.resolveType = resolveType;\n // If nothing to resolve, directly call allElementsLoaded\n if (resolveObject.elements.length === 0) {\n onXlinkAllElementsLoaded(resolveObject);\n }\n for (i = 0; i < resolveObject.elements.length; i++) {\n element = resolveObject.elements[i];\n if (element.url.indexOf('http://') !== -1) {\n url = element.url;\n } else {\n url = element.originalContent.BaseURL + element.url;\n }\n xlinkLoader.load(url, element, resolveObject);\n }\n }\n\n function onXlinkElementLoaded(event) {\n var element,\n resolveObject,\n index;\n\n var openingTag = '';\n var closingTag = '';\n var mergedContent = '';\n\n element = event.element;\n resolveObject = event.resolveObject;\n // if the element resolved into content parse the content\n if (element.resolvedContent) {\n // we add a parent elements so the converter is able to parse multiple elements of the same type which are not wrapped inside a container\n index = element.resolvedContent.indexOf('>') + 1; //find the closing position of the xml tag\n mergedContent = element.resolvedContent.substr(0,index) + openingTag + element.resolvedContent.substr(index) + closingTag;\n element.resolvedContent = converter.xml_str2json(mergedContent);\n }\n if (isResolvingFinished(resolveObject)) {\n onXlinkAllElementsLoaded(resolveObject);\n }\n }\n\n // We got to wait till all elements of the current queue are resolved before merging back\n function onXlinkAllElementsLoaded (resolveObject) {\n var elements = [];\n var i,\n obj;\n\n mergeElementsBack(resolveObject);\n if (resolveObject.resolveType === RESOLVE_TYPE_ONACTUATE) {\n eventBus.trigger(Events.XLINK_READY, {manifest: manifest});\n }\n if (resolveObject.resolveType === RESOLVE_TYPE_ONLOAD) {\n switch (resolveObject.type) {\n // Start resolving the other elements. We can do Adaptation Set and EventStream in parallel\n case ELEMENT_TYPE_PERIOD:\n for (i = 0; i < manifest[ELEMENT_TYPE_PERIOD + '_asArray'].length; i++) {\n obj = manifest[ELEMENT_TYPE_PERIOD + '_asArray'][i];\n if (obj.hasOwnProperty(ELEMENT_TYPE_ADAPTATIONSET + '_asArray')) {\n elements = elements.concat(getElementsToResolve(obj[ELEMENT_TYPE_ADAPTATIONSET + '_asArray'], obj, ELEMENT_TYPE_ADAPTATIONSET, RESOLVE_TYPE_ONLOAD));\n }\n if (obj.hasOwnProperty(ELEMENT_TYPE_EVENTSTREAM + '_asArray')) {\n elements = elements.concat(getElementsToResolve(obj[ELEMENT_TYPE_EVENTSTREAM + '_asArray'], obj, ELEMENT_TYPE_EVENTSTREAM, RESOLVE_TYPE_ONLOAD));\n }\n }\n resolve(elements, ELEMENT_TYPE_ADAPTATIONSET, RESOLVE_TYPE_ONLOAD);\n break;\n case ELEMENT_TYPE_ADAPTATIONSET:\n // TODO: Resolve SegmentList here\n eventBus.trigger(Events.XLINK_READY, {manifest: manifest});\n break;\n }\n }\n }\n\n // Returns the elements with the specific resolve Type\n function getElementsToResolve(elements, parentElement, type, resolveType) {\n var toResolve = [];\n var element,\n i,\n xlinkObject;\n // first remove all the resolve-to-zero elements\n for (i = elements.length - 1; i >= 0; i--) {\n element = elements[i];\n if (element.hasOwnProperty('xlink:href') && element['xlink:href'] === RESOLVE_TO_ZERO) {\n elements.splice(i, 1);\n }\n }\n // now get the elements with the right resolve type\n for (i = 0; i < elements.length; i++) {\n element = elements[i];\n if (element.hasOwnProperty('xlink:href') && element.hasOwnProperty('xlink:actuate') && element['xlink:actuate'] === resolveType) {\n xlinkObject = createXlinkObject(element['xlink:href'], parentElement, type, i, resolveType, element);\n toResolve.push(xlinkObject);\n }\n }\n return toResolve;\n }\n\n function mergeElementsBack(resolveObject) {\n var resolvedElements = [];\n var element,\n type,\n obj,\n i,\n j,\n k;\n // Start merging back from the end because of index shifting. Note that the elements with the same parent have to be ordered by index ascending\n for (i = resolveObject.elements.length - 1; i >= 0; i --) {\n element = resolveObject.elements[i];\n type = element.type + '_asArray';\n\n // Element couldn't be resolved or is TODO Inappropriate target: Remove all Xlink attributes\n if (!element.resolvedContent || isInappropriateTarget()) {\n delete element.originalContent['xlink:actuate'];\n delete element.originalContent['xlink:href'];\n resolvedElements.push(element.originalContent);\n }\n // Element was successfully resolved\n else if (element.resolvedContent) {\n for (j = 0; j < element.resolvedContent[type].length; j++) {\n //TODO Contains another Xlink attribute with xlink:actuate set to onload. Remove all xLink attributes\n obj = element.resolvedContent[type][j];\n resolvedElements.push(obj);\n }\n }\n // Replace the old elements in the parent with the resolved ones\n element.parentElement[type].splice(element.index, 1);\n for (k = 0; k < resolvedElements.length; k++) {\n element.parentElement[type].splice(element.index + k, 0, resolvedElements[k]);\n }\n resolvedElements = [];\n }\n if (resolveObject.elements.length > 0) {\n iron.run(manifest);\n }\n }\n\n function createXlinkObject(url, parentElement, type, index, resolveType, originalContent) {\n return {\n url: url,\n parentElement: parentElement,\n type: type,\n index: index,\n resolveType: resolveType,\n originalContent: originalContent,\n resolvedContent: null,\n resolved: false\n };\n }\n\n // Check if all pending requests are finished\n function isResolvingFinished(elementsToResolve) {\n var i,\n obj;\n for (i = 0; i < elementsToResolve.elements.length; i++) {\n obj = elementsToResolve.elements[i];\n if (obj.resolved === false) {\n return false;\n }\n }\n return true;\n }\n\n // TODO : Do some syntax check here if the target is valid or not\n function isInappropriateTarget() {\n return false;\n }\n\n instance = {\n resolveManifestOnLoad: resolveManifestOnLoad,\n setMatchers: setMatchers,\n setIron: setIron,\n reset: reset\n };\n\n setup();\n return instance;\n}\n\nXlinkController.__dashjs_factory_name = 'XlinkController';\nexport default FactoryMaker.getClassFactory(XlinkController);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport DVBErrorsTranslator from './utils/DVBErrorsTranslator.js';\nimport MetricsReportingEvents from './MetricsReportingEvents.js';\nimport MetricsCollectionController from './controllers/MetricsCollectionController.js';\nimport MetricsHandlerFactory from './metrics/MetricsHandlerFactory.js';\nimport ReportingFactory from './reporting/ReportingFactory.js';\nimport FactoryMaker from '../../core/FactoryMaker.js';\n\nfunction MetricsReporting() {\n\n let context = this.context;\n let instance;\n\n let dvbErrorsTranslator;\n\n /**\n * Create a MetricsCollectionController, and a DVBErrorsTranslator\n * @return {MetricsCollectionController} Metrics Collection Controller\n */\n function createMetricsReporting(config) {\n dvbErrorsTranslator = DVBErrorsTranslator(context).getInstance({\n eventBus: config.eventBus,\n metricsModel: config.metricsModel,\n });\n\n return MetricsCollectionController(context).create(config);\n }\n\n /**\n * Get the ReportingFactory to allow new reporters to be registered\n * @return {ReportingFactory} Reporting Factory\n */\n function getReportingFactory() {\n return ReportingFactory(context).getInstance();\n }\n\n /**\n * Get the MetricsHandlerFactory to allow new handlers to be registered\n * @return {MetricsHandlerFactory} Metrics Handler Factory\n */\n function getMetricsHandlerFactory() {\n return MetricsHandlerFactory(context).getInstance();\n }\n\n instance = {\n createMetricsReporting: createMetricsReporting,\n getReportingFactory: getReportingFactory,\n getMetricsHandlerFactory: getMetricsHandlerFactory\n };\n\n return instance;\n}\n\nMetricsReporting.__dashjs_factory_name = 'MetricsReporting';\nlet factory = FactoryMaker.getClassFactory(MetricsReporting);\nfactory.events = MetricsReportingEvents;\nexport default factory;\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport EventsBase from '../../core/events/EventsBase.js';\n\nclass MetricsReportingEvents extends EventsBase {\n constructor () {\n super();\n\n this.METRICS_INITIALISATION_COMPLETE = 'internal_metricsReportingInitialized';\n this.BECAME_REPORTING_PLAYER = 'internal_becameReportingPlayer';\n }\n}\n\nlet metricsReportingEvents = new MetricsReportingEvents();\nexport default metricsReportingEvents;\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport MetricsController from './MetricsController.js';\nimport ManifestParsing from '../utils/ManifestParsing.js';\nimport FactoryMaker from '../../../core/FactoryMaker.js';\nimport MetricsReportingEvents from '../MetricsReportingEvents.js';\nimport Events from '../../../core/events/Events.js';\n\nfunction MetricsCollectionController(config) {\n\n let metricsControllers = {};\n\n let context = this.context;\n let eventBus = config.eventBus;\n\n function update(e) {\n if (e.error) {\n return;\n }\n\n // start by assuming all existing controllers need removing\n let controllersToRemove = Object.keys(metricsControllers);\n\n const metrics = ManifestParsing(context).getInstance({\n dashManifestModel: config.dashManifestModel\n }).getMetrics(e.manifest);\n\n metrics.forEach(m => {\n const key = JSON.stringify(m);\n\n if (!metricsControllers.hasOwnProperty(key)) {\n try {\n var controller = MetricsController(context).create(config);\n controller.initialize(m);\n metricsControllers[key] = controller;\n } catch (e) {\n // fail quietly\n }\n } else {\n // we still need this controller - delete from removal list\n controllersToRemove.splice(key, 1);\n }\n });\n\n // now remove the unwanted controllers\n controllersToRemove.forEach(c => {\n metricsControllers[c].reset();\n delete metricsControllers[c];\n });\n\n eventBus.trigger(\n MetricsReportingEvents.METRICS_INITIALISATION_COMPLETE\n );\n }\n\n function reset() {\n Object.keys(metricsControllers).forEach(key => {\n metricsControllers[key].reset();\n });\n\n metricsControllers = {};\n }\n\n function setup() {\n\n\n eventBus.on(Events.MANIFEST_UPDATED, update);\n eventBus.on(Events.STREAM_TEARDOWN_COMPLETE, reset);\n }\n\n setup();\n\n // don't export any actual methods\n return {};\n}\n\nMetricsCollectionController.__dashjs_factory_name = 'MetricsCollectionController';\nexport default FactoryMaker.getClassFactory(MetricsCollectionController);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../../core/FactoryMaker.js';\nimport RangeController from './RangeController.js';\nimport ReportingController from './ReportingController.js';\nimport MetricsHandlersController from './MetricsHandlersController.js';\n\nfunction MetricsController(config) {\n\n let metricsHandlersController,\n reportingController,\n rangeController,\n instance;\n\n let context = this.context;\n\n function initialize(metricsEntry) {\n try {\n rangeController = RangeController(context).create({\n mediaElement: config.mediaElement\n });\n\n rangeController.initialize(metricsEntry.Range);\n\n reportingController = ReportingController(context).create({\n log: config.log\n });\n\n reportingController.initialize(metricsEntry.Reporting, rangeController);\n\n metricsHandlersController = MetricsHandlersController(context).create({\n log: config.log,\n eventBus: config.eventBus,\n });\n\n metricsHandlersController.initialize(metricsEntry.metrics, reportingController);\n } catch (e) {\n reset();\n throw e;\n }\n }\n\n function reset() {\n if (metricsHandlersController) {\n metricsHandlersController.reset();\n }\n\n if (reportingController) {\n reportingController.reset();\n }\n\n if (rangeController) {\n rangeController.reset();\n }\n }\n\n instance = {\n initialize: initialize,\n reset: reset\n };\n\n return instance;\n}\n\nMetricsController.__dashjs_factory_name = 'MetricsController';\nexport default FactoryMaker.getClassFactory(MetricsController);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport MetricsHandlerFactory from '../metrics/MetricsHandlerFactory.js';\nimport FactoryMaker from '../../../core/FactoryMaker.js';\nimport MediaPlayerEvents from '../../MediaPlayerEvents.js';\n\nfunction MetricsHandlersController(config) {\n let handlers = [];\n\n let instance;\n let context = this.context;\n let eventBus = config.eventBus;\n\n let metricsHandlerFactory = MetricsHandlerFactory(context).getInstance({\n log: config.log,\n eventBus: config.eventBus\n });\n\n function handle(e) {\n handlers.forEach(handler => {\n handler.handleNewMetric(e.metric, e.value, e.mediaType);\n });\n }\n\n function initialize(metrics, reportingController) {\n metrics.split(',').forEach(\n (m, midx, ms) => {\n var handler;\n\n // there is a bug in ISO23009-1 where the metrics attribute\n // is a comma-separated list but HttpList key can contain a\n // comma enclosed by ().\n if ((m.indexOf('(') !== -1) && m.indexOf(')') === -1) {\n let nextm = ms[midx + 1];\n\n if (nextm &&\n (nextm.indexOf('(') === -1) &&\n (nextm.indexOf(')') !== -1)) {\n m += ',' + nextm;\n\n // delete the next metric so forEach does not visit.\n delete ms[midx + 1];\n }\n }\n\n handler = metricsHandlerFactory.create(\n m,\n reportingController\n );\n\n if (handler) {\n handlers.push(handler);\n }\n }\n );\n\n eventBus.on(\n MediaPlayerEvents.METRIC_ADDED,\n handle,\n instance\n );\n\n eventBus.on(\n MediaPlayerEvents.METRIC_UPDATED,\n handle,\n instance\n );\n }\n\n function reset() {\n eventBus.off(\n MediaPlayerEvents.METRIC_ADDED,\n handle,\n instance\n );\n\n eventBus.off(\n MediaPlayerEvents.METRIC_UPDATED,\n handle,\n instance\n );\n\n handlers.forEach(handler => handler.reset());\n\n handlers = [];\n }\n\n instance = {\n initialize: initialize,\n reset: reset\n };\n\n return instance;\n}\n\nMetricsHandlersController.__dashjs_factory_name = 'MetricsHandlersController';\nexport default FactoryMaker.getClassFactory(MetricsHandlersController);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../../core/FactoryMaker.js';\nimport CustomTimeRanges from '../../utils/CustomTimeRanges.js';\n\nfunction RangeController(config) {\n\n let useWallClockTime = false;\n let context = this.context;\n let instance,\n ranges;\n\n let mediaElement = config.mediaElement;\n\n function initialize(rs) {\n if (rs && rs.length) {\n rs.forEach(r => {\n var start = r.starttime;\n var end = start + r.duration;\n\n ranges.add(start, end);\n });\n\n useWallClockTime = !!rs[0]._useWallClockTime;\n }\n }\n\n function reset() {\n ranges.clear();\n }\n\n function setup() {\n ranges = CustomTimeRanges(context).create();\n }\n\n function isEnabled() {\n var numRanges = ranges.length;\n var time;\n\n if (!numRanges) {\n return true;\n }\n\n // When not present, DASH Metrics reporting is requested\n // for the whole duration of the content.\n time = useWallClockTime ?\n (new Date().getTime() / 1000) :\n mediaElement.currentTime;\n\n for (var i = 0; i < numRanges; i += 1) {\n let start = ranges.start(i);\n let end = ranges.end(i);\n\n if ((start <= time) && (time < end)) {\n return true;\n }\n }\n\n return false;\n }\n\n instance = {\n initialize: initialize,\n reset: reset,\n isEnabled: isEnabled\n };\n\n setup();\n\n return instance;\n}\n\nRangeController.__dashjs_factory_name = 'RangeController';\nexport default FactoryMaker.getClassFactory(RangeController);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../../core/FactoryMaker.js';\nimport ReportingFactory from '../reporting/ReportingFactory.js';\n\nfunction ReportingController(config) {\n\n let reporters = [];\n let instance;\n\n let reportingFactory = ReportingFactory(this.context).getInstance({\n log: config.log\n });\n\n function initialize(reporting, rangeController) {\n // \"if multiple Reporting elements are present, it is expected that\n // the client processes one of the recognized reporting schemes.\"\n // to ignore this, and support multiple Reporting per Metric,\n // simply change the 'some' below to 'forEach'\n reporting.some(r => {\n var reporter = reportingFactory.create(r, rangeController);\n\n if (reporter) {\n reporters.push(reporter);\n return true;\n }\n });\n }\n\n function reset() {\n reporters.forEach(r => r.reset());\n reporters = [];\n }\n\n function report(type, vos) {\n reporters.forEach(r => r.report(type, vos));\n }\n\n instance = {\n initialize: initialize,\n reset: reset,\n report: report\n };\n\n return instance;\n}\n\nReportingController.__dashjs_factory_name = 'ReportingController';\nexport default FactoryMaker.getClassFactory(ReportingController);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../../core/FactoryMaker.js';\nimport BufferLevel from './handlers/BufferLevelHandler.js';\nimport DVBErrors from './handlers/DVBErrorsHandler.js';\nimport HttpList from './handlers/HttpListHandler.js';\nimport GenericMetricHandler from './handlers/GenericMetricHandler.js';\n\nfunction MetricsHandlerFactory(config) {\n\n let instance;\n let log = config.log;\n\n // group 1: key, [group 3: n [, group 5: type]]\n let keyRegex = /([a-zA-Z]*)(\\(([0-9]*)(\\,\\s*([a-zA-Z]*))?\\))?/;\n\n let context = this.context;\n let knownFactoryProducts = {\n BufferLevel: BufferLevel,\n DVBErrors: DVBErrors,\n HttpList: HttpList,\n PlayList: GenericMetricHandler,\n RepSwitchList: GenericMetricHandler,\n TcpList: GenericMetricHandler\n };\n\n function create(listType, reportingController) {\n var matches = listType.match(keyRegex);\n var handler;\n\n if (!matches) {\n return;\n }\n\n try {\n handler = knownFactoryProducts[matches[1]](context).create({\n eventBus: config.eventBus\n });\n\n handler.initialize(\n matches[1],\n reportingController,\n matches[3],\n matches[5]\n );\n } catch (e) {\n handler = null;\n\n log(`MetricsHandlerFactory: Could not create handler for type ${matches[1]} with args ${matches[3]}, ${matches[5]} (${e.message})`);\n }\n\n return handler;\n }\n\n function register(key, handler) {\n knownFactoryProducts[key] = handler;\n }\n\n function unregister(key) {\n delete knownFactoryProducts[key];\n }\n\n instance = {\n create: create,\n register: register,\n unregister: unregister\n };\n\n return instance;\n}\n\nMetricsHandlerFactory.__dashjs_factory_name = 'MetricsHandlerFactory';\nexport default FactoryMaker.getSingletonFactory(MetricsHandlerFactory);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../../../core/FactoryMaker.js';\nimport HandlerHelpers from '../../utils/HandlerHelpers.js';\n\nfunction BufferLevelHandler() {\n\n let instance,\n reportingController,\n n,\n name,\n interval,\n lastReportedTime;\n\n let context = this.context;\n let handlerHelpers = HandlerHelpers(context).getInstance();\n\n let storedVOs = [];\n\n function getLowestBufferLevelVO() {\n try {\n return Object.keys(storedVOs).map(\n key => storedVOs[key]\n ).reduce(\n (a, b) => {\n return (a.level < b.level) ? a : b;\n }\n );\n } catch (e) {\n return;\n }\n }\n\n function intervalCallback() {\n var vo = getLowestBufferLevelVO();\n\n if (vo) {\n if (lastReportedTime !== vo.t) {\n lastReportedTime = vo.t;\n reportingController.report(name, vo);\n }\n }\n }\n\n function initialize(basename, rc, n_ms) {\n if (rc) {\n // this will throw if n is invalid, to be\n // caught by the initialize caller.\n n = handlerHelpers.validateN(n_ms);\n reportingController = rc;\n name = handlerHelpers.reconstructFullMetricName(basename, n_ms);\n interval = setInterval(intervalCallback, n);\n }\n }\n\n function reset() {\n clearInterval(interval);\n interval = null;\n n = 0;\n reportingController = null;\n lastReportedTime = null;\n }\n\n function handleNewMetric(metric, vo, type) {\n if (metric === 'BufferLevel') {\n storedVOs[type] = vo;\n }\n }\n\n instance = {\n initialize: initialize,\n reset: reset,\n handleNewMetric: handleNewMetric\n };\n\n return instance;\n}\n\nBufferLevelHandler.__dashjs_factory_name = 'BufferLevelHandler';\nexport default FactoryMaker.getClassFactory(BufferLevelHandler);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../../../core/FactoryMaker.js';\nimport MetricsReportingEvents from '../../MetricsReportingEvents.js';\n\nfunction DVBErrorsHandler(config) {\n\n let instance,\n reportingController;\n\n let eventBus = config.eventBus;\n\n function onInitialisationComplete() {\n // we only want to report this once per call to initialize\n eventBus.off(\n MetricsReportingEvents.METRICS_INITIALISATION_COMPLETE,\n onInitialisationComplete,\n this\n );\n\n // Note: A Player becoming a reporting Player is itself\n // something which is recorded by the DVBErrors metric.\n eventBus.trigger(\n MetricsReportingEvents.BECAME_REPORTING_PLAYER\n );\n }\n\n function initialize(unused, rc) {\n if (rc) {\n reportingController = rc;\n\n eventBus.on(\n MetricsReportingEvents.METRICS_INITIALISATION_COMPLETE,\n onInitialisationComplete,\n this\n );\n }\n }\n\n function reset() {\n reportingController = null;\n }\n\n function handleNewMetric(metric, vo) {\n // simply pass metric straight through\n if (metric === 'DVBErrors') {\n if (reportingController) {\n reportingController.report(metric, vo);\n }\n }\n }\n\n instance = {\n initialize: initialize,\n reset: reset,\n handleNewMetric: handleNewMetric\n };\n\n return instance;\n}\n\nexport default FactoryMaker.getClassFactory(DVBErrorsHandler);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../../../core/FactoryMaker.js';\n\nfunction GenericMetricHandler() {\n\n let instance,\n metricName,\n reportingController;\n\n function initialize(name, rc) {\n metricName = name;\n reportingController = rc;\n }\n\n function reset() {\n reportingController = null;\n metricName = undefined;\n }\n\n function handleNewMetric(metric, vo) {\n // simply pass metric straight through\n if (metric === metricName) {\n if (reportingController) {\n reportingController.report(metricName, vo);\n }\n }\n }\n\n instance = {\n initialize: initialize,\n reset: reset,\n handleNewMetric: handleNewMetric\n };\n\n return instance;\n}\n\nGenericMetricHandler.__dashjs_factory_name = 'GenericMetricHandler';\nexport default FactoryMaker.getClassFactory(GenericMetricHandler);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../../../core/FactoryMaker.js';\nimport HandlerHelpers from '../../utils/HandlerHelpers.js';\n\nfunction HttpListHandler() {\n\n let instance,\n reportingController,\n n,\n type,\n name,\n interval;\n\n let storedVos = [];\n\n let handlerHelpers = HandlerHelpers(this.context).getInstance();\n\n function intervalCallback() {\n var vos = storedVos;\n\n if (vos.length) {\n if (reportingController) {\n reportingController.report(name, vos);\n }\n }\n\n storedVos = [];\n }\n\n function initialize(basename, rc, n_ms, requestType) {\n if (rc) {\n\n // this will throw if n is invalid, to be\n // caught by the initialize caller.\n n = handlerHelpers.validateN(n_ms);\n\n reportingController = rc;\n\n if (requestType && requestType.length) {\n type = requestType;\n }\n\n name = handlerHelpers.reconstructFullMetricName(\n basename,\n n_ms,\n requestType\n );\n\n interval = setInterval(intervalCallback, n);\n }\n }\n\n function reset() {\n clearInterval(interval);\n interval = null;\n n = null;\n type = null;\n storedVos = [];\n reportingController = null;\n }\n\n function handleNewMetric(metric, vo) {\n if (metric === 'HttpList') {\n if (!type || (type === vo.type)) {\n storedVos.push(vo);\n }\n }\n }\n\n instance = {\n initialize: initialize,\n reset: reset,\n handleNewMetric: handleNewMetric\n };\n\n return instance;\n}\n\nHttpListHandler.__dashjs_factory_name = 'HttpListHandler';\nexport default FactoryMaker.getClassFactory(HttpListHandler);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../../core/FactoryMaker.js';\nimport DVBReporting from './reporters/DVBReporting.js';\n\nfunction ReportingFactory(config) {\n\n let knownReportingSchemeIdUris = {\n 'urn:dvb:dash:reporting:2014': DVBReporting\n };\n\n let context = this.context;\n let log = config.log;\n let instance;\n\n function create(entry, rangeController) {\n var reporting;\n\n try {\n reporting = knownReportingSchemeIdUris[entry.schemeIdUri](context).create();\n\n reporting.initialize(entry, rangeController);\n } catch (e) {\n reporting = null;\n\n log(`ReportingFactory: could not create Reporting with schemeIdUri ${entry.schemeIdUri} (${e.message})`);\n }\n\n return reporting;\n }\n\n function register(schemeIdUri, moduleName) {\n knownReportingSchemeIdUris[schemeIdUri] = moduleName;\n }\n\n function unregister(schemeIdUri) {\n delete knownReportingSchemeIdUris[schemeIdUri];\n }\n\n instance = {\n create: create,\n register: register,\n unregister: unregister\n };\n\n return instance;\n}\n\nReportingFactory.__dashjs_factory_name = 'ReportingFactory';\nexport default FactoryMaker.getSingletonFactory(ReportingFactory);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport FactoryMaker from '../../../../core/FactoryMaker.js';\nimport MetricSerialiser from '../../utils/MetricSerialiser.js';\nimport RNG from '../../utils/RNG.js';\n\nfunction DVBReporting() {\n let instance;\n\n let context = this.context;\n let metricSerialiser = MetricSerialiser(context).getInstance();\n let randomNumberGenerator = RNG(context).getInstance();\n\n let USE_DRAFT_DVB_SPEC = true;\n let isReportingPlayer = false;\n let reportingPlayerStatusDecided = false;\n let reportingUrl = null;\n let rangeController = null;\n let allowPendingRequestsToCompleteOnReset = true;\n let pendingRequests = [];\n\n function doGetRequest(url, successCB, failureCB) {\n var req = new XMLHttpRequest();\n var oncomplete = function () {\n var reqIndex = pendingRequests.indexOf(req);\n\n if (reqIndex === -1) {\n return;\n } else {\n pendingRequests.splice(reqIndex, 1);\n }\n\n if ((req.status >= 200) && (req.status < 300)) {\n if (successCB) {\n successCB();\n }\n } else {\n if (failureCB) {\n failureCB();\n }\n }\n };\n\n pendingRequests.push(req);\n\n try {\n req.open('GET', url);\n req.onloadend = oncomplete;\n req.onerror = oncomplete;\n req.send();\n } catch (e) {\n req.onerror();\n }\n }\n\n function report(type, vos) {\n if (!Array.isArray(vos)) {\n vos = [vos];\n }\n\n // If the Player is not a reporting Player, then the Player shall\n // not report any errors.\n // ... In addition to any time restrictions specified by a Range\n // element within the Metrics element.\n if (isReportingPlayer && rangeController.isEnabled()) {\n\n // This reporting mechanism operates by creating one HTTP GET\n // request for every entry in the top level list of the metric.\n vos.forEach(function (vo) {\n var url = metricSerialiser.serialise(vo);\n\n // this has been proposed for errata\n if (USE_DRAFT_DVB_SPEC && (type !== 'DVBErrors')) {\n url = `metricname=${type}&${url}`;\n }\n\n // Take the value of the @reportingUrl attribute, append a\n // question mark ('?') character and then append the string\n // created in the previous step.\n url = `${reportingUrl}?${url}`;\n\n // Make an HTTP GET request to the URL contained within the\n // string created in the previous step.\n doGetRequest(url, null, function () {\n // If the Player is unable to make the report, for\n // example because the @reportingUrl is invalid, the\n // host cannot be reached, or an HTTP status code other\n // than one in the 200 series is received, the Player\n // shall cease being a reporting Player for the\n // duration of the MPD.\n isReportingPlayer = false;\n });\n });\n }\n }\n\n function initialize(entry, rc) {\n var probability;\n\n rangeController = rc;\n\n reportingUrl = entry['dvb:reportingUrl'];\n\n // If a required attribute is missing, the Reporting descriptor may\n // be ignored by the Player\n if (!reportingUrl) {\n throw new Error(\n 'required parameter missing (dvb:reportingUrl)'\n );\n }\n\n // A Player's status, as a reporting Player or not, shall remain\n // static for the duration of the MPD, regardless of MPD updates.\n // (i.e. only calling reset (or failure) changes this state)\n if (!reportingPlayerStatusDecided) {\n // NOTE: DVB spec has a typo where it incorrectly references the\n // priority attribute, which should be probability\n probability = entry['dvb:probability'] || entry['dvb:priority'] || 0;\n // If the @priority attribute is set to 1000, it shall be a reporting Player.\n // If the @priority attribute is missing, the Player shall not be a reporting Player.\n // For any other value of the @probability attribute, it shall decide at random whether to be a\n // reporting Player, such that the probability of being one is @probability/1000.\n if (probability && (probability === 1000 || ((probability / 1000) >= randomNumberGenerator.random()))) {\n isReportingPlayer = true;\n }\n\n reportingPlayerStatusDecided = true;\n }\n }\n\n function reset() {\n if (!allowPendingRequestsToCompleteOnReset) {\n pendingRequests.forEach(req => req.abort());\n pendingRequests = [];\n }\n\n reportingPlayerStatusDecided = false;\n isReportingPlayer = false;\n reportingUrl = null;\n rangeController = null;\n }\n\n instance = {\n report: report,\n initialize: initialize,\n reset: reset\n };\n\n return instance;\n}\n\nDVBReporting.__dashjs_factory_name = 'DVBReporting';\nexport default FactoryMaker.getClassFactory(DVBReporting);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport DVBErrors from '../vo/DVBErrors.js';\nimport Events from '../../../core/events/Events.js';\nimport MediaPlayerEvents from '../../MediaPlayerEvents.js';\nimport MetricsReportingEvents from '../MetricsReportingEvents.js';\nimport FactoryMaker from '../../../core/FactoryMaker.js';\n\nfunction DVBErrorsTranslator(config) {\n\n let instance;\n let eventBus = config.eventBus;\n let metricModel = config.metricsModel;\n let mpd;\n\n function onManifestUpdate(e) {\n if (e.error) {\n return;\n }\n\n mpd = e.manifest;\n }\n\n function onBecameReporter() {\n report({\n errorcode: DVBErrors.BECAME_REPORTER\n });\n }\n\n function handleHttpMetric(vo) {\n if ((vo.responsecode === 0) || // connection failure - unknown\n (vo.responsecode >= 400) || // HTTP error status code\n (vo.responsecode < 100) || // unknown status codes\n (vo.responsecode >= 600)) { // unknown status codes\n report({\n errorcode: vo.responsecode || DVBErrors.CONNECTION_ERROR,\n url: vo.url,\n terror: vo.tresponse\n });\n }\n }\n\n function onMetricEvent(e) {\n switch (e.metric) {\n case 'HttpList':\n handleHttpMetric(e.value);\n break;\n default:\n break;\n }\n }\n\n function onPlaybackError(e) {\n var reason = e.error ? e.error.code : 0;\n var errorcode;\n\n switch (reason) {\n case MediaError.MEDIA_ERR_NETWORK:\n errorcode = DVBErrors.CONNECTION_ERROR;\n break;\n case MediaError.MEDIA_ERR_DECODE:\n errorcode = DVBErrors.CORRUPT_MEDIA_OTHER;\n break;\n default:\n return;\n }\n\n report({\n errorcode: errorcode\n });\n }\n\n function report(vo) {\n var o = new DVBErrors();\n\n if (!mpd) {\n return;\n }\n\n for (const key in vo) {\n if (vo.hasOwnProperty(key)) {\n o[key] = vo[key];\n }\n }\n\n if (!o.mpdurl) {\n o.mpdurl = mpd.originalUrl || mpd.url;\n }\n\n if (!o.servicelocation) {\n // note, this will need changing when we get BaseURL switching\n o.servicelocation = mpd.BaseURL.serviceLocation;\n }\n\n if (!o.terror) {\n o.terror = new Date();\n }\n\n metricModel.addDVBErrors(o);\n }\n\n function initialise() {\n eventBus.on(Events.MANIFEST_UPDATED, onManifestUpdate, instance);\n eventBus.on(MediaPlayerEvents.METRIC_ADDED, onMetricEvent, instance);\n eventBus.on(MediaPlayerEvents.METRIC_UPDATED, onMetricEvent, instance);\n eventBus.on(MediaPlayerEvents.PLAYBACK_ERROR, onPlaybackError, instance);\n eventBus.on(\n MetricsReportingEvents.BECAME_REPORTING_PLAYER,\n onBecameReporter,\n instance\n );\n }\n\n function reset() {\n eventBus.off(Events.MANIFEST_UPDATED, onManifestUpdate, instance);\n eventBus.off(MediaPlayerEvents.METRIC_ADDED, onMetricEvent, instance);\n eventBus.off(MediaPlayerEvents.METRIC_UPDATED, onMetricEvent, instance);\n eventBus.off(MediaPlayerEvents.PLAYBACK_ERROR, onPlaybackError, instance);\n eventBus.off(\n MetricsReportingEvents.BECAME_REPORTING_PLAYER,\n onBecameReporter,\n instance\n );\n }\n\n instance = {\n initialise: initialise,\n reset: reset\n };\n\n initialise();\n\n return instance;\n}\n\nDVBErrorsTranslator.__dashjs_factory_name = 'DVBErrorsTranslator';\nexport default FactoryMaker.getSingletonFactory(DVBErrorsTranslator);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../../core/FactoryMaker.js';\n\nfunction HandlerHelpers() {\n return {\n reconstructFullMetricName: function (key, n, type) {\n var mn = key;\n\n if (n) {\n mn += '(' + n;\n\n if (type && type.length) {\n mn += ',' + type;\n }\n\n mn += ')';\n }\n\n return mn;\n },\n\n validateN: function (n_ms) {\n if (!n_ms) {\n throw 'missing n';\n }\n\n if (isNaN(n_ms)) {\n throw 'n is NaN';\n }\n\n // n is a positive integer is defined to refer to the metric\n // in which the buffer level is recorded every n ms.\n if (n_ms < 0) {\n throw 'n must be positive';\n }\n\n return n_ms;\n }\n };\n}\n\nHandlerHelpers.__dashjs_factory_name = 'HandlerHelpers';\nexport default FactoryMaker.getSingletonFactory(HandlerHelpers);\n","import Metrics from '../vo/Metrics.js';\nimport Range from '../vo/Range.js';\nimport Reporting from '../vo/Reporting.js';\nimport FactoryMaker from '../../../core/FactoryMaker.js';\n\nfunction ManifestParsing (config) {\n let instance;\n let dashManifestModel = config.dashManifestModel;\n\n function getMetricsRangeStartTime(manifest, dynamic, range) {\n var mpd = dashManifestModel.getMpd(manifest);\n var periods;\n var presentationStartTime = 0;\n var reportingStartTime;\n\n if (dynamic) {\n // For services with MPD@type='dynamic', the start time is\n // indicated in wall clock time by adding the value of this\n // attribute to the value of the MPD@availabilityStartTime\n // attribute.\n presentationStartTime = mpd.availabilityStartTime.getTime() / 1000;\n } else {\n // For services with MPD@type='static', the start time is indicated\n // in Media Presentation time and is relative to the PeriodStart\n // time of the first Period in this MPD.\n periods = this.getRegularPeriods(manifest, mpd);\n\n if (periods.length) {\n presentationStartTime = periods[0].start;\n }\n }\n\n // When not present, DASH Metrics collection is\n // requested from the beginning of content\n // consumption.\n reportingStartTime = presentationStartTime;\n\n if (range && range.hasOwnProperty('starttime')) {\n reportingStartTime += range.starttime;\n }\n\n return reportingStartTime;\n }\n\n function getMetrics(manifest) {\n var metrics = [];\n\n if (manifest.Metrics_asArray) {\n manifest.Metrics_asArray.forEach(metric => {\n var metricEntry = new Metrics();\n var isDynamic = dashManifestModel.getIsDynamic(manifest);\n\n if (metric.hasOwnProperty('metrics')) {\n metricEntry.metrics = metric.metrics;\n } else {\n //console.log(\"Invalid Metrics. metrics must be set. Ignoring.\");\n return;\n }\n\n if (metric.Range_asArray) {\n metric.Range_asArray.forEach(range => {\n var rangeEntry = new Range();\n\n rangeEntry.starttime =\n getMetricsRangeStartTime(manifest, isDynamic, range);\n\n if (range.hasOwnProperty('duration')) {\n rangeEntry.duration = range.duration;\n } else {\n // if not present, the value is identical to the\n // Media Presentation duration.\n rangeEntry.duration = dashManifestModel.getDuration(manifest);\n }\n\n rangeEntry._useWallClockTime = isDynamic;\n\n metricEntry.Range.push(rangeEntry);\n });\n }\n\n if (metric.Reporting_asArray) {\n metric.Reporting_asArray.forEach(reporting => {\n var reportingEntry = new Reporting();\n\n if (reporting.hasOwnProperty('schemeIdUri')) {\n reportingEntry.schemeIdUri = reporting.schemeIdUri;\n } else {\n // Invalid Reporting. schemeIdUri must be set. Ignore.\n return;\n }\n\n for (const prop in reporting) {\n if (reporting.hasOwnProperty(prop)) {\n reportingEntry[prop] = reporting[prop];\n }\n }\n\n metricEntry.Reporting.push(reportingEntry);\n });\n } else {\n // Invalid Metrics. At least one reporting must be present. Ignore\n return;\n }\n\n metrics.push(metricEntry);\n });\n }\n\n return metrics;\n }\n\n instance = {\n getMetrics: getMetrics\n };\n\n return instance;\n}\n\nManifestParsing.__dashjs_factory_name = 'ManifestParsing';\nexport default FactoryMaker.getSingletonFactory(ManifestParsing);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../../core/FactoryMaker.js';\n\nfunction MetricSerialiser() {\n\n // For each entry in the top level list within the metric (in the case\n // of the DVBErrors metric each entry corresponds to an \"error event\"\n // described in clause 10.8.4) the Player shall:\n function serialise(metric) {\n var pairs = [];\n var obj = [];\n var key,\n value;\n\n // Take each (key, value) pair from the metric entry and create a\n // string consisting of the name of the key, followed by an equals\n // ('=') character, followed by the string representation of the\n // value. The string representation of the value is created based\n // on the type of the value following the instructions in Table 22.\n for (key in metric) {\n if (metric.hasOwnProperty(key) && (key.indexOf('_') !== 0)) {\n value = metric[key];\n\n // we want to ensure that keys still end up in the report\n // even if there is no value\n if ((value === undefined) || (value === null)) {\n value = '';\n }\n\n // DVB A168 10.12.4 Table 22\n if (Array.isArray(value)) {\n // if trace or similar is null, do not include in output\n if (!value.length) {\n continue;\n }\n\n obj = [];\n\n value.forEach(function (v) {\n var isBuiltIn = Object.prototype.toString.call(v).slice(8, -1) !== 'Object';\n\n obj.push(isBuiltIn ? v : serialise(v));\n });\n\n value = encodeURIComponent(obj.join(','));\n } else if (typeof value === 'string') {\n value = encodeURIComponent(value);\n } else if (value instanceof Date) {\n value = value.toISOString();\n } else if (typeof value === 'number') {\n value = Math.round(value);\n }\n\n pairs.push(key + '=' + value);\n }\n }\n\n // Concatenate the strings created in the previous step with an\n // ampersand ('&') character between each one.\n return pairs.join('&');\n }\n\n return {\n serialise: serialise\n };\n}\n\nMetricSerialiser.__dashjs_factory_name = 'MetricSerialiser';\nexport default FactoryMaker.getSingletonFactory(MetricSerialiser);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../../core/FactoryMaker.js';\n\nfunction RNG() {\n\n // check whether secure random numbers are available. if not, revert to\n // using Math.random\n let crypto = window.crypto || window.msCrypto;\n\n // could just as easily use any other array type by changing line below\n let ArrayType = Uint32Array;\n let MAX_VALUE = Math.pow(2, ArrayType.BYTES_PER_ELEMENT * 8) - 1;\n\n // currently there is only one client for this code, and that only uses\n // a single random number per initialisation. may want to increase this\n // number if more consumers in the future\n let NUM_RANDOM_NUMBERS = 10;\n\n let randomNumbers,\n index,\n instance;\n\n function initialise() {\n if (crypto) {\n if (!randomNumbers) {\n randomNumbers = new ArrayType(NUM_RANDOM_NUMBERS);\n }\n crypto.getRandomValues(randomNumbers);\n index = 0;\n }\n }\n\n function rand(min, max) {\n var r;\n\n if (!min) {\n min = 0;\n }\n\n if (!max) {\n max = 1;\n }\n\n if (crypto) {\n if (index === randomNumbers.length) {\n initialise();\n }\n\n r = randomNumbers[index] / MAX_VALUE;\n index += 1;\n } else {\n r = Math.random();\n }\n\n return (r * (max - min)) + min;\n }\n\n instance = {\n random: rand,\n };\n\n initialise();\n\n return instance;\n}\n\nRNG.__dashjs_factory_name = 'RNG';\nexport default FactoryMaker.getSingletonFactory(RNG);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass DVBErrors {\n constructor() {\n this.mpdurl = null;\n // String - Absolute URL from which the MPD was originally\n // retrieved (MPD updates will not change this value).\n\n this.errorcode = null;\n // String - The value of errorcode depends upon the type\n // of error being reported. For an error listed in the\n // ErrorType column below the value is as described in the\n // Value column.\n //\n // ErrorType Value\n // --------- -----\n // HTTP error status code HTTP status code\n // Unknown HTTP status code HTTP status code\n // SSL connection failed \"SSL\" followed by SSL alert value\n // DNS resolution failed \"C00\"\n // Host unreachable \"C01\"\n // Connection refused \"C02\"\n // Connection error – Not otherwise specified \"C03\"\n // Corrupt media – ISO BMFF container cannot be parsed \"M00\"\n // Corrupt media – Not otherwise specified \"M01\"\n // Changing Base URL in use due to errors \"F00\"\n // Becoming an error reporting Player \"S00\"\n\n this.terror = null;\n // Real-Time - Date and time at which error occurred in UTC,\n // formatted as a combined date and time according to ISO 8601.\n\n this.url = null;\n // String - Absolute URL from which data was being requested\n // when this error occurred. If the error report is in relation\n // to corrupt media or changing BaseURL, this may be a null\n // string if the URL from which the media was obtained or\n // which led to the change of BaseURL is no longer known.\n\n this.ipaddress = null;\n // String - IP Address which the host name in \"url\" resolved to.\n // If the error report is in relation to corrupt media or\n // changing BaseURL, this may be a null string if the URL\n // from which the media was obtained or which led to the\n // change of BaseURL is no longer known.\n\n this.servicelocation = null;\n // String - The value of the serviceLocation field in the\n // BaseURL being used. In the event of this report indicating\n // a change of BaseURL this is the value from the BaseURL\n // being moved from.\n }\n}\n\nDVBErrors.SSL_CONNECTION_FAILED_PREFIX = 'SSL';\nDVBErrors.DNS_RESOLUTION_FAILED = 'C00';\nDVBErrors.HOST_UNREACHABLE = 'C01';\nDVBErrors.CONNECTION_REFUSED = 'C02';\nDVBErrors.CONNECTION_ERROR = 'C03';\nDVBErrors.CORRUPT_MEDIA_ISOBMFF = 'M00';\nDVBErrors.CORRUPT_MEDIA_OTHER = 'M01';\nDVBErrors.BASE_URL_CHANGED = 'F00';\nDVBErrors.BECAME_REPORTER = 'S00';\n\nexport default DVBErrors;\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass Metrics {\n constructor() {\n\n this.metrics = '';\n this.Range = [];\n this.Reporting = [];\n }\n}\n\nexport default Metrics;\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass Range {\n constructor() {\n\n // as defined in ISO23009-1\n this.starttime = 0;\n this.duration = Infinity;\n\n // for internal use\n this._useWallClockTime = false;\n }\n}\n\nexport default Range;\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass Reporting {\n constructor() {\n // Reporting is a DescriptorType and doesn't have any additional fields\n this.schemeIdUri = '';\n this.value = '';\n }\n}\n\nexport default Reporting;\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n\nimport EventBus from '../../core/EventBus.js';\nimport Events from '../../core/events/Events.js';\nimport FactoryMaker from '../../core/FactoryMaker.js';\nimport FragmentRequest from '../vo/FragmentRequest.js';\nimport Debug from '../../core/Debug.js';\n\nconst FRAGMENT_MODEL_LOADING = 'loading';\nconst FRAGMENT_MODEL_EXECUTED = 'executed';\nconst FRAGMENT_MODEL_CANCELED = 'canceled';\nconst FRAGMENT_MODEL_FAILED = 'failed';\n\nfunction FragmentModel(config) {\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n let metricsModel = config.metricsModel;\n\n let instance,\n scheduleController,\n executedRequests,\n loadingRequests,\n delayLoadingTimeout,\n fragmentLoader;\n\n function setup() {\n scheduleController = null;\n fragmentLoader = null;\n executedRequests = [];\n loadingRequests = [];\n\n eventBus.on(Events.LOADING_COMPLETED, onLoadingCompleted, instance);\n eventBus.on(Events.PLAYBACK_SEEKING, onPlaybackSeeking, instance);\n }\n\n function setLoader(value) {\n fragmentLoader = value;\n }\n\n function setScheduleController(value) {\n scheduleController = value;\n }\n\n function getScheduleController() {\n return scheduleController;\n }\n\n function isFragmentLoaded(request) {\n var isEqualComplete = function (req1, req2) {\n return ((req1.action === FragmentRequest.ACTION_COMPLETE) && (req1.action === req2.action));\n };\n\n var isEqualMedia = function (req1, req2) {\n return ((req1.url === req2.url) && (req1.startTime === req2.startTime));\n };\n\n var isEqualInit = function (req1, req2) {\n return isNaN(req1.index) && isNaN(req2.index) && (req1.quality === req2.quality);\n };\n\n var check = function (arr) {\n var req,\n i;\n var isLoaded = false;\n\n var ln = arr.length;\n\n for (i = 0; i < ln; i++) {\n req = arr[i];\n\n if (isEqualMedia(request, req) || isEqualInit(request, req) || isEqualComplete(request, req)) {\n //log(request.mediaType + \"Fragment already loaded for time: \" + request.startTime);\n isLoaded = true;\n break;\n }\n }\n\n return isLoaded;\n };\n\n return (check(loadingRequests) || check(executedRequests));\n }\n\n /**\n *\n * Gets an array of {@link FragmentRequest} objects\n *\n * @param {object} filter The object with properties by which the method filters the requests to be returned.\n * the only mandatory property is state, which must be a value from\n * other properties should match the properties of {@link FragmentRequest}. E.g.:\n * getRequests({state: FragmentModel.FRAGMENT_MODEL_EXECUTED, quality: 0}) - returns\n * all the requests from executedRequests array where requests.quality = filter.quality\n *\n * @returns {Array}\n * @memberof FragmentModel#\n */\n function getRequests(filter) {\n var requests = [];\n var filteredRequests = [];\n var ln = 1;\n var states;\n\n if (!filter || !filter.state) return requests;\n\n if (filter.state instanceof Array) {\n ln = filter.state.length;\n states = filter.state;\n } else {\n states = [filter.state];\n }\n\n for (var i = 0; i < ln; i++) {\n requests = getRequestsForState(states[i]);\n filteredRequests = filteredRequests.concat(filterRequests(requests, filter));\n }\n\n return filteredRequests;\n }\n\n function removeExecutedRequestsBeforeTime(time) {\n var lastIdx = executedRequests.length - 1;\n var start = NaN;\n var req = null;\n var i;\n\n // loop through the executed requests and remove the ones for which startTime is less than the given time\n for (i = lastIdx; i >= 0; i--) {\n req = executedRequests[i];\n start = req.startTime;\n if (!isNaN(start) && (start < time)) {\n removeRequest(executedRequests, req);\n }\n }\n }\n\n function abortRequests() {\n var reqs = [];\n fragmentLoader.abort();\n\n while (loadingRequests.length > 0) {\n reqs.push(loadingRequests[0]);\n removeRequest(loadingRequests, loadingRequests[0]);\n }\n\n loadingRequests = [];\n\n return reqs;\n }\n\n function executeRequest(request) {\n var now = new Date().getTime();\n\n if (!request) return;\n\n //Adds the ability to delay single fragment loading time to control buffer.\n if (now < request.delayLoadingTime ) {\n delayLoadingTimeout = setTimeout(function () {\n executeRequest(request);\n }, (request.delayLoadingTime - now) );\n return;\n }\n\n switch (request.action) {\n case FragmentRequest.ACTION_COMPLETE:\n // Stream has completed, execute the corresponding callback\n executedRequests.push(request);\n addSchedulingInfoMetrics(request, FRAGMENT_MODEL_EXECUTED);\n eventBus.trigger(Events.STREAM_COMPLETED, {request: request, fragmentModel: this});\n break;\n case FragmentRequest.ACTION_DOWNLOAD:\n addSchedulingInfoMetrics(request, FRAGMENT_MODEL_LOADING);\n loadingRequests.push(request);\n loadCurrentFragment(request);\n break;\n default:\n log('Unknown request action.');\n }\n }\n\n function reset() {\n eventBus.off(Events.LOADING_COMPLETED, onLoadingCompleted, this);\n eventBus.off(Events.PLAYBACK_SEEKING, onPlaybackSeeking, this);\n\n fragmentLoader.abort();\n fragmentLoader = null;\n context = null;\n executedRequests = [];\n loadingRequests = [];\n }\n\n function loadCurrentFragment(request) {\n eventBus.trigger(Events.FRAGMENT_LOADING_STARTED, {sender: instance, request: request});\n fragmentLoader.load(request);\n }\n\n function removeRequest(arr, request) {\n var idx = arr.indexOf(request);\n\n if (idx !== -1) {\n arr.splice(idx, 1);\n }\n }\n\n function getRequestForTime(arr, time, threshold) {\n var lastIdx = arr.length - 1;\n var start = NaN;\n var end = NaN;\n var req = null;\n var i;\n\n // loop through the executed requests and pick the one for which the playback interval matches the given time\n for (i = lastIdx; i >= 0; i--) {\n req = arr[i];\n start = req.startTime;\n end = start + req.duration;\n threshold = threshold || (req.duration / 2);\n if ((!isNaN(start) && !isNaN(end) && ((time + threshold) >= start) && ((time - threshold) < end)) || (isNaN(start) && isNaN(time))) {\n return req;\n }\n }\n\n return null;\n }\n\n function filterRequests(arr, filter) {\n if (!filter) return arr;\n\n // for time use a specific filtration function\n if (filter.hasOwnProperty('time')) {\n return [getRequestForTime(arr, filter.time, filter.threshold)];\n }\n\n return arr.filter(function (request/*, idx, arr*/) {\n for (var prop in filter) {\n if (prop === 'state') continue;\n\n if (filter.hasOwnProperty(prop) && request[prop] != filter[prop]) return false;\n }\n\n return true;\n });\n }\n\n function getRequestsForState(state) {\n var requests;\n\n switch (state) {\n case FRAGMENT_MODEL_LOADING:\n requests = loadingRequests;\n break;\n case FRAGMENT_MODEL_EXECUTED:\n requests = executedRequests;\n break;\n default:\n requests = [];\n }\n\n return requests;\n }\n\n function addSchedulingInfoMetrics(request, state) {\n if (!request) return;\n\n var mediaType = request.mediaType;\n var now = new Date();\n var type = request.type;\n var startTime = request.startTime;\n var availabilityStartTime = request.availabilityStartTime;\n var duration = request.duration;\n var quality = request.quality;\n var range = request.range;\n\n metricsModel.addSchedulingInfo(mediaType, now, type, startTime, availabilityStartTime, duration, quality, range, state);\n metricsModel.addRequestsQueue(mediaType, loadingRequests, executedRequests);\n }\n\n function onLoadingCompleted(e) {\n if (e.sender !== fragmentLoader) return;\n\n var request = e.request;\n var response = e.response;\n var error = e.error;\n\n loadingRequests.splice(loadingRequests.indexOf(request), 1);\n\n if (response && !error) {\n executedRequests.push(request);\n }\n\n addSchedulingInfoMetrics(request, error ? FRAGMENT_MODEL_FAILED : FRAGMENT_MODEL_EXECUTED);\n eventBus.trigger(Events.FRAGMENT_LOADING_COMPLETED, { request: request, response: response, error: error, sender: this });\n }\n\n function onPlaybackSeeking () {\n if (delayLoadingTimeout !== undefined) {\n clearTimeout(delayLoadingTimeout);\n }\n }\n\n instance = {\n setLoader: setLoader,\n setScheduleController: setScheduleController,\n getScheduleController: getScheduleController,\n getRequests: getRequests,\n isFragmentLoaded: isFragmentLoaded,\n removeExecutedRequestsBeforeTime: removeExecutedRequestsBeforeTime,\n abortRequests: abortRequests,\n executeRequest: executeRequest,\n reset: reset\n };\n\n setup();\n return instance;\n}\n\nFragmentModel.__dashjs_factory_name = 'FragmentModel';\nlet factory = FactoryMaker.getClassFactory(FragmentModel);\nfactory.FRAGMENT_MODEL_LOADING = FRAGMENT_MODEL_LOADING;\nfactory.FRAGMENT_MODEL_EXECUTED = FRAGMENT_MODEL_EXECUTED;\nfactory.FRAGMENT_MODEL_CANCELED = FRAGMENT_MODEL_CANCELED;\nfactory.FRAGMENT_MODEL_FAILED = FRAGMENT_MODEL_FAILED;\nexport default factory;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport EventBus from '../../core/EventBus.js';\nimport Events from '../../core/events/Events.js';\nimport FactoryMaker from '../../core/FactoryMaker.js';\n\nfunction ManifestModel() {\n\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n manifest;\n\n function getValue() {\n return manifest;\n }\n\n function setValue(value) {\n manifest = value;\n eventBus.trigger(Events.MANIFEST_LOADED, {data: value});\n }\n\n instance = {\n getValue: getValue,\n setValue: setValue\n };\n\n return instance;\n}\n\nManifestModel.__dashjs_factory_name = 'ManifestModel';\nexport default FactoryMaker.getSingletonFactory(ManifestModel);","import FactoryMaker from '../../core/FactoryMaker.js';\n\nconst DEFAULT_UTC_TIMING_SOURCE = { scheme: 'urn:mpeg:dash:utc:http-xsdate:2014', value: 'http://time.akamai.com/?iso' };\nconst LIVE_DELAY_FRAGMENT_COUNT = 4;\n\nconst DEFAULT_LOCAL_STORAGE_BITRATE_EXPIRATION = 360000;\nconst DEFAULT_LOCAL_STORAGE_MEDIA_SETTINGS_EXPIRATION = 360000;\n\nconst BANDWIDTH_SAFETY_FACTOR = 0.9;\nconst ABANDON_LOAD_TIMEOUT = 10000;\n\nconst BUFFER_TO_KEEP = 30;\nconst BUFFER_PRUNING_INTERVAL = 30;\nconst DEFAULT_MIN_BUFFER_TIME = 12;\nconst BUFFER_TIME_AT_TOP_QUALITY = 30;\nconst BUFFER_TIME_AT_TOP_QUALITY_LONG_FORM = 60;\nconst LONG_FORM_CONTENT_DURATION_THRESHOLD = 600;\nconst RICH_BUFFER_THRESHOLD = 20;\n\nconst FRAGMENT_RETRY_ATTEMPTS = 3;\nconst FRAGMENT_RETRY_INTERVAL = 1000;\n\n//This value influences the startup time for live (in ms).\nconst WALLCLOCK_TIME_UPDATE_INTERVAL = 50;\n\nfunction MediaPlayerModel() {\n\n let instance,\n useManifestDateHeaderTimeSource,\n useSuggestedPresentationDelay,\n UTCTimingSources,\n liveDelayFragmentCount,\n scheduleWhilePaused,\n bufferToKeep,\n bufferPruningInterval,\n lastBitrateCachingInfo,\n lastMediaSettingsCachingInfo,\n stableBufferTime,\n bufferTimeAtTopQuality,\n bufferTimeAtTopQualityLongForm,\n longFormContentDurationThreshold,\n richBufferThreshold,\n bandwidthSafetyFactor,\n abandonLoadTimeout,\n fragmentRetryAttempts,\n fragmentRetryInterval,\n wallclockTimeUpdateInterval,\n bufferOccupancyABREnabled;\n\n function setup() {\n UTCTimingSources = [];\n useSuggestedPresentationDelay = false;\n useManifestDateHeaderTimeSource = true;\n scheduleWhilePaused = false;\n bufferOccupancyABREnabled = false;\n lastBitrateCachingInfo = {enabled: true , ttl: DEFAULT_LOCAL_STORAGE_BITRATE_EXPIRATION};\n lastMediaSettingsCachingInfo = {enabled: true , ttl: DEFAULT_LOCAL_STORAGE_MEDIA_SETTINGS_EXPIRATION};\n liveDelayFragmentCount = LIVE_DELAY_FRAGMENT_COUNT;\n bufferToKeep = BUFFER_TO_KEEP;\n bufferPruningInterval = BUFFER_PRUNING_INTERVAL;\n stableBufferTime = DEFAULT_MIN_BUFFER_TIME;\n bufferTimeAtTopQuality = BUFFER_TIME_AT_TOP_QUALITY;\n bufferTimeAtTopQualityLongForm = BUFFER_TIME_AT_TOP_QUALITY_LONG_FORM;\n longFormContentDurationThreshold = LONG_FORM_CONTENT_DURATION_THRESHOLD;\n richBufferThreshold = RICH_BUFFER_THRESHOLD;\n bandwidthSafetyFactor = BANDWIDTH_SAFETY_FACTOR;\n abandonLoadTimeout = ABANDON_LOAD_TIMEOUT;\n fragmentRetryAttempts = FRAGMENT_RETRY_ATTEMPTS;\n fragmentRetryInterval = FRAGMENT_RETRY_INTERVAL;\n wallclockTimeUpdateInterval = WALLCLOCK_TIME_UPDATE_INTERVAL;\n }\n\n //TODO Should we use Object.define to have setters/getters? makes more readable code on other side.\n function setBufferOccupancyABREnabled(value) {\n bufferOccupancyABREnabled = value;\n }\n\n function getBufferOccupancyABREnabled() {\n return bufferOccupancyABREnabled;\n }\n\n function setBandwidthSafetyFactor(value) {\n bandwidthSafetyFactor = value;\n }\n\n function getBandwidthSafetyFactor() {\n return bandwidthSafetyFactor;\n }\n\n function setAbandonLoadTimeout(value) {\n abandonLoadTimeout = value;\n }\n\n function getAbandonLoadTimeout() {\n return abandonLoadTimeout;\n }\n\n function setStableBufferTime (value) {\n stableBufferTime = value;\n }\n\n function getStableBufferTime() {\n return stableBufferTime;\n }\n\n function setBufferTimeAtTopQuality(value) {\n bufferTimeAtTopQuality = value;\n }\n\n function getBufferTimeAtTopQuality() {\n return bufferTimeAtTopQuality;\n }\n\n function setBufferTimeAtTopQualityLongForm(value) {\n bufferTimeAtTopQualityLongForm = value;\n }\n\n function getBufferTimeAtTopQualityLongForm() {\n return bufferTimeAtTopQualityLongForm;\n }\n\n function setLongFormContentDurationThreshold(value) {\n longFormContentDurationThreshold = value;\n }\n\n function getLongFormContentDurationThreshold() {\n return longFormContentDurationThreshold;\n }\n\n function setRichBufferThreshold(value) {\n richBufferThreshold = value;\n }\n\n function getRichBufferThreshold() {\n return richBufferThreshold;\n }\n\n\n function setBufferToKeep(value) {\n bufferToKeep = value;\n }\n\n function getBufferToKeep() {\n return bufferToKeep;\n }\n\n function setLastBitrateCachingInfo(enable, ttl) {\n lastBitrateCachingInfo.enabled = enable;\n if (ttl !== undefined && !isNaN(ttl) && typeof (ttl) === 'number') {\n lastBitrateCachingInfo.ttl = ttl;\n }\n }\n\n function getLastBitrateCachingInfo() {\n return lastBitrateCachingInfo;\n }\n\n function setLastMediaSettingsCachingInfo(enable, ttl) {\n lastMediaSettingsCachingInfo.enabled = enable;\n if (ttl !== undefined && !isNaN(ttl) && typeof (ttl) === 'number') {\n lastMediaSettingsCachingInfo.ttl = ttl;\n }\n }\n\n function getLastMediaSettingsCachingInfo() {\n return lastMediaSettingsCachingInfo;\n }\n\n function setBufferPruningInterval(value) {\n bufferPruningInterval = value;\n }\n\n function getBufferPruningInterval() {\n return bufferPruningInterval;\n }\n\n function setFragmentRetryAttempts(value) {\n fragmentRetryAttempts = value;\n }\n\n function getFragmentRetryAttempts() {\n return fragmentRetryAttempts;\n }\n\n function setFragmentRetryInterval(value) {\n fragmentRetryInterval = value;\n }\n\n function getFragmentRetryInterval() {\n return fragmentRetryInterval;\n }\n\n function setWallclockTimeUpdateInterval(value) {\n wallclockTimeUpdateInterval = value;\n }\n\n function getWallclockTimeUpdateInterval() {\n return wallclockTimeUpdateInterval;\n }\n\n function setScheduleWhilePaused(value) {\n scheduleWhilePaused = value;\n }\n\n function getScheduleWhilePaused() {\n return scheduleWhilePaused;\n }\n\n function setLiveDelayFragmentCount(value) {\n liveDelayFragmentCount = value;\n }\n\n function getLiveDelayFragmentCount() {\n return liveDelayFragmentCount;\n }\n\n function setUseManifestDateHeaderTimeSource(value) {\n useManifestDateHeaderTimeSource = value;\n }\n\n function getUseManifestDateHeaderTimeSource() {\n return useManifestDateHeaderTimeSource;\n }\n\n function setUseSuggestedPresentationDelay(value) {\n useSuggestedPresentationDelay = value;\n }\n\n function getUseSuggestedPresentationDelay() {\n return useSuggestedPresentationDelay;\n }\n\n function setUTCTimingSources(value) {\n UTCTimingSources = value;\n }\n\n function getUTCTimingSources() {\n return UTCTimingSources;\n }\n\n function reset() {\n //TODO need to figure out what props to persist across sessions and which to reset if any.\n //setup();\n }\n\n instance = {\n setBufferOccupancyABREnabled: setBufferOccupancyABREnabled,\n getBufferOccupancyABREnabled: getBufferOccupancyABREnabled,\n setBandwidthSafetyFactor: setBandwidthSafetyFactor,\n getBandwidthSafetyFactor: getBandwidthSafetyFactor,\n setAbandonLoadTimeout: setAbandonLoadTimeout,\n getAbandonLoadTimeout: getAbandonLoadTimeout,\n setLastBitrateCachingInfo: setLastBitrateCachingInfo,\n getLastBitrateCachingInfo: getLastBitrateCachingInfo,\n setLastMediaSettingsCachingInfo: setLastMediaSettingsCachingInfo,\n getLastMediaSettingsCachingInfo: getLastMediaSettingsCachingInfo,\n setStableBufferTime: setStableBufferTime,\n getStableBufferTime: getStableBufferTime,\n setBufferTimeAtTopQuality: setBufferTimeAtTopQuality,\n getBufferTimeAtTopQuality: getBufferTimeAtTopQuality,\n setBufferTimeAtTopQualityLongForm: setBufferTimeAtTopQualityLongForm,\n getBufferTimeAtTopQualityLongForm: getBufferTimeAtTopQualityLongForm,\n setLongFormContentDurationThreshold: setLongFormContentDurationThreshold,\n getLongFormContentDurationThreshold: getLongFormContentDurationThreshold,\n setRichBufferThreshold: setRichBufferThreshold,\n getRichBufferThreshold: getRichBufferThreshold,\n setBufferToKeep: setBufferToKeep,\n getBufferToKeep: getBufferToKeep,\n setBufferPruningInterval: setBufferPruningInterval,\n getBufferPruningInterval: getBufferPruningInterval,\n setFragmentRetryAttempts: setFragmentRetryAttempts,\n getFragmentRetryAttempts: getFragmentRetryAttempts,\n setFragmentRetryInterval: setFragmentRetryInterval,\n getFragmentRetryInterval: getFragmentRetryInterval,\n setWallclockTimeUpdateInterval: setWallclockTimeUpdateInterval,\n getWallclockTimeUpdateInterval: getWallclockTimeUpdateInterval,\n setScheduleWhilePaused: setScheduleWhilePaused,\n getScheduleWhilePaused: getScheduleWhilePaused,\n getUseSuggestedPresentationDelay: getUseSuggestedPresentationDelay,\n setUseSuggestedPresentationDelay: setUseSuggestedPresentationDelay,\n setLiveDelayFragmentCount: setLiveDelayFragmentCount,\n getLiveDelayFragmentCount: getLiveDelayFragmentCount,\n setUseManifestDateHeaderTimeSource: setUseManifestDateHeaderTimeSource,\n getUseManifestDateHeaderTimeSource: getUseManifestDateHeaderTimeSource,\n setUTCTimingSources: setUTCTimingSources,\n getUTCTimingSources: getUTCTimingSources,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\n//TODO see if you can move this and not export and just getter to get default value.\nMediaPlayerModel.__dashjs_factory_name = 'MediaPlayerModel';\nlet factory = FactoryMaker.getSingletonFactory(MediaPlayerModel);\nfactory.DEFAULT_UTC_TIMING_SOURCE = DEFAULT_UTC_TIMING_SOURCE;\nexport default factory;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport MetricsList from '../vo/MetricsList.js';\nimport TCPConnection from '../vo/metrics/TCPConnection.js';\nimport HTTPRequest from '../vo/metrics/HTTPRequest.js';\nimport TrackSwitch from '../vo/metrics/RepresentationSwitch.js';\nimport BufferLevel from '../vo/metrics/BufferLevel.js';\nimport BufferState from '../vo/metrics/BufferState.js';\nimport DVRInfo from '../vo/metrics/DVRInfo.js';\nimport DroppedFrames from '../vo/metrics/DroppedFrames.js';\nimport ManifestUpdate from '../vo/metrics/ManifestUpdate.js';\nimport SchedulingInfo from '../vo/metrics/SchedulingInfo.js';\nimport EventBus from '../../core/EventBus.js';\nimport RequestsQueue from '../vo/metrics/RequestsQueue.js';\nimport Events from '../../core/events/Events.js';\nimport FactoryMaker from '../../core/FactoryMaker.js';\nimport BolaState from '../vo/metrics/BolaState.js';\n\nfunction MetricsModel() {\n\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n adapter,\n streamMetrics;\n\n function setup() {\n streamMetrics = {};\n }\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.adapter) {\n adapter = config.adapter;\n }\n }\n\n function metricsChanged() {\n eventBus.trigger(Events.METRICS_CHANGED);\n }\n\n function metricChanged(mediaType) {\n eventBus.trigger(Events.METRIC_CHANGED, {mediaType: mediaType});\n metricsChanged();\n }\n\n function metricUpdated(mediaType, metricType, vo) {\n eventBus.trigger(Events.METRIC_UPDATED, {mediaType: mediaType, metric: metricType, value: vo});\n metricChanged(mediaType);\n }\n\n function metricAdded(mediaType, metricType, vo) {\n eventBus.trigger(Events.METRIC_ADDED, {mediaType: mediaType, metric: metricType, value: vo});\n metricChanged(mediaType);\n }\n\n function clearCurrentMetricsForType(type) {\n delete streamMetrics[type];\n metricChanged(type);\n }\n\n function clearAllCurrentMetrics() {\n streamMetrics = {};\n metricsChanged();\n }\n\n function getReadOnlyMetricsFor(type) {\n if (streamMetrics.hasOwnProperty(type)) {\n return streamMetrics[type];\n }\n\n return null;\n }\n\n function getMetricsFor(type) {\n var metrics;\n\n if (streamMetrics.hasOwnProperty(type)) {\n metrics = streamMetrics[type];\n } else {\n metrics = new MetricsList();\n streamMetrics[type] = metrics;\n }\n\n return metrics;\n }\n\n function addTcpConnection(mediaType, tcpid, dest, topen, tclose, tconnect) {\n var vo = new TCPConnection();\n\n vo.tcpid = tcpid;\n vo.dest = dest;\n vo.topen = topen;\n vo.tclose = tclose;\n vo.tconnect = tconnect;\n\n getMetricsFor(mediaType).TcpList.push(vo);\n\n metricAdded(mediaType, adapter.metricsList.TCP_CONNECTION, vo);\n return vo;\n }\n\n function addHttpRequest(mediaType, tcpid, type, url, actualurl, range, trequest, tresponse, tfinish, responsecode, mediaduration, responseHeaders, traces) {\n var vo = new HTTPRequest();\n\n // ISO 23009-1 D.4.3 NOTE 2:\n // All entries for a given object will have the same URL and range\n // and so can easily be correlated. If there were redirects or\n // failures there will be one entry for each redirect/failure.\n // The redirect-to URL or alternative url (where multiple have been\n // provided in the MPD) will appear as the actualurl of the next\n // entry with the same url value.\n if (actualurl && (actualurl !== url)) {\n\n // given the above, add an entry for the original request\n addHttpRequest(\n mediaType,\n null,\n type,\n url,\n null,\n range,\n trequest,\n null, // unknown\n null, // unknown\n null, // unknown, probably a 302\n mediaduration,\n null,\n null\n );\n\n vo.actualurl = actualurl;\n }\n\n vo.tcpid = tcpid;\n vo.type = type;\n vo.url = url;\n vo.range = range;\n vo.trequest = trequest;\n vo.tresponse = tresponse;\n vo.responsecode = responsecode;\n\n vo._tfinish = tfinish;\n vo._stream = mediaType;\n vo._mediaduration = mediaduration;\n vo._responseHeaders = responseHeaders;\n\n if (traces) {\n traces.forEach(trace => {\n appendHttpTrace(vo, trace.s, trace.d, trace.b);\n });\n } else {\n // The interval and trace shall be absent for redirect and failure records.\n delete vo.interval;\n delete vo.trace;\n }\n\n getMetricsFor(mediaType).HttpList.push(vo);\n\n metricAdded(mediaType, adapter.metricsList.HTTP_REQUEST, vo);\n return vo;\n }\n\n function appendHttpTrace(httpRequest, s, d, b) {\n var vo = new HTTPRequest.Trace();\n\n vo.s = s;\n vo.d = d;\n vo.b = b;\n\n httpRequest.trace.push(vo);\n\n if (!httpRequest.interval) {\n httpRequest.interval = 0;\n }\n\n httpRequest.interval += d;\n\n return vo;\n }\n\n function addRepresentationSwitch(mediaType, t, mt, to, lto) {\n var vo = new TrackSwitch();\n\n vo.t = t;\n vo.mt = mt;\n vo.to = to;\n\n if (lto) {\n vo.lto = lto;\n } else {\n delete vo.lto;\n }\n\n getMetricsFor(mediaType).RepSwitchList.push(vo);\n\n metricAdded(mediaType, adapter.metricsList.TRACK_SWITCH, vo);\n return vo;\n }\n\n function addBufferLevel(mediaType, t, level) {\n var vo = new BufferLevel();\n vo.t = t;\n vo.level = level;\n getMetricsFor(mediaType).BufferLevel.push(vo);\n\n metricAdded(mediaType, adapter.metricsList.BUFFER_LEVEL, vo);\n return vo;\n }\n\n function addBufferState(mediaType, state, target) {\n var vo = new BufferState();\n vo.target = target;\n vo.state = state;\n getMetricsFor(mediaType).BufferState.push(vo);\n\n metricAdded(mediaType, adapter.metricsList.BUFFER_STATE, vo);\n return vo;\n }\n\n\n function addDVRInfo(mediaType, currentTime, mpd, range) {\n var vo = new DVRInfo();\n\n vo.time = currentTime ;\n vo.range = range;\n vo.manifestInfo = mpd;\n\n getMetricsFor(mediaType).DVRInfo.push(vo);\n metricAdded(mediaType, adapter.metricsList.DVR_INFO, vo);\n\n return vo;\n }\n\n function addDroppedFrames(mediaType, quality) {\n var vo = new DroppedFrames();\n var list = getMetricsFor(mediaType).DroppedFrames;\n\n vo.time = quality.creationTime;\n vo.droppedFrames = quality.droppedVideoFrames;\n\n if (list.length > 0 && list[list.length - 1] == vo) {\n return list[list.length - 1];\n }\n\n list.push(vo);\n\n metricAdded(mediaType, adapter.metricsList.DROPPED_FRAMES, vo);\n return vo;\n }\n\n function addSchedulingInfo(mediaType, t, type, startTime, availabilityStartTime, duration, quality, range, state) {\n var vo = new SchedulingInfo();\n\n vo.mediaType = mediaType;\n vo.t = t;\n\n vo.type = type;\n vo.startTime = startTime;\n vo.availabilityStartTime = availabilityStartTime;\n vo.duration = duration;\n vo.quality = quality;\n vo.range = range;\n\n vo.state = state;\n\n getMetricsFor(mediaType).SchedulingInfo.push(vo);\n\n metricAdded(mediaType, adapter.metricsList.SCHEDULING_INFO, vo);\n return vo;\n }\n\n function addRequestsQueue(mediaType, loadingRequests, executedRequests) {\n var vo = new RequestsQueue();\n vo.loadingRequests = loadingRequests;\n vo.executedRequests = executedRequests;\n\n getMetricsFor(mediaType).RequestsQueue = vo;\n metricAdded(mediaType, adapter.metricsList.REQUESTS_QUEUE, vo);\n }\n\n function addManifestUpdate(mediaType, type, requestTime, fetchTime, availabilityStartTime, presentationStartTime, clientTimeOffset, currentTime, buffered, latency) {\n var vo = new ManifestUpdate();\n var metrics = getMetricsFor('stream');\n\n vo.mediaType = mediaType;\n vo.type = type;\n vo.requestTime = requestTime; // when this manifest update was requested\n vo.fetchTime = fetchTime; // when this manifest update was received\n vo.availabilityStartTime = availabilityStartTime;\n vo.presentationStartTime = presentationStartTime; // the seek point (liveEdge for dynamic, Stream[0].startTime for static)\n vo.clientTimeOffset = clientTimeOffset; // the calculated difference between the server and client wall clock time\n vo.currentTime = currentTime; // actual element.currentTime\n vo.buffered = buffered; // actual element.ranges\n vo.latency = latency; // (static is fixed value of zero. dynamic should be ((Now-@availabilityStartTime) - currentTime)\n\n metrics.ManifestUpdate.push(vo);\n metricAdded(mediaType, adapter.metricsList.MANIFEST_UPDATE, vo);\n\n return vo;\n }\n\n function updateManifestUpdateInfo(manifestUpdate, updatedFields) {\n if (manifestUpdate) {\n for (var field in updatedFields) {\n manifestUpdate[field] = updatedFields[field];\n }\n\n metricUpdated(manifestUpdate.mediaType, adapter.metricsList.MANIFEST_UPDATE, manifestUpdate);\n }\n }\n\n function addManifestUpdateStreamInfo(manifestUpdate, id, index, start, duration) {\n if (manifestUpdate) {\n var vo = new ManifestUpdate.StreamInfo();\n\n vo.id = id;\n vo.index = index;\n vo.start = start;\n vo.duration = duration;\n\n manifestUpdate.streamInfo.push(vo);\n metricUpdated(manifestUpdate.mediaType, adapter.metricsList.MANIFEST_UPDATE_STREAM_INFO, manifestUpdate);\n\n return vo;\n }\n return null;\n }\n\n function addManifestUpdateRepresentationInfo(manifestUpdate, id, index, streamIndex, mediaType, presentationTimeOffset, startNumber, fragmentInfoType) {\n if (manifestUpdate) {\n var vo = new ManifestUpdate.TrackInfo();\n\n vo.id = id;\n vo.index = index;\n vo.streamIndex = streamIndex;\n vo.mediaType = mediaType;\n vo.startNumber = startNumber;\n vo.fragmentInfoType = fragmentInfoType;\n vo.presentationTimeOffset = presentationTimeOffset;\n\n manifestUpdate.trackInfo.push(vo);\n metricUpdated(manifestUpdate.mediaType, adapter.metricsList.MANIFEST_UPDATE_TRACK_INFO, manifestUpdate);\n\n return vo;\n }\n return null;\n }\n\n function addPlayList(vo) {\n var type = 'stream';\n\n if (vo.trace && Array.isArray(vo.trace)) {\n vo.trace.forEach(trace => {\n if (trace.hasOwnProperty('subreplevel') && !trace.subreplevel) {\n delete trace.subreplevel;\n }\n });\n } else {\n delete vo.trace;\n }\n\n getMetricsFor(type).PlayList.push(vo);\n\n metricAdded(type, adapter.metricsList.PLAY_LIST, vo);\n return vo;\n }\n\n function addDVBErrors(vo) {\n var type = 'stream';\n\n getMetricsFor(type).DVBErrors.push(vo);\n\n metricAdded(type, adapter.metricsList.DVB_ERRORS, vo);\n\n return vo;\n }\n\n function updateBolaState(mediaType, _s) {\n var vo = new BolaState();\n vo._s = _s;\n getMetricsFor(mediaType).BolaState = [vo];\n\n metricAdded(mediaType, 'BolaState', vo);\n return vo;\n }\n\n instance = {\n metricsChanged: metricsChanged,\n metricChanged: metricChanged,\n metricUpdated: metricUpdated,\n metricAdded: metricAdded,\n clearCurrentMetricsForType: clearCurrentMetricsForType,\n clearAllCurrentMetrics: clearAllCurrentMetrics,\n getReadOnlyMetricsFor: getReadOnlyMetricsFor,\n getMetricsFor: getMetricsFor,\n addTcpConnection: addTcpConnection,\n addHttpRequest: addHttpRequest,\n addRepresentationSwitch: addRepresentationSwitch,\n addBufferLevel: addBufferLevel,\n addBufferState: addBufferState,\n addDVRInfo: addDVRInfo,\n addDroppedFrames: addDroppedFrames,\n addSchedulingInfo: addSchedulingInfo,\n addRequestsQueue: addRequestsQueue,\n addManifestUpdate: addManifestUpdate,\n updateManifestUpdateInfo: updateManifestUpdateInfo,\n addManifestUpdateStreamInfo: addManifestUpdateStreamInfo,\n addManifestUpdateRepresentationInfo: addManifestUpdateRepresentationInfo,\n addPlayList: addPlayList,\n addDVBErrors: addDVBErrors,\n updateBolaState: updateBolaState,\n setConfig: setConfig\n };\n\n setup();\n return instance;\n}\n\nMetricsModel.__dashjs_factory_name = 'MetricsModel';\nexport default FactoryMaker.getSingletonFactory(MetricsModel);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport URIFragmentData from '../vo/URIFragmentData.js';\nimport FactoryMaker from '../../core/FactoryMaker.js';\n\nfunction URIQueryAndFragmentModel() {\n\n let instance,\n URIFragmentDataVO,\n URIQueryData,\n isHTTPS;\n\n function initialize() {\n URIFragmentDataVO = new URIFragmentData();\n URIQueryData = [];\n isHTTPS = false;\n }\n\n function getURIFragmentData() {\n return URIFragmentDataVO;\n }\n\n function getURIQueryData() {\n return URIQueryData;\n }\n\n function isManifestHTTPS() {\n return isHTTPS;\n }\n\n function parseURI(uri) {\n if (!uri) return null;\n\n var URIFragmentData = [];\n var mappedArr;\n\n var testQuery = new RegExp(/[?]/);\n var testFragment = new RegExp(/[#]/);\n var testHTTPS = new RegExp(/^(https:)?\\/\\//i);\n var isQuery = testQuery.test(uri);\n var isFragment = testFragment.test(uri);\n\n isHTTPS = testHTTPS.test(uri);\n\n function reduceArray(previousValue, currentValue, index, array) {\n var arr = array[0].split(/[=]/);\n array.push({key: arr[0], value: arr[1]});\n array.shift();\n return array;\n }\n\n function mapArray(currentValue, index, array) {\n if (index > 0)\n {\n if (isQuery && URIQueryData.length === 0) {\n URIQueryData = array[index].split(/[&]/);\n } else if (isFragment) {\n URIFragmentData = array[index].split(/[&]/);\n }\n }\n\n return array;\n }\n\n mappedArr = uri.split(/[?#]/).map(mapArray);\n\n if (URIQueryData.length > 0) {\n URIQueryData = URIQueryData.reduce(reduceArray, null);\n }\n\n if (URIFragmentData.length > 0) {\n URIFragmentData = URIFragmentData.reduce(reduceArray, null);\n URIFragmentData.forEach(function (object) {\n URIFragmentDataVO[object.key] = object.value;\n });\n }\n\n return uri;\n }\n\n instance = {\n initialize: initialize,\n parseURI: parseURI,\n getURIFragmentData: getURIFragmentData,\n getURIQueryData: getURIQueryData,\n isManifestHTTPS: isManifestHTTPS\n };\n\n return instance;\n}\n\nURIQueryAndFragmentModel.__dashjs_factory_name = 'URIQueryAndFragmentModel';\nexport default FactoryMaker.getSingletonFactory(URIQueryAndFragmentModel);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../core/FactoryMaker.js';\n\nfunction VideoModel() {\n\n let instance,\n element,\n TTMLRenderingDiv,\n videoContainer,\n stalledStreams,\n previousPlaybackRate;\n\n function initialize() {\n stalledStreams = [];\n }\n\n function setPlaybackRate(value) {\n if (!element || element.readyState < 2) return;\n element.playbackRate = value;\n }\n\n //TODO Move the DVR window calculations from MediaPlayer to Here.\n function setCurrentTime(currentTime) {\n //_currentTime = currentTime;\n\n // We don't set the same currentTime because it can cause firing unexpected Pause event in IE11\n // providing playbackRate property equals to zero.\n if (element.currentTime == currentTime) return;\n\n // TODO Despite the fact that MediaSource 'open' event has been fired IE11 cannot set videoElement.currentTime\n // immediately (it throws InvalidStateError). It seems that this is related to videoElement.readyState property\n // Initially it is 0, but soon after 'open' event it goes to 1 and setting currentTime is allowed. Chrome allows to\n // set currentTime even if readyState = 0.\n // setTimeout is used to workaround InvalidStateError in IE11\n try {\n element.currentTime = currentTime;\n } catch (e) {\n if (element.readyState === 0 && e.code === e.INVALID_STATE_ERR) {\n setTimeout(function () {\n element.currentTime = currentTime;\n }, 400);\n }\n }\n }\n\n function getElement() {\n return element;\n }\n\n function setElement(value) {\n element = value;\n }\n\n function setSource(source) {\n if (source) {\n element.src = source;\n }\n }\n\n function getSource() {\n return element.src;\n }\n\n function getVideoContainer() {\n return videoContainer;\n }\n\n function setVideoContainer(value) {\n videoContainer = value;\n }\n\n function getTTMLRenderingDiv() {\n return TTMLRenderingDiv;\n }\n\n function setTTMLRenderingDiv(div) {\n TTMLRenderingDiv = div;\n // The styling will allow the captions to match the video window size and position.\n TTMLRenderingDiv.style.position = 'absolute';\n TTMLRenderingDiv.style.display = 'flex';\n TTMLRenderingDiv.style.overflow = 'hidden';\n TTMLRenderingDiv.style.pointerEvents = 'none';\n TTMLRenderingDiv.style.top = 0;\n TTMLRenderingDiv.style.left = 0;\n }\n\n function setStallState(type, state) {\n stallStream(type, state);\n }\n\n function isStalled() {\n return (stalledStreams.length > 0);\n }\n\n function addStalledStream(type) {\n\n let event;\n\n if (type === null || element.seeking || stalledStreams.indexOf(type) !== -1) {\n return;\n }\n\n stalledStreams.push(type);\n if (stalledStreams.length === 1) {\n // Halt playback until nothing is stalled.\n event = document.createEvent('Event');\n event.initEvent('waiting', true, false);\n previousPlaybackRate = element.playbackRate;\n setPlaybackRate(0);\n element.dispatchEvent(event);\n }\n }\n\n function removeStalledStream(type) {\n let index = stalledStreams.indexOf(type);\n let event;\n\n if (type === null) {\n return;\n }\n if (index !== -1) {\n stalledStreams.splice(index, 1);\n }\n // If nothing is stalled resume playback.\n if (isStalled() === false && element.playbackRate === 0) {\n event = document.createEvent('Event');\n event.initEvent('playing', true, false);\n setPlaybackRate(previousPlaybackRate || 1);\n element.dispatchEvent(event);\n }\n }\n\n function stallStream(type, isStalled) {\n if (isStalled) {\n addStalledStream(type);\n } else {\n removeStalledStream(type);\n }\n }\n\n function getPlaybackQuality() {\n let hasWebKit = ('webkitDroppedFrameCount' in element);\n let hasQuality = ('getVideoPlaybackQuality' in element);\n let result = null;\n\n if (hasQuality) {\n result = element.getVideoPlaybackQuality();\n }\n else if (hasWebKit) {\n result = {droppedVideoFrames: element.webkitDroppedFrameCount, creationTime: new Date()};\n }\n\n return result;\n }\n\n instance = {\n initialize: initialize,\n setCurrentTime: setCurrentTime,\n setStallState: setStallState,\n getElement: getElement,\n setElement: setElement,\n setSource: setSource,\n getSource: getSource,\n getVideoContainer: getVideoContainer,\n setVideoContainer: setVideoContainer,\n getTTMLRenderingDiv: getTTMLRenderingDiv,\n setTTMLRenderingDiv: setTTMLRenderingDiv,\n getPlaybackQuality: getPlaybackQuality\n };\n\n return instance;\n}\n\nVideoModel.__dashjs_factory_name = 'VideoModel';\nexport default FactoryMaker.getSingletonFactory(VideoModel);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport BASE64 from '../../../externals/base64.js';\n\nclass CommonEncryption {\n /**\n * Find and return the ContentProtection element in the given array\n * that indicates support for MPEG Common Encryption\n *\n * @param cpArray array of content protection elements\n * @returns the Common Encryption content protection element or\n * null if one was not found\n */\n static findCencContentProtection(cpArray) {\n var retVal = null;\n for (var i = 0; i < cpArray.length; ++i) {\n var cp = cpArray[i];\n if (cp.schemeIdUri.toLowerCase() === 'urn:mpeg:dash:mp4protection:2011' &&\n cp.value.toLowerCase() === 'cenc')\n retVal = cp;\n }\n return retVal;\n }\n\n /**\n * Returns just the data portion of a single PSSH\n *\n * @param pssh {ArrayBuffer} the PSSH\n * @return {ArrayBuffer} data portion of the PSSH\n */\n static getPSSHData(pssh) {\n var offset = 8; // Box size and type fields\n var view = new DataView(pssh);\n\n // Read version\n var version = view.getUint8(offset);\n\n offset += 20; // Version (1), flags (3), system ID (16)\n\n if (version > 0) {\n offset += 4 + (16 * view.getUint32(offset)); // Key ID count (4) and All key IDs (16*count)\n }\n\n offset += 4; // Data size\n return pssh.slice(offset);\n }\n\n /**\n * Returns the PSSH associated with the given key system from the concatenated\n * list of PSSH boxes in the given initData\n *\n * @param {KeySystem} keySystem the desired\n * key system\n * @param {ArrayBuffer} initData 'cenc' initialization data. Concatenated list of PSSH.\n * @returns {ArrayBuffer} The PSSH box data corresponding to the given key system\n * or null if a valid association could not be found.\n */\n static getPSSHForKeySystem(keySystem, initData) {\n var psshList = CommonEncryption.parsePSSHList(initData);\n if (psshList.hasOwnProperty(keySystem.uuid.toLowerCase())) {\n return psshList[keySystem.uuid.toLowerCase()];\n }\n return null;\n }\n\n /**\n * Parse a standard common encryption PSSH which contains a simple\n * base64-encoding of the init data\n *\n * @param cpData the ContentProtection element\n * @returns {ArrayBuffer} the init data or null if not found\n */\n static parseInitDataFromContentProtection(cpData) {\n if ('pssh' in cpData) {\n return BASE64.decodeArray(cpData.pssh.__text).buffer;\n }\n return null;\n }\n\n /**\n * Parses list of PSSH boxes into keysystem-specific PSSH data\n *\n * @param data {ArrayBuffer} the concatenated list of PSSH boxes as provided by\n * CDM as initialization data when CommonEncryption content is detected\n * @returns {object} an object that has a property named according to each of\n * the detected key system UUIDs (e.g. 00000000-0000-0000-0000-0000000000)\n * and a ArrayBuffer (the entire PSSH box) as the property value\n */\n static parsePSSHList(data) {\n\n if (data === null)\n return [];\n\n var dv = new DataView(data);\n var done = false;\n var pssh = {};\n\n // TODO: Need to check every data read for end of buffer\n var byteCursor = 0;\n while (!done) {\n\n var size,\n nextBox,\n version,\n systemID,\n psshDataSize;\n var boxStart = byteCursor;\n\n if (byteCursor >= dv.buffer.byteLength)\n break;\n\n /* Box size */\n size = dv.getUint32(byteCursor);\n nextBox = byteCursor + size;\n byteCursor += 4;\n\n /* Verify PSSH */\n if (dv.getUint32(byteCursor) !== 0x70737368) {\n byteCursor = nextBox;\n continue;\n }\n byteCursor += 4;\n\n /* Version must be 0 or 1 */\n version = dv.getUint8(byteCursor);\n if (version !== 0 && version !== 1) {\n byteCursor = nextBox;\n continue;\n }\n byteCursor++;\n\n byteCursor += 3; /* skip flags */\n\n // 16-byte UUID/SystemID\n systemID = '';\n var i, val;\n for (i = 0; i < 4; i++) {\n val = dv.getUint8(byteCursor + i).toString(16);\n systemID += (val.length === 1) ? '0' + val : val;\n }\n byteCursor += 4;\n systemID += '-';\n for (i = 0; i < 2; i++) {\n val = dv.getUint8(byteCursor + i).toString(16);\n systemID += (val.length === 1) ? '0' + val : val;\n }\n byteCursor += 2;\n systemID += '-';\n for (i = 0; i < 2; i++) {\n val = dv.getUint8(byteCursor + i).toString(16);\n systemID += (val.length === 1) ? '0' + val : val;\n }\n byteCursor += 2;\n systemID += '-';\n for (i = 0; i < 2; i++) {\n val = dv.getUint8(byteCursor + i).toString(16);\n systemID += (val.length === 1) ? '0' + val : val;\n }\n byteCursor += 2;\n systemID += '-';\n for (i = 0; i < 6; i++) {\n val = dv.getUint8(byteCursor + i).toString(16);\n systemID += (val.length === 1) ? '0' + val : val;\n }\n byteCursor += 6;\n\n systemID = systemID.toLowerCase();\n\n /* PSSH Data Size */\n psshDataSize = dv.getUint32(byteCursor);\n byteCursor += 4;\n\n /* PSSH Data */\n pssh[systemID] = dv.buffer.slice(boxStart, nextBox);\n byteCursor = nextBox;\n }\n\n return pssh;\n }\n}\n\nexport default CommonEncryption;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport ProtectionController from './controllers/ProtectionController.js';\nimport ProtectionKeyController from './controllers/ProtectionKeyController.js';\nimport ProtectionEvents from './ProtectionEvents.js';\nimport ProtectionModel_21Jan2015 from './models/ProtectionModel_21Jan2015.js';\nimport ProtectionModel_3Feb2014 from './models/ProtectionModel_3Feb2014.js';\nimport ProtectionModel_01b from './models/ProtectionModel_01b.js';\nimport FactoryMaker from '../../core/FactoryMaker.js';\n\nconst APIS_ProtectionModel_01b = [\n // Un-prefixed as per spec\n {\n // Video Element\n generateKeyRequest: 'generateKeyRequest',\n addKey: 'addKey',\n cancelKeyRequest: 'cancelKeyRequest',\n\n // Events\n needkey: 'needkey',\n keyerror: 'keyerror',\n keyadded: 'keyadded',\n keymessage: 'keymessage'\n },\n // Webkit-prefixed (early Chrome versions and Chrome with EME disabled in chrome://flags)\n {\n // Video Element\n generateKeyRequest: 'webkitGenerateKeyRequest',\n addKey: 'webkitAddKey',\n cancelKeyRequest: 'webkitCancelKeyRequest',\n\n // Events\n needkey: 'webkitneedkey',\n keyerror: 'webkitkeyerror',\n keyadded: 'webkitkeyadded',\n keymessage: 'webkitkeymessage'\n }\n];\n\nconst APIS_ProtectionModel_3Feb2014 = [\n // Un-prefixed as per spec\n // Chrome 38-39 (and some earlier versions) with chrome://flags -- Enable Encrypted Media Extensions\n {\n // Video Element\n setMediaKeys: 'setMediaKeys',\n // MediaKeys\n MediaKeys: 'MediaKeys',\n // MediaKeySession\n release: 'close',\n\n // Events\n needkey: 'needkey',\n error: 'keyerror',\n message: 'keymessage',\n ready: 'keyadded',\n close: 'keyclose'\n },\n // MS-prefixed (IE11, Windows 8.1)\n {\n // Video Element\n setMediaKeys: 'msSetMediaKeys',\n // MediaKeys\n MediaKeys: 'MSMediaKeys',\n // MediaKeySession\n release: 'close',\n // Events\n needkey: 'msneedkey',\n error: 'mskeyerror',\n message: 'mskeymessage',\n ready: 'mskeyadded',\n close: 'mskeyclose'\n }\n];\n\nfunction Protection() {\n\n let instance;\n let context = this.context;\n\n /**\n * Create a ProtectionController and associated ProtectionModel for use with\n * a single piece of content.\n *\n * @return {ProtectionController} protection controller\n *\n */\n function createProtectionSystem(config) {\n\n let controller = null;\n\n let protectionKeyController = ProtectionKeyController(context).getInstance();\n protectionKeyController.setConfig({log: config.log,});\n protectionKeyController.initialize();\n\n let protectionModel = getProtectionModel(config);\n\n if (!controller && protectionModel) {//TODO add ability to set external controller if still needed at all?\n controller = ProtectionController(context).create({\n protectionModel: protectionModel,\n protectionKeyController: protectionKeyController,\n adapter: config.adapter,\n eventBus: config.eventBus,\n log: config.log\n });\n config.capabilities.setEncryptedMediaSupported(true);\n }\n return controller;\n }\n\n function getProtectionModel(config) {\n\n let log = config.log;\n let eventBus = config.eventBus;\n let videoElement = config.videoModel.getElement();\n\n if (videoElement.onencrypted !== undefined &&\n videoElement.mediaKeys !== undefined &&\n navigator.requestMediaKeySystemAccess !== undefined &&\n typeof navigator.requestMediaKeySystemAccess === 'function') {\n\n log('EME detected on this user agent! (ProtectionModel_21Jan2015)');\n return ProtectionModel_21Jan2015(context).create({log: log, eventBus: eventBus});\n\n } else if (getAPI(videoElement, APIS_ProtectionModel_3Feb2014)) {\n\n log('EME detected on this user agent! (ProtectionModel_3Feb2014)');\n return ProtectionModel_3Feb2014(context).create({log: log, eventBus: eventBus, api: getAPI(videoElement, APIS_ProtectionModel_3Feb2014)});\n\n } else if (getAPI(videoElement, APIS_ProtectionModel_01b)) {\n\n log('EME detected on this user agent! (ProtectionModel_01b)');\n return ProtectionModel_01b(context).create({log: log, eventBus: eventBus, api: getAPI(videoElement, APIS_ProtectionModel_01b)});\n\n } else {\n\n log('No supported version of EME detected on this user agent! - Attempts to play encrypted content will fail!');\n return null;\n\n }\n }\n\n function getAPI(videoElement, apis) {\n\n for (var i = 0; i < apis.length; i++) {\n var api = apis[i];\n // detect if api is supported by browser\n // check only first function in api -> should be fine\n if (typeof videoElement[api[Object.keys(api)[0]]] !== 'function') {\n continue;\n }\n\n return api;\n }\n\n return null;\n }\n\n instance = {\n createProtectionSystem: createProtectionSystem\n };\n\n return instance;\n}\n\nProtection.__dashjs_factory_name = 'Protection';\nlet factory = FactoryMaker.getClassFactory(Protection);\nfactory.events = ProtectionEvents;\nexport default factory;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport EventsBase from '../../core/events/EventsBase.js';\n/**\n * @Class\n * @ignore\n */\nclass ProtectionEvents extends EventsBase {\n /**\n * @description Public facing external events to be used when including protection package.\n * All public events will be aggregated into the MediaPlayerEvents Class and can be accessed\n * via MediaPlayer.events\n */\n constructor () {\n super();\n\n /**\n * Event ID for events delivered when the protection set receives\n * a key message from the CDM\n *\n * @ignore\n */\n this.INTERNAL_KEY_MESSAGE = 'internalKeyMessage';\n\n /**\n * Event ID for events delivered when a key system selection procedure\n * completes\n * @ignore\n */\n this.INTERNAL_KEY_SYSTEM_SELECTED = 'internalKeySystemSelected';\n\n /**\n * Event ID for events delivered when a new key has been added\n *\n * @constant\n * @deprecated The latest versions of the EME specification no longer\n * use this event. {@MediaPlayer.models.protectionModel.eventList.KEY_STATUSES_CHANGED}\n * is preferred.\n * @event ProtectionEvents#KEY_ADDED\n */\n this.KEY_ADDED = 'public_keyAdded';\n /**\n * Event ID for events delivered when an error is encountered by the CDM\n * while processing a license server response message\n * @event ProtectionEvents#KEY_ERROR\n */\n this.KEY_ERROR = 'public_keyError';\n\n /**\n * Event ID for events delivered when the protection set receives\n * a key message from the CDM\n * @event ProtectionEvents#KEY_MESSAGE\n */\n this.KEY_MESSAGE = 'public_keyMessage';\n\n /**\n * Event ID for events delivered when a key session close\n * process has completed\n * @event ProtectionEvents#KEY_SESSION_CLOSED\n */\n this.KEY_SESSION_CLOSED = 'public_keySessionClosed';\n\n /**\n * Event ID for events delivered when a new key sessions creation\n * process has completed\n * @event ProtectionEvents#KEY_SESSION_CREATED\n */\n this.KEY_SESSION_CREATED = 'public_keySessionCreated';\n\n /**\n * Event ID for events delivered when a key session removal\n * process has completed\n * @event ProtectionEvents#KEY_SESSION_REMOVED\n */\n this.KEY_SESSION_REMOVED = 'public_keySessionRemoved';\n\n\n /**\n * Event ID for events delivered when the status of one or more\n * decryption keys has changed\n * @event ProtectionEvents#KEY_STATUSES_CHANGED\n */\n this.KEY_STATUSES_CHANGED = 'public_keyStatusesChanged';\n\n /**\n * Event ID for events delivered when a key system access procedure\n * has completed\n * @ignore\n */\n this.KEY_SYSTEM_ACCESS_COMPLETE = 'keySystemAccessComplete';\n\n /**\n * Event ID for events delivered when a key system selection procedure\n * completes\n * @event ProtectionEvents#KEY_SYSTEM_SELECTED\n */\n this.KEY_SYSTEM_SELECTED = 'public_keySystemSelected';\n\n /**\n * Event ID for events delivered when a license request procedure\n * has completed\n * @event ProtectionEvents#LICENSE_REQUEST_COMPLETE\n */\n this.LICENSE_REQUEST_COMPLETE = 'public_licenseRequestComplete';\n\n /**\n * Event ID for needkey/encrypted events\n * @ignore\n */\n this.NEED_KEY = 'needkey';\n\n /**\n * Event ID for events delivered when the Protection system is detected and created.\n * @event ProtectionEvents#PROTECTION_CREATED\n */\n this.PROTECTION_CREATED = 'public_protectioncreated';\n\n /**\n * Event ID for events delivered when the Protection system is destroyed.\n * @event ProtectionEvents#PROTECTION_DESTROYED\n */\n this.PROTECTION_DESTROYED = 'public_protectiondestroyed';\n\n /**\n * Event ID for events delivered when a new server certificate has\n * been delivered to the CDM\n * @ignore\n */\n this.SERVER_CERTIFICATE_UPDATED = 'serverCertificateUpdated';\n\n /**\n * Event ID for events delivered when the process of shutting down\n * a protection set has completed\n * @ignore\n */\n this.TEARDOWN_COMPLETE = 'protectionTeardownComplete';\n\n /**\n * Event ID for events delivered when a HTMLMediaElement has been\n * associated with the protection set\n * @ignore\n */\n this.VIDEO_ELEMENT_SELECTED = 'videoElementSelected';\n }\n}\n\nlet protectionEvents = new ProtectionEvents();\nexport default protectionEvents;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport CommonEncryption from '../CommonEncryption.js';\nimport Events from '../../../core/events/Events.js';\nimport MediaCapability from '../vo/MediaCapability.js';\nimport KeySystemConfiguration from '../vo/KeySystemConfiguration.js';\nimport FactoryMaker from '../../../core/FactoryMaker.js';\nimport Protection from '../Protection.js';\n\n/**\n * @Module ProtectionController\n * @description Provides access to media protection information and functionality. Each\n * ProtectionController manages a single {@link MediaPlayer.models.ProtectionModel}\n * which encapsulates a set of protection information (EME APIs, selected key system,\n * key sessions). The APIs of ProtectionController mostly align with the latest EME\n * APIs. Key system selection is mostly automated when combined with app-overrideable\n * functionality provided in {@link ProtectionKeyController}.\n * @todo ProtectionController does almost all of its tasks automatically after init() is\n * called. Applications might want more control over this process and want to go through\n * each step manually (key system selection, session creation, session maintenance).\n */\n\nfunction ProtectionController(config) {\n\n let protectionKeyController = config.protectionKeyController;\n let protectionModel = config.protectionModel;\n let adapter = config.adapter;\n let eventBus = config.eventBus;\n let log = config.log;\n\n let instance,\n keySystems,\n pendingNeedKeyData,\n audioInfo,\n videoInfo,\n protDataSet,\n initialized,\n sessionType,\n keySystem;\n\n function setup() {\n keySystems = protectionKeyController.getKeySystems();\n pendingNeedKeyData = [];\n initialized = false;\n sessionType = 'temporary';\n\n Events.extend(Protection.events);\n }\n\n /**\n * Initialize this protection system with a given manifest and optional audio\n * and video stream information.\n *\n * @param {Object} manifest the json version of the manifest XML document for the\n * desired content. Applications can download their manifest using\n * {@link module:MediaPlayer#retrieveManifest}\n * @param {StreamInfo} [aInfo] audio stream information\n * @param {StreamInfo} [vInfo] video stream information\n * @memberof module:ProtectionController\n * @instance\n * @todo This API will change when we have better support for allowing applications\n * to select different adaptation sets for playback. Right now it is clunky for\n * applications to create {@link StreamInfo} with the right information,\n */\n function initialize(manifest, aInfo, vInfo) {\n\n // TODO: We really need to do much more here... We need to be smarter about knowing\n // which adaptation sets for which we have initialized, including the default key ID\n // value from the ContentProtection elements so we know whether or not we still need to\n // select key systems and acquire keys.\n if (!initialized) {\n\n var streamInfo;\n\n if (!aInfo && !vInfo) {\n // Look for ContentProtection elements. InitData can be provided by either the\n // dash264drm:Pssh ContentProtection format or a DRM-specific format.\n streamInfo = adapter.getStreamsInfo(manifest)[0]; // TODO: Single period only for now. See TODO above\n }\n\n audioInfo = aInfo || (streamInfo ? adapter.getMediaInfoForType(manifest, streamInfo, 'audio') : null);\n videoInfo = vInfo || (streamInfo ? adapter.getMediaInfoForType(manifest, streamInfo, 'video') : null);\n\n var mediaInfo = (videoInfo) ? videoInfo : audioInfo; // We could have audio or video only\n\n // ContentProtection elements are specified at the AdaptationSet level, so the CP for audio\n // and video will be the same. Just use one valid MediaInfo object\n var supportedKS = protectionKeyController.getSupportedKeySystemsFromContentProtection(mediaInfo.contentProtection);\n if (supportedKS && supportedKS.length > 0) {\n selectKeySystem(supportedKS, true);\n }\n\n initialized = true;\n }\n }\n\n /**\n * Create a new key session associated with the given initialization data from\n * the MPD or from the PSSH box in the media\n *\n * @param {ArrayBuffer} initData the initialization data\n * @memberof module:ProtectionController\n * @instance\n * @fires ProtectionController#KeySessionCreated\n * @todo In older versions of the EME spec, there was a one-to-one relationship between\n * initialization data and key sessions. That is no longer true in the latest APIs. This\n * API will need to modified (and a new \"generateRequest(keySession, initData)\" API created)\n * to come up to speed with the latest EME standard\n */\n function createKeySession(initData) {\n var initDataForKS = CommonEncryption.getPSSHForKeySystem(keySystem, initData);\n if (initDataForKS) {\n\n // Check for duplicate initData\n var currentInitData = protectionModel.getAllInitData();\n for (var i = 0; i < currentInitData.length; i++) {\n if (protectionKeyController.initDataEquals(initDataForKS, currentInitData[i])) {\n log('DRM: Ignoring initData because we have already seen it!');\n return;\n }\n }\n try {\n protectionModel.createKeySession(initDataForKS, sessionType);\n } catch (error) {\n eventBus.trigger(Events.KEY_SESSION_CREATED, {data: null, error: 'Error creating key session! ' + error.message});\n }\n } else {\n eventBus.trigger(Events.KEY_SESSION_CREATED, {data: null, error: 'Selected key system is ' + keySystem.systemString + '. needkey/encrypted event contains no initData corresponding to that key system!'});\n }\n }\n\n /**\n * Loads a key session with the given session ID from persistent storage. This\n * essentially creates a new key session\n *\n * @param {string} sessionID\n * @memberof module:ProtectionController\n * @instance\n * @fires ProtectionController#KeySessionCreated\n */\n function loadKeySession(sessionID) {\n protectionModel.loadKeySession(sessionID);\n }\n\n /**\n * Removes the given key session from persistent storage and closes the session\n * as if {@link ProtectionController#closeKeySession}\n * was called\n *\n * @param {SessionToken} sessionToken the session\n * token\n * @memberof module:ProtectionController\n * @instance\n * @fires ProtectionController#KeySessionRemoved\n * @fires ProtectionController#KeySessionClosed\n */\n function removeKeySession(sessionToken) {\n protectionModel.removeKeySession(sessionToken);\n }\n\n /**\n * Closes the key session and releases all associated decryption keys. These\n * keys will no longer be available for decrypting media\n *\n * @param {SessionToken} sessionToken the session\n * token\n * @memberof module:ProtectionController\n * @instance\n * @fires ProtectionController#KeySessionClosed\n */\n function closeKeySession(sessionToken) {\n protectionModel.closeKeySession(sessionToken);\n }\n\n /**\n * Sets a server certificate for use by the CDM when signing key messages\n * intended for a particular license server. This will fire\n * an error event if a key system has not yet been selected.\n *\n * @param {ArrayBuffer} serverCertificate a CDM-specific license server\n * certificate\n * @memberof module:ProtectionController\n * @instance\n * @fires ProtectionController#ServerCertificateUpdated\n */\n function setServerCertificate(serverCertificate) {\n protectionModel.setServerCertificate(serverCertificate);\n }\n\n /**\n * Associate this protection system with the given HTMLMediaElement. This\n * causes the system to register for needkey/encrypted events from the given\n * element and provides a destination for setting of MediaKeys\n *\n * @param {HTMLMediaElement} element the media element to which the protection\n * system should be associated\n * @memberof module:ProtectionController\n * @instance\n */\n function setMediaElement(element) {\n if (element) {\n protectionModel.setMediaElement(element);\n eventBus.on(Events.NEED_KEY, onNeedKey, this);\n eventBus.on(Events.INTERNAL_KEY_MESSAGE, onKeyMessage, this);\n } else if (element === null) {\n protectionModel.setMediaElement(element);\n eventBus.off(Events.NEED_KEY, onNeedKey, this);\n eventBus.off(Events.INTERNAL_KEY_MESSAGE, onKeyMessage, this);\n }\n }\n\n /**\n * Sets the session type to use when creating key sessions. Either \"temporary\" or\n * \"persistent-license\". Default is \"temporary\".\n *\n * @param {String} sessionType the session type\n * @memberof module:ProtectionController\n * @instance\n */\n function setSessionType(value) {\n sessionType = value;\n }\n\n /**\n * Attach KeySystem-specific data to use for license acquisition with EME\n *\n * @param {Object} data an object containing property names corresponding to\n * key system name strings (e.g. \"org.w3.clearkey\") and associated values\n * being instances of {@link ProtectionData}\n * @memberof module:ProtectionController\n * @instance\n */\n function setProtectionData(data) {\n protDataSet = data;\n }\n\n /**\n * Destroys all protection data associated with this protection set. This includes\n * deleting all key sessions. In the case of persistent key sessions, the sessions\n * will simply be unloaded and not deleted. Additionally, if this protection set is\n * associated with a HTMLMediaElement, it will be detached from that element.\n *\n * @memberof module:ProtectionController\n * @instance\n */\n function reset() {\n setMediaElement(null);\n\n keySystem = undefined;//TODO-Refactor look at why undefined is needed for this. refactor\n\n protectionModel.reset();\n protectionModel = null;\n }\n\n ///////////////\n // Private\n ///////////////\n\n function getProtData(keySystem) {\n var protData = null;\n var keySystemString = keySystem.systemString;\n\n if (protDataSet) {\n protData = (keySystemString in protDataSet) ? protDataSet[keySystemString] : null;\n }\n return protData;\n }\n\n function selectKeySystem(supportedKS, fromManifest) {\n\n var self = this;\n\n // Build our request object for requestKeySystemAccess\n var audioCapabilities = [];\n var videoCapabilities = [];\n\n if (videoInfo) {\n videoCapabilities.push(new MediaCapability(videoInfo.codec));\n }\n if (audioInfo) {\n audioCapabilities.push(new MediaCapability(audioInfo.codec));\n }\n var ksConfig = new KeySystemConfiguration(\n audioCapabilities, videoCapabilities, 'optional',\n (sessionType === 'temporary') ? 'optional' : 'required',\n [sessionType]);\n var requestedKeySystems = [];\n\n var ksIdx;\n if (keySystem) {\n // We have a key system\n for (ksIdx = 0; ksIdx < supportedKS.length; ksIdx++) {\n if (keySystem === supportedKS[ksIdx].ks) {\n\n requestedKeySystems.push({ks: supportedKS[ksIdx].ks, configs: [ksConfig]});\n\n // Ensure that we would be granted key system access using the key\n // system and codec information\n let onKeySystemAccessComplete = function (event) {\n eventBus.off(Events.KEY_SYSTEM_ACCESS_COMPLETE, onKeySystemAccessComplete, self);\n if (event.error) {\n if (!fromManifest) {\n eventBus.trigger(Events.KEY_SYSTEM_SELECTED, {error: 'DRM: KeySystem Access Denied! -- ' + event.error});\n }\n } else {\n log('DRM: KeySystem Access Granted');\n eventBus.trigger(Events.KEY_SYSTEM_SELECTED, {data: event.data});\n createKeySession(supportedKS[ksIdx].initData);\n }\n };\n eventBus.on(Events.KEY_SYSTEM_ACCESS_COMPLETE, onKeySystemAccessComplete, self);\n protectionModel.requestKeySystemAccess(requestedKeySystems);\n break;\n }\n }\n }\n else if (keySystem === undefined) {\n // First time through, so we need to select a key system\n keySystem = null;\n pendingNeedKeyData.push(supportedKS);\n\n // Add all key systems to our request list since we have yet to select a key system\n for (var i = 0; i < supportedKS.length; i++) {\n requestedKeySystems.push({ks: supportedKS[i].ks, configs: [ksConfig]});\n }\n\n var keySystemAccess;\n var onKeySystemAccessComplete = function (event) {\n eventBus.off(Events.KEY_SYSTEM_ACCESS_COMPLETE, onKeySystemAccessComplete, self);\n if (event.error) {\n keySystem = undefined;\n eventBus.off(Events.INTERNAL_KEY_SYSTEM_SELECTED, onKeySystemSelected, self);\n\n if (!fromManifest) {\n eventBus.trigger(Events.KEY_SYSTEM_SELECTED, {data: null, error: 'DRM: KeySystem Access Denied! -- ' + event.error});\n }\n } else {\n keySystemAccess = event.data;\n log('DRM: KeySystem Access Granted (' + keySystemAccess.keySystem.systemString + ')! Selecting key system...');\n protectionModel.selectKeySystem(keySystemAccess);\n }\n };\n var onKeySystemSelected = function (event) {\n eventBus.off(Events.INTERNAL_KEY_SYSTEM_SELECTED, onKeySystemSelected, self);\n eventBus.off(Events.KEY_SYSTEM_ACCESS_COMPLETE, onKeySystemAccessComplete, self);\n if (!event.error) {\n keySystem = protectionModel.getKeySystem();\n eventBus.trigger(Events.KEY_SYSTEM_SELECTED, {data: keySystemAccess});\n for (var i = 0; i < pendingNeedKeyData.length; i++) {\n for (ksIdx = 0; ksIdx < pendingNeedKeyData[i].length; ksIdx++) {\n if (keySystem === pendingNeedKeyData[i][ksIdx].ks) {\n createKeySession(pendingNeedKeyData[i][ksIdx].initData);\n break;\n }\n }\n }\n } else {\n keySystem = undefined;\n if (!fromManifest) {\n eventBus.trigger(Events.KEY_SYSTEM_SELECTED, {data: null, error: 'DRM: Error selecting key system! -- ' + event.error});\n }\n }\n };\n eventBus.on(Events.INTERNAL_KEY_SYSTEM_SELECTED, onKeySystemSelected, self);\n eventBus.on(Events.KEY_SYSTEM_ACCESS_COMPLETE, onKeySystemAccessComplete, self);\n protectionModel.requestKeySystemAccess(requestedKeySystems);\n } else {\n // We are in the process of selecting a key system, so just save the data\n pendingNeedKeyData.push(supportedKS);\n }\n }\n\n function sendLicenseRequestCompleteEvent(data, error) {\n eventBus.trigger(Events.LICENSE_REQUEST_COMPLETE, {data: data, error: error});\n }\n\n function onKeyMessage(e) {\n log('DRM: onKeyMessage');\n if (e.error) {\n log(e.error);\n return;\n }\n\n // Dispatch event to applications indicating we received a key message\n var keyMessage = e.data;\n eventBus.trigger(Events.KEY_MESSAGE, {data: keyMessage});\n var messageType = (keyMessage.messageType) ? keyMessage.messageType : 'license-request';\n var message = keyMessage.message;\n var sessionToken = keyMessage.sessionToken;\n var protData = getProtData(keySystem);\n var keySystemString = keySystem.systemString;\n var licenseServerData = protectionKeyController.getLicenseServer(keySystem, protData, messageType);\n var eventData = { sessionToken: sessionToken, messageType: messageType };\n\n // Message not destined for license server\n if (!licenseServerData) {\n log('DRM: License server request not required for this message (type = ' + e.data.messageType + '). Session ID = ' + sessionToken.getSessionID());\n sendLicenseRequestCompleteEvent(eventData);\n return;\n }\n\n // Perform any special handling for ClearKey\n if (protectionKeyController.isClearKey(keySystem)) {\n var clearkeys = protectionKeyController.processClearKeyLicenseRequest(protData, message);\n if (clearkeys) {\n log('DRM: ClearKey license request handled by application!');\n sendLicenseRequestCompleteEvent(eventData);\n protectionModel.updateKeySession(sessionToken, clearkeys);\n return;\n }\n }\n\n // All remaining key system scenarios require a request to a remote license server\n var xhr = new XMLHttpRequest();\n\n // Determine license server URL\n var url = null;\n if (protData) {\n if (protData.serverURL) {\n var serverURL = protData.serverURL;\n if (typeof serverURL === 'string' && serverURL !== '') {\n url = serverURL;\n } else if (typeof serverURL === 'object' && serverURL.hasOwnProperty(messageType)) {\n url = serverURL[messageType];\n }\n } else if (protData.laURL && protData.laURL !== '') { // TODO: Deprecated!\n url = protData.laURL;\n }\n } else {\n url = keySystem.getLicenseServerURLFromInitData(CommonEncryption.getPSSHData(sessionToken.initData));\n if (!url) {\n url = e.data.laURL;\n }\n }\n // Possibly update or override the URL based on the message\n url = licenseServerData.getServerURLFromMessage(url, message, messageType);\n\n // Ensure valid license server URL\n if (!url) {\n sendLicenseRequestCompleteEvent(eventData, 'DRM: No license server URL specified!');\n return;\n }\n\n xhr.open(licenseServerData.getHTTPMethod(messageType), url, true);\n xhr.responseType = licenseServerData.getResponseType(keySystemString, messageType);\n xhr.onload = function () {\n if (this.status == 200) {\n sendLicenseRequestCompleteEvent(eventData);\n protectionModel.updateKeySession(sessionToken,\n licenseServerData.getLicenseMessage(this.response, keySystemString, messageType));\n } else {\n sendLicenseRequestCompleteEvent(eventData,\n 'DRM: ' + keySystemString + ' update, XHR status is \"' + this.statusText + '\" (' + this.status +\n '), expected to be 200. readyState is ' + this.readyState +\n '. Response is ' + ((this.response) ? licenseServerData.getErrorResponse(this.response, keySystemString, messageType) : 'NONE'));\n }\n };\n xhr.onabort = function () {\n sendLicenseRequestCompleteEvent(eventData, 'DRM: ' + keySystemString + ' update, XHR aborted. status is \"' + this.statusText + '\" (' + this.status + '), readyState is ' + this.readyState);\n };\n xhr.onerror = function () {\n sendLicenseRequestCompleteEvent(eventData, 'DRM: ' + keySystemString + ' update, XHR error. status is \"' + this.statusText + '\" (' + this.status + '), readyState is ' + this.readyState);\n };\n\n // Set optional XMLHttpRequest headers from protection data and message\n var updateHeaders = function (headers) {\n var key;\n if (headers) {\n for (key in headers) {\n if ('authorization' === key.toLowerCase()) {\n xhr.withCredentials = true;\n }\n xhr.setRequestHeader(key, headers[key]);\n }\n }\n };\n if (protData) {\n updateHeaders(protData.httpRequestHeaders);\n }\n updateHeaders(keySystem.getRequestHeadersFromMessage(message));\n\n // Set withCredentials property from protData\n if (protData && protData.withCredentials) {\n xhr.withCredentials = true;\n }\n\n xhr.send(keySystem.getLicenseRequestFromMessage(message));\n }\n\n function onNeedKey(event) {\n log('DRM: onNeedKey');\n // Ignore non-cenc initData\n if (event.key.initDataType !== 'cenc') {\n log('DRM: Only \\'cenc\\' initData is supported! Ignoring initData of type: ' + event.key.initDataType);\n return;\n }\n\n // Some browsers return initData as Uint8Array (IE), some as ArrayBuffer (Chrome).\n // Convert to ArrayBuffer\n var abInitData = event.key.initData;\n if (ArrayBuffer.isView(abInitData)) {\n abInitData = abInitData.buffer;\n }\n\n log('DRM: initData:', String.fromCharCode.apply(null, new Uint8Array(abInitData)));\n\n var supportedKS = protectionKeyController.getSupportedKeySystems(abInitData);\n if (supportedKS.length === 0) {\n log('DRM: Received needkey event with initData, but we don\\'t support any of the key systems!');\n return;\n }\n\n selectKeySystem(supportedKS, false);\n }\n\n instance = {\n initialize: initialize,\n createKeySession: createKeySession,\n loadKeySession: loadKeySession,\n removeKeySession: removeKeySession,\n closeKeySession: closeKeySession,\n setServerCertificate: setServerCertificate,\n setMediaElement: setMediaElement,\n setSessionType: setSessionType,\n setProtectionData: setProtectionData,\n reset: reset\n };\n\n setup();\n return instance;\n}\n\nProtectionController.__dashjs_factory_name = 'ProtectionController';\nexport default FactoryMaker.getClassFactory(ProtectionController);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport CommonEncryption from './../CommonEncryption.js';\nimport KeySystemClearKey from './../drm/KeySystemClearKey.js';\nimport KeySystemWidevine from './../drm/KeySystemWidevine.js';\nimport KeySystemPlayReady from './../drm/KeySystemPlayReady.js';\nimport DRMToday from './../servers/DRMToday.js';\nimport PlayReady from './../servers/PlayReady.js';\nimport Widevine from './../servers/Widevine.js';\nimport ClearKey from './../servers/ClearKey.js';\nimport FactoryMaker from '../../../core/FactoryMaker.js';\n\n/**\n * @module ProtectionKeyController\n * @description Media protection key system functionality that can be modified/overridden by applications\n */\nfunction ProtectionKeyController() {\n\n let context = this.context;\n\n let instance,\n log,\n keySystems,\n clearkeyKeySystem;\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.log) {\n log = config.log;\n }\n }\n\n function initialize() {\n keySystems = [];\n\n var keySystem;\n\n // PlayReady\n keySystem = KeySystemPlayReady(context).getInstance();\n keySystems.push(keySystem);\n\n // Widevine\n keySystem = KeySystemWidevine(context).getInstance();\n keySystems.push(keySystem);\n\n // ClearKey\n keySystem = KeySystemClearKey(context).getInstance();\n keySystems.push(keySystem);\n clearkeyKeySystem = keySystem;\n }\n\n /**\n * Returns a prioritized list of key systems supported\n * by this player (not necessarily those supported by the\n * user agent)\n *\n * @returns {KeySystem[]} a prioritized\n * list of key systems\n * @memberof module:ProtectionKeyController\n * @instance\n */\n function getKeySystems() {\n return keySystems;\n }\n\n /**\n * Returns the key system associated with the given key system string\n * name (i.e. 'org.w3.clearkey')\n *\n * @param {string} systemString the system string\n * @returns {KeySystem} the key system\n * or null if no supported key system is associated with the given key\n * system string\n * @memberof module:ProtectionKeyController\n * @instance\n */\n function getKeySystemBySystemString(systemString) {\n for (var i = 0; i < keySystems.length; i++) {\n if (keySystems[i].systemString === systemString) {\n return keySystems[i];\n }\n }\n return null;\n }\n\n /**\n * Determines whether the given key system is ClearKey. This is\n * necessary because the EME spec defines ClearKey and its method\n * for providing keys to the key session; and this method has changed\n * between the various API versions. Our EME-specific ProtectionModels\n * must know if the system is ClearKey so that it can format the keys\n * according to the particular spec version.\n *\n * @param keySystem the key\n * @returns {boolean} true if this is the ClearKey key system, false\n * otherwise\n * @memberof module:ProtectionKeyController\n * @instance\n */\n function isClearKey(keySystem) {\n return (keySystem === clearkeyKeySystem);\n }\n\n /**\n * Check equality of initData array buffers.\n *\n * @param initData1 {ArrayBuffer} first initData\n * @param initData2 {ArrayBuffer} second initData\n * @returns {boolean} true if the initData arrays are equal in size and\n * contents, false otherwise\n * @memberof module:ProtectionKeyController\n * @instance\n */\n function initDataEquals(initData1, initData2) {\n if (initData1.byteLength === initData2.byteLength) {\n var data1 = new Uint8Array(initData1);\n var data2 = new Uint8Array(initData2);\n\n for (var j = 0; j < data1.length; j++) {\n if (data1[j] !== data2[j]) {\n return false;\n }\n }\n return true;\n }\n return false;\n }\n\n /**\n * Returns a set of supported key systems and CENC initialization data\n * from the given array of ContentProtection elements. Only\n * key systems that are supported by this player will be returned.\n * Key systems are returned in priority order (highest first).\n *\n * @param {Object[]} cps array of content protection elements parsed\n * from the manifest\n * @returns {Object[]} array of objects indicating which supported key\n * systems were found. Empty array is returned if no\n * supported key systems were found\n * @returns {KeySystem} Object.ks the key\n * system identified by the ContentProtection element\n * @returns {ArrayBuffer} Object.initData the initialization data parsed\n * from the ContentProtection element\n * @memberof module:ProtectionKeyController\n * @instance\n */\n function getSupportedKeySystemsFromContentProtection(cps) {\n var cp, ks, ksIdx, cpIdx;\n var supportedKS = [];\n\n if (cps) {\n for (ksIdx = 0; ksIdx < keySystems.length; ++ksIdx) {\n ks = keySystems[ksIdx];\n for (cpIdx = 0; cpIdx < cps.length; ++cpIdx) {\n cp = cps[cpIdx];\n if (cp.schemeIdUri.toLowerCase() === ks.schemeIdURI) {\n\n // Look for DRM-specific ContentProtection\n var initData = ks.getInitData(cp);\n if (!!initData) {\n supportedKS.push({\n ks: keySystems[ksIdx],\n initData: initData\n });\n }\n }\n }\n }\n }\n return supportedKS;\n }\n\n /**\n * Returns key systems supported by this player for the given PSSH\n * initializationData. Only key systems supported by this player\n * will be returned. Key systems are returned in priority order\n * (highest priority first)\n *\n * @param {ArrayBuffer} initData Concatenated PSSH data for all DRMs\n * supported by the content\n * @returns {Object[]} array of objects indicating which supported key\n * systems were found. Empty array is returned if no\n * supported key systems were found\n * @returns {KeySystem} Object.ks the key\n * system\n * @returns {ArrayBuffer} Object.initData the initialization data\n * associated with the key system\n * @memberof module:ProtectionKeyController\n * @instance\n */\n function getSupportedKeySystems(initData) {\n var ksIdx;\n var supportedKS = [];\n var pssh = CommonEncryption.parsePSSHList(initData);\n\n for (ksIdx = 0; ksIdx < keySystems.length; ++ksIdx) {\n if (keySystems[ksIdx].uuid in pssh) {\n supportedKS.push({\n ks: keySystems[ksIdx],\n initData: pssh[keySystems[ksIdx].uuid]\n });\n }\n }\n return supportedKS;\n }\n\n /**\n * Returns the license server implementation data that should be used for this request.\n *\n * @param {KeySystem} keySystem the key system\n * associated with this license request\n * @param {ProtectionData} protData protection data to use for the\n * request\n * @param {String} [messageType=\"license-request\"] the message type associated with this\n * request. Supported message types can be found\n * {@link https://w3c.github.io/encrypted-media/#idl-def-MediaKeyMessageType|here}.\n * @return {LicenseServer} the license server\n * implementation that should be used for this request or null if the player should not\n * pass messages of the given type to a license server\n * @memberof module:ProtectionKeyController\n * @instance\n *\n */\n function getLicenseServer(keySystem, protData, messageType) {\n\n // Our default server implementations do not do anything with \"license-release\" or\n // \"individualization-request\" messages, so we just send a success event\n if (messageType === 'license-release' || messageType == 'individualization-request') {\n return null;\n }\n\n var licenseServerData = null;\n if (protData && protData.hasOwnProperty('drmtoday')) {\n licenseServerData = DRMToday(context).getInstance();\n } else if (keySystem.systemString === 'com.widevine.alpha') {\n licenseServerData = Widevine(context).getInstance();\n } else if (keySystem.systemString === 'com.microsoft.playready') {\n licenseServerData = PlayReady(context).getInstance();\n } else if (keySystem.systemString === 'org.w3.clearkey') {\n licenseServerData = ClearKey(context).getInstance();\n }\n\n return licenseServerData;\n }\n\n /**\n * Allows application-specific retrieval of ClearKey keys.\n *\n * @param {ProtectionData} protData protection data to use for the\n * request\n * @param {ArrayBuffer} message the key message from the CDM\n * @return {ClearKeyKeySet} the clear keys associated with\n * the request or null if no keys can be returned by this function\n * @memberof module:ProtectionKeyController\n * @instance\n */\n function processClearKeyLicenseRequest(protData, message) {\n try {\n return clearkeyKeySystem.getClearKeysFromProtectionData(protData, message);\n } catch (error) {\n log('Failed to retrieve clearkeys from ProtectionData');\n return null;\n }\n }\n\n instance = {\n initialize: initialize,\n isClearKey: isClearKey,\n initDataEquals: initDataEquals,\n getKeySystems: getKeySystems,\n getKeySystemBySystemString: getKeySystemBySystemString,\n getSupportedKeySystemsFromContentProtection: getSupportedKeySystemsFromContentProtection,\n getSupportedKeySystems: getSupportedKeySystems,\n getLicenseServer: getLicenseServer,\n processClearKeyLicenseRequest: processClearKeyLicenseRequest,\n setConfig: setConfig\n };\n\n return instance;\n}\n\nProtectionKeyController.__dashjs_factory_name = 'ProtectionKeyController';\nexport default FactoryMaker.getSingletonFactory(ProtectionKeyController);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport KeyPair from '../vo/KeyPair.js';\nimport ClearKeyKeySet from '../vo/ClearKeyKeySet.js';\nimport CommonEncryption from '../CommonEncryption.js';\nimport FactoryMaker from '../../../core/FactoryMaker.js';\n\nconst uuid = '1077efec-c0b2-4d02-ace3-3c1e52e2fb4b';\nconst systemString = 'org.w3.clearkey';\nconst schemeIdURI = 'urn:uuid:' + uuid;\n\nfunction KeySystemClearKey() {\n\n let instance;\n /**\n * Returns desired clearkeys (as specified in the CDM message) from protection data\n *\n * @param {ProtectionData} protData the protection data\n * @param {ArrayBuffer} message the ClearKey CDM message\n * @returns {ClearKeyKeySet} the key set or null if none found\n * @throws {Error} if a keyID specified in the CDM message was not found in the\n * protection data\n * @memberof KeySystemClearKey\n */\n function getClearKeysFromProtectionData(protectionData, message) {\n var clearkeySet = null;\n if (protectionData) {\n // ClearKey is the only system that does not require a license server URL, so we\n // handle it here when keys are specified in protection data\n var jsonMsg = JSON.parse(String.fromCharCode.apply(null, new Uint8Array(message)));\n var keyPairs = [];\n for (var i = 0; i < jsonMsg.kids.length; i++) {\n var clearkeyID = jsonMsg.kids[i];\n var clearkey = (protectionData.clearkeys.hasOwnProperty(clearkeyID)) ? protectionData.clearkeys[clearkeyID] : null;\n if (!clearkey) {\n throw new Error('DRM: ClearKey keyID (' + clearkeyID + ') is not known!');\n }\n // KeyIDs from CDM are not base64 padded. Keys may or may not be padded\n keyPairs.push(new KeyPair(clearkeyID, clearkey));\n }\n clearkeySet = new ClearKeyKeySet(keyPairs);\n }\n return clearkeySet;\n }\n\n function getInitData(cp) {\n return CommonEncryption.parseInitDataFromContentProtection(cp);\n }\n\n function getRequestHeadersFromMessage(/*message*/) {\n return null;\n }\n\n function getLicenseRequestFromMessage(message) {\n return new Uint8Array(message);\n }\n\n function getLicenseServerURLFromInitData(/*initData*/) {\n return null;\n }\n\n instance = {\n uuid: uuid,\n schemeIdURI: schemeIdURI,\n systemString: systemString,\n getInitData: getInitData,\n getRequestHeadersFromMessage: getRequestHeadersFromMessage,\n getLicenseRequestFromMessage: getLicenseRequestFromMessage,\n getLicenseServerURLFromInitData: getLicenseServerURLFromInitData,\n getClearKeysFromProtectionData: getClearKeysFromProtectionData\n };\n\n return instance;\n}\n\nKeySystemClearKey.__dashjs_factory_name = 'KeySystemClearKey';\nexport default FactoryMaker.getSingletonFactory(KeySystemClearKey);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Microsoft PlayReady DRM\n *\n * @class\n * @implements KeySystem\n */\nimport CommonEncryption from '../CommonEncryption.js';\nimport Error from '../../vo/Error.js';\n\nimport FactoryMaker from '../../../core/FactoryMaker.js';\nimport BASE64 from '../../../../externals/base64.js';\n\nconst uuid = '9a04f079-9840-4286-ab92-e65be0885f95';\nconst systemString = 'com.microsoft.playready';\nconst schemeIdURI = 'urn:uuid:' + uuid;\n\nfunction KeySystemPlayReady() {\n\n let instance;\n let messageFormat = 'utf16';\n\n function getRequestHeadersFromMessage(message) {\n var msg,\n xmlDoc;\n var headers = {};\n var parser = new DOMParser();\n var dataview = (messageFormat === 'utf16') ? new Uint16Array(message) : new Uint8Array(message);\n\n msg = String.fromCharCode.apply(null, dataview);\n xmlDoc = parser.parseFromString(msg, 'application/xml');\n\n var headerNameList = xmlDoc.getElementsByTagName('name');\n var headerValueList = xmlDoc.getElementsByTagName('value');\n for (var i = 0; i < headerNameList.length; i++) {\n headers[headerNameList[i].childNodes[0].nodeValue] = headerValueList[i].childNodes[0].nodeValue;\n }\n // some versions of the PlayReady CDM return 'Content' instead of 'Content-Type'.\n // this is NOT w3c conform and license servers may reject the request!\n // -> rename it to proper w3c definition!\n if (headers.hasOwnProperty('Content')) {\n headers['Content-Type'] = headers.Content;\n delete headers.Content;\n }\n return headers;\n }\n\n function getLicenseRequestFromMessage(message) {\n var msg,\n xmlDoc;\n var licenseRequest = null;\n var parser = new DOMParser();\n var dataview = (messageFormat === 'utf16') ? new Uint16Array(message) : new Uint8Array(message);\n\n msg = String.fromCharCode.apply(null, dataview);\n xmlDoc = parser.parseFromString(msg, 'application/xml');\n\n if (xmlDoc.getElementsByTagName('Challenge')[0]) {\n var Challenge = xmlDoc.getElementsByTagName('Challenge')[0].childNodes[0].nodeValue;\n if (Challenge) {\n licenseRequest = BASE64.decode(Challenge);\n }\n }\n return licenseRequest;\n }\n\n function getLicenseServerURLFromInitData(initData) {\n if (initData) {\n var data = new DataView(initData);\n var numRecords = data.getUint16(4, true);\n var offset = 6;\n var parser = new DOMParser();\n\n for (var i = 0; i < numRecords; i++) {\n // Parse the PlayReady Record header\n var recordType = data.getUint16(offset, true);\n offset += 2;\n var recordLength = data.getUint16(offset, true);\n offset += 2;\n if (recordType !== 0x0001) {\n offset += recordLength;\n continue;\n }\n\n var recordData = initData.slice(offset, offset + recordLength);\n var record = String.fromCharCode.apply(null, new Uint16Array(recordData));\n var xmlDoc = parser.parseFromString(record, 'application/xml');\n\n // First try \n if (xmlDoc.getElementsByTagName('LA_URL')[0]) {\n var laurl = xmlDoc.getElementsByTagName('LA_URL')[0].childNodes[0].nodeValue;\n if (laurl) {\n return laurl;\n }\n }\n\n // Optionally, try \n if (xmlDoc.getElementsByTagName('LUI_URL')[0]) {\n var luiurl = xmlDoc.getElementsByTagName('LUI_URL')[0].childNodes[0].nodeValue;\n if (luiurl) {\n return luiurl;\n }\n }\n }\n }\n\n return null;\n }\n\n function getInitData(cpData) {\n // * desc@ getInitData\n // * generate PSSH data from PROHeader defined in MPD file\n // * PSSH format:\n // * size (4)\n // * box type(PSSH) (8)\n // * Protection SystemID (16)\n // * protection system data size (4) - length of decoded PROHeader\n // * decoded PROHeader data from MPD file\n var PSSHBoxType = new Uint8Array([0x70, 0x73, 0x73, 0x68, 0x00, 0x00, 0x00, 0x00]); //'PSSH' 8 bytes\n var playreadySystemID = new Uint8Array([0x9a, 0x04, 0xf0, 0x79, 0x98, 0x40, 0x42, 0x86, 0xab, 0x92, 0xe6, 0x5b, 0xe0, 0x88, 0x5f, 0x95]);\n\n var byteCursor = 0;\n var uint8arraydecodedPROHeader = null;\n\n var PROSize,\n PSSHSize,\n PSSHBoxBuffer,\n PSSHBox,\n PSSHData;\n\n // Handle common encryption PSSH\n if ('pssh' in cpData) {\n return CommonEncryption.parseInitDataFromContentProtection(cpData);\n }\n // Handle native MS PlayReady ContentProtection elements\n if ('pro' in cpData) {\n uint8arraydecodedPROHeader = BASE64.decodeArray(cpData.pro.__text);\n }\n else if ('prheader' in cpData) {\n uint8arraydecodedPROHeader = BASE64.decodeArray(cpData.prheader.__text);\n }\n else {\n return null;\n }\n\n PROSize = uint8arraydecodedPROHeader.length;\n PSSHSize = 0x4 + PSSHBoxType.length + playreadySystemID.length + 0x4 + PROSize;\n\n PSSHBoxBuffer = new ArrayBuffer(PSSHSize);\n\n PSSHBox = new Uint8Array(PSSHBoxBuffer);\n PSSHData = new DataView(PSSHBoxBuffer);\n\n PSSHData.setUint32(byteCursor, PSSHSize);\n byteCursor += 0x4;\n\n PSSHBox.set(PSSHBoxType, byteCursor);\n byteCursor += PSSHBoxType.length;\n\n PSSHBox.set(playreadySystemID, byteCursor);\n byteCursor += playreadySystemID.length;\n\n PSSHData.setUint32(byteCursor, PROSize);\n byteCursor += 0x4;\n\n PSSHBox.set(uint8arraydecodedPROHeader, byteCursor);\n byteCursor += PROSize;\n\n return PSSHBox.buffer;\n }\n\n /**\n * It seems that some PlayReady implementations return their XML-based CDM\n * messages using UTF16, while others return them as UTF8. Use this function\n * to modify the message format to expect when parsing CDM messages.\n *\n * @param {string} format the expected message format. Either \"utf8\" or \"utf16\".\n * @throws {Error} Specified message format is not one of \"utf8\" or \"utf16\"\n */\n function setPlayReadyMessageFormat(format) {\n if (format !== 'utf8' && format !== 'utf16') {\n throw new Error('Illegal PlayReady message format! -- ' + format);\n }\n messageFormat = format;\n }\n\n instance = {\n uuid: uuid,\n schemeIdURI: schemeIdURI,\n systemString: systemString,\n getInitData: getInitData,\n getRequestHeadersFromMessage: getRequestHeadersFromMessage,\n getLicenseRequestFromMessage: getLicenseRequestFromMessage,\n getLicenseServerURLFromInitData: getLicenseServerURLFromInitData,\n setPlayReadyMessageFormat: setPlayReadyMessageFormat\n };\n\n return instance;\n}\n\nKeySystemPlayReady.__dashjs_factory_name = 'KeySystemPlayReady';\nexport default FactoryMaker.getSingletonFactory(KeySystemPlayReady);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Google Widevine DRM\n *\n * @class\n * @implements MediaPlayer.dependencies.protection.KeySystem\n */\n\nimport CommonEncryption from '../CommonEncryption.js';\nimport FactoryMaker from '../../../core/FactoryMaker.js';\n\nconst uuid = 'edef8ba9-79d6-4ace-a3c8-27dcd51d21ed';\nconst systemString = 'com.widevine.alpha';\nconst schemeIdURI = 'urn:uuid:' + uuid;\n\nfunction KeySystemWidevine() {\n\n let instance;\n\n function getInitData(cp) {\n return CommonEncryption.parseInitDataFromContentProtection(cp);\n }\n\n function getRequestHeadersFromMessage(/*message*/) {\n return null;\n }\n\n function getLicenseRequestFromMessage(message) {\n return new Uint8Array(message);\n }\n\n function getLicenseServerURLFromInitData(/*initData*/) {\n return null;\n }\n\n instance = {\n uuid: uuid,\n schemeIdURI: schemeIdURI,\n systemString: systemString,\n getInitData: getInitData,\n getRequestHeadersFromMessage: getRequestHeadersFromMessage,\n getLicenseRequestFromMessage: getLicenseRequestFromMessage,\n getLicenseServerURLFromInitData: getLicenseServerURLFromInitData,\n };\n\n return instance;\n}\n\nKeySystemWidevine.__dashjs_factory_name = 'KeySystemWidevine';\nexport default FactoryMaker.getSingletonFactory(KeySystemWidevine);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Initial implementation of EME\n *\n * Implemented by Google Chrome prior to v36\n *\n * @implements ProtectionModel\n * @class\n */\nimport ProtectionKeyController from '../controllers/ProtectionKeyController.js';\nimport NeedKey from '../vo/NeedKey.js';\nimport KeyError from '../vo/KeyError.js';\nimport KeyMessage from '../vo/KeyMessage.js';\nimport KeySystemConfiguration from '../vo/KeySystemConfiguration.js';\nimport KeySystemAccess from '../vo/KeySystemAccess.js';\nimport Events from '../../../core/events/Events.js';\nimport ErrorHandler from '../../utils/ErrorHandler.js';\nimport FactoryMaker from '../../../core/FactoryMaker.js';\n\nfunction ProtectionModel_01b(config) {\n\n let context = this.context;\n let eventBus = config.eventBus;//Need to pass in here so we can use same instance since this is optional module\n let log = config.log;\n let api = config.api;\n\n let instance,\n videoElement,\n keySystem,\n protectionKeyController,\n errHandler,\n\n // With this version of the EME APIs, sessionIDs are not assigned to\n // sessions until the first key message is received. We are assuming\n // that in the case of multiple sessions, key messages will be received\n // in the order that generateKeyRequest() is called.\n // Holding spot for newly-created sessions until we determine whether or\n // not the CDM supports sessionIDs\n pendingSessions,\n\n // List of sessions that have been initialized. Only the first position will\n // be used in the case that the CDM does not support sessionIDs\n sessions,\n\n // Not all CDMs support the notion of sessionIDs. Without sessionIDs\n // there is no way for us to differentiate between sessions, therefore\n // we must only allow a single session. Once we receive the first key\n // message we can set this flag to determine if more sessions are allowed\n moreSessionsAllowed,\n\n // This is our main event handler for all desired HTMLMediaElement events\n // related to EME. These events are translated into our API-independent\n // versions of the same events\n eventHandler;\n\n function setup() {\n videoElement = null;\n keySystem = null;\n pendingSessions = [];\n sessions = [];\n protectionKeyController = ProtectionKeyController(context).getInstance();\n errHandler = ErrorHandler(context).getInstance();\n eventHandler = createEventHandler();\n }\n\n function reset() {\n if (videoElement) {\n removeEventListeners();\n }\n for (var i = 0; i < sessions.length; i++) {\n closeKeySession(sessions[i]);\n }\n eventBus.trigger(Events.TEARDOWN_COMPLETE);\n }\n\n function getKeySystem() {\n return keySystem;\n }\n\n function getAllInitData() {\n var retVal = [];\n for (let i = 0; i < pendingSessions.length; i++) {\n retVal.push(pendingSessions[i].initData);\n }\n for (let i = 0; i < sessions.length; i++) {\n retVal.push(sessions[i].initData);\n }\n return retVal;\n }\n\n function requestKeySystemAccess(ksConfigurations) {\n var ve = videoElement;\n if (!ve) { // Must have a video element to do this capability tests\n ve = document.createElement('video');\n }\n\n // Try key systems in order, first one with supported key system configuration\n // is used\n var found = false;\n for (var ksIdx = 0; ksIdx < ksConfigurations.length; ksIdx++) {\n var systemString = ksConfigurations[ksIdx].ks.systemString;\n var configs = ksConfigurations[ksIdx].configs;\n var supportedAudio = null;\n var supportedVideo = null;\n\n // Try key system configs in order, first one with supported audio/video\n // is used\n for (var configIdx = 0; configIdx < configs.length; configIdx++) {\n //var audios = configs[configIdx].audioCapabilities;\n var videos = configs[configIdx].videoCapabilities;\n // Look for supported video container/codecs\n if (videos && videos.length !== 0) {\n supportedVideo = []; // Indicates that we have a requested video config\n for (var videoIdx = 0; videoIdx < videos.length; videoIdx++) {\n if (ve.canPlayType(videos[videoIdx].contentType, systemString) !== '') {\n supportedVideo.push(videos[videoIdx]);\n }\n }\n }\n\n // No supported audio or video in this configuration OR we have\n // requested audio or video configuration that is not supported\n if ((!supportedAudio && !supportedVideo) ||\n (supportedAudio && supportedAudio.length === 0) ||\n (supportedVideo && supportedVideo.length === 0)) {\n continue;\n }\n\n // This configuration is supported\n found = true;\n var ksConfig = new KeySystemConfiguration(supportedAudio, supportedVideo);\n var ks = protectionKeyController.getKeySystemBySystemString(systemString);\n eventBus.trigger(Events.KEY_SYSTEM_ACCESS_COMPLETE, { data: new KeySystemAccess(ks, ksConfig) });\n break;\n }\n }\n if (!found) {\n eventBus.trigger(Events.KEY_SYSTEM_ACCESS_COMPLETE, {error: 'Key system access denied! -- No valid audio/video content configurations detected!'});\n }\n }\n\n function selectKeySystem(keySystemAccess) {\n keySystem = keySystemAccess.keySystem;\n eventBus.trigger(Events.INTERNAL_KEY_SYSTEM_SELECTED);\n }\n\n function setMediaElement(mediaElement) {\n if (videoElement === mediaElement) {\n return;\n }\n\n // Replacing the previous element\n if (videoElement) {\n removeEventListeners();\n }\n\n videoElement = mediaElement;\n\n // Only if we are not detaching from the existing element\n if (videoElement) {\n videoElement.addEventListener(api.keyerror, eventHandler);\n videoElement.addEventListener(api.needkey, eventHandler);\n videoElement.addEventListener(api.keymessage, eventHandler);\n videoElement.addEventListener(api.keyadded, eventHandler);\n eventBus.trigger(Events.VIDEO_ELEMENT_SELECTED);\n }\n }\n\n function createKeySession(initData /*, keySystemType */) {\n\n if (!keySystem) {\n throw new Error('Can not create sessions until you have selected a key system');\n }\n\n // Determine if creating a new session is allowed\n if (moreSessionsAllowed || sessions.length === 0) {\n\n var newSession = { // Implements SessionToken\n sessionID: null,\n initData: initData,\n getSessionID: function () {\n return this.sessionID;\n },\n\n getExpirationTime: function () {\n return NaN;\n },\n\n getSessionType: function () {\n return 'temporary';\n }\n };\n pendingSessions.push(newSession);\n\n // Send our request to the CDM\n videoElement[api.generateKeyRequest](keySystem.systemString, new Uint8Array(initData));\n\n return newSession;\n\n } else {\n throw new Error('Multiple sessions not allowed!');\n }\n\n }\n\n function updateKeySession(sessionToken, message) {\n var sessionID = sessionToken.sessionID;\n if (!protectionKeyController.isClearKey(keySystem)) {\n // Send our request to the CDM\n videoElement[api.addKey](keySystem.systemString,\n new Uint8Array(message), sessionToken.initData, sessionID);\n } else {\n // For clearkey, message is a ClearKeyKeySet\n for (var i = 0; i < message.keyPairs.length; i++) {\n videoElement[api.addKey](keySystem.systemString,\n message.keyPairs[i].key, message.keyPairs[i].keyID, sessionID);\n }\n }\n }\n\n function closeKeySession(sessionToken) {\n // Send our request to the CDM\n videoElement[api.cancelKeyRequest](keySystem.systemString, sessionToken.sessionID);\n }\n\n function setServerCertificate(/*serverCertificate*/) { /* Not supported */ }\n function loadKeySession(/*sessionID*/) { /* Not supported */ }\n function removeKeySession(/*sessionToken*/) { /* Not supported */ }\n\n function createEventHandler() {\n return {\n handleEvent: function (event) {\n var sessionToken = null;\n switch (event.type) {\n\n case api.needkey:\n var initData = ArrayBuffer.isView(event.initData) ? event.initData.buffer : event.initData;\n eventBus.trigger(Events.NEED_KEY, {key: new NeedKey(initData, 'cenc')});\n break;\n\n case api.keyerror:\n sessionToken = findSessionByID(sessions, event.sessionId);\n if (!sessionToken) {\n sessionToken = findSessionByID(pendingSessions, event.sessionId);\n }\n\n if (sessionToken) {\n var msg = '';\n switch (event.errorCode.code) {\n case 1:\n msg += 'MEDIA_KEYERR_UNKNOWN - An unspecified error occurred. This value is used for errors that don\\'t match any of the other codes.';\n break;\n case 2:\n msg += 'MEDIA_KEYERR_CLIENT - The Key System could not be installed or updated.';\n break;\n case 3:\n msg += 'MEDIA_KEYERR_SERVICE - The message passed into update indicated an error from the license service.';\n break;\n case 4:\n msg += 'MEDIA_KEYERR_OUTPUT - There is no available output device with the required characteristics for the content protection system.';\n break;\n case 5:\n msg += 'MEDIA_KEYERR_HARDWARECHANGE - A hardware configuration change caused a content protection error.';\n break;\n case 6:\n msg += 'MEDIA_KEYERR_DOMAIN - An error occurred in a multi-device domain licensing configuration. The most common error is a failure to join the domain.';\n break;\n }\n msg += ' System Code = ' + event.systemCode;\n // TODO: Build error string based on key error\n eventBus.trigger(Events.KEY_ERROR, {data: new KeyError(sessionToken, msg)});\n } else {\n log('No session token found for key error');\n }\n break;\n\n case api.keyadded:\n sessionToken = findSessionByID(sessions, event.sessionId);\n if (!sessionToken) {\n sessionToken = findSessionByID(pendingSessions, event.sessionId);\n }\n\n if (sessionToken) {\n log('DRM: Key added.');\n eventBus.trigger(Events.KEY_ADDED, {data: sessionToken});//TODO not sure anything is using sessionToken? why there?\n } else {\n log('No session token found for key added');\n }\n break;\n\n case api.keymessage:\n\n // If this CDM does not support session IDs, we will be limited\n // to a single session\n moreSessionsAllowed = (event.sessionId !== null) && (event.sessionId !== undefined);\n\n // SessionIDs supported\n if (moreSessionsAllowed) {\n\n // Attempt to find an uninitialized token with this sessionID\n sessionToken = findSessionByID(sessions, event.sessionId);\n if (!sessionToken && pendingSessions.length > 0) {\n\n // This is the first message for our latest session, so set the\n // sessionID and add it to our list\n sessionToken = pendingSessions.shift();\n sessions.push(sessionToken);\n sessionToken.sessionID = event.sessionId;\n }\n } else if (pendingSessions.length > 0) { // SessionIDs not supported\n\n sessionToken = pendingSessions.shift();\n sessions.push(sessionToken);\n\n if (pendingSessions.length !== 0) {\n errHandler.mediaKeyMessageError('Multiple key sessions were creates with a user-agent that does not support sessionIDs!! Unpredictable behavior ahead!');\n }\n }\n\n if (sessionToken) {\n var message = ArrayBuffer.isView(event.message) ? event.message.buffer : event.message;\n\n // For ClearKey, the spec mandates that you pass this message to the\n // addKey method, so we always save it to the token since there is no\n // way to tell which key system is in use\n sessionToken.keyMessage = message;\n eventBus.trigger(Events.INTERNAL_KEY_MESSAGE, {data: new KeyMessage(sessionToken, message, event.defaultURL)});\n\n } else {\n log('No session token found for key message');\n }\n break;\n }\n }\n };\n }\n\n\n /**\n * Helper function to retrieve the stored session token based on a given\n * sessionID value\n *\n * @param sessionArray {Array} the array of sessions to search\n * @param sessionID the sessionID to search for\n * @returns {*} the session token with the given sessionID\n */\n function findSessionByID(sessionArray, sessionID) {\n\n if (!sessionID || !sessionArray) {\n return null;\n } else {\n var len = sessionArray.length;\n for (var i = 0; i < len; i++) {\n if (sessionArray[i].sessionID == sessionID) {\n return sessionArray[i];\n }\n }\n return null;\n }\n }\n\n function removeEventListeners() {\n videoElement.removeEventListener(api.keyerror, eventHandler);\n videoElement.removeEventListener(api.needkey, eventHandler);\n videoElement.removeEventListener(api.keymessage, eventHandler);\n videoElement.removeEventListener(api.keyadded, eventHandler);\n }\n\n instance = {\n getAllInitData: getAllInitData,\n requestKeySystemAccess: requestKeySystemAccess,\n getKeySystem: getKeySystem,\n selectKeySystem: selectKeySystem,\n setMediaElement: setMediaElement,\n createKeySession: createKeySession,\n updateKeySession: updateKeySession,\n closeKeySession: closeKeySession,\n setServerCertificate: setServerCertificate,\n loadKeySession: loadKeySession,\n removeKeySession: removeKeySession,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nProtectionModel_01b.__dashjs_factory_name = 'ProtectionModel_01b';\nexport default FactoryMaker.getClassFactory(ProtectionModel_01b);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Most recent EME implementation\n *\n * Implemented by Google Chrome v36+ (Windows, OSX, Linux)\n *\n * @implements ProtectionModel\n * @class\n */\nimport ProtectionKeyController from '../controllers/ProtectionKeyController.js';\nimport NeedKey from '../vo/NeedKey.js';\nimport KeyError from '../vo/KeyError.js';\nimport KeyMessage from '../vo/KeyMessage.js';\nimport KeySystemAccess from '../vo/KeySystemAccess.js';\nimport Events from '../../../core/events/Events.js';\nimport FactoryMaker from '../../../core/FactoryMaker.js';\n\nfunction ProtectionModel_21Jan2015(config) {\n\n let context = this.context;\n let eventBus = config.eventBus;//Need to pass in here so we can use same instance since this is optional module\n let log = config.log;\n\n var instance,\n keySystem,\n videoElement,\n mediaKeys,\n sessions,\n eventHandler,\n protectionKeyController;\n\n function setup() {\n keySystem = null;\n videoElement = null;\n mediaKeys = null;\n sessions = [];\n protectionKeyController = ProtectionKeyController(context).getInstance();\n eventHandler = createEventHandler();\n }\n\n function reset() {\n var numSessions = sessions.length;\n var session;\n\n if (numSessions !== 0) {\n // Called when we are done closing a session. Success or fail\n var done = function (session) {\n removeSession(session);\n if (sessions.length === 0) {\n if (videoElement) {\n videoElement.removeEventListener('encrypted', eventHandler);\n videoElement.setMediaKeys(null).then(function () {\n eventBus.trigger(Events.TEARDOWN_COMPLETE);\n });\n } else {\n eventBus.trigger(Events.TEARDOWN_COMPLETE);\n }\n }\n };\n for (var i = 0; i < numSessions; i++) {\n session = sessions[i];\n (function (s) {\n // Override closed promise resolver\n session.session.closed.then(function () {\n done(s);\n });\n // Close the session and handle errors, otherwise promise\n // resolver above will be called\n closeKeySessionInternal(session).catch(function () {\n done(s);\n });\n\n })(session);\n }\n } else {\n eventBus.trigger(Events.TEARDOWN_COMPLETE);\n }\n }\n\n function getKeySystem() {\n return keySystem;\n }\n\n function getAllInitData() {\n var retVal = [];\n for (var i = 0; i < sessions.length; i++) {\n retVal.push(sessions[i].initData);\n }\n return retVal;\n }\n\n function requestKeySystemAccess(ksConfigurations) {\n requestKeySystemAccessInternal(ksConfigurations, 0);\n }\n\n function selectKeySystem(keySystemAccess) {\n keySystemAccess.mksa.createMediaKeys().then(function (mkeys) {\n keySystem = keySystemAccess.keySystem;\n mediaKeys = mkeys;\n if (videoElement) {\n videoElement.setMediaKeys(mediaKeys);\n }\n eventBus.trigger(Events.INTERNAL_KEY_SYSTEM_SELECTED);\n\n }).catch(function () {\n eventBus.trigger(Events.INTERNAL_KEY_SYSTEM_SELECTED, {error: 'Error selecting keys system (' + keySystemAccess.keySystem.systemString + ')! Could not create MediaKeys -- TODO'});\n });\n }\n\n function setMediaElement(mediaElement) {\n if (videoElement === mediaElement)\n return;\n\n // Replacing the previous element\n if (videoElement) {\n videoElement.removeEventListener('encrypted', eventHandler);\n videoElement.setMediaKeys(null);\n }\n\n videoElement = mediaElement;\n\n // Only if we are not detaching from the existing element\n if (videoElement) {\n videoElement.addEventListener('encrypted', eventHandler);\n if (mediaKeys) {\n videoElement.setMediaKeys(mediaKeys);\n }\n }\n }\n\n function setServerCertificate(serverCertificate) {\n if (!keySystem || !mediaKeys) {\n throw new Error('Can not set server certificate until you have selected a key system');\n }\n mediaKeys.setServerCertificate(serverCertificate).then(function () {\n log('DRM: License server certificate successfully updated.');\n eventBus.trigger(Events.SERVER_CERTIFICATE_UPDATED);\n }).catch(function (error) {\n eventBus.trigger(Events.SERVER_CERTIFICATE_UPDATED, {error: 'Error updating server certificate -- ' + error.name});\n });\n }\n\n function createKeySession(initData, sessionType) {\n\n if (!keySystem || !mediaKeys) {\n throw new Error('Can not create sessions until you have selected a key system');\n }\n\n var session = mediaKeys.createSession(sessionType);\n var sessionToken = createSessionToken(session, initData, sessionType);\n\n // Generate initial key request\n session.generateRequest('cenc', initData).then(function () {\n log('DRM: Session created. SessionID = ' + sessionToken.getSessionID());\n eventBus.trigger(Events.KEY_SESSION_CREATED, {data: sessionToken});\n }).catch(function (error) {\n // TODO: Better error string\n removeSession(sessionToken);\n eventBus.trigger(Events.KEY_SESSION_CREATED, {data: null, error: 'Error generating key request -- ' + error.name});\n });\n }\n\n function updateKeySession(sessionToken, message) {\n\n var session = sessionToken.session;\n\n // Send our request to the key session\n if (protectionKeyController.isClearKey(keySystem)) {\n message = message.toJWK();\n }\n session.update(message).catch(function (error) {\n eventBus.trigger(Events.KEY_ERROR, {data: new KeyError(sessionToken, 'Error sending update() message! ' + error.name)});\n });\n }\n\n function loadKeySession(sessionID) {\n if (!keySystem || !mediaKeys) {\n throw new Error('Can not load sessions until you have selected a key system');\n }\n\n var session = mediaKeys.createSession();\n\n // Load persisted session data into our newly created session object\n session.load(sessionID).then(function (success) {\n if (success) {\n var sessionToken = createSessionToken(session);\n log('DRM: Session created. SessionID = ' + sessionToken.getSessionID());\n eventBus.trigger(Events.KEY_SESSION_CREATED, {data: sessionToken});\n } else {\n eventBus.trigger(Events.KEY_SESSION_CREATED, {data: null, error: 'Could not load session! Invalid Session ID (' + sessionID + ')'});\n }\n }).catch(function (error) {\n eventBus.trigger(Events.KEY_SESSION_CREATED, {data: null, error: 'Could not load session (' + sessionID + ')! ' + error.name});\n });\n }\n\n function removeKeySession(sessionToken) {\n var session = sessionToken.session;\n\n session.remove().then(function () {\n log('DRM: Session removed. SessionID = ' + sessionToken.getSessionID());\n eventBus.trigger(Events.KEY_SESSION_REMOVED, {data: sessionToken.getSessionID()});\n }, function (error) {\n eventBus.trigger(Events.KEY_SESSION_REMOVED, {data: null, error: 'Error removing session (' + sessionToken.getSessionID() + '). ' + error.name});\n\n });\n }\n\n function closeKeySession(sessionToken) {\n // Send our request to the key session\n closeKeySessionInternal(sessionToken).catch(function (error) {\n removeSession(sessionToken);\n eventBus.trigger(Events.KEY_SESSION_CLOSED, {data: null, error: 'Error closing session (' + sessionToken.getSessionID() + ') ' + error.name});\n });\n }\n\n function requestKeySystemAccessInternal(ksConfigurations, idx) {\n (function (i) {\n var keySystem = ksConfigurations[i].ks;\n var configs = ksConfigurations[i].configs;\n navigator.requestMediaKeySystemAccess(keySystem.systemString, configs).then(function (mediaKeySystemAccess) {\n\n // Chrome 40 does not currently implement MediaKeySystemAccess.getConfiguration()\n var configuration = (typeof mediaKeySystemAccess.getConfiguration === 'function') ?\n mediaKeySystemAccess.getConfiguration() : null;\n var keySystemAccess = new KeySystemAccess(keySystem, configuration);\n keySystemAccess.mksa = mediaKeySystemAccess;\n eventBus.trigger(Events.KEY_SYSTEM_ACCESS_COMPLETE, {data: keySystemAccess});\n\n }).catch(function () {\n if (++i < ksConfigurations.length) {\n requestKeySystemAccessInternal(ksConfigurations, i);\n } else {\n eventBus.trigger(Events.KEY_SYSTEM_ACCESS_COMPLETE, {error: 'Key system access denied!'});\n }\n });\n })(idx);\n }\n\n function closeKeySessionInternal(sessionToken) {\n var session = sessionToken.session;\n\n // Remove event listeners\n session.removeEventListener('keystatuseschange', sessionToken);\n session.removeEventListener('message', sessionToken);\n\n // Send our request to the key session\n return session.close();\n }\n\n // This is our main event handler for all desired HTMLMediaElement events\n // related to EME. These events are translated into our API-independent\n // versions of the same events\n function createEventHandler() {\n return {\n handleEvent: function (event) {\n switch (event.type) {\n\n case 'encrypted':\n if (event.initData) {\n var initData = ArrayBuffer.isView(event.initData) ? event.initData.buffer : event.initData;\n eventBus.trigger(Events.NEED_KEY, {key: new NeedKey(initData, event.initDataType)});\n }\n break;\n }\n }\n };\n }\n\n function removeSession(token) {\n // Remove from our session list\n for (var i = 0; i < sessions.length; i++) {\n if (sessions[i] === token) {\n sessions.splice(i,1);\n break;\n }\n }\n }\n\n // Function to create our session token objects which manage the EME\n // MediaKeySession and session-specific event handler\n function createSessionToken(session, initData, sessionType) {\n\n var token = { // Implements SessionToken\n session: session,\n initData: initData,\n\n // This is our main event handler for all desired MediaKeySession events\n // These events are translated into our API-independent versions of the\n // same events\n handleEvent: function (event) {\n switch (event.type) {\n case 'keystatuseschange':\n eventBus.trigger(Events.KEY_STATUSES_CHANGED, {data: this});\n break;\n\n case 'message':\n var message = ArrayBuffer.isView(event.message) ? event.message.buffer : event.message;\n eventBus.trigger(Events.INTERNAL_KEY_MESSAGE, {data: new KeyMessage(this, message, undefined, event.messageType)});\n break;\n }\n },\n\n getSessionID: function () {\n return session.sessionId;\n },\n\n getExpirationTime: function () {\n return session.expiration;\n },\n\n getKeyStatuses: function () {\n return session.keyStatuses;\n },\n\n getSessionType: function () {\n return sessionType;\n }\n };\n\n // Add all event listeners\n session.addEventListener('keystatuseschange', token);\n session.addEventListener('message', token);\n\n // Register callback for session closed Promise\n session.closed.then(function () {\n removeSession(token);\n log('DRM: Session closed. SessionID = ' + token.getSessionID());\n eventBus.trigger(Events.KEY_SESSION_CLOSED, {data: token.getSessionID()});\n });\n\n // Add to our session list\n sessions.push(token);\n\n return token;\n }\n\n instance = {\n getAllInitData: getAllInitData,\n requestKeySystemAccess: requestKeySystemAccess,\n getKeySystem: getKeySystem,\n selectKeySystem: selectKeySystem,\n setMediaElement: setMediaElement,\n setServerCertificate: setServerCertificate,\n createKeySession: createKeySession,\n updateKeySession: updateKeySession,\n loadKeySession: loadKeySession,\n removeKeySession: removeKeySession,\n closeKeySession: closeKeySession,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nProtectionModel_21Jan2015.__dashjs_factory_name = 'ProtectionModel_21Jan2015';\nexport default FactoryMaker.getClassFactory(ProtectionModel_21Jan2015);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Implementation of the EME APIs as of the 3 Feb 2014 state of the specification.\n *\n * Implemented by Internet Explorer 11 (Windows 8.1)\n *\n * @implements ProtectionModel\n * @class\n */\n\nimport ProtectionKeyController from '../controllers/ProtectionKeyController.js';\nimport NeedKey from '../vo/NeedKey.js';\nimport KeyError from '../vo/KeyError.js';\nimport KeyMessage from '../vo/KeyMessage.js';\nimport KeySystemConfiguration from '../vo/KeySystemConfiguration.js';\nimport KeySystemAccess from '../vo/KeySystemAccess.js';\nimport Events from '../../../core/events/Events.js';\nimport FactoryMaker from '../../../core/FactoryMaker.js';\n\nfunction ProtectionModel_3Feb2014(config) {\n\n let context = this.context;\n let eventBus = config.eventBus;//Need to pass in here so we can use same instance since this is optional module\n let log = config.log;\n let api = config.api;\n\n\n let instance,\n videoElement,\n keySystem,\n mediaKeys,\n keySystemAccess,\n sessions,\n eventHandler,\n protectionKeyController;\n\n function setup() {\n videoElement = null;\n keySystem = null;\n mediaKeys = null;\n keySystemAccess = null;\n sessions = [];\n protectionKeyController = ProtectionKeyController(context).getInstance();\n eventHandler = createEventHandler();\n }\n\n function reset() {\n try {\n for (var i = 0; i < sessions.length; i++) {\n closeKeySession(sessions[i]);\n }\n if (videoElement) {\n videoElement.removeEventListener(api.needkey, eventHandler);\n }\n eventBus.trigger(Events.TEARDOWN_COMPLETE);\n } catch (error) {\n eventBus.trigger(Events.TEARDOWN_COMPLETE, {error: 'Error tearing down key sessions and MediaKeys! -- ' + error.message});\n }\n }\n\n function getKeySystem() {\n return keySystem;\n }\n\n function getAllInitData() {\n var retVal = [];\n for (var i = 0; i < sessions.length; i++) {\n retVal.push(sessions[i].initData);\n }\n return retVal;\n }\n\n function requestKeySystemAccess(ksConfigurations) {\n\n // Try key systems in order, first one with supported key system configuration\n // is used\n var found = false;\n for (var ksIdx = 0; ksIdx < ksConfigurations.length; ksIdx++) {\n var systemString = ksConfigurations[ksIdx].ks.systemString;\n var configs = ksConfigurations[ksIdx].configs;\n var supportedAudio = null;\n var supportedVideo = null;\n\n // Try key system configs in order, first one with supported audio/video\n // is used\n for (var configIdx = 0; configIdx < configs.length; configIdx++) {\n var audios = configs[configIdx].audioCapabilities;\n var videos = configs[configIdx].videoCapabilities;\n\n // Look for supported audio container/codecs\n if (audios && audios.length !== 0) {\n supportedAudio = []; // Indicates that we have a requested audio config\n for (var audioIdx = 0; audioIdx < audios.length; audioIdx++) {\n if (window[api.MediaKeys].isTypeSupported(systemString, audios[audioIdx].contentType)) {\n supportedAudio.push(audios[audioIdx]);\n }\n }\n }\n\n // Look for supported video container/codecs\n if (videos && videos.length !== 0) {\n supportedVideo = []; // Indicates that we have a requested video config\n for (var videoIdx = 0; videoIdx < videos.length; videoIdx++) {\n if (window[api.MediaKeys].isTypeSupported(systemString, videos[videoIdx].contentType)) {\n supportedVideo.push(videos[videoIdx]);\n }\n }\n }\n\n // No supported audio or video in this configuration OR we have\n // requested audio or video configuration that is not supported\n if ((!supportedAudio && !supportedVideo) ||\n (supportedAudio && supportedAudio.length === 0) ||\n (supportedVideo && supportedVideo.length === 0)) {\n continue;\n }\n\n // This configuration is supported\n found = true;\n var ksConfig = new KeySystemConfiguration(supportedAudio, supportedVideo);\n var ks = protectionKeyController.getKeySystemBySystemString(systemString);\n eventBus.trigger(Events.KEY_SYSTEM_ACCESS_COMPLETE, {data: new KeySystemAccess(ks, ksConfig)});\n break;\n }\n }\n if (!found) {\n eventBus.trigger(Events.KEY_SYSTEM_ACCESS_COMPLETE, {error: 'Key system access denied! -- No valid audio/video content configurations detected!'});\n }\n }\n\n function selectKeySystem(ksAccess) {\n try {\n mediaKeys = ksAccess.mediaKeys = new window[api.MediaKeys](ksAccess.keySystem.systemString);\n keySystem = ksAccess.keySystem;\n keySystemAccess = ksAccess;\n if (videoElement) {\n setMediaKeys();\n }\n eventBus.trigger(Events.INTERNAL_KEY_SYSTEM_SELECTED);\n } catch (error) {\n eventBus.trigger(Events.INTERNAL_KEY_SYSTEM_SELECTED, {error: 'Error selecting keys system (' + keySystem.systemString + ')! Could not create MediaKeys -- TODO'});\n }\n }\n\n function setMediaElement(mediaElement) {\n if (videoElement === mediaElement)\n return;\n\n // Replacing the previous element\n if (videoElement) {\n videoElement.removeEventListener(api.needkey, eventHandler);\n }\n\n videoElement = mediaElement;\n\n // Only if we are not detaching from the existing element\n if (videoElement) {\n videoElement.addEventListener(api.needkey, eventHandler);\n if (mediaKeys) {\n setMediaKeys();\n }\n }\n }\n\n function createKeySession(initData /*, keySystemType */) {\n\n if (!keySystem || !mediaKeys || !keySystemAccess) {\n throw new Error('Can not create sessions until you have selected a key system');\n }\n\n // Use the first video capability for the contentType.\n // TODO: Not sure if there is a way to concatenate all capability data into a RFC6386-compatible format\n\n // If player is trying to playback Audio only stream - don't error out.\n var capabilities = null;\n\n if (keySystemAccess.ksConfiguration.videoCapabilities !== null && keySystemAccess.ksConfiguration.videoCapabilities.length > 0)\n capabilities = keySystemAccess.ksConfiguration.videoCapabilities[0];\n\n if (capabilities === null && keySystemAccess.ksConfiguration.audioCapabilities !== null && keySystemAccess.ksConfiguration.audioCapabilities.length > 0)\n capabilities = keySystemAccess.ksConfiguration.audioCapabilities[0];\n\n if (capabilities === null)\n throw new Error('Can not create sessions for unknown content types.');\n\n var contentType = capabilities.contentType;\n var session = mediaKeys.createSession(contentType, new Uint8Array(initData));\n var sessionToken = createSessionToken(session, initData);\n\n // Add all event listeners\n session.addEventListener(api.error, sessionToken);\n session.addEventListener(api.message, sessionToken);\n session.addEventListener(api.ready, sessionToken);\n session.addEventListener(api.close, sessionToken);\n\n // Add to our session list\n sessions.push(sessionToken);\n log('DRM: Session created. SessionID = ' + sessionToken.getSessionID());\n eventBus.trigger(Events.KEY_SESSION_CREATED, {data: sessionToken});\n }\n\n function updateKeySession(sessionToken, message) {\n\n var session = sessionToken.session;\n\n if (!protectionKeyController.isClearKey(keySystem)) {\n // Send our request to the key session\n session.update(new Uint8Array(message));\n } else {\n // For clearkey, message is a ClearKeyKeySet\n session.update(new Uint8Array(message.toJWK()));\n }\n }\n\n /**\n * Close the given session and release all associated keys. Following\n * this call, the sessionToken becomes invalid\n *\n * @param sessionToken the session token\n */\n function closeKeySession(sessionToken) {\n\n var session = sessionToken.session;\n\n // Remove event listeners\n session.removeEventListener(api.error, sessionToken);\n session.removeEventListener(api.message, sessionToken);\n session.removeEventListener(api.ready, sessionToken);\n session.removeEventListener(api.close, sessionToken);\n\n // Remove from our session list\n for (var i = 0; i < sessions.length; i++) {\n if (sessions[i] === sessionToken) {\n sessions.splice(i,1);\n break;\n }\n }\n\n // Send our request to the key session\n session[api.release]();\n }\n\n function setServerCertificate(/*serverCertificate*/) { /* Not supported */ }\n function loadKeySession(/*sessionID*/) { /* Not supported */ }\n function removeKeySession(/*sessionToken*/) { /* Not supported */ }\n\n\n function createEventHandler() {\n return {\n handleEvent: function (event) {\n switch (event.type) {\n\n case api.needkey:\n if (event.initData) {\n var initData = ArrayBuffer.isView(event.initData) ? event.initData.buffer : event.initData;\n eventBus.trigger(Events.NEED_KEY, {key: new NeedKey(initData, 'cenc')});\n }\n break;\n }\n }\n };\n }\n\n\n // IE11 does not let you set MediaKeys until it has entered a certain\n // readyState, so we need this logic to ensure we don't set the keys\n // too early\n function setMediaKeys() {\n var boundDoSetKeys = null;\n var doSetKeys = function () {\n videoElement.removeEventListener('loadedmetadata', boundDoSetKeys);\n videoElement[api.setMediaKeys](mediaKeys);\n eventBus.trigger(Events.VIDEO_ELEMENT_SELECTED);\n };\n if (videoElement.readyState >= 1) {\n doSetKeys();\n } else {\n boundDoSetKeys = doSetKeys.bind(this);\n videoElement.addEventListener('loadedmetadata', boundDoSetKeys);\n }\n\n }\n\n // Function to create our session token objects which manage the EME\n // MediaKeySession and session-specific event handler\n function createSessionToken(keySession, initData) {\n return {\n // Implements SessionToken\n session: keySession,\n initData: initData,\n\n getSessionID: function () {\n return this.session.sessionId;\n },\n\n getExpirationTime: function () {\n return NaN;\n },\n\n getSessionType: function () {\n return 'temporary';\n },\n // This is our main event handler for all desired MediaKeySession events\n // These events are translated into our API-independent versions of the\n // same events\n handleEvent: function (event) {\n switch (event.type) {\n\n case api.error:\n var errorStr = 'KeyError'; // TODO: Make better string from event\n eventBus.trigger(Events.KEY_ERROR, { data: new KeyError(this, errorStr) });\n break;\n case api.message:\n var message = ArrayBuffer.isView(event.message) ? event.message.buffer : event.message;\n eventBus.trigger(Events.INTERNAL_KEY_MESSAGE, { data: new KeyMessage(this, message, event.destinationURL) });\n break;\n case api.ready:\n log('DRM: Key added.');\n eventBus.trigger(Events.KEY_ADDED);\n break;\n\n case api.close:\n log('DRM: Session closed. SessionID = ' + this.getSessionID());\n eventBus.trigger(Events.KEY_SESSION_CLOSED, { data: this.getSessionID() });\n break;\n }\n }\n };\n }\n\n instance = {\n getAllInitData: getAllInitData,\n requestKeySystemAccess: requestKeySystemAccess,\n getKeySystem: getKeySystem,\n selectKeySystem: selectKeySystem,\n setMediaElement: setMediaElement,\n createKeySession: createKeySession,\n updateKeySession: updateKeySession,\n closeKeySession: closeKeySession,\n setServerCertificate: setServerCertificate,\n loadKeySession: loadKeySession,\n removeKeySession: removeKeySession,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nProtectionModel_3Feb2014.__dashjs_factory_name = 'ProtectionModel_3Feb2014';\nexport default FactoryMaker.getClassFactory(ProtectionModel_3Feb2014);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * CableLabs ClearKey license server implementation\n *\n * For testing purposes and evaluating potential uses for ClearKey, we have developed\n * a dirt-simple API for requesting ClearKey licenses from a remote server.\n *\n * @implements LicenseServer\n * @class\n */\nimport KeyPair from '../vo/KeyPair.js';\nimport ClearKeyKeySet from '../vo/ClearKeyKeySet.js';\nimport FactoryMaker from '../../../core/FactoryMaker.js';\n\nfunction ClearKey() {\n\n let instance;\n\n function getServerURLFromMessage(url, message/*, messageType*/) {\n // Build ClearKey server query string\n var jsonMsg = JSON.parse(String.fromCharCode.apply(null, new Uint8Array(message)));\n url += '/?';\n for (var i = 0; i < jsonMsg.kids.length; i++) {\n url += jsonMsg.kids[i] + '&';\n }\n url = url.substring(0, url.length - 1);\n return url;\n }\n\n function getHTTPMethod(/*messageType*/) {\n return 'GET';\n }\n\n function getResponseType(/*keySystemStr*/) {\n return 'json';\n }\n\n function getLicenseMessage(serverResponse/*, keySystemStr, messageType*/) {\n if (!serverResponse.hasOwnProperty('keys')) {\n return null;\n }\n var keyPairs = [];\n for (let i = 0; i < serverResponse.keys.length; i++) {\n var keypair = serverResponse.keys[i];\n var keyid = keypair.kid.replace(/=/g, '');\n var key = keypair.k.replace(/=/g, '');\n\n keyPairs.push(new KeyPair(keyid, key));\n }\n return new ClearKeyKeySet(keyPairs);\n }\n\n function getErrorResponse(serverResponse/*, keySystemStr, messageType*/) {\n return String.fromCharCode.apply(null, new Uint8Array(serverResponse));\n }\n\n instance = {\n getServerURLFromMessage: getServerURLFromMessage,\n getHTTPMethod: getHTTPMethod,\n getResponseType: getResponseType,\n getLicenseMessage: getLicenseMessage,\n getErrorResponse: getErrorResponse,\n };\n\n return instance;\n}\n\nClearKey.__dashjs_factory_name = 'ClearKey';\nexport default FactoryMaker.getSingletonFactory(ClearKey);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * CastLabs DRMToday License Server implementation\n *\n * @implements LicenseServer\n * @class\n */\nimport FactoryMaker from '../../../core/FactoryMaker.js';\nimport BASE64 from '../../../../externals/base64.js';\n\nfunction DRMToday() {\n\n const keySystems = {\n 'com.widevine.alpha': {\n responseType: 'json',\n getLicenseMessage: function (response) {\n return BASE64.decodeArray(response.license);\n },\n getErrorResponse: function (response) {\n return response;\n }\n },\n 'com.microsoft.playready': {\n responseType: 'arraybuffer',\n getLicenseMessage: function (response) {\n return response;\n },\n getErrorResponse: function (response) {\n return String.fromCharCode.apply(null, new Uint8Array(response));\n }\n }\n };\n\n let instance;\n\n function getServerURLFromMessage(url /*, message, messageType*/) {\n return url;\n }\n\n function getHTTPMethod(/*messageType*/) {\n return 'POST';\n }\n\n function getResponseType(keySystemStr/*, messageType*/) {\n return keySystems[keySystemStr].responseType;\n }\n\n function getLicenseMessage(serverResponse, keySystemStr/*, messageType*/) {\n return keySystems[keySystemStr].getLicenseMessage(serverResponse);\n }\n\n function getErrorResponse(serverResponse, keySystemStr/*, messageType*/) {\n return keySystems[keySystemStr].getErrorResponse(serverResponse);\n }\n\n instance = {\n getServerURLFromMessage: getServerURLFromMessage,\n getHTTPMethod: getHTTPMethod,\n getResponseType: getResponseType,\n getLicenseMessage: getLicenseMessage,\n getErrorResponse: getErrorResponse,\n };\n\n return instance;\n}\n\nDRMToday.__dashjs_factory_name = 'DRMToday';\nexport default FactoryMaker.getSingletonFactory(DRMToday);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Microsoft PlayReady Test License Server\n *\n * For testing content that uses the PlayReady test server at\n *\n * @implements LicenseServer\n * @class\n */\nimport FactoryMaker from '../../../core/FactoryMaker.js';\n\nfunction PlayReady() {\n\n let instance;\n\n function getServerURLFromMessage(url /*, message, messageType*/) {\n return url;\n }\n\n function getHTTPMethod(/*messageType*/) {\n return 'POST';\n }\n\n function getResponseType(/*keySystemStr, messageType*/) {\n return 'arraybuffer';\n }\n\n function getLicenseMessage(serverResponse/*, keySystemStr, messageType*/) {\n return serverResponse;\n }\n\n function getErrorResponse(serverResponse/*, keySystemStr, messageType*/) {\n return String.fromCharCode.apply(null, new Uint8Array(serverResponse));\n }\n\n instance = {\n getServerURLFromMessage: getServerURLFromMessage,\n getHTTPMethod: getHTTPMethod,\n getResponseType: getResponseType,\n getLicenseMessage: getLicenseMessage,\n getErrorResponse: getErrorResponse,\n };\n\n return instance;\n}\n\nPlayReady.__dashjs_factory_name = 'PlayReady';\nexport default FactoryMaker.getSingletonFactory(PlayReady);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport FactoryMaker from '../../../core/FactoryMaker.js';\n\nfunction Widevine() {\n\n let instance;\n\n function getServerURLFromMessage(url /*, message, messageType*/) {\n return url;\n }\n\n function getHTTPMethod(/*messageType*/) {\n return 'POST';\n }\n\n function getResponseType(/*keySystemStr, messageType*/) {\n return 'arraybuffer';\n }\n\n function getLicenseMessage(serverResponse/*, keySystemStr, messageType*/) {\n return serverResponse;\n }\n\n function getErrorResponse(serverResponse/*, keySystemStr, messageType*/) {\n return String.fromCharCode.apply(null, new Uint8Array(serverResponse));\n }\n\n instance = {\n getServerURLFromMessage: getServerURLFromMessage,\n getHTTPMethod: getHTTPMethod,\n getResponseType: getResponseType,\n getLicenseMessage: getLicenseMessage,\n getErrorResponse: getErrorResponse,\n };\n\n return instance;\n}\n\nWidevine.__dashjs_factory_name = 'Widevine';\nexport default FactoryMaker.getSingletonFactory(Widevine);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * A collection of ClearKey encryption keys with an (optional) associated\n * type\n *\n * @param keyPairs {KeyPair[]} array of key pairs\n * @param type the type of keys in this set. One of either 'persistent'\n * or 'temporary'. Can also be null or undefined.\n * @class\n * @ignore\n */\nclass ClearKeyKeySet {\n constructor(keyPairs, type) {\n if (type && type !== 'persistent' && type !== 'temporary')\n throw new Error('Invalid ClearKey key set type! Must be one of \\'persistent\\' or \\'temporary\\'');\n this.keyPairs = keyPairs;\n this.type = type;\n }\n\n /**\n * Convert this key set to its JSON Web Key (JWK) representation\n *\n * @return {ArrayBuffer} JWK object UTF-8 encoded as ArrayBuffer\n */\n toJWK() {\n var i;\n var numKeys = this.keyPairs.length;\n var jwk = {keys: []};\n\n for (i = 0; i < numKeys; i++) {\n var key = {\n kty: 'oct',\n alg: 'A128KW',\n kid: this.keyPairs[i].keyID,\n k: this.keyPairs[i].key\n };\n jwk.keys.push(key);\n }\n if (this.type) {\n jwk.type = this.type;\n }\n var jwkString = JSON.stringify(jwk);\n var len = jwkString.length;\n\n // Convert JSON string to ArrayBuffer\n var buf = new ArrayBuffer(len);\n var bView = new Uint8Array(buf);\n for (i = 0; i < len; i++)\n bView[i] = jwkString.charCodeAt(i);\n return buf;\n }\n}\n\nexport default ClearKeyKeySet;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * EME-independent KeyError\n *\n * @param sessionToken the key session to which this error is associated\n * @param errorString an informational error message\n * @class\n * @deprecated Newest versions of EME APIs will not use this error object\n */\nclass KeyError {\n constructor(sessionToken, errorString) {\n this.sessionToken = sessionToken;\n this.error = errorString;\n }\n}\n\nexport default KeyError;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * EME-independent KeyMessage\n *\n * @param {SessionToken} sessionToken the session\n * to which the key message is associated\n * @param {ArrayBuffer} message the key message\n * @param [defaultURL] license acquisition URL provided by the CDM\n * @param [messageType=\"license-request\"] the message type. Supported message types can be found\n * {@link https://w3c.github.io/encrypted-media/#idl-def-MediaKeyMessageType|here}.\n * @class\n */\nclass KeyMessage {\n constructor(sessionToken, message, defaultURL, messageType) {\n this.sessionToken = sessionToken;\n this.message = message;\n this.defaultURL = defaultURL;\n this.messageType = messageType ? messageType : 'license-request';\n }\n}\n\nexport default KeyMessage;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Represents a 128-bit keyID and 128-bit encryption key\n *\n * @param keyID {String} 128-bit key ID, base64 encoded, with no padding\n * @param key {String} 128-bit encryption key, base64 encoded, with no padding\n * @class\n * @ignore\n */\nclass KeyPair {\n constructor(keyID, key) {\n this.keyID = keyID;\n this.key = key;\n }\n}\n\nexport default KeyPair;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Creates a new key system access token. Represents a valid key system for\n * given piece of content and key system requirements. Used to initialize license\n * acquisition operations.\n *\n * @param {MediaPlayer.dependencies.protection.KeySystem} keySystem the key system\n * @param {KeySystemConfiguration} ksConfiguration the\n * subset of configurations passed to the key system access request that are supported\n * by this user agent\n * @class\n * @ignore\n */\nclass KeySystemAccess {\n constructor(keySystem, ksConfiguration) {\n this.keySystem = keySystem;\n this.ksConfiguration = ksConfiguration;\n }\n}\n\nexport default KeySystemAccess;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Represents a set of configurations that describe the capabilities desired for\n * support by a given CDM\n *\n * @param {MediaCapability[]} audioCapabilities array of\n * desired audio capabilities. Higher preference capabilities should be placed earlier\n * in the array.\n * @param {MediaCapability[]} videoCapabilities array of\n * desired video capabilities. Higher preference capabilities should be placed earlier\n * in the array.\n * @param {string} [distinctiveIdentifier=\"optional\"] desired use of distinctive identifiers.\n * One of \"required\", \"optional\", or \"not-allowed\"\n * @param {string} [persistentState=\"optional\"] desired support for persistent storage of\n * key systems. One of \"required\", \"optional\", or \"not-allowed\"\n * @param {string[]} [sessionTypes=[\"temporary\"]] List of session types that must\n * be supported by the key system\n * @class\n */\nclass KeySystemConfiguration {\n constructor(audioCapabilities, videoCapabilities, distinctiveIdentifier, persistentState, sessionTypes) {\n this.initDataTypes = [ 'cenc' ];\n this.audioCapabilities = audioCapabilities;\n this.videoCapabilities = videoCapabilities;\n this.distinctiveIdentifier = distinctiveIdentifier;\n this.persistentState = persistentState;\n this.sessionTypes = sessionTypes;\n }\n}\n\nexport default KeySystemConfiguration;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * A media capability\n *\n * @param {string} contentType MIME type and codecs (RFC6386)\n * @param {string} [robustness]\n * @constructor\n * @ignore\n */\nclass MediaCapability {\n constructor(contentType, robustness) {\n this.contentType = contentType;\n this.robustness = robustness;\n }\n}\n\nexport default MediaCapability;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass NeedKey {\n /**\n * @param {ArrayBuffer} initData the initialization data\n * @param {String} [initDataType] initialization data type\n * @constructor\n */\n constructor(initData, initDataType) {\n this.initData = initData;\n this.initDataType = initDataType;\n }\n}\n\nexport default NeedKey;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../core/FactoryMaker.js';\n\nfunction RulesContext(config) {\n\n let instance;\n let representationInfo = config.streamProcessor.getCurrentRepresentationInfo();\n let sp = config.streamProcessor;\n let currentValue = config.currentValue;\n\n function getStreamInfo() {\n return representationInfo.mediaInfo.streamInfo;\n }\n\n function getMediaInfo() {\n return representationInfo.mediaInfo;\n }\n\n function getTrackInfo() {\n return representationInfo;\n }\n\n function getCurrentValue() {\n return currentValue;\n }\n\n function getManifestInfo() {\n return representationInfo.mediaInfo.streamInfo.manifestInfo;\n }\n\n function getStreamProcessor() {\n return sp;\n }\n\n instance = {\n getStreamInfo: getStreamInfo,\n getMediaInfo: getMediaInfo,\n getTrackInfo: getTrackInfo,\n getCurrentValue: getCurrentValue,\n getManifestInfo: getManifestInfo,\n getStreamProcessor: getStreamProcessor\n };\n\n return instance;\n}\n\nRulesContext.__dashjs_factory_name = 'RulesContext';\nexport default FactoryMaker.getClassFactory(RulesContext);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport RulesContext from './RulesContext.js';\nimport SwitchRequest from './SwitchRequest.js';\nimport ABRRulesCollection from './abr/ABRRulesCollection.js';\nimport ScheduleRulesCollection from './scheduling/ScheduleRulesCollection.js';\nimport SynchronizationRulesCollection from './synchronization/SynchronizationRulesCollection.js';\nimport FactoryMaker from '../../core/FactoryMaker.js';\n\nconst SCHEDULING_RULE = 0;\nconst ABR_RULE = 1;\nconst SYNC_RULE = 2;\n\nfunction RulesController() {\n\n let context = this.context;\n\n let instance,\n rules,\n ruleMandatoryProperties;\n\n function initialize() {\n rules = {};\n ruleMandatoryProperties = ['execute'];\n }\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.abrRulesCollection) {\n rules[ABR_RULE] = config.abrRulesCollection;\n }\n\n if (config.scheduleRulesCollection) {\n rules[SCHEDULING_RULE] = config.scheduleRulesCollection;\n }\n\n if (config.synchronizationRulesCollection) {\n rules[SYNC_RULE] = config.synchronizationRulesCollection;\n }\n }\n\n function setRules(ruleType, rulesCollection) {\n if (!isRuleTypeSupported(ruleType) || !rulesCollection) return;\n\n updateRules(rules[ruleType], rulesCollection, true);\n }\n\n function addRules(ruleType, rulesCollection) {\n if (!isRuleTypeSupported(ruleType) || !rulesCollection) return;\n\n updateRules(rules[ruleType], rulesCollection, false);\n }\n\n function applyRules(rulesArr, streamProcessor, callback, current, overrideFunc) {\n var values = {};\n var rule,\n i;\n\n var rulesCount = rulesArr.length;\n var ln = rulesCount;\n var rulesContext = getRulesContext(streamProcessor, current);\n\n var callbackFunc = function (result) {\n var value,\n confidence;\n\n if (result.value !== SwitchRequest.NO_CHANGE) {\n values[result.priority] = overrideFunc(values[result.priority], result.value);\n }\n\n if (--rulesCount) return;\n\n if (values[SwitchRequest.WEAK] !== SwitchRequest.NO_CHANGE) {\n confidence = SwitchRequest.WEAK;\n value = values[SwitchRequest.WEAK];\n\n }\n\n if (values[SwitchRequest.DEFAULT] !== SwitchRequest.NO_CHANGE) {\n confidence = SwitchRequest.DEFAULT;\n value = values[SwitchRequest.DEFAULT];\n }\n\n if (values[SwitchRequest.STRONG] !== SwitchRequest.NO_CHANGE) {\n confidence = SwitchRequest.STRONG;\n value = values[SwitchRequest.STRONG];\n }\n\n if (confidence != SwitchRequest.STRONG &&\n confidence != SwitchRequest.WEAK) {\n confidence = SwitchRequest.DEFAULT;\n }\n\n\n callback({ value: (value !== undefined) ? value : current, confidence: confidence });\n\n };\n\n values[SwitchRequest.STRONG] = SwitchRequest.NO_CHANGE;\n values[SwitchRequest.WEAK] = SwitchRequest.NO_CHANGE;\n values[SwitchRequest.DEFAULT] = SwitchRequest.NO_CHANGE;\n\n for (i = 0; i < ln; i++) {\n rule = rulesArr[i];\n\n if (!isRule(rule)) {\n rulesCount--;\n continue;\n }\n\n rule.execute(rulesContext, callbackFunc);\n }\n }\n\n function reset() {\n var abrRules = rules[ABR_RULE];\n var schedulingRules = rules[SCHEDULING_RULE];\n var synchronizationRules = rules[SYNC_RULE];\n var allRules = (abrRules.getRules(ABRRulesCollection.QUALITY_SWITCH_RULES) || []).\n concat(abrRules.getRules(ABRRulesCollection.ABANDON_FRAGMENT_RULES) || []).\n concat(schedulingRules.getRules(ScheduleRulesCollection.NEXT_FRAGMENT_RULES) || []).\n concat(schedulingRules.getRules(ScheduleRulesCollection.FRAGMENTS_TO_SCHEDULE_RULES) || []).\n concat(synchronizationRules.getRules(SynchronizationRulesCollection.TIME_SYNCHRONIZED_RULES) || []).\n concat(synchronizationRules.getRules(SynchronizationRulesCollection.BEST_GUESS_RULES) || []);\n var ln = allRules.length;\n\n var rule,\n i;\n\n for (i = 0; i < ln; i++) {\n rule = allRules[i];\n\n if (typeof (rule.reset) !== 'function') continue;\n\n rule.reset();\n }\n\n rules = {};\n }\n\n function isRuleTypeSupported(ruleType) {\n return ((ruleType === ABRRulesCollection.SCHEDULING_RULE) || (ruleType === ABRRulesCollection.ABR_RULE));\n }\n\n function isRule(obj) {\n var ln = ruleMandatoryProperties.length;\n var i = 0;\n\n for (i; i < ln; i++) {\n if (!obj.hasOwnProperty(ruleMandatoryProperties[i])) return false;\n }\n\n return true;\n }\n\n function getRulesContext(streamProcessor, currentValue) {\n return RulesContext(context).create({streamProcessor: streamProcessor, currentValue: currentValue});\n }\n\n function normalizeRule(rule) {\n var exec = rule.execute.bind(rule);\n\n rule.execute = function (context, callback) {\n var normalizedCallback = function (result) {\n callback.call(rule, SwitchRequest(context).create(result.value, result.priority));\n };\n\n exec(context, normalizedCallback);\n };\n\n if (typeof (rule.reset) !== 'function') {\n rule.reset = function () {\n //TODO do some default clearing\n };\n }\n\n return rule;\n }\n\n function updateRules(currentRulesCollection, newRulesCollection, override) {\n var rule,\n ruleSubType,\n subTypeRuleSet,\n ruleArr,\n ln,\n i;\n\n for (ruleSubType in newRulesCollection) {\n ruleArr = newRulesCollection[ruleSubType];\n ln = ruleArr.length;\n\n if (!ln) continue;\n\n for (i = 0; i < ln; i++) {\n rule = ruleArr[i];\n\n if (!isRule(rule)) continue;\n\n rule = normalizeRule(rule);\n\n subTypeRuleSet = currentRulesCollection.getRules(ruleSubType);\n\n if (override) {\n override = false;\n subTypeRuleSet.length = 0;\n }\n\n subTypeRuleSet.push(rule);\n }\n }\n }\n\n instance = {\n initialize: initialize,\n setConfig: setConfig,\n setRules: setRules,\n addRules: addRules,\n applyRules: applyRules,\n reset: reset\n };\n\n return instance;\n}\n\nRulesController.__dashjs_factory_name = 'RulesController';\nlet factory = FactoryMaker.getSingletonFactory(RulesController);\nfactory.SCHEDULING_RULE = SCHEDULING_RULE;\nfactory.ABR_RULE = ABR_RULE;\nfactory.SYNC_RULE = SYNC_RULE;\nexport default factory;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../core/FactoryMaker.js';\n\nconst NO_CHANGE = 999;\nconst DEFAULT = 0.5;\nconst STRONG = 1;\nconst WEAK = 0;\n\nfunction SwitchRequest (v, p) {\n //TODO refactor all the calls to this to use config to be like everything else.\n let value = (v === undefined) ? NO_CHANGE : v;\n let priority = (p === undefined) ? DEFAULT : p;\n\n let instance = {\n value: value,\n priority: priority\n };\n\n return instance;\n}\n\nSwitchRequest.__dashjs_factory_name = 'SwitchRequest';\nlet factory = FactoryMaker.getClassFactory(SwitchRequest);\nfactory.NO_CHANGE = NO_CHANGE;\nfactory.DEFAULT = DEFAULT;\nfactory.STRONG = STRONG;\nfactory.WEAK = WEAK;\nexport default factory;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport ThroughputRule from './ThroughputRule.js';\nimport BufferOccupancyRule from './BufferOccupancyRule.js';\nimport InsufficientBufferRule from './InsufficientBufferRule.js';\nimport AbandonRequestsRule from './AbandonRequestsRule.js';\nimport BolaRule from './BolaRule.js';\nimport BolaAbandonRule from './BolaAbandonRule.js';\nimport MediaPlayerModel from '../../models/MediaPlayerModel.js';\nimport MetricsModel from '../../models/MetricsModel.js';\nimport DashMetrics from '../../../dash/DashMetrics.js';\nimport FactoryMaker from '../../../core/FactoryMaker.js';\n\nconst QUALITY_SWITCH_RULES = 'qualitySwitchRules';\nconst ABANDON_FRAGMENT_RULES = 'abandonFragmentRules';\n\nfunction ABRRulesCollection() {\n\n let context = this.context;\n\n let instance,\n qualitySwitchRules,\n abandonFragmentRules;\n\n function initialize() {\n qualitySwitchRules = [];\n abandonFragmentRules = [];\n\n let metricsModel = MetricsModel(context).getInstance();\n let dashMetrics = DashMetrics(context).getInstance();\n let mediaPlayerModel = MediaPlayerModel(context).getInstance();\n\n if (mediaPlayerModel.getBufferOccupancyABREnabled()) {\n qualitySwitchRules.push(\n BolaRule(context).create({\n metricsModel: metricsModel,\n dashMetrics: DashMetrics(context).getInstance()\n })\n );\n abandonFragmentRules.push(\n BolaAbandonRule(context).create({\n metricsModel: metricsModel,\n dashMetrics: DashMetrics(context).getInstance()\n })\n );\n } else {\n qualitySwitchRules.push(\n ThroughputRule(context).create({\n metricsModel: metricsModel,\n dashMetrics: dashMetrics\n })\n );\n\n qualitySwitchRules.push(\n BufferOccupancyRule(context).create({\n metricsModel: metricsModel,\n dashMetrics: dashMetrics\n })\n );\n\n qualitySwitchRules.push(InsufficientBufferRule(context).create({metricsModel: metricsModel}));\n abandonFragmentRules.push(AbandonRequestsRule(context).create());\n }\n }\n\n function getRules (type) {\n switch (type) {\n case QUALITY_SWITCH_RULES:\n return qualitySwitchRules;\n case ABANDON_FRAGMENT_RULES:\n return abandonFragmentRules;\n default:\n return null;\n }\n }\n\n instance = {\n initialize: initialize,\n getRules: getRules\n };\n\n return instance;\n}\n\nABRRulesCollection.__dashjs_factory_name = 'ABRRulesCollection';\nlet factory = FactoryMaker.getSingletonFactory(ABRRulesCollection);\nfactory.QUALITY_SWITCH_RULES = QUALITY_SWITCH_RULES;\nfactory.ABANDON_FRAGMENT_RULES = ABANDON_FRAGMENT_RULES;\nexport default factory;\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport SwitchRequest from '../SwitchRequest.js';\nimport MediaPlayerModel from '../../models/MediaPlayerModel.js';\nimport FactoryMaker from '../../../core/FactoryMaker.js';\nimport Debug from '../../../core/Debug.js';\n\nconst GRACE_TIME_THRESHOLD = 500;\nconst ABANDON_MULTIPLIER = 1.5;\n\nfunction AbandonRequestsRule(/*config*/) {\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n\n let instance,\n fragmentDict,\n abandonDict,\n mediaPlayerModel;\n\n function setup() {\n fragmentDict = {};\n abandonDict = {};\n mediaPlayerModel = MediaPlayerModel(context).getInstance();\n }\n\n function setFragmentRequestDict(type, id) {\n fragmentDict[type] = fragmentDict[type] || {};\n fragmentDict[type][id] = fragmentDict[type][id] || {};\n }\n\n function execute(rulesContext, callback) {\n var fragmentInfo;\n var now = new Date().getTime();\n var mediaInfo = rulesContext.getMediaInfo();\n var mediaType = mediaInfo.type;\n var progressEvent = rulesContext.getCurrentValue();\n var representationInfo = rulesContext.getTrackInfo();\n var req = progressEvent.request;\n var abrController = rulesContext.getStreamProcessor().getABRController();\n var switchRequest = SwitchRequest(context).create(SwitchRequest.NO_CHANGE, SwitchRequest.WEAK);\n\n if (!isNaN(req.index)) {\n setFragmentRequestDict(mediaType, req.index);\n fragmentInfo = fragmentDict[mediaType][req.index];\n\n if (fragmentInfo === null || req.firstByteDate === null || abandonDict.hasOwnProperty(fragmentInfo.id)) {\n callback(switchRequest);\n return;\n }\n\n //setup some init info based on first progress event\n if (fragmentInfo.firstByteTime === undefined) {\n fragmentInfo.firstByteTime = req.firstByteDate.getTime();\n fragmentInfo.segmentDuration = req.duration;\n fragmentInfo.bytesTotal = req.bytesTotal;\n fragmentInfo.id = req.index;\n //log(\"FRAG ID : \" ,fragmentInfo.id, \" *****************\");\n }\n //update info base on subsequent progress events until completed.\n fragmentInfo.bytesLoaded = req.bytesLoaded;\n fragmentInfo.elapsedTime = now - fragmentInfo.firstByteTime;\n\n if (fragmentInfo.bytesLoaded < fragmentInfo.bytesTotal &&\n fragmentInfo.elapsedTime >= GRACE_TIME_THRESHOLD) {\n\n fragmentInfo.measuredBandwidthInKbps = Math.round(fragmentInfo.bytesLoaded * 8 / fragmentInfo.elapsedTime);\n fragmentInfo.estimatedTimeOfDownload = (fragmentInfo.bytesTotal * 8 * 0.001 / fragmentInfo.measuredBandwidthInKbps).toFixed(2);\n //log(\"id: \",fragmentInfo.id, \"kbps: \", fragmentInfo.measuredBandwidthInKbps, \"etd: \",fragmentInfo.estimatedTimeOfDownload, \"et: \", fragmentInfo.elapsedTime/1000);\n\n if (fragmentInfo.estimatedTimeOfDownload < (fragmentInfo.segmentDuration * ABANDON_MULTIPLIER) || representationInfo.quality === 0) {\n callback(switchRequest);\n return;\n }else if (!abandonDict.hasOwnProperty(fragmentInfo.id)) {\n var newQuality = abrController.getQualityForBitrate(mediaInfo, fragmentInfo.measuredBandwidthInKbps * mediaPlayerModel.getBandwidthSafetyFactor());\n switchRequest = SwitchRequest(context).create(newQuality, SwitchRequest.STRONG);\n abandonDict[fragmentInfo.id] = fragmentInfo;\n log('AbandonRequestsRule ( ', mediaType, 'frag id',fragmentInfo.id,') is asking to abandon and switch to quality to ', newQuality, ' measured bandwidth was', fragmentInfo.measuredBandwidthInKbps);\n delete fragmentDict[mediaType][fragmentInfo.id];\n }\n }else if (fragmentInfo.bytesLoaded === fragmentInfo.bytesTotal) {\n delete fragmentDict[mediaType][fragmentInfo.id];\n }\n }\n\n callback(switchRequest);\n }\n\n function reset() {\n fragmentDict = {};\n abandonDict = {};\n }\n\n instance = {\n execute: execute,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nAbandonRequestsRule.__dashjs_factory_name = 'AbandonRequestsRule';\nexport default FactoryMaker.getClassFactory(AbandonRequestsRule);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2016, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport SwitchRequest from '../SwitchRequest.js';\nimport MediaPlayerModel from '../../models/MediaPlayerModel.js';\nimport FactoryMaker from '../../../core/FactoryMaker.js';\nimport BolaRule from './BolaRule.js';\n\nfunction BolaAbandonRule(config) {\n\n // do not abandon during the grace period\n const GRACE_PERIOD_MS = 250;\n\n let context = this.context;\n let dashMetrics = config.dashMetrics;\n let metricsModel = config.metricsModel;\n\n let instance,\n abandonDict,\n mediaPlayerModel;\n\n function setup() {\n abandonDict = {};\n mediaPlayerModel = MediaPlayerModel(context).getInstance();\n }\n\n function setLastAbandon(mediaType, index, quality) {\n abandonDict[mediaType] = {index: index, quality: quality};\n }\n\n function isLastAbandon(mediaType, index, quality) {\n let la = abandonDict[mediaType];\n return la && la.index === index && la.quality === quality;\n }\n\n function execute(rulesContext, callback) {\n let mediaInfo = rulesContext.getMediaInfo();\n let mediaType = mediaInfo.type;\n let metrics = metricsModel.getReadOnlyMetricsFor(mediaType);\n let progressEvent = rulesContext.getCurrentValue();\n let request = progressEvent.request;\n let switchRequest = SwitchRequest(context).create(SwitchRequest.NO_CHANGE, SwitchRequest.WEAK);\n\n // TODO: should we abandon during startup?\n if (metrics.BolaState.length === 0 || metrics.BolaState[0]._s.state !== BolaRule.BOLA_STATE_STEADY) {\n callback(switchRequest);\n return;\n }\n\n let bolaState = metrics.BolaState[0]._s;\n // TODO: does changing bolaState conform to coding style, or should we clone?\n\n let index = request.index;\n let quality = request.quality;\n\n if (isNaN(index) || quality === 0 || isLastAbandon(mediaType, index, quality) || !request.firstByteDate) {\n callback(switchRequest);\n return;\n }\n\n let nowMilliSeconds = new Date().getTime();\n let elapsedTimeMilliSeconds = nowMilliSeconds - request.firstByteDate.getTime();\n\n let bytesLoaded = request.bytesLoaded;\n let bytesTotal = request.bytesTotal;\n let bytesRemaining = bytesTotal - bytesLoaded;\n\n let estimateOtherBytesTotal = bytesTotal * bolaState.bitrate[0] / bolaState.bitrate[quality];\n let bufferLevel = dashMetrics.getCurrentBufferLevel(metrics) ? dashMetrics.getCurrentBufferLevel(metrics) : 0.0;\n\n if (elapsedTimeMilliSeconds < GRACE_PERIOD_MS || bytesRemaining <= estimateOtherBytesTotal || bufferLevel > bolaState.bufferTarget) {\n // Do not abandon if we need to download less bytes than the size of the lowest quality fragment.\n // Do not abandon if buffer level is above bufferTarget because the schedule controller will not download anything anyway.\n callback(switchRequest);\n return;\n }\n\n // check if we are giving the safety guarantee (see comment in BolaRule.js)\n if (bolaState.safetyGuarantee && bufferLevel <= bolaState.fragmentDuration && bolaState.state === BolaRule.BOLA_STATE_STEADY) {\n // If the buffer only has one fragment left, then this is the last chance to abandon without rebuffering if the network bandwidth corresponds to the lowest bitrate.\n\n // BOLA_STATE_STEADY: During startup the buffer has not yet grown enough and will give false positives.\n\n bolaState.lastQuality = 0;\n metricsModel.updateBolaState(mediaType, bolaState);\n\n setLastAbandon(mediaType, index, quality);\n switchRequest = SwitchRequest(context).create(0, SwitchRequest.STRONG);\n if (BolaRule.BOLA_DEBUG) console.log('BolaDebug ' + mediaType + ' BolaAbandonRule to 0 for safety guarantee');\n callback(switchRequest);\n return;\n }\n\n let estimateThroughputBSF = bolaState.bandwidthSafetyFactor * 8000.0 * bytesLoaded / elapsedTimeMilliSeconds; // throughput in bits per second\n let rttSeconds = 0.001 * (request.firstByteDate.getTime() - request.requestStartDate.getTime());\n\n let estimateTimeRemainSeconds = 8.0 * bytesRemaining / estimateThroughputBSF;\n\n // find maximum allowed quality that shouldn't lead to rebuffering\n let maxQualityAllowed = quality; // recall that quality > 0; if quality === 0 then we would have returned early\n if (estimateTimeRemainSeconds > bufferLevel) {\n --maxQualityAllowed;\n while (maxQualityAllowed > 0) {\n estimateOtherBytesTotal = bytesTotal * bolaState.bitrate[maxQualityAllowed] / bolaState.bitrate[quality];\n if (8.0 * estimateOtherBytesTotal / estimateThroughputBSF <= bufferLevel)\n break;\n --maxQualityAllowed;\n }\n }\n\n let bufferAfterRtt = bufferLevel + bolaState.virtualBuffer - rttSeconds;\n\n let estimateBytesRemainAfterRtt = bytesRemaining - rttSeconds * estimateThroughputBSF / 8.0;\n if (estimateBytesRemainAfterRtt < 1.0) {\n // shouldn't happen, but just want to make sure\n estimateBytesRemainAfterRtt = 1.0;\n }\n\n // check if we should abandon using BOLA utility criteria\n let newQuality = quality;\n let score = (bolaState.utility[quality] + bolaState.gp - bufferAfterRtt / bolaState.Vp) / estimateBytesRemainAfterRtt;\n\n for (let i = 0; i < quality; ++i) {\n estimateOtherBytesTotal = bytesTotal * bolaState.bitrate[i] / bolaState.bitrate[quality];\n if (estimateOtherBytesTotal > estimateBytesRemainAfterRtt)\n break;\n let s = (bolaState.utility[i] + bolaState.gp - bufferAfterRtt / bolaState.Vp) / estimateOtherBytesTotal;\n if (s > score) {\n newQuality = i;\n score = s;\n }\n }\n\n // compare with maximum allowed quality that shouldn't lead to rebuffering\n if (newQuality > maxQualityAllowed) {\n newQuality = maxQualityAllowed;\n }\n\n if (newQuality === quality) {\n // no change\n callback(switchRequest);\n return;\n }\n\n // Abandon, but to which quality? Abandoning should not happen often, and it's OK to be more conservative when it does.\n while (newQuality > 0) {\n // We want to make sure that if we download a fragment at newQuality, then the bufferLevel will be sufficient to support another download at newQuality.\n // TODO: document the math\n\n let s = bolaState.bitrate[newQuality]; // relative size\n let s1 = bolaState.bitrate[newQuality - 1]; // relative size\n let u = bolaState.utility[newQuality];\n let u1 = bolaState.utility[newQuality - 1];\n let thresholdBufferLevel = bolaState.Vp * (bolaState.gp + (s * u1 - s1 * u) / (s - s1));\n\n estimateOtherBytesTotal = bytesTotal * bolaState.bitrate[newQuality] / bolaState.bitrate[quality];\n let estimateTimeToDownloadFragment = 8.0 * estimateOtherBytesTotal / estimateThroughputBSF;\n if (bufferAfterRtt - estimateTimeToDownloadFragment >= thresholdBufferLevel) {\n break;\n }\n\n --newQuality;\n }\n\n bolaState.lastQuality = newQuality;\n metricsModel.updateBolaState(mediaType, bolaState);\n\n setLastAbandon(mediaType, index, quality);\n switchRequest = SwitchRequest(context).create(newQuality, SwitchRequest.STRONG);\n if (BolaRule.BOLA_DEBUG) console.log('BolaDebug ' + mediaType + ' BolaAbandonRule abandon to ' + newQuality);\n callback(switchRequest);\n }\n\n function reset() {\n abandonDict = {};\n }\n\n instance = {\n execute: execute,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nBolaAbandonRule.__dashjs_factory_name = 'BolaAbandonRule';\nexport default FactoryMaker.getClassFactory(BolaAbandonRule);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2016, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n// For a description of the BOLA adaptive bitrate (ABR) algorithm, see http://arxiv.org/abs/1601.06748\n\nimport SwitchRequest from '../SwitchRequest.js';\nimport FactoryMaker from '../../../core/FactoryMaker.js';\nimport MediaPlayerModel from '../../models/MediaPlayerModel.js';\nimport PlaybackController from '../../controllers/PlaybackController.js';\nimport HTTPRequest from '../../vo/metrics/HTTPRequest.js';\nimport DashAdapter from '../../../dash/DashAdapter.js';\nimport EventBus from '../../../core/EventBus.js';\nimport Events from '../../../core/events/Events.js';\n\n// BOLA_STATE_ONE_BITRATE : If there is only one bitrate (or initialization failed), always return NO_CHANGE.\n// BOLA_STATE_STARTUP : Download fragments at most recently measured throughput.\n// BOLA_STATE_STARTUP_NO_INC: If quality increased then decreased during startup, then quality cannot be increased.\n// BOLA_STATE_STEADY : Buffer primed, we switch to steady operation.\n// TODO: add BOLA_STATE_SEEK and tune Bola behavior on seeking\nconst BOLA_STATE_ONE_BITRATE = 0;\nconst BOLA_STATE_STARTUP = 1;\nconst BOLA_STATE_STARTUP_NO_INC = 2;\nconst BOLA_STATE_STEADY = 3;\nconst BOLA_DEBUG = false; // TODO: remove\n\nfunction BolaRule(config) {\n\n // Bola needs some space between buffer levels.\n const MINIMUM_BUFFER_LEVEL_SPACING = 5.0;\n\n let context = this.context;\n let dashMetrics = config.dashMetrics;\n let metricsModel = config.metricsModel;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n seekMediaTypes,\n mediaPlayerModel,\n playbackController,\n adapter;\n\n function setup() {\n seekMediaTypes = [];\n mediaPlayerModel = MediaPlayerModel(context).getInstance();\n playbackController = PlaybackController(context).getInstance();\n adapter = DashAdapter(context).getInstance();\n eventBus.on(Events.PLAYBACK_SEEKING, onPlaybackSeeking, instance);\n }\n\n function calculateInitialState(rulesContext) {\n // TODO: analyze behavior of weird inputs and handle as gracefully as possible\n\n let initialState = {};\n\n let mediaInfo = rulesContext.getMediaInfo();\n\n let bitrate = mediaInfo.bitrateList;\n let bitrateCount = bitrate.length;\n if (bitrateCount < 2 || bitrate[0] >= bitrate[1] || bitrate[bitrateCount - 2] >= bitrate[bitrateCount - 1]) {\n // if bitrate list irregular, stick to lowest bitrate\n // TODO: should we tolerate repeated bitrates?\n initialState.state = BOLA_STATE_ONE_BITRATE;\n return initialState;\n }\n\n let streamProcessor = rulesContext.getStreamProcessor();\n let streamInfo = rulesContext.getStreamInfo();\n let trackInfo = rulesContext.getTrackInfo();\n\n let isDynamic = streamProcessor.isDynamic();\n let duration = streamInfo.manifestInfo.duration;\n let fragmentDuration = trackInfo.fragmentDuration;\n\n let bufferTarget;\n let bufferMax;\n // Note: If isDynamic (live streaming) we keep the same target for cases where the user is playing behind live edge, but then make throughput-based decisions when the buffer level is low because of availability.\n bufferTarget = mediaPlayerModel.getStableBufferTime();\n if (duration >= mediaPlayerModel.getLongFormContentDurationThreshold()) {\n bufferMax = mediaPlayerModel.getBufferTimeAtTopQualityLongForm();\n } else {\n bufferMax = mediaPlayerModel.getBufferTimeAtTopQuality();\n }\n\n // During live streaming, there might not be enough fragments available to fill all the way to the buffer target. In such a case, Bola detects the lack of fragment availability and calculate a bitrate depending on what the buffer level would have been had more fragments been available. This is done by keeping an additional virtualBuffer level. Of course, in such a case Bola needs to also keep track of the real buffer to avoid rebuffering.\n\n // Bola needs some space between buffer levels. If bolaBufferTarget is set to a level higher than the real bufferTarget, the Schedule Controller will still not fill up the buffer up to bolaBufferTarget. However, Bola will detect the effect of the Schedule Controller and calculate a bitrate depending on what the buffer level would have been had the Schedule Controller filled more buffer. This is handled similar to the live streaming scenario using the additional virtualBuffer level.\n let bolaBufferTarget = bufferTarget;\n if (bolaBufferTarget < fragmentDuration + MINIMUM_BUFFER_LEVEL_SPACING) {\n\n bolaBufferTarget = fragmentDuration + MINIMUM_BUFFER_LEVEL_SPACING;\n }\n\n let utility = [];\n for (let i = 0; i < bitrateCount; ++i) {\n utility.push(Math.log(bitrate[i] / bitrate[0]));\n }\n\n // BOLA parameters V and gamma (multiplied by p === fragmentDuration):\n // Choose Vp and gp such that logarithmic utility would always prefer the lowest bitrate when bufferLevel === fragmentDuration and would always prefer the highest bitrate when bufferLevel === bufferTarget.\n // TODO: document the math\n let Vp = (bolaBufferTarget - fragmentDuration) / utility[bitrateCount - 1];\n let gp = 1.0 + utility[bitrateCount - 1] / (bolaBufferTarget / fragmentDuration - 1.0);\n\n // If the bufferTarget (the real bufferTarget and not bolaBufferTarget) is large enough, we might guarantee that Bola will never rebuffer unless the network bandwidth drops below the lowest encoded bitrate level. For this to work Bola needs to use the real buffer level without the additional virtualBuffer. Also, for this to work efficiently, we need to make sure that if the buffer level drops to one fragment during a download, the current download does not have more bits remaining than the size of one fragment at the lowest quality.\n let maxRtt = 0.2; // TODO: is this reasonable?\n let safetyGuarantee = !isDynamic && bolaBufferTarget === bufferTarget;\n if (safetyGuarantee) {\n // TODO: document the math\n // we might need to adjust Vp and gp\n let VpNew = Vp;\n let gpNew = gp;\n for (let i = 1; i < bitrateCount; ++i) {\n let threshold = VpNew * (gpNew - bitrate[0] * utility[i] / (bitrate[i] - bitrate[0]));\n let minThreshold = fragmentDuration * (2.0 - bitrate[0] / bitrate[i]) + maxRtt;\n if (minThreshold >= bufferTarget) {\n safetyGuarantee = false;\n break;\n }\n if (threshold < minThreshold) {\n VpNew *= (bufferTarget - minThreshold) / (bufferTarget - threshold);\n gpNew = minThreshold / VpNew + utility[i] * bitrate[0] / (bitrate[i] - bitrate[0]);\n }\n }\n if (safetyGuarantee && (bufferTarget - fragmentDuration) * VpNew / Vp < MINIMUM_BUFFER_LEVEL_SPACING) {\n safetyGuarantee = false;\n }\n if (safetyGuarantee) {\n Vp = VpNew;\n gp = gpNew;\n }\n }\n\n // When using the virtualBuffer, it must be capped.\n // TODO: document the math\n let bolaBufferMax = Vp * (utility[bitrateCount - 1] + gp);\n\n // Note: We either use the virtualBuffer or the safetyGuarantee, but not both.\n\n initialState.state = BOLA_STATE_STARTUP;\n\n initialState.bitrate = bitrate;\n initialState.utility = utility;\n initialState.Vp = Vp;\n initialState.gp = gp;\n\n initialState.fragmentDuration = fragmentDuration;\n initialState.bandwidthSafetyFactor = mediaPlayerModel.getBandwidthSafetyFactor();\n initialState.bufferTarget = bufferTarget;\n initialState.bufferMax = bufferMax;\n initialState.bolaBufferTarget = bolaBufferTarget;\n initialState.bolaBufferMax = bolaBufferMax;\n\n initialState.isDynamic = isDynamic;\n initialState.safetyGuarantee = safetyGuarantee;\n initialState.lastQuality = 0;\n initialState.virtualBuffer = 0.0;\n\n return initialState;\n }\n\n function getQualityFromBufferLevel(bolaState, bufferLevel) {\n let bitrateCount = bolaState.bitrate.length;\n let quality = bitrateCount - 1;\n let score = 0.0;\n for (let i = 0; i < bitrateCount; ++i) {\n let s = (bolaState.utility[i] + bolaState.gp - bufferLevel / bolaState.Vp) / bolaState.bitrate[i];\n if (s > score) {\n score = s;\n quality = i;\n }\n }\n return quality;\n }\n\n function getLastHttpRequest(metrics) {\n let httpRequests = dashMetrics.getHttpRequests(metrics);\n for (let i = httpRequests.length - 1; i >= 0; --i) {\n let request = httpRequests[i];\n if (request.type === HTTPRequest.MEDIA_SEGMENT_TYPE && request._tfinish && request.tresponse) {\n return request;\n }\n }\n return null;\n }\n\n function getLastThroughput(metrics, mediaType) { // TODO: mediaType only used for debugging, remove it\n // TODO: Should we replace this with an average of the last few throughputs?\n let lastRequest = getLastHttpRequest(metrics);\n if (!lastRequest) {\n return 0.0;\n }\n\n // The RTT delay results in a lower throughput. We can avoid this delay in the calculation, but we do not want to.\n let downloadSeconds = 0.001 * (lastRequest._tfinish.getTime() - lastRequest.trequest.getTime());\n let downloadBits = 8 * lastRequest.trace.reduce(function (a, b) {\n return a + b.b[0];\n }, 0);\n\n if (BOLA_DEBUG) console.log('BolaDebug ' + mediaType + ' BolaRule last throughput = ' + (downloadBits / 1000000).toFixed(3) + '/' + downloadSeconds.toFixed(3) + '=' + (downloadBits / downloadSeconds / 1000000).toFixed(3));\n\n return downloadBits / downloadSeconds;\n }\n\n function getQualityFromThroughput(bolaState, throughput) {\n // do not factor in bandwidthSafetyFactor here - it is factored at point of call\n\n let q = 0;\n for (let i = 1; i < bolaState.bitrate.length; ++i) {\n if (bolaState.bitrate[i] > throughput) {\n break;\n }\n q = i;\n }\n return q;\n }\n\n function getDelayFromLastFragmentInSeconds(metrics) {\n let lastRequest = getLastHttpRequest(metrics);\n if (!lastRequest) {\n return 0.0;\n }\n let nowMilliSeconds = new Date().getTime();\n let lastRequestFinishMilliSeconds = lastRequest._tfinish.getTime();\n let delayMilliSeconds = nowMilliSeconds - lastRequestFinishMilliSeconds;\n\n if (delayMilliSeconds < 0.0)\n return 0.0;\n return 0.001 * delayMilliSeconds;\n }\n\n function onPlaybackSeeking() {\n // TODO: Verify what happens if we seek mid-fragment.\n // TODO: If we have 10s fragments and seek, we would like to download the first fragment at a lower quality to restart playback quickly.\n for (let i = 0; i < seekMediaTypes.length; ++i) {\n let mediaType = seekMediaTypes[i];\n let metrics = metricsModel.getReadOnlyMetricsFor(mediaType);\n if (metrics.BolaState.length !== 0) {\n let bolaState = metrics.BolaState[0]._s;\n if (bolaState.state !== BOLA_STATE_ONE_BITRATE) {\n bolaState.state = BOLA_STATE_STARTUP;\n }\n metricsModel.updateBolaState(mediaType, bolaState);\n }\n }\n }\n\n function execute(rulesContext, callback) {\n let streamProcessor = rulesContext.getStreamProcessor();\n streamProcessor.getScheduleController().setTimeToLoadDelay(0.0);\n\n let switchRequest = SwitchRequest(context).create(SwitchRequest.NO_CHANGE, SwitchRequest.WEAK);\n\n let mediaInfo = rulesContext.getMediaInfo();\n let mediaType = mediaInfo.type;\n let metrics = metricsModel.getReadOnlyMetricsFor(mediaType);\n\n if (metrics.BolaState.length === 0) {\n // initialization\n\n if (BOLA_DEBUG) console.log('BolaDebug ' + mediaType + '\\nBolaDebug ' + mediaType + ' BolaRule for state=- fragmentStart=' + adapter.getIndexHandlerTime(rulesContext.getStreamProcessor()).toFixed(3));\n\n let initState = calculateInitialState(rulesContext);\n metricsModel.updateBolaState(mediaType, initState);\n\n let q = 0;\n if (initState.state !== BOLA_STATE_ONE_BITRATE) {\n // initState.state === BOLA_STATE_STARTUP\n\n seekMediaTypes.push(mediaType);\n\n // Bola is not invoked by dash.js to determine the bitrate quality of the first fragment. We might estimate the throughput level here, but the metric related to the HTTP request for the first fragment is usually not available.\n // TODO: at some point, we may want to consider a tweak that redownloads the first fragment at a higher quality\n\n let initThroughput = getLastThroughput(metrics, mediaType);\n q = getQualityFromThroughput(initState, initThroughput * initState.bandwidthSafetyFactor);\n initState.lastQuality = q;\n switchRequest = SwitchRequest(context).create(q, SwitchRequest.DEFAULT);\n }\n\n if (BOLA_DEBUG) console.log('BolaDebug ' + mediaType + ' BolaRule quality ' + q + ' for INITIALIZE');\n callback(switchRequest);\n return;\n }\n\n // metrics.BolaState.length > 0\n let bolaState = metrics.BolaState[0]._s;\n // TODO: does changing bolaState conform to coding style, or should we clone?\n\n if (bolaState.state === BOLA_STATE_ONE_BITRATE) {\n if (BOLA_DEBUG) console.log('BolaDebug ' + mediaType + ' BolaRule quality 0 for ONE_BITRATE');\n callback(switchRequest);\n return;\n }\n\n if (BOLA_DEBUG) console.log('BolaDebug ' + mediaType + '\\nBolaDebug ' + mediaType + ' EXECUTE BolaRule for state=' + bolaState.state + ' fragmentStart=' + adapter.getIndexHandlerTime(rulesContext.getStreamProcessor()).toFixed(3));\n\n let bufferLevel = dashMetrics.getCurrentBufferLevel(metrics) ? dashMetrics.getCurrentBufferLevel(metrics) : 0.0;\n let bolaQuality = getQualityFromBufferLevel(bolaState, bufferLevel);\n let lastThroughput = getLastThroughput(metrics, mediaType);\n\n if (BOLA_DEBUG) console.log('BolaDebug ' + mediaType + ' BolaRule bufferLevel=' + bufferLevel.toFixed(3) + '(+' + bolaState.virtualBuffer.toFixed(3) + ') lastThroughput=' + (lastThroughput / 1000000.0).toFixed(3) + ' tentativeQuality=' + bolaQuality + ',' + getQualityFromBufferLevel(bolaState, bufferLevel + bolaState.virtualBuffer));\n\n if (bufferLevel <= 0.1) {\n // rebuffering occurred, reset virtual buffer\n bolaState.virtualBuffer = 0.0;\n }\n\n if (!bolaState.safetyGuarantee) { // we can use virtualBuffer\n // find out if there was delay because of lack of availability or because bolaBufferTarget > bufferTarget\n let timeSinceLastDownload = getDelayFromLastFragmentInSeconds(metrics);\n if (timeSinceLastDownload > 0.1) {\n bolaState.virtualBuffer += timeSinceLastDownload;\n }\n if (bufferLevel + bolaState.virtualBuffer > bolaState.bolaBufferMax) {\n bolaState.virtualBuffer = bolaState.bolaBufferMax - bufferLevel;\n }\n if (bolaState.virtualBuffer < 0.0) { // shouldn't really happen, but just making sure\n bolaState.virtualBuffer = 0.0;\n }\n\n // update bolaQuality using virtualBuffer: bufferLevel might be artificially low because of lack of availability\n\n let bolaQualityVirtual = getQualityFromBufferLevel(bolaState, bufferLevel + bolaState.virtualBuffer);\n if (bolaQualityVirtual > bolaQuality) {\n // May use quality higher than that indicated by real buffer level.\n\n // In this case, make sure there is enough throughput to download a fragment before real buffer runs out.\n\n let maxQuality = bolaQuality;\n while (maxQuality < bolaQualityVirtual &&\n (bolaState.bitrate[maxQuality + 1] * bolaState.fragmentDuration) /\n (lastThroughput * bolaState.bandwidthSafetyFactor) < bufferLevel\n ) {\n ++maxQuality;\n }\n\n // TODO: maybe we can use a more conservative level here, but this should be OK\n\n if (maxQuality > bolaQuality) {\n // We can (and will) download at a quality higher than that indicated by real buffer level.\n if (bolaQualityVirtual <= maxQuality) {\n // we can download fragment indicated by real+virtual buffer without rebuffering\n bolaQuality = bolaQualityVirtual;\n } else {\n // downloading fragment indicated by real+virtual rebuffers, use lower quality\n bolaQuality = maxQuality;\n // deflate virtual buffer to match quality\n // TODO: document the math\n let s = bolaState.bitrate[maxQuality]; // relative size\n let s1 = bolaState.bitrate[maxQuality + 1]; // relative size\n let u = bolaState.utility[maxQuality];\n let u1 = bolaState.utility[maxQuality + 1];\n let targetBufferLevel = bolaState.Vp * (bolaState.gp + (s1 * u - s * u1) / (s1 - s));\n if (bufferLevel + bolaState.virtualBuffer > targetBufferLevel) { // should be true\n bolaState.virtualBuffer = targetBufferLevel - bufferLevel;\n if (bolaState.virtualBuffer < 0.0) { // should be false\n bolaState.virtualBuffer = 0.0;\n }\n }\n }\n }\n }\n } // !bolaState.safetyGuarantee: we can use virtualBuffer\n\n if (bolaState.state === BOLA_STATE_STARTUP || bolaState.state === BOLA_STATE_STARTUP_NO_INC) {\n // in startup phase, use some throughput estimation\n\n let q = getQualityFromThroughput(bolaState, lastThroughput * bolaState.bandwidthSafetyFactor);\n\n if (lastThroughput <= 0.0) {\n // something went wrong - go to steady state\n bolaState.state = BOLA_STATE_STEADY;\n }\n if (bolaState.state === BOLA_STATE_STARTUP && q < bolaState.lastQuality) {\n // Since the quality is decreasing during startup, it will not be allowed to increase again.\n bolaState.state = BOLA_STATE_STARTUP_NO_INC;\n }\n if (bolaState.state === BOLA_STATE_STARTUP_NO_INC && q > bolaState.lastQuality) {\n // In this state the quality is not allowed to increase until steady state.\n q = bolaState.lastQuality;\n }\n if (q <= bolaQuality) {\n // Since the buffer is full enough for steady state operation to match startup operation, switch over to steady state.\n bolaState.state = BOLA_STATE_STEADY;\n }\n if (bolaState.state !== BOLA_STATE_STEADY) {\n // still in startup mode\n if (BOLA_DEBUG) console.log('BolaDebug ' + mediaType + ' BolaRule quality ' + q + '>' + bolaQuality + ' for STARTUP');\n bolaState.lastQuality = q;\n metricsModel.updateBolaState(mediaType, bolaState);\n switchRequest = SwitchRequest(context).create(q, SwitchRequest.DEFAULT);\n callback(switchRequest);\n return;\n }\n }\n\n // steady state\n\n // we want to avoid oscillations\n // We implement the \"BOLA-O\" variant: when network bandwidth lies between two encoded bitrate levels, stick to the lowest level.\n let delaySeconds = 0.0;\n if (bolaQuality > bolaState.lastQuality) {\n // do not multiply throughput by bandwidthSafetyFactor here: we are not using throughput estimation but capping bitrate to avoid oscillations\n let q = getQualityFromThroughput(bolaState, lastThroughput);\n if (bolaQuality > q) {\n // only intervene if we are trying to *increase* quality to an *unsustainable* level\n\n if (q < bolaState.lastQuality) {\n // we are only avoid oscillations - do not drop below last quality\n q = bolaState.lastQuality;\n } else {\n // We are dropping to an encoded bitrate which is a little less than the network bandwidth because bitrate levels are discrete. Quality q might lead to buffer inflation, so we deflate buffer to the threshold where algorithm would choose quality q over quality q+1.\n // TODO: document the math\n let s = bolaState.bitrate[q]; // relative size\n let s1 = bolaState.bitrate[q + 1]; // relative size\n let u = bolaState.utility[q];\n let u1 = bolaState.utility[q + 1];\n let wantBufferLevel = bolaState.Vp * (bolaState.gp + (s1 * u - s * u1) / (s1 - s));\n delaySeconds = bufferLevel - wantBufferLevel;\n }\n bolaQuality = q;\n }\n }\n\n if (delaySeconds > 0.0) {\n // first reduce virtual buffer\n if (delaySeconds > bolaState.virtualBuffer) {\n delaySeconds -= bolaState.virtualBuffer;\n bolaState.virtualBuffer = 0.0;\n } else {\n bolaState.virtualBuffer -= delaySeconds;\n delaySeconds = 0.0;\n }\n }\n if (delaySeconds > 0.0) {\n streamProcessor.getScheduleController().setTimeToLoadDelay(1000.0 * delaySeconds);\n }\n\n bolaState.lastQuality = bolaQuality;\n metricsModel.updateBolaState(mediaType, bolaState);\n switchRequest = SwitchRequest(context).create(bolaQuality, SwitchRequest.DEFAULT);\n if (BOLA_DEBUG) console.log('BolaDebug ' + mediaType + ' BolaRule quality ' + bolaQuality + ' delay=' + delaySeconds.toFixed(3) + ' for STEADY');\n callback(switchRequest);\n }\n\n function reset() {\n eventBus.off(Events.PLAYBACK_SEEKING, onPlaybackSeeking, instance);\n setup();\n }\n\n instance = {\n execute: execute,\n reset: reset\n };\n\n setup();\n return instance;\n}\n\nBolaRule.__dashjs_factory_name = 'BolaRule';\nlet factory = FactoryMaker.getClassFactory(BolaRule);\nfactory.BOLA_STATE_ONE_BITRATE = BOLA_STATE_ONE_BITRATE;\nfactory.BOLA_STATE_STARTUP = BOLA_STATE_STARTUP;\nfactory.BOLA_STATE_STARTUP_NO_INC = BOLA_STATE_STARTUP_NO_INC;\nfactory.BOLA_STATE_STEADY = BOLA_STATE_STEADY;\nfactory.BOLA_DEBUG = BOLA_DEBUG; // TODO: remove\nexport default factory;\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport SwitchRequest from '../SwitchRequest.js';\nimport MediaPlayerModel from '../../models/MediaPlayerModel.js';\nimport AbrController from '../../controllers/AbrController.js';\nimport FactoryMaker from '../../../core/FactoryMaker.js';\nimport Debug from '../../../core/Debug.js';\n\nfunction BufferOccupancyRule(config) {\n\n let instance;\n let context = this.context;\n let log = Debug(context).getInstance().log;\n\n let metricsModel = config.metricsModel;\n let dashMetrics = config.dashMetrics;\n\n let lastSwitchTime,\n mediaPlayerModel;\n\n function setup() {\n lastSwitchTime = 0;\n mediaPlayerModel = MediaPlayerModel(context).getInstance();\n }\n\n function execute (rulesContext, callback) {\n var now = new Date().getTime() / 1000;\n var mediaInfo = rulesContext.getMediaInfo();\n var representationInfo = rulesContext.getTrackInfo();\n var mediaType = mediaInfo.type;\n var waitToSwitchTime = !isNaN(representationInfo.fragmentDuration) ? representationInfo.fragmentDuration / 2 : 2;\n var current = rulesContext.getCurrentValue();\n var streamProcessor = rulesContext.getStreamProcessor();\n var abrController = streamProcessor.getABRController();\n var metrics = metricsModel.getReadOnlyMetricsFor(mediaType);\n var lastBufferLevel = dashMetrics.getCurrentBufferLevel(metrics);\n var lastBufferStateVO = (metrics.BufferState.length > 0) ? metrics.BufferState[metrics.BufferState.length - 1] : null;\n var isBufferRich = false;\n var maxIndex = mediaInfo.representationCount - 1;\n var switchRequest = SwitchRequest(context).create(SwitchRequest.NO_CHANGE, SwitchRequest.WEAK);\n\n if (now - lastSwitchTime < waitToSwitchTime ||\n abrController.getAbandonmentStateFor(mediaType) === AbrController.ABANDON_LOAD) {\n callback(switchRequest);\n return;\n }\n\n if (lastBufferStateVO !== null) {\n // This will happen when another rule tries to switch from top to any other.\n // If there is enough buffer why not try to stay at high level.\n if (lastBufferLevel > lastBufferStateVO.target) {\n isBufferRich = (lastBufferLevel - lastBufferStateVO.target) > mediaPlayerModel.getRichBufferThreshold();\n\n if (isBufferRich && mediaInfo.representationCount > 1) {\n switchRequest = SwitchRequest(context).create(maxIndex, SwitchRequest.STRONG);\n }\n }\n }\n\n if (switchRequest.value !== SwitchRequest.NO_CHANGE && switchRequest.value !== current) {\n log('BufferOccupancyRule requesting switch to index: ', switchRequest.value, 'type: ',mediaType, ' Priority: ',\n switchRequest.priority === SwitchRequest.DEFAULT ? 'Default' :\n switchRequest.priority === SwitchRequest.STRONG ? 'Strong' : 'Weak');\n }\n\n callback(switchRequest);\n }\n\n function reset() {\n lastSwitchTime = 0;\n }\n\n instance = {\n execute: execute,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nBufferOccupancyRule.__dashjs_factory_name = 'BufferOccupancyRule';\nexport default FactoryMaker.getClassFactory(BufferOccupancyRule);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport SwitchRequest from '../SwitchRequest.js';\nimport BufferController from '../../controllers/BufferController.js';\nimport EventBus from '../../../core/EventBus.js';\nimport Events from '../../../core/events/Events.js';\nimport FactoryMaker from '../../../core/FactoryMaker.js';\nimport Debug from '../../../core/Debug.js';\n\nfunction InsufficientBufferRule(config) {\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n let metricsModel = config.metricsModel;\n\n let instance,\n bufferStateDict,\n lastSwitchTime,\n waitToSwitchTime;\n\n function setup() {\n bufferStateDict = {};\n lastSwitchTime = 0;\n waitToSwitchTime = 1000;\n eventBus.on(Events.PLAYBACK_SEEKING, onPlaybackSeeking, instance);\n }\n\n function execute (rulesContext, callback) {\n var now = new Date().getTime();\n var mediaType = rulesContext.getMediaInfo().type;\n var current = rulesContext.getCurrentValue();\n var metrics = metricsModel.getReadOnlyMetricsFor(mediaType);\n var lastBufferStateVO = (metrics.BufferState.length > 0) ? metrics.BufferState[metrics.BufferState.length - 1] : null;\n var switchRequest = SwitchRequest(context).create(SwitchRequest.NO_CHANGE, SwitchRequest.WEAK);\n\n if (now - lastSwitchTime < waitToSwitchTime ||\n lastBufferStateVO === null) {\n callback(switchRequest);\n return;\n }\n\n setBufferInfo(mediaType, lastBufferStateVO.state);\n // After the sessions first buffer loaded event , if we ever have a buffer empty event we want to switch all the way down.\n if (lastBufferStateVO.state === BufferController.BUFFER_EMPTY && bufferStateDict[mediaType].firstBufferLoadedEvent !== undefined) {\n switchRequest = SwitchRequest(context).create(0, SwitchRequest.STRONG);\n }\n\n if (switchRequest.value !== SwitchRequest.NO_CHANGE && switchRequest.value !== current) {\n log('InsufficientBufferRule requesting switch to index: ', switchRequest.value, 'type: ',mediaType, ' Priority: ',\n switchRequest.priority === SwitchRequest.DEFAULT ? 'Default' :\n switchRequest.priority === SwitchRequest.STRONG ? 'Strong' : 'Weak');\n }\n\n lastSwitchTime = now;\n callback(switchRequest);\n }\n\n function setBufferInfo(type, state) {\n bufferStateDict[type] = bufferStateDict[type] || {};\n bufferStateDict[type].state = state;\n if (state === BufferController.BUFFER_LOADED && !bufferStateDict[type].firstBufferLoadedEvent) {\n bufferStateDict[type].firstBufferLoadedEvent = true;\n }\n }\n\n function onPlaybackSeeking() {\n bufferStateDict = {};\n }\n\n function reset() {\n eventBus.off(Events.PLAYBACK_SEEKING, onPlaybackSeeking, instance);\n bufferStateDict = {};\n lastSwitchTime = 0;\n }\n\n instance = {\n execute: execute,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nInsufficientBufferRule.__dashjs_factory_name = 'InsufficientBufferRule';\nexport default FactoryMaker.getClassFactory(InsufficientBufferRule);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport SwitchRequest from '../SwitchRequest.js';\nimport BufferController from '../../controllers/BufferController.js';\nimport AbrController from '../../controllers/AbrController.js';\nimport MediaPlayerModel from '../../models/MediaPlayerModel.js';\nimport HTTPRequest from '../../vo/metrics/HTTPRequest.js';\nimport FactoryMaker from '../../../core/FactoryMaker.js';\nimport Debug from '../../../core/Debug.js';\n\nfunction ThroughputRule(config) {\n\n const AVERAGE_THROUGHPUT_SAMPLE_AMOUNT_LIVE = 2;\n const AVERAGE_THROUGHPUT_SAMPLE_AMOUNT_VOD = 3;\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let dashMetrics = config.dashMetrics;\n let metricsModel = config.metricsModel;\n\n let instance,\n throughputArray,\n mediaPlayerModel;\n\n function setup() {\n throughputArray = [];\n mediaPlayerModel = MediaPlayerModel(context).getInstance();\n }\n\n function storeLastRequestThroughputByType(type, lastRequestThroughput) {\n throughputArray[type] = throughputArray[type] || [];\n if (lastRequestThroughput !== Infinity &&\n lastRequestThroughput !== throughputArray[type][throughputArray[type].length - 1]) {\n throughputArray[type].push(lastRequestThroughput);\n }\n }\n\n function getAverageThroughput(type, isDynamic) {\n var averageThroughput = 0;\n var sampleAmount = isDynamic ? AVERAGE_THROUGHPUT_SAMPLE_AMOUNT_LIVE : AVERAGE_THROUGHPUT_SAMPLE_AMOUNT_VOD;\n var arr = throughputArray[type];\n var len = arr.length;\n\n sampleAmount = len < sampleAmount ? len : sampleAmount;\n\n if (len > 0) {\n var startValue = len - sampleAmount;\n var totalSampledValue = 0;\n\n for (var i = startValue; i < len; i++) {\n totalSampledValue += arr[i];\n }\n averageThroughput = totalSampledValue / sampleAmount;\n }\n\n if (arr.length > sampleAmount) {\n arr.shift();\n }\n\n return (averageThroughput / 1000 ) * mediaPlayerModel.getBandwidthSafetyFactor();\n }\n\n function execute (rulesContext, callback) {\n var downloadTime;\n var bytes;\n var averageThroughput;\n var lastRequestThroughput;\n\n var mediaInfo = rulesContext.getMediaInfo();\n var mediaType = mediaInfo.type;\n var current = rulesContext.getCurrentValue();\n var metrics = metricsModel.getReadOnlyMetricsFor(mediaType);\n var streamProcessor = rulesContext.getStreamProcessor();\n var abrController = streamProcessor.getABRController();\n var isDynamic = streamProcessor.isDynamic();\n var lastRequest = dashMetrics.getCurrentHttpRequest(metrics);\n var bufferStateVO = (metrics.BufferState.length > 0) ? metrics.BufferState[metrics.BufferState.length - 1] : null;\n var bufferLevelVO = (metrics.BufferLevel.length > 0) ? metrics.BufferLevel[metrics.BufferLevel.length - 1] : null;\n var switchRequest = SwitchRequest(context).create(SwitchRequest.NO_CHANGE, SwitchRequest.WEAK);\n\n if (!metrics || !lastRequest || lastRequest.type !== HTTPRequest.MEDIA_SEGMENT_TYPE ||\n !bufferStateVO || !bufferLevelVO ) {\n\n callback(switchRequest);\n return;\n\n }\n\n if (lastRequest.trace && lastRequest.trace.length) {\n downloadTime = (lastRequest._tfinish.getTime() - lastRequest.tresponse.getTime()) / 1000;\n\n bytes = lastRequest.trace.reduce(function (a, b) {\n return a + b.b[0];\n }, 0);\n\n lastRequestThroughput = Math.round(bytes * 8) / downloadTime;\n storeLastRequestThroughputByType(mediaType, lastRequestThroughput);\n }\n\n averageThroughput = Math.round(getAverageThroughput(mediaType, isDynamic));\n abrController.setAverageThroughput(mediaType, averageThroughput);\n\n if (abrController.getAbandonmentStateFor(mediaType) !== AbrController.ABANDON_LOAD) {\n\n if (bufferStateVO.state === BufferController.BUFFER_LOADED || isDynamic) {\n var newQuality = abrController.getQualityForBitrate(mediaInfo, averageThroughput);\n streamProcessor.getScheduleController().setTimeToLoadDelay(0); // TODO Watch out for seek event - no delay when seeking.!!\n switchRequest = SwitchRequest(context).create(newQuality, SwitchRequest.DEFAULT);\n }\n\n if (switchRequest.value !== SwitchRequest.NO_CHANGE && switchRequest.value !== current) {\n log('ThroughputRule requesting switch to index: ', switchRequest.value, 'type: ',mediaType, ' Priority: ',\n switchRequest.priority === SwitchRequest.DEFAULT ? 'Default' :\n switchRequest.priority === SwitchRequest.STRONG ? 'Strong' : 'Weak', 'Average throughput', Math.round(averageThroughput), 'kbps');\n }\n }\n\n callback(switchRequest);\n }\n\n function reset() {\n setup();\n }\n\n instance = {\n execute: execute,\n reset: reset\n };\n\n setup();\n return instance;\n}\n\nThroughputRule.__dashjs_factory_name = 'ThroughputRule';\nexport default FactoryMaker.getClassFactory(ThroughputRule);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport SwitchRequest from '../SwitchRequest.js';\nimport MediaPlayerModel from '../../models/MediaPlayerModel.js';\nimport PlaybackController from '../../controllers/PlaybackController.js';\nimport FactoryMaker from '../../../core/FactoryMaker.js';\n\nfunction BufferLevelRule(config) {\n\n let instance;\n let context = this.context;\n\n let dashMetrics = config.dashMetrics;\n let metricsModel = config.metricsModel;\n let textSourceBuffer = config.textSourceBuffer;\n\n let mediaPlayerModel,\n playbackController;\n\n function setup() {\n mediaPlayerModel = MediaPlayerModel(context).getInstance();\n playbackController = PlaybackController(context).getInstance();\n }\n\n function execute(rulesContext, callback) {\n let mediaInfo = rulesContext.getMediaInfo();\n let mediaType = mediaInfo.type;\n let metrics = metricsModel.getReadOnlyMetricsFor(mediaType);\n let bufferLevel = dashMetrics.getCurrentBufferLevel(metrics);\n let fragmentCount;\n\n fragmentCount = bufferLevel < getBufferTarget(rulesContext, mediaType) ? 1 : 0;\n\n callback(SwitchRequest(context).create(fragmentCount, SwitchRequest.DEFAULT));\n }\n\n function reset() {}\n\n function getBufferTarget(rulesContext, type) {\n let streamProcessor = rulesContext.getStreamProcessor();\n let streamInfo = rulesContext.getStreamInfo();\n let trackInfo = rulesContext.getTrackInfo();\n let abrController = streamProcessor.getABRController();\n let duration = streamInfo.manifestInfo.duration;\n let isLongFormContent = (duration >= mediaPlayerModel.getLongFormContentDurationThreshold());\n let bufferTarget = NaN;\n\n if (type === 'fragmentedText') {\n bufferTarget = textSourceBuffer.getAllTracksAreDisabled() ? 0 : trackInfo.fragmentDuration;\n } else {\n if (abrController.isPlayingAtTopQuality(streamInfo)) {\n bufferTarget = isLongFormContent ? mediaPlayerModel.getBufferTimeAtTopQualityLongForm() : mediaPlayerModel.getBufferTimeAtTopQuality();\n }else {\n bufferTarget = mediaPlayerModel.getStableBufferTime();\n }\n }\n return bufferTarget;\n }\n\n instance = {\n execute: execute,\n reset: reset\n };\n setup();\n return instance;\n}\n\nBufferLevelRule.__dashjs_factory_name = 'BufferLevelRule';\nexport default FactoryMaker.getClassFactory(BufferLevelRule);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport SwitchRequest from '../SwitchRequest.js';\nimport Debug from '../../../core/Debug.js';\nimport FactoryMaker from '../../../core/FactoryMaker.js';\n\nfunction NextFragmentRequestRule(config) {\n\n let instance;\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let adapter = config.adapter;\n let sourceBufferController = config.sourceBufferController;\n let virtualBuffer = config.virtualBuffer;\n let textSourceBuffer = config.textSourceBuffer;\n\n function execute(rulesContext, callback) {\n\n let mediaType = rulesContext.getMediaInfo().type;\n let mediaInfo = rulesContext.getMediaInfo();\n let streamId = rulesContext.getStreamInfo().id;\n let streamProcessor = rulesContext.getStreamProcessor();\n let scheduleController = streamProcessor.getScheduleController();\n let representationInfo = streamProcessor.getCurrentRepresentationInfo();\n let seekTarget = scheduleController.getSeekTarget();\n let hasSeekTarget = !isNaN(seekTarget);\n let p = hasSeekTarget ? SwitchRequest.STRONG : SwitchRequest.DEFAULT;\n let keepIdx = !hasSeekTarget;\n let time = hasSeekTarget ? seekTarget : adapter.getIndexHandlerTime(streamProcessor);\n let buffer = streamProcessor.getBuffer();\n let appendedChunks;\n let range = null;\n let request;\n\n if (isNaN(time) || (mediaType === 'fragmentedText' && textSourceBuffer.getAllTracksAreDisabled())) {\n callback(SwitchRequest(context).create(null, p));\n return;\n }\n\n if (hasSeekTarget) {\n scheduleController.setSeekTarget(NaN);\n }\n\n if (buffer) {\n range = sourceBufferController.getBufferRange(streamProcessor.getBuffer(), time);\n if (range !== null) {\n appendedChunks = virtualBuffer.getChunks({streamId: streamId, mediaType: mediaType, appended: true, mediaInfo: mediaInfo, forRange: range});\n if (appendedChunks && appendedChunks.length > 0) {\n let t = time;\n time = appendedChunks[appendedChunks.length - 1].bufferedRange.end;\n log('Prior to making a request for time, NextFragmentRequestRule is aligning index handler\\'s currentTime with bufferedRange.end.', t, ' was changed to ', time);\n }\n }\n }\n\n request = adapter.getFragmentRequestForTime(streamProcessor, representationInfo, time, {keepIdx: keepIdx});\n //log(\"getForTime\", request, time);\n if (request && streamProcessor.getFragmentModel().isFragmentLoaded(request)) {\n request = adapter.getNextFragmentRequest(streamProcessor, representationInfo);\n //log(\"getForNext\", request, streamProcessor.getIndexHandler().getCurrentIndex());\n }\n\n if (request) {\n adapter.setIndexHandlerTime(streamProcessor, request.startTime + request.duration);\n request.delayLoadingTime = new Date().getTime() + scheduleController.getTimeToLoadDelay();\n }\n\n callback(SwitchRequest(context).create(request, p));\n }\n\n instance = {\n execute: execute\n };\n\n return instance;\n}\n\nNextFragmentRequestRule.__dashjs_factory_name = 'NextFragmentRequestRule';\nexport default FactoryMaker.getClassFactory(NextFragmentRequestRule);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport FactoryMaker from '../../../core/FactoryMaker.js';\nimport BufferLevelRule from './BufferLevelRule.js';\nimport NextFragmentRequestRule from './NextFragmentRequestRule.js';\nimport TextSourceBuffer from '../../TextSourceBuffer.js';\nimport MetricsModel from '../../models/MetricsModel.js';\nimport DashAdapter from '../../../dash/DashAdapter.js';\nimport DashMetrics from '../../../dash/DashMetrics.js';\nimport SourceBufferController from '../../controllers/SourceBufferController.js';\nimport VirtualBuffer from '../../VirtualBuffer.js';\n\nconst FRAGMENTS_TO_SCHEDULE_RULES = 'fragmentsToScheduleRules';\nconst NEXT_FRAGMENT_RULES = 'nextFragmentRules';\n\nfunction ScheduleRulesCollection() {\n\n let context = this.context;\n\n let instance,\n fragmentsToScheduleRules,\n nextFragmentRules;\n\n function initialize() {\n fragmentsToScheduleRules = [];\n nextFragmentRules = [];\n\n fragmentsToScheduleRules.push(BufferLevelRule(context).create({\n dashMetrics: DashMetrics(context).getInstance(),\n metricsModel: MetricsModel(context).getInstance(),\n textSourceBuffer: TextSourceBuffer(context).getInstance()\n }));\n nextFragmentRules.push(NextFragmentRequestRule(context).create({\n adapter: DashAdapter(context).getInstance(),\n sourceBufferController: SourceBufferController(context).getInstance(),\n virtualBuffer: VirtualBuffer(context).getInstance(),\n textSourceBuffer: TextSourceBuffer(context).getInstance()\n\n }));\n }\n\n function getRules(type) {\n switch (type) {\n case FRAGMENTS_TO_SCHEDULE_RULES:\n return fragmentsToScheduleRules;\n case NEXT_FRAGMENT_RULES:\n return nextFragmentRules;\n default:\n return null;\n }\n }\n\n instance = {\n initialize: initialize,\n getRules: getRules\n };\n\n return instance;\n}\n\nScheduleRulesCollection.__dashjs_factory_name = 'ScheduleRulesCollection';\nlet factory = FactoryMaker.getSingletonFactory(ScheduleRulesCollection);\nfactory.FRAGMENTS_TO_SCHEDULE_RULES = FRAGMENTS_TO_SCHEDULE_RULES;\nfactory.NEXT_FRAGMENT_RULES = NEXT_FRAGMENT_RULES;\nexport default factory;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport SwitchRequest from '../SwitchRequest.js';\nimport EventBus from '../../../core/EventBus.js';\nimport Events from '../../../core/events/Events.js';\nimport FactoryMaker from '../../../core/FactoryMaker.js';\n\nconst SEARCH_TIME_SPAN = 12 * 60 * 60; // set the time span that limits our search range to a 12 hours in seconds\n\nfunction LiveEdgeBinarySearchRule(config) {\n\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n\n let adapter = config.adapter;\n let timelineConverter = config.timelineConverter;\n\n let instance,\n liveEdgeInitialSearchPosition,\n liveEdgeSearchRange,\n liveEdgeSearchStep,\n representationInfo,\n useBinarySearch,\n fragmentDuration,\n p,\n callback,\n fragmentLoader,\n streamProcessor;\n\n function setup() {\n liveEdgeInitialSearchPosition = NaN;\n liveEdgeSearchRange = null;\n liveEdgeSearchStep = NaN;\n representationInfo = null;\n useBinarySearch = false;\n fragmentDuration = NaN;\n p = SwitchRequest.DEFAULT;\n }\n\n function execute(rulesContext, callbackFunc) {\n var request,\n DVRWindow; // all fragments are supposed to be available in this interval\n\n callback = callbackFunc;\n streamProcessor = rulesContext.getStreamProcessor();\n fragmentLoader = streamProcessor.getFragmentLoader();\n representationInfo = rulesContext.getTrackInfo();\n fragmentDuration = representationInfo.fragmentDuration;\n DVRWindow = representationInfo.DVRWindow; // all fragments are supposed to be available in this interval\n\n // start position of the search, it is supposed to be a live edge - the last available fragment for the current mpd\n liveEdgeInitialSearchPosition = DVRWindow.end;\n\n if (representationInfo.useCalculatedLiveEdgeTime) {\n //By default an expected live edge is the end of the last segment.\n // A calculated live edge ('end' property of a range returned by TimelineConverter.calcSegmentAvailabilityRange)\n // is used as an initial point for finding the actual live edge.\n // But for SegmentTimeline mpds (w/o a negative @r) the end of the\n // last segment is the actual live edge. At the same time, calculated live edge is an expected live edge.\n // Thus, we need to switch an expected live edge and actual live edge for SegmentTimeline streams.\n var actualLiveEdge = timelineConverter.getExpectedLiveEdge();\n timelineConverter.setExpectedLiveEdge(liveEdgeInitialSearchPosition);\n callback(SwitchRequest(context).create(actualLiveEdge, p));\n return;\n }\n\n // we should search for a live edge in a time range which is limited by SEARCH_TIME_SPAN.\n liveEdgeSearchRange = {start: Math.max(0, (liveEdgeInitialSearchPosition - SEARCH_TIME_SPAN)), end: liveEdgeInitialSearchPosition + SEARCH_TIME_SPAN};\n // we have to use half of the availability interval (window) as a search step to ensure that we find a fragment in the window\n liveEdgeSearchStep = Math.floor((DVRWindow.end - DVRWindow.start) / 2);\n // start search from finding a request for the initial search time\n request = adapter.getFragmentRequestForTime(streamProcessor, representationInfo, liveEdgeInitialSearchPosition, {ignoreIsFinished: true});\n findLiveEdge(liveEdgeInitialSearchPosition, onSearchForFragmentSucceeded, onSearchForFragmentFailed, request);\n }\n\n function reset() {\n liveEdgeInitialSearchPosition = NaN;\n liveEdgeSearchRange = null;\n liveEdgeSearchStep = NaN;\n representationInfo = null;\n useBinarySearch = false;\n fragmentDuration = NaN;\n streamProcessor = null;\n fragmentLoader = null;\n }\n\n function findLiveEdge(searchTime, onSuccess, onError, request) {\n var req;\n if (request === null) {\n // request can be null because it is out of the generated list of request. In this case we need to\n // update the list and the DVRWindow\n // try to get request object again\n req = adapter.generateFragmentRequestForTime(streamProcessor, representationInfo, searchTime);\n findLiveEdge(searchTime, onSuccess, onError, req);\n } else {\n var handler = function (e) {\n eventBus.off(Events.CHECK_FOR_EXISTENCE_COMPLETED, handler, this);\n if (e.exists) {\n onSuccess(e.request, searchTime);\n } else {\n onError(e.request, searchTime);\n }\n };\n\n eventBus.on(Events.CHECK_FOR_EXISTENCE_COMPLETED, handler, this);\n fragmentLoader.checkForExistence(request);\n }\n }\n\n function onSearchForFragmentFailed(request, lastSearchTime) {\n var searchTime,\n req,\n searchInterval;\n\n if (useBinarySearch) {\n binarySearch(false, lastSearchTime);\n return;\n }\n\n // we have not found any available fragments yet, update the search interval\n searchInterval = lastSearchTime - liveEdgeInitialSearchPosition;\n // we search forward and backward from the start position, increasing the search interval by the value of the half of the availability interval - liveEdgeSearchStep\n searchTime = searchInterval > 0 ? (liveEdgeInitialSearchPosition - searchInterval) : (liveEdgeInitialSearchPosition + Math.abs(searchInterval) + liveEdgeSearchStep);\n\n // if the search time is out of the range bounds we have not be able to find live edge, stop trying\n if (searchTime < liveEdgeSearchRange.start && searchTime > liveEdgeSearchRange.end) {\n callback(SwitchRequest(context).create(null, p));\n } else {\n // continue searching for a first available fragment\n req = adapter.getFragmentRequestForTime(streamProcessor, representationInfo, searchTime, {ignoreIsFinished: true});\n findLiveEdge(searchTime, onSearchForFragmentSucceeded, onSearchForFragmentFailed, req);\n }\n }\n\n function onSearchForFragmentSucceeded(request, lastSearchTime) {\n var startTime = request.startTime;\n var req,\n searchTime;\n\n if (!useBinarySearch) {\n // if the fragment duration is unknown we cannot use binary search because we will not be able to\n // decide when to stop the search, so let the start time of the current fragment be a liveEdge\n if (!representationInfo.fragmentDuration) {\n callback(SwitchRequest(context).create(startTime, p));\n return;\n }\n useBinarySearch = true;\n liveEdgeSearchRange.end = startTime + (2 * liveEdgeSearchStep);\n\n //if the first request has succeeded we should check next fragment - if it does not exist we have found live edge,\n // otherwise start binary search to find live edge\n if (lastSearchTime === liveEdgeInitialSearchPosition) {\n searchTime = lastSearchTime + fragmentDuration;\n req = adapter.getFragmentRequestForTime(streamProcessor, representationInfo, searchTime, {ignoreIsFinished: true});\n findLiveEdge(searchTime, function () {\n binarySearch(true, searchTime);\n }, function () {\n callback(SwitchRequest(context).create(searchTime, p));\n }, req);\n\n return;\n }\n }\n\n binarySearch(true, lastSearchTime);\n }\n\n function binarySearch(lastSearchSucceeded, lastSearchTime) {\n var isSearchCompleted,\n req,\n searchTime;\n\n if (lastSearchSucceeded) {\n liveEdgeSearchRange.start = lastSearchTime;\n } else {\n liveEdgeSearchRange.end = lastSearchTime;\n }\n\n isSearchCompleted = (Math.floor(liveEdgeSearchRange.end - liveEdgeSearchRange.start)) <= fragmentDuration;\n\n if (isSearchCompleted) {\n // search completed, we should take the time of the last found fragment. If the last search succeeded we\n // take this time. Otherwise, we should subtract the time of the search step which is equal to fragment duration\n callback(SwitchRequest(context).create((lastSearchSucceeded ? lastSearchTime : (lastSearchTime - fragmentDuration)), p));\n } else {\n // update the search time and continue searching\n searchTime = ((liveEdgeSearchRange.start + liveEdgeSearchRange.end) / 2);\n req = adapter.getFragmentRequestForTime(streamProcessor, representationInfo, searchTime, {ignoreIsFinished: true});\n findLiveEdge(searchTime, onSearchForFragmentSucceeded, onSearchForFragmentFailed, req);\n }\n }\n\n instance = {\n execute: execute,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nLiveEdgeBinarySearchRule.__dashjs_factory_name = 'LiveEdgeBinarySearchRule';\nexport default FactoryMaker.getClassFactory(LiveEdgeBinarySearchRule);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport SwitchRequest from '../SwitchRequest.js';\nimport FactoryMaker from '../../../core/FactoryMaker.js';\n\nfunction LiveEdgeWithTimeSynchronizationRule(config) {\n\n let instance;\n let context = this.context;\n let timelineConverter = config.timelineConverter;\n\n // if the time has been synchronized correctly (which it must have been\n // to end up executing this rule), the last entry in the DVR window\n // should be the live edge. if that is incorrect for whatever reason,\n // playback will fail to start and some other action should be taken.\n function execute(rulesContext, callback) {\n var representationInfo = rulesContext.getTrackInfo();\n var liveEdgeInitialSearchPosition = representationInfo.DVRWindow.end;\n var p = SwitchRequest.DEFAULT;\n\n if (representationInfo.useCalculatedLiveEdgeTime) {\n //By default an expected live edge is the end of the last segment.\n // A calculated live edge ('end' property of a range returned by TimelineConverter.calcSegmentAvailabilityRange)\n // is used as an initial point for finding the actual live edge.\n // But for SegmentTimeline mpds (w/o a negative @r) the end of the\n // last segment is the actual live edge. At the same time, calculated live edge is an expected live edge.\n // Thus, we need to switch an expected live edge and actual live edge for SegmentTimeline streams.\n var actualLiveEdge = timelineConverter.getExpectedLiveEdge();\n timelineConverter.setExpectedLiveEdge(liveEdgeInitialSearchPosition);\n callback(SwitchRequest(context).create(actualLiveEdge, p));\n } else {\n callback(SwitchRequest(context).create(liveEdgeInitialSearchPosition, p));\n }\n }\n\n instance = {\n execute: execute\n };\n\n return instance;\n}\n\nLiveEdgeWithTimeSynchronizationRule.__dashjs_factory_name = 'LiveEdgeWithTimeSynchronizationRule';\nexport default FactoryMaker.getClassFactory(LiveEdgeWithTimeSynchronizationRule);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../../core/FactoryMaker.js';\nimport TimelineConverter from '../../../dash/utils/TimelineConverter.js';\nimport LiveEdgeBinarySearchRule from './LiveEdgeBinarySearchRule.js';\nimport LiveEdgeWithTimeSynchronizationRule from './LiveEdgeWithTimeSynchronizationRule.js';\nimport DashAdapter from '../../../dash/DashAdapter.js';\n\n\nconst TIME_SYNCHRONIZED_RULES = 'withAccurateTimeSourceRules';\nconst BEST_GUESS_RULES = 'bestGuestRules';\n\nfunction SynchronizationRulesCollection() {\n\n let context = this.context;\n\n let instance,\n withAccurateTimeSourceRules,\n bestGuestRules;\n\n function initialize() {\n withAccurateTimeSourceRules = [];\n bestGuestRules = [];\n\n withAccurateTimeSourceRules.push(LiveEdgeWithTimeSynchronizationRule(context).create({\n timelineConverter: TimelineConverter(context).getInstance()\n }));\n\n bestGuestRules.push(LiveEdgeBinarySearchRule(context).create({\n timelineConverter: TimelineConverter(context).getInstance(),\n adapter: DashAdapter(context).getInstance()\n }));\n }\n\n function getRules(type) {\n switch (type) {\n case TIME_SYNCHRONIZED_RULES:\n return withAccurateTimeSourceRules;\n case BEST_GUESS_RULES:\n return bestGuestRules;\n default:\n return null;\n }\n }\n\n instance = {\n initialize: initialize,\n getRules: getRules\n };\n\n return instance;\n}\n\nSynchronizationRulesCollection.__dashjs_factory_name = 'SynchronizationRulesCollection';\nlet factory = FactoryMaker.getSingletonFactory(SynchronizationRulesCollection);\nfactory.TIME_SYNCHRONIZED_RULES = TIME_SYNCHRONIZED_RULES;\nfactory.BEST_GUESS_RULES = BEST_GUESS_RULES;\nexport default factory;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport IsoFile from './IsoFile.js';\nimport FactoryMaker from '../../core/FactoryMaker.js';\nimport ISOBoxer from 'codem-isoboxer';\n\nfunction BoxParser(/*config*/) {\n\n let instance;\n let context = this.context;\n\n /**\n * @param {ArrayBuffer} data\n * @returns {@link IsoFile}\n * @memberof BoxParser#\n */\n function parse(data) {\n if (!data) return null;\n\n if (data.fileStart === undefined) {\n data.fileStart = 0;\n }\n\n var parsedFile = ISOBoxer.parseBuffer(data);\n var dashIsoFile = IsoFile(context).create();\n\n dashIsoFile.setData(parsedFile);\n\n return dashIsoFile;\n }\n\n instance = {\n parse: parse\n };\n\n return instance;\n}\nBoxParser.__dashjs_factory_name = 'BoxParser';\nexport default FactoryMaker.getSingletonFactory(BoxParser);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport FactoryMaker from '../../core/FactoryMaker.js';\n\nfunction Capabilities() {\n\n let instance,\n encryptedMediaSupported;\n\n function setup() {\n encryptedMediaSupported = false;\n }\n\n function supportsMediaSource() {\n let hasWebKit = ('WebKitMediaSource' in window);\n let hasMediaSource = ('MediaSource' in window);\n\n return (hasWebKit || hasMediaSource);\n }\n\n /**\n * Returns whether Encrypted Media Extensions are supported on this\n * user agent\n *\n * @return {boolean} true if EME is supported, false otherwise\n */\n function supportsEncryptedMedia() {\n return encryptedMediaSupported;\n }\n\n function setEncryptedMediaSupported(value) {\n encryptedMediaSupported = value;\n }\n\n function supportsCodec(element, codec) {\n\n if (!(element instanceof HTMLMediaElement)) {\n throw 'element must be of type HTMLMediaElement.';\n }\n\n var canPlay = element.canPlayType(codec);\n return (canPlay === 'probably' || canPlay === 'maybe');\n }\n\n instance = {\n supportsMediaSource: supportsMediaSource,\n supportsEncryptedMedia: supportsEncryptedMedia,\n supportsCodec: supportsCodec,\n setEncryptedMediaSupported: setEncryptedMediaSupported\n };\n\n setup();\n\n return instance;\n}\nCapabilities.__dashjs_factory_name = 'Capabilities';\nexport default FactoryMaker.getSingletonFactory(Capabilities);","/**\n* The copyright in this software is being made available under the BSD License,\n* included below. This software may be subject to other third party and contributor\n* rights, including patent rights, and no such rights are granted under this license.\n*\n* Copyright (c) 2013, Dash Industry Forum.\n* All rights reserved.\n*\n* Redistribution and use in source and binary forms, with or without modification,\n* are permitted provided that the following conditions are met:\n* * Redistributions of source code must retain the above copyright notice, this\n* list of conditions and the following disclaimer.\n* * Redistributions in binary form must reproduce the above copyright notice,\n* this list of conditions and the following disclaimer in the documentation and/or\n* other materials provided with the distribution.\n* * Neither the name of Dash Industry Forum nor the names of its\n* contributors may be used to endorse or promote products derived from this software\n* without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.\n*/\nimport FactoryMaker from '../../core/FactoryMaker.js';\n\nfunction CustomTimeRanges(/*config*/) {\n let customTimeRangeArray = [];\n let length = 0;\n\n function add(start, end) {\n var i = 0;\n\n for (i = 0; (i < this.customTimeRangeArray.length) && (start > this.customTimeRangeArray[i].start); i++);\n\n this.customTimeRangeArray.splice(i, 0, {start: start,end: end});\n\n for (i = 0; i < this.customTimeRangeArray.length - 1; i++) {\n if (this.mergeRanges(i,i + 1)) {\n i--;\n }\n }\n this.length = this.customTimeRangeArray.length;\n }\n\n function clear() {\n this.customTimeRangeArray = [];\n this.length = 0;\n }\n\n function remove(start, end) {\n for (var i = 0; i < this.customTimeRangeArray.length; i++) {\n if (start <= this.customTimeRangeArray[i].start && end >= this.customTimeRangeArray[i].end) {\n // |--------------Range i-------|\n //|---------------Range to remove ---------------|\n // or\n //|--------------Range i-------|\n //|--------------Range to remove ---------------|\n // or\n // |--------------Range i-------|\n //|--------------Range to remove ---------------|\n this.customTimeRangeArray.splice(i,1);\n i--;\n\n }else if (start > this.customTimeRangeArray[i].start && end < this.customTimeRangeArray[i].end) {\n //|-----------------Range i----------------|\n // |-------Range to remove -----|\n this.customTimeRangeArray.splice(i + 1, 0, {start: end,end: this.customTimeRangeArray[i].end});\n this.customTimeRangeArray[i].end = start;\n break;\n }else if ( start > this.customTimeRangeArray[i].start && start < this.customTimeRangeArray[i].end) {\n //|-----------Range i----------|\n // |---------Range to remove --------|\n // or\n //|-----------------Range i----------------|\n // |-------Range to remove -----|\n this.customTimeRangeArray[i].end = start;\n }else if ( end > this.customTimeRangeArray[i].start && end < this.customTimeRangeArray[i].end) {\n // |-----------Range i----------|\n //|---------Range to remove --------|\n // or\n //|-----------------Range i----------------|\n //|-------Range to remove -----|\n this.customTimeRangeArray[i].start = end;\n }\n }\n\n this.length = this.customTimeRangeArray.length;\n }\n\n function mergeRanges(rangeIndex1, rangeIndex2) {\n var range1 = this.customTimeRangeArray[rangeIndex1];\n var range2 = this.customTimeRangeArray[rangeIndex2];\n\n if (range1.start <= range2.start && range2.start <= range1.end && range1.end <= range2.end) {\n //|-----------Range1----------|\n // |-----------Range2----------|\n range1.end = range2.end;\n this.customTimeRangeArray.splice(rangeIndex2,1);\n return true;\n\n } else if (range2.start <= range1.start && range1.start <= range2.end && range2.end <= range1.end) {\n // |-----------Range1----------|\n //|-----------Range2----------|\n range1.start = range2.start;\n this.customTimeRangeArray.splice(rangeIndex2,1);\n return true;\n } else if (range2.start <= range1.start && range1.start <= range2.end && range1.end <= range2.end) {\n // |--------Range1-------|\n //|---------------Range2--------------|\n this.customTimeRangeArray.splice(rangeIndex1,1);\n return true;\n } else if (range1.start <= range2.start && range2.start <= range1.end && range2.end <= range1.end) {\n //|-----------------Range1--------------|\n // |-----------Range2----------|\n this.customTimeRangeArray.splice(rangeIndex2,1);\n return true;\n }\n return false;\n }\n\n function start(index) {\n return this.customTimeRangeArray[index].start;\n }\n\n function end(index) {\n return this.customTimeRangeArray[index].end;\n }\n\n return {\n customTimeRangeArray: customTimeRangeArray,\n length: length,\n add: add,\n clear: clear,\n remove: remove,\n mergeRanges: mergeRanges,\n start: start,\n end: end\n };\n}\nCustomTimeRanges.__dashjs_factory_name = 'CustomTimeRanges';\nexport default FactoryMaker.getClassFactory(CustomTimeRanges);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport FactoryMaker from '../../core/FactoryMaker.js';\nimport MediaPlayerModel from '../models/MediaPlayerModel.js';\nimport Debug from '../../core/Debug.js';\n\nconst LOCAL_STORAGE_VIDEO_BITRATE_KEY = 'dashjs_vbitrate';\nconst LOCAL_STORAGE_AUDIO_BITRATE_KEY = 'dashjs_abitrate';\nconst LOCAL_STORAGE_AUDIO_SETTINGS_KEY = 'dashjs_asettings';\nconst LOCAL_STORAGE_VIDEO_SETTINGS_KEY = 'dashjs_vsettings';\nconst STORAGE_TYPE_LOCAL = 'localStorage';\nconst STORAGE_TYPE_SESSION = 'sessionStorage';\n\nfunction DOMStorage() {\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n\n let instance,\n supported,\n mediaPlayerModel;\n\n function setup() {\n mediaPlayerModel = MediaPlayerModel(context).getInstance();\n }\n\n //type can be local, session\n function isSupported(type) {\n if (supported !== undefined) return supported;\n\n supported = false;\n\n var testKey = '1';\n var testValue = '1';\n var storage;\n\n try {\n storage = window[type];\n } catch (error) {\n log('Warning: DOMStorage access denied: ' + error.message);\n return supported;\n }\n\n if (!storage || (type !== STORAGE_TYPE_LOCAL && type !== STORAGE_TYPE_SESSION)) {\n return supported;\n }\n\n /* When Safari (OS X or iOS) is in private browsing mode, it appears as though localStorage is available, but trying to call setItem throws an exception.\n http://stackoverflow.com/questions/14555347/html5-localstorage-error-with-safari-quota-exceeded-err-dom-exception-22-an\n\n Check if the storage can be used\n */\n try {\n storage.setItem(testKey, testValue);\n storage.removeItem(testKey);\n supported = true;\n } catch (error) {\n log('Warning: DOMStorage is supported, but cannot be used: ' + error.message);\n }\n\n return supported;\n }\n\n function getSavedMediaSettings(type) {\n //Checks local storage to see if there is valid, non-expired media settings\n if (!isSupported(STORAGE_TYPE_LOCAL) || !mediaPlayerModel.getLastMediaSettingsCachingInfo().enabled) return null;\n\n var key = type === 'video' ? LOCAL_STORAGE_VIDEO_SETTINGS_KEY : LOCAL_STORAGE_AUDIO_SETTINGS_KEY;\n var obj = JSON.parse(localStorage.getItem(key)) || {};\n var isExpired = (new Date().getTime() - parseInt(obj.timestamp, 10)) >= mediaPlayerModel.getLastMediaSettingsCachingInfo().ttl || false;\n var settings = obj.settings;\n\n if (isExpired) {\n localStorage.removeItem(key);\n settings = null;\n }\n\n return settings;\n }\n\n function getSavedBitrateSettings(type) {\n let savedBitrate = NaN;\n //Checks local storage to see if there is valid, non-expired bit rate\n //hinting from the last play session to use as a starting bit rate.\n if (isSupported(STORAGE_TYPE_LOCAL) && mediaPlayerModel.getLastBitrateCachingInfo().enabled ) {\n var key = type === 'video' ? LOCAL_STORAGE_VIDEO_BITRATE_KEY : LOCAL_STORAGE_AUDIO_BITRATE_KEY;\n var obj = JSON.parse(localStorage.getItem(key)) || {};\n var isExpired = (new Date().getTime() - parseInt(obj.timestamp, 10)) >= mediaPlayerModel.getLastBitrateCachingInfo().ttl || false;\n var bitrate = parseInt(obj.bitrate, 10);\n\n if (!isNaN(bitrate) && !isExpired) {\n savedBitrate = bitrate;\n log('Last saved bitrate for ' + type + ' was ' + bitrate);\n } else if (isExpired) {\n localStorage.removeItem(key);\n }\n }\n return savedBitrate;\n }\n\n instance = {\n getSavedBitrateSettings: getSavedBitrateSettings,\n getSavedMediaSettings: getSavedMediaSettings,\n isSupported: isSupported\n };\n\n setup();\n return instance;\n}\n\nDOMStorage.__dashjs_factory_name = 'DOMStorage';\nlet factory = FactoryMaker.getSingletonFactory(DOMStorage);\nfactory.STORAGE_TYPE_LOCAL = STORAGE_TYPE_LOCAL;\nfactory.STORAGE_TYPE_SESSION = STORAGE_TYPE_SESSION;\nfactory.LOCAL_STORAGE_VIDEO_BITRATE_KEY = LOCAL_STORAGE_VIDEO_BITRATE_KEY;\nfactory.LOCAL_STORAGE_AUDIO_BITRATE_KEY = LOCAL_STORAGE_AUDIO_BITRATE_KEY;\nfactory.LOCAL_STORAGE_AUDIO_SETTINGS_KEY = LOCAL_STORAGE_AUDIO_SETTINGS_KEY;\nfactory.LOCAL_STORAGE_VIDEO_SETTINGS_KEY = LOCAL_STORAGE_VIDEO_SETTINGS_KEY;\nexport default factory;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport EventBus from '../../core/EventBus.js';\nimport Events from '../../core/events/Events.js';\nimport FactoryMaker from '../../core/FactoryMaker.js';\n\nfunction ErrorHandler() {\n\n let instance;\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n\n // \"mediasource\"|\"mediakeys\"\n function capabilityError(err) {\n eventBus.trigger(Events.ERROR, {error: 'capability', event: err});\n }\n\n // {id: \"manifest\"|\"SIDX\"|\"content\"|\"initialization\", url: \"\", request: {XMLHttpRequest instance}}\n function downloadError(id, url, request) {\n eventBus.trigger(Events.ERROR, {error: 'download', event: {id: id, url: url, request: request}});\n }\n\n // {message: \"\", id: \"codec\"|\"parse\"|\"nostreams\", manifest: {parsed manifest}}\n function manifestError(message, id, manifest) {\n eventBus.trigger(Events.ERROR, {error: 'manifestError', event: {message: message, id: id, manifest: manifest}});\n }\n\n function timedTextError(message, id, ccContent) {\n eventBus.trigger(Events.ERROR, {error: 'cc', event: {message: message, id: id, cc: ccContent}});\n }\n\n function mediaSourceError(err) {\n eventBus.trigger(Events.ERROR, {error: 'mediasource', event: err});\n }\n\n function mediaKeySessionError(err) {\n eventBus.trigger(Events.ERROR, {error: 'key_session', event: err});\n }\n\n function mediaKeyMessageError(err) {\n eventBus.trigger(Events.ERROR, {error: 'key_message', event: err});\n }\n\n instance = {\n capabilityError: capabilityError,\n downloadError: downloadError,\n manifestError: manifestError,\n timedTextError: timedTextError,\n mediaSourceError: mediaSourceError,\n mediaKeySessionError: mediaKeySessionError,\n mediaKeyMessageError: mediaKeyMessageError\n };\n\n return instance;\n}\nErrorHandler.__dashjs_factory_name = 'ErrorHandler';\nexport default FactoryMaker.getSingletonFactory(ErrorHandler);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport IsoBox from '../vo/IsoBox.js';\nimport FactoryMaker from '../../core/FactoryMaker.js';\n\nfunction IsoFile() {\n\n let instance,\n parsedIsoFile,\n commonProps,\n sidxProps,\n sidxRefProps,\n emsgProps,\n mdhdProps,\n mfhdProps,\n tfhdProps,\n tfdtProps,\n trunProps,\n trunSampleProps;\n\n /**\n * @param {string} type\n * @returns {@link IsoBox}\n * @memberof IsoFile#\n */\n function getBox(type) {\n if (!type || !parsedIsoFile || !parsedIsoFile.boxes || (parsedIsoFile.boxes.length === 0)) return null;\n\n return convertToDashIsoBox(parsedIsoFile.fetch(type));\n }\n\n /**\n * @param {string} type\n * @returns {Array} array of {@link IsoBox}\n * @memberof IsoFile#\n */\n function getBoxes(type) {\n var boxData = parsedIsoFile.fetchAll(type);\n var boxes = [];\n var box;\n\n for (var i = 0, ln = boxData.length; i < ln; i++) {\n box = convertToDashIsoBox(boxData[i]);\n\n if (box) {\n boxes.push(box);\n }\n }\n\n return boxes;\n }\n\n /**\n * @param {string} value\n * @memberof IsoFile#\n */\n function setData(value) {\n parsedIsoFile = value;\n }\n\n /**\n * @returns {@link IsoBox}\n * @memberof IsoFile#\n */\n function getLastBox() {\n if (!parsedIsoFile || !parsedIsoFile.boxes || !parsedIsoFile.boxes.length) return null;\n\n var type = parsedIsoFile.boxes[parsedIsoFile.boxes.length - 1].type;\n var boxes = getBoxes(type);\n\n return boxes[boxes.length - 1];\n }\n\n /**\n * @returns {Number}\n * @memberof IsoFile#\n */\n function getOffset() {\n return parsedIsoFile._cursor.offset;\n }\n\n function setup() {\n commonProps = {\n offset: '_offset',\n size: 'size',\n type: 'type'\n };\n\n sidxProps = {\n references: 'references',\n timescale: 'timescale',\n earliest_presentation_time: 'earliest_presentation_time',\n first_offset: 'first_offset'\n };\n\n sidxRefProps = {\n reference_type: 'reference_type',\n referenced_size: 'referenced_size',\n subsegment_duration: 'subsegment_duration'\n };\n\n emsgProps = {\n id: 'id',\n value: 'value',\n timescale: 'timescale',\n scheme_id_uri: 'scheme_id_uri',\n presentation_time_delta: 'presentation_time_delta',\n event_duration: 'event_duration',\n message_data: 'message_data'\n };\n\n mdhdProps = {\n timescale: 'timescale'\n };\n\n mfhdProps = {\n sequence_number: 'sequence_number'\n };\n\n tfhdProps = {\n base_data_offset: 'base_data_offset',\n sample_description_index: 'sample_description_index',\n default_sample_duration: 'default_sample_duration',\n default_sample_size: 'default_sample_size',\n default_sample_flags: 'default_sample_flags',\n flags: 'flags'\n };\n\n tfdtProps = {\n version: 'version',\n baseMediaDecodeTime: 'baseMediaDecodeTime',\n flags: 'flags'\n };\n\n trunProps = {\n sample_count: 'sample_count',\n first_sample_flags: 'first_sample_flags',\n data_offset: 'data_offset',\n flags: 'flags',\n samples: 'samples'\n };\n\n trunSampleProps = {\n sample_size: 'sample_size',\n sample_duration: 'sample_duration',\n sample_composition_time_offset: 'sample_composition_time_offset'\n };\n }\n\n function copyProps(from, to, props) {\n for (var prop in props) {\n to[prop] = from[props[prop]];\n }\n }\n\n function convertToDashIsoBox(boxData) {\n if (!boxData) return null;\n\n var box = new IsoBox();\n var i,\n ln;\n\n copyProps(boxData, box, commonProps);\n\n if (boxData.hasOwnProperty('_incomplete')) {\n box.isComplete = !boxData._incomplete;\n }\n\n switch (box.type) {\n case 'sidx':\n copyProps(boxData, box, sidxProps);\n if (box.references) {\n for (i = 0, ln = box.references.length; i < ln; i++) {\n copyProps(boxData.references[i], box.references[i], sidxRefProps);\n }\n }\n break;\n case 'emsg':\n copyProps(boxData, box, emsgProps);\n break;\n case 'mdhd':\n copyProps(boxData, box, mdhdProps);\n break;\n case 'mfhd':\n copyProps(boxData, box, mfhdProps);\n break;\n case 'tfhd':\n copyProps(boxData, box, tfhdProps);\n break;\n case 'tfdt':\n copyProps(boxData, box, tfdtProps);\n break;\n case 'trun':\n copyProps(boxData, box, trunProps);\n if (box.samples) {\n for (i = 0, ln = box.samples.length; i < ln; i++) {\n copyProps(boxData.samples[i], box.samples[i], trunSampleProps);\n }\n }\n break;\n }\n\n return box;\n }\n\n instance = {\n getBox: getBox,\n getBoxes: getBoxes,\n setData: setData,\n getLastBox: getLastBox,\n getOffset: getOffset\n };\n\n setup();\n\n return instance;\n}\nIsoFile.__dashjs_factory_name = 'IsoFile';\nexport default FactoryMaker.getClassFactory(IsoFile);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport SynchronizationRulesCollection from '../rules/synchronization/SynchronizationRulesCollection.js';\nimport Error from '../vo/Error.js';\nimport EventBus from '../../core/EventBus.js';\nimport Events from '../../core/events/Events.js';\nimport RulesController from '../rules/RulesController.js';\nimport FactoryMaker from '../../core/FactoryMaker.js';\n\nconst LIVE_EDGE_NOT_FOUND_ERROR_CODE = 1;\n\nfunction LiveEdgeFinder() {\n\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n timelineConverter,\n streamProcessor,\n rulesController,\n isSearchStarted,\n searchStartTime,\n rules,\n liveEdge,\n ruleSet;\n\n function initialize(TimelineConverter, StreamProcessor) {\n timelineConverter = TimelineConverter;\n streamProcessor = StreamProcessor;\n isSearchStarted = false;\n searchStartTime = NaN;\n liveEdge = null;\n rulesController = RulesController(context).getInstance();\n ruleSet = SynchronizationRulesCollection.BEST_GUESS_RULES;\n eventBus.on(Events.STREAM_INITIALIZED, onStreamInitialized, this);\n }\n\n function abortSearch() {\n isSearchStarted = false;\n searchStartTime = NaN;\n }\n\n function getLiveEdge() {\n return liveEdge;\n }\n\n function reset() {\n eventBus.off(Events.STREAM_INITIALIZED, onStreamInitialized, this);\n abortSearch();\n liveEdge = null;\n timelineConverter = null;\n streamProcessor = null;\n isSearchStarted = false;\n searchStartTime = NaN;\n ruleSet = null;\n rulesController = null;\n }\n\n function onSearchCompleted(req) {\n var searchTime = (new Date().getTime() - searchStartTime) / 1000;\n liveEdge = req.value;\n eventBus.trigger(Events.LIVE_EDGE_SEARCH_COMPLETED, {liveEdge: liveEdge, searchTime: searchTime, error: liveEdge === null ? new Error(LIVE_EDGE_NOT_FOUND_ERROR_CODE, 'live edge has not been found', null) : null});\n }\n\n function onStreamInitialized(e) {\n\n if (!streamProcessor.isDynamic() || isSearchStarted || e.error) {\n return;\n }\n\n ruleSet = timelineConverter.isTimeSyncCompleted() ? SynchronizationRulesCollection.TIME_SYNCHRONIZED_RULES : SynchronizationRulesCollection.BEST_GUESS_RULES;\n\n rules = SynchronizationRulesCollection(context).getInstance().getRules(ruleSet);\n isSearchStarted = true;\n searchStartTime = new Date().getTime();\n\n rulesController.applyRules(rules, streamProcessor, onSearchCompleted, null, function (currentValue, newValue) {\n return newValue;\n });\n }\n\n instance = {\n initialize: initialize,\n abortSearch: abortSearch,\n getLiveEdge: getLiveEdge,\n reset: reset\n };\n\n return instance;\n}\nLiveEdgeFinder.__dashjs_factory_name = 'LiveEdgeFinder';\nlet factory = FactoryMaker.getSingletonFactory(LiveEdgeFinder);\nfactory.LIVE_EDGE_NOT_FOUND_ERROR_CODE = LIVE_EDGE_NOT_FOUND_ERROR_CODE;\nexport default factory;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../core/FactoryMaker.js';\n\nfunction RequestModifier() {\n\n let instance;\n\n function modifyRequestURL(url) {\n return url;\n }\n\n function modifyRequestHeader(request) {\n return request;\n }\n\n instance = {\n modifyRequestURL: modifyRequestURL,\n modifyRequestHeader: modifyRequestHeader\n };\n\n return instance;\n}\n\nRequestModifier.__dashjs_factory_name = 'RequestModifier';\nexport default FactoryMaker.getSingletonFactory(RequestModifier);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport FactoryMaker from '../../core/FactoryMaker.js';\nimport X2JS from '../../../externals/xml2json.js';\n\nconst SECONDS_IN_HOUR = 60 * 60; // Expression of an hour in seconds\nconst SECONDS_IN_MIN = 60; // Expression of a minute in seconds\n\nfunction TTMLParser() {\n\n //let context = this.context;\n\n /*\n * This TTML parser follows \"EBU-TT-D SUBTITLING DISTRIBUTION FORMAT - tech3380\" spec - https://tech.ebu.ch/docs/tech/tech3380.pdf.\n * */\n let instance,\n timingRegex,\n ttml, // contains the whole ttml document received\n ttmlStyling, // contains the styling information from the document\n ttmlLayout, // contains the positioning information from the document\n fontSize,\n lineHeight,\n linePadding,\n defaultLayoutProperties,\n defaultStyleProperties,\n fontFamilies,\n textAlign,\n multiRowAlign,\n wrapOption,\n unicodeBidi,\n displayAlign,\n writingMode,\n videoModel;\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.videoModel) {\n videoModel = config.videoModel;\n }\n }\n\n /**\n * Parse the raw data and process it to return the HTML element representing the cue.\n * Return the region to be processed and controlled (hide/show) by the caption controller.\n * @param data: raw data received from the TextSourceBuffer\n **/\n\n function parse(data) {\n var type;\n var converter = new X2JS([], '', false);\n\n // Parse the TTML in a JSON object.\n ttml = converter.xml_str2json(data);\n\n if (!ttml) {\n throw 'TTML document could not be parsed';\n }\n\n if (videoModel.getTTMLRenderingDiv()) {\n type = 'html';\n }\n\n // Get the namespace if there is one defined in the JSON object.\n var ttNS = getNamespacePrefix(ttml, 'http://www.w3.org/ns/ttml');\n\n // Remove the namespace before each node if it exists:\n if (ttNS) {\n removeNamespacePrefix(ttml, ttNS);\n }\n\n // Extract styling and layout from the document.\n ttmlLayout = ttml.tt.head.layout.region_asArray;\n ttmlStyling = ttml.tt.head.styling.style_asArray;\n\n // Check if the document is conform to the specification.\n if (!passStructuralConstraints()) {\n var errorMsg = 'TTML document has incorrect structure';\n throw errorMsg;\n }\n\n // Extract the cellResolution information\n var cellResolution = getCellResolution();\n\n // Recover the video width and height displayed by the player.\n var videoWidth = videoModel.getElement().clientWidth;\n var videoHeight = videoModel.getElement().clientHeight;\n\n // Compute the CellResolution unit in order to process properties using sizing (fontSize, linePadding, etc).\n var cellUnit = [videoWidth / cellResolution[0], videoHeight / cellResolution[1]];\n defaultStyleProperties['font-size'] = cellUnit[1] + 'px;';\n\n var regions = [];\n for (var i = 0; i < ttmlLayout.length; i++) {\n regions.push(processRegion(JSON.parse(JSON.stringify(ttmlLayout[i])), cellUnit));\n }\n\n // Get the namespace prefix.\n var nsttp = getNamespacePrefix(ttml.tt, 'http://www.w3.org/ns/ttml#parameter');\n\n // Set the framerate.\n if (ttml.tt.hasOwnProperty(nsttp + ':frameRate')) {\n ttml.tt.frameRate = parseInt(ttml.tt[nsttp + ':frameRate'], 10);\n }\n var captionArray = [];\n // Extract the div\n var divs = ttml.tt.body_asArray[0].__children;\n\n divs.forEach(function (div) {\n var cues = div.div.p_asArray;\n\n // Check if cues is not empty or undefined.\n if (!cues || cues.length === 0) {\n var errorMsg = 'TTML document does not contain any cues';\n throw errorMsg;\n }\n\n /*** Parsing of every cue.\n *\n * cues: List of the cues found in the ttml parsing.\n * We iterate on this list.\n * cue: Every cue is parsed individually and creates an HTML element with its style and children.\n *\n * pElements: all the nodes that can be found in the paragraph.\n *\n * ***/\n\n // Caption array is the final result return containing all the cues' information.\n var pStartTime;\n var pEndTime;\n var spanStartTime;\n var spanEndTime;\n cues.forEach(function (cue) {\n\n // Obtain the start and end time of the cue.\n if (cue.hasOwnProperty('begin') && cue.hasOwnProperty('end')) {\n pStartTime = parseTimings(cue.begin);\n pEndTime = parseTimings(cue.end);\n } else if (cue.span.hasOwnProperty('begin') && cue.span.hasOwnProperty('end')) {\n spanStartTime = parseTimings(cue.span.begin);\n spanEndTime = parseTimings(cue.span.end);\n } else {\n errorMsg = 'TTML document has incorrect timing value';\n throw errorMsg;\n }\n\n if (cue['smpte:backgroundImage'] !== undefined) {\n var images = ttml.tt.head.metadata.image_asArray;\n for (var j = 0; j < images.length; j++) {\n if (('#' + images[j]['xml:id']) == cue['smpte:backgroundImage']) {\n captionArray.push({\n start: spanStartTime || pStartTime,\n end: spanEndTime || pEndTime,\n id: images[j]['xml:id'],\n data: 'data:image/' + images[j].imagetype.toLowerCase() + ';base64, ' + images[j].__text,\n type: 'image'\n });\n }\n }\n } else if (type === 'html') {\n lineHeight = {};\n linePadding = {};\n fontSize = {};\n var cueID = '';\n if (cue.hasOwnProperty('id') || cue.hasOwnProperty('xml:id')) {\n cueID = cue['xml:id'] || cue.id;\n }\n // Error if timing is not specified.\n // TODO: check with the specification what is allowed.\n if ((isNaN(pStartTime) || isNaN(pEndTime)) && (isNaN(spanStartTime) || isNaN(spanEndTime))) {\n errorMsg = 'TTML document has incorrect timing value';\n throw errorMsg;\n }\n\n /**\n * Find the region defined for the cue.\n */\n // properties to be put in the \"captionRegion\" HTML element.\n var cueRegionProperties = constructCueRegion(cue, div.div, cellUnit);\n\n /**\n * Find the style defined for the cue.\n */\n // properties to be put in the \"paragraph\" HTML element.\n var cueStyleProperties = constructCueStyle(cue, cellUnit);\n\n /**\n * /!\\ Create the cue HTML Element containing the whole cue.\n */\n var styleIDs = cueStyleProperties[1];\n cueStyleProperties = cueStyleProperties[0];\n\n // Final cue HTML element.\n var cueParagraph = document.createElement('div');\n cueParagraph.className = styleIDs;\n\n // Stock the element in the subtitle (in p) in an array (in case there are only one value).\n var pElements = cue.__children;\n\n // Create an wrapper containing the cue information about unicodeBidi and direction\n // as they need to be defined on at this level.\n // We append to the wrapper the cue itself.\n var cueDirUniWrapper = constructCue(pElements, cellUnit);\n cueDirUniWrapper.className = 'cueDirUniWrapper';\n\n // If the style defines these two properties, we place them in cueContainer\n // and delete them from the cue style so it is not added afterwards to the final cue.\n if (arrayContains('unicode-bidi', cueStyleProperties)) {\n cueDirUniWrapper.style.cssText += getPropertyFromArray('unicode-bidi', cueStyleProperties);\n deletePropertyFromArray('unicode-bidi', cueStyleProperties);\n }\n if (arrayContains('direction', cueStyleProperties)) {\n cueDirUniWrapper.style.cssText += getPropertyFromArray('direction', cueStyleProperties);\n deletePropertyFromArray('direction', cueStyleProperties);\n }\n\n // Apply the linePadding property if it is specified in the cue style.\n if (arrayContains('padding-left', cueStyleProperties) && arrayContains('padding-right', cueStyleProperties)) {\n cueDirUniWrapper.innerHTML = applyLinePadding(cueDirUniWrapper, cueStyleProperties);\n }\n\n /**\n * Clean and set the style and region for the cue to be returned.\n */\n\n // Remove the line padding property from being added at the \"paragraph\" element level.\n if (arrayContains('padding-left', cueStyleProperties) && arrayContains('padding-right', cueStyleProperties)) {\n deletePropertyFromArray('padding-left', cueStyleProperties);\n deletePropertyFromArray('padding-right', cueStyleProperties);\n }\n\n // Remove the ID of the region from being added at the \"paragraph\" element level.\n var regionID = '';\n if (arrayContains('regionID', cueRegionProperties)) {\n var wholeRegionID = getPropertyFromArray('regionID', cueRegionProperties);\n regionID = wholeRegionID.slice(wholeRegionID.indexOf(':') + 1, wholeRegionID.length - 1);\n }\n\n // We link the p style to the finale cueParagraph element.\n if (cueStyleProperties) {\n cueParagraph.style.cssText = cueStyleProperties.join(' ') + 'display:flex;';\n }\n // We define the CSS style for the cue region.\n if (cueRegionProperties) {\n cueRegionProperties = cueRegionProperties.join(' ');\n }\n\n // We then place the cue wrapper inside the paragraph element.\n cueParagraph.appendChild(cueDirUniWrapper);\n\n // Final cue.\n var finalCue = document.createElement('div');\n finalCue.appendChild(cueParagraph);\n finalCue.id = 'subtitle_' + cueID;\n finalCue.style.cssText = 'position: absolute; margin: 0; display: flex; box-sizing: border-box; pointer-events: none;' + cueRegionProperties;\n\n if (Object.keys(fontSize).length === 0) {\n fontSize.defaultFontSize = '100';\n }\n\n // We add all the cue information in captionArray.\n captionArray.push({\n start: spanStartTime || pStartTime,\n end: spanEndTime || pEndTime,\n type: 'html',\n cueHTMLElement: finalCue,\n regions: regions,\n regionID: regionID,\n cueID: cueID,\n videoHeight: videoHeight,\n videoWidth: videoWidth,\n cellResolution: cellResolution,\n fontSize: fontSize || {\n defaultFontSize: '100'\n },\n lineHeight: lineHeight,\n linePadding: linePadding\n });\n\n } else {\n var text = '';\n var textElements = cue.__children;\n if (textElements.length) {\n textElements.forEach(function (el) {\n if (el.hasOwnProperty('span')) {\n var spanElements = el.span.__children;\n spanElements.forEach(function (spanEl) {\n // If metadata is present, do not process.\n if (spanElements.hasOwnProperty('metadata')) {\n return;\n }\n // If the element is a string\n if (spanEl.hasOwnProperty('#text')) {\n text += spanEl['#text'].replace(/[\\r\\n]+/gm, ' ').trim();\n // If the element is a 'br' tag\n } else if ('br' in spanEl) {\n // Create a br element.\n text += '\\n';\n }\n });\n } else if (el.hasOwnProperty('br')) {\n text += '\\n';\n } else {\n text += el['#text'].replace(/[\\r\\n]+/gm, ' ').trim();\n }\n });\n }\n\n captionArray.push({\n start: spanStartTime || pStartTime,\n end: spanEndTime || pEndTime,\n data: text,\n type: 'text'\n });\n\n }\n });\n });\n\n return captionArray;\n }\n\n function setup() {\n /*\n * This TTML parser follows \"EBU-TT-D SUBTITLING DISTRIBUTION FORMAT - tech3380\" spec - https://tech.ebu.ch/docs/tech/tech3380.pdf.\n * */\n timingRegex = /^([0-9][0-9]+):([0-5][0-9]):([0-5][0-9])|(60)(\\.([0-9])+)?$/; // Regex defining the time\n fontSize = {};\n lineHeight = {};\n linePadding = {};\n defaultLayoutProperties = {\n 'top': '85%;',\n 'left': '5%;',\n 'width': '90%;',\n 'height': '10%;',\n 'align-items': 'flex-start;',\n 'overflow': 'visible;',\n '-ms-writing-mode': 'lr-tb, horizontal-tb;;',\n '-webkit-writing-mode': 'horizontal-tb;',\n '-moz-writing-mode': 'horizontal-tb;',\n 'writing-mode': 'horizontal-tb;'\n };\n defaultStyleProperties = {\n 'color': 'rgb(255,255,255);',\n 'direction': 'ltr;',\n 'font-family': 'monospace, sans-serif;',\n 'font-style': 'normal;',\n 'line-height': 'normal;',\n 'font-weight': 'normal;',\n 'text-align': 'start;',\n 'justify-content': 'flex-start;',\n 'text-decoration': 'none;',\n 'unicode-bidi': 'normal;',\n 'white-space': 'normal;',\n 'width': '100%;'\n };\n fontFamilies = {\n monospace: 'font-family: monospace;',\n sansSerif: 'font-family: sans-serif;',\n serif: 'font-family: serif;',\n monospaceSansSerif: 'font-family: monospace, sans-serif;',\n monospaceSerif: 'font-family: monospace, serif;',\n proportionalSansSerif: 'font-family: Arial;',\n proportionalSerif: 'font-family: Times New Roman;',\n 'default': 'font-family: monospace, sans-serif;'\n };\n textAlign = {\n right: ['justify-content: flex-end;', 'text-align: right;'],\n start: ['justify-content: flex-start;', 'text-align: start;'],\n center: ['justify-content: center;', 'text-align: center;'],\n end: ['justify-content: flex-end;', 'text-align: end;'],\n left: ['justify-content: flex-start;', 'text-align: left;']\n };\n multiRowAlign = {\n start: 'text-align: start;',\n center: 'text-align: center;',\n end: 'text-align: end;',\n auto: ''\n };\n wrapOption = {\n wrap: 'white-space: normal;',\n noWrap: 'white-space: nowrap;'\n };\n unicodeBidi = {\n normal: 'unicode-bidi: normal;',\n embed: 'unicode-bidi: embed;',\n bidiOverride: 'unicode-bidi: bidi-override;'\n };\n displayAlign = {\n before: 'align-items: flex-start;',\n center: 'align-items: center;',\n after: 'align-items: flex-end;'\n };\n writingMode = {\n lrtb: '-webkit-writing-mode: horizontal-tb;' +\n 'writing-mode: horizontal-tb;',\n rltb: '-webkit-writing-mode: horizontal-tb;' +\n 'writing-mode: horizontal-tb;' +\n 'direction: rtl;' +\n 'unicode-bidi: bidi-override;',\n tbrl: '-webkit-writing-mode: vertical-rl;' +\n 'writing-mode: vertical-rl;' +\n '-webkit-text-orientation: upright;' +\n 'text-orientation: upright;',\n tblr: '-webkit-writing-mode: vertical-lr;' +\n 'writing-mode: vertical-lr;' +\n '-webkit-text-orientation: upright;' +\n 'text-orientation: upright;',\n lr: '-webkit-writing-mode: horizontal-tb;' +\n 'writing-mode: horizontal-tb;',\n rl: '-webkit-writing-mode: horizontal-tb;' +\n 'writing-mode: horizontal-tb;' +\n 'direction: rtl;',\n tb: '-webkit-writing-mode: vertical-rl;' +\n 'writing-mode: vertical-rl;' +\n '-webkit-text-orientation: upright;' +\n 'text-orientation: upright;'\n };\n }\n\n function parseTimings(timingStr) {\n // Test if the time provided by the caption is valid.\n var test = timingRegex.test(timingStr);\n var timeParts,\n parsedTime,\n frameRate;\n\n if (!test) {\n // Return NaN so it will throw an exception at internalParse if the time is incorrect.\n return NaN;\n }\n\n timeParts = timingStr.split(':');\n\n // Process the timings by decomposing it and converting it in numbers.\n parsedTime = (parseFloat(timeParts[0]) * SECONDS_IN_HOUR +\n parseFloat(timeParts[1]) * SECONDS_IN_MIN +\n parseFloat(timeParts[2]));\n\n // In case a frameRate is provided, we adjust the parsed time.\n if (timeParts[3]) {\n frameRate = ttml.tt.frameRate;\n if (frameRate && !isNaN(frameRate)) {\n parsedTime += parseFloat(timeParts[3]) / frameRate;\n } else {\n return NaN;\n }\n }\n return parsedTime;\n }\n\n function passStructuralConstraints() {\n // Check if the ttml document provide all the necessary elements.\n var hasTt = ttml.hasOwnProperty('tt');\n var hasHead = hasTt ? ttml.tt.hasOwnProperty('head') : false;\n var hasLayout = hasHead ? ttml.tt.head.hasOwnProperty('layout') : false;\n var hasStyling = hasHead ? ttml.tt.head.hasOwnProperty('styling') : false;\n var hasBody = hasTt ? ttml.tt.hasOwnProperty('body') : false;\n\n // Check if the document contains all the necessary information\n return (hasTt && hasHead && hasLayout && hasStyling && hasBody);\n }\n\n function getNamespacePrefix(json, ns) {\n // Obtain the namespace prefix.\n var r = Object.keys(json)\n .filter(function (k) {\n return (k.split(':')[0] === 'xmlns' || k.split(':')[1] === 'xmlns') && json[k] === ns;\n }).map(function (k) {\n return k.split(':')[2] || k.split(':')[1];\n });\n if (r.length != 1) {\n return null;\n }\n return r[0];\n }\n\n function removeNamespacePrefix(json, nsPrefix) {\n for (var key in json) {\n if (json.hasOwnProperty(key)) {\n if ((typeof json[key] === 'object' || json[key] instanceof Object) && !Array.isArray(json[key])) {\n removeNamespacePrefix(json[key], nsPrefix);\n } else if (Array.isArray(json[key])) {\n for (var i = 0; i < json[key].length; i++) {\n removeNamespacePrefix(json[key][i], nsPrefix);\n }\n }\n var newKey = key.slice(key.indexOf(nsPrefix) + nsPrefix.length + 1);\n json[newKey] = json[key];\n delete json[key];\n }\n }\n }\n\n // backgroundColor = background-color, convert from camelCase to dash.\n function camelCaseToDash(key) {\n return key.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n }\n\n // Convert an RGBA value written in Hex to rgba(v,v,v,a).\n function convertHexToRGBA(rgba) {\n // Get the hexadecimal value without the #.\n var hex = rgba.slice(1);\n // Separate the values in pairs.\n var hexMatrice = hex.match(/.{2}/g);\n // Convert the alpha value in decimal between 0 and 1.\n var alpha = parseFloat(parseInt((parseInt(hexMatrice[3], 16) / 255) * 1000, 10) / 1000);\n // Get the standard RGB value.\n var rgb = hexMatrice.slice(0, 3).map(function (i) {\n return parseInt(i, 16);\n });\n // Return the RGBA value for CSS.\n return 'rgba(' + rgb.join(',') + ',' + alpha + ');';\n }\n\n // Return whether or not an array contains a certain text\n function arrayContains(text, array) {\n for (var i = 0; i < array.length; i++) {\n if (array[i].indexOf(text) > -1) {\n return true;\n }\n }\n return false;\n }\n\n // Return the whole value that contains \"text\"\n function getPropertyFromArray(text, array) {\n for (var i = 0; i < array.length; i++) {\n if (array[i].indexOf(text) > -1) {\n return array[i];\n }\n }\n return null;\n }\n\n // Delete a a property from an array.\n function deletePropertyFromArray(property, array) {\n array.splice(array.indexOf(getPropertyFromArray(property, array)), 1);\n }\n\n function mergeArrays(primeArray, arrayToAdd) {\n for (var i = 0; i < primeArray.length; i++) {\n for (var j = 0; j < arrayToAdd.length; j++) {\n // Take only the name of the property\n if (primeArray[i]) {\n if (primeArray[i].split(':')[0].indexOf(arrayToAdd[j].split(':')[0]) > -1) {\n primeArray.splice(i, 1);\n }\n }\n }\n }\n return primeArray.concat(arrayToAdd);\n }\n\n /**\n * Processing of styling information:\n * - processStyle: return an array of strings with the cue style under a CSS style form.\n * - findStyleFromID: Return the unprocessed style from TTMLStyling corresponding to the ID researched.\n * - getProcessedStyle: Return the processed style(s) from the ID(s) received in entry.\n * **/\n\n\n // Compute the style properties to return an array with the cleaned properties.\n function processStyle(cueStyle, cellUnit) {\n var properties = [];\n\n // Clean up from the xml2json parsing:\n for (var key in cueStyle) {\n if (cueStyle.hasOwnProperty(key)) {\n //Clean the properties from the parsing.\n var newKey = key.replace('ebutts:', '');\n newKey = newKey.replace('xml:', '');\n newKey = newKey.replace('tts:', '');\n\n // Clean the properties' names.\n newKey = camelCaseToDash(newKey);\n cueStyle[newKey] = cueStyle[key];\n delete cueStyle[key];\n }\n }\n\n // Line padding is computed from the cellResolution.\n if ('line-padding' in cueStyle) {\n var valuePadding = parseFloat(cueStyle['line-padding'].slice(cueStyle['line-padding'].indexOf(':') + 1,\n cueStyle['line-padding'].indexOf('c')));\n if ('id' in cueStyle) {\n linePadding[cueStyle.id] = valuePadding;\n }\n var valuePaddingInPx = valuePadding * cellUnit[0] + 'px;';\n properties.push('padding-left:' + valuePaddingInPx);\n properties.push('padding-right:' + valuePaddingInPx);\n }\n // Font size is computed from the cellResolution.\n if ('font-size' in cueStyle) {\n var valueFtSize = parseFloat(cueStyle['font-size'].slice(cueStyle['font-size'].indexOf(':') + 1,\n cueStyle['font-size'].indexOf('%')));\n if ('id' in cueStyle) {\n fontSize[cueStyle.id] = valueFtSize;\n }\n var valueFtSizeInPx = valueFtSize / 100 * cellUnit[1] + 'px;';\n properties.push('font-size:' + valueFtSizeInPx);\n }\n // Line height is computed from the cellResolution.\n if ('line-height' in cueStyle) {\n if (cueStyle['line-height'] === 'normal') {\n properties.push('line-height: normal;');\n } else {\n var valueLHSize = parseFloat(cueStyle['line-height'].slice(cueStyle['line-height'].indexOf(':') + 1,\n cueStyle['line-height'].indexOf('%')));\n if ('id' in cueStyle) {\n lineHeight[cueStyle.id] = valueLHSize;\n }\n var valueLHSizeInPx = valueLHSize / 100 * cellUnit[1] + 'px;';\n properties.push('line-height' + ':' + valueLHSizeInPx);\n }\n }\n // Font-family can be specified by a generic family name or a custom family name.\n if ('font-family' in cueStyle) {\n if (cueStyle['font-family'] in fontFamilies) {\n properties.push(fontFamilies[cueStyle['font-family']]);\n } else {\n properties.push('font-family:' + cueStyle['font-family'] + ';');\n }\n }\n // Text align needs to be set from two properties:\n // The standard text-align CSS property.\n // The justify-content property as we use flex boxes.\n if ('text-align' in cueStyle) {\n if (cueStyle['text-align'] in textAlign) {\n properties.push(textAlign[cueStyle['text-align']][0]);\n properties.push(textAlign[cueStyle['text-align']][1]);\n }\n }\n // Multi Row align is set only by the text-align property.\n // TODO: TO CHECK\n if ('multi-row-align' in cueStyle) {\n if (arrayContains('text-align', properties) && cueStyle['multi-row-align'] != 'auto') {\n deletePropertyFromArray('text-align', properties);\n }\n if (cueStyle['multi-row-align'] in multiRowAlign) {\n properties.push(multiRowAlign[cueStyle['multi-row-align']]);\n }\n }\n // Background color can be specified from hexadecimal (RGB or RGBA) value.\n var rgbaValue;\n if ('background-color' in cueStyle) {\n if (cueStyle['background-color'].indexOf('#') > -1 && (cueStyle['background-color'].length - 1) === 8) {\n rgbaValue = convertHexToRGBA(cueStyle['background-color']);\n properties.push('background-color: ' + rgbaValue);\n } else {\n properties.push('background-color:' + cueStyle['background-color'] + ';');\n }\n }\n // Color can be specified from hexadecimal (RGB or RGBA) value.\n if ('color' in cueStyle) {\n if (cueStyle.color.indexOf('#') > -1 && (cueStyle.color.length - 1) === 8) {\n rgbaValue = convertHexToRGBA(cueStyle.color);\n properties.push('color: ' + rgbaValue);\n } else {\n properties.push('color:' + cueStyle.color + ';');\n }\n }\n // Wrap option is determined by the white-space CSS property.\n if ('wrap-option' in cueStyle) {\n if (cueStyle['wrap-option'] in wrapOption) {\n properties.push(wrapOption[cueStyle['wrap-option']]);\n } else {\n properties.push('white-space:' + cueStyle['wrap-option']);\n }\n }\n // Unicode bidi is determined by the unicode-bidi CSS property.\n if ('unicode-bidi' in cueStyle) {\n if (cueStyle['unicode-bidi'] in unicodeBidi) {\n properties.push(unicodeBidi[cueStyle['unicode-bidi']]);\n } else {\n properties.push('unicode-bidi:' + cueStyle['unicode-bidi']);\n }\n }\n\n // Standard properties identical to CSS.\n\n if ('font-style' in cueStyle) {\n properties.push('font-style:' + cueStyle['font-style'] + ';');\n }\n if ('font-weight' in cueStyle) {\n properties.push('font-weight:' + cueStyle['font-weight'] + ';');\n }\n if ('direction' in cueStyle) {\n properties.push('direction:' + cueStyle.direction + ';');\n }\n if ('text-decoration' in cueStyle) {\n properties.push('text-decoration:' + cueStyle['text-decoration'] + ';');\n }\n\n // Handle white-space preserve\n if (ttml.tt.hasOwnProperty('xml:space')) {\n if (ttml.tt['xml:space'] === 'preserve') {\n properties.push('white-space: pre;');\n }\n }\n\n return properties;\n }\n\n // Find the style set by comparing the style IDs available.\n // Return null if no style is found\n function findStyleFromID(ttmlStyling, cueStyleID) {\n // For every styles available, search the corresponding style in ttmlStyling.\n for (var j = 0; j < ttmlStyling.length; j++) {\n var currStyle = ttmlStyling[j];\n if (currStyle['xml:id'] === cueStyleID || currStyle.id === cueStyleID) {\n // Return the style corresponding to the ID in parameter.\n return currStyle;\n }\n }\n return null;\n }\n // Return the computed style from a certain ID.\n function getProcessedStyle(reference, cellUnit) {\n var styles = [];\n var ids = reference.match(/\\S+/g);\n ids.forEach(function (id) {\n // Find the style for each id received.\n var cueStyle = findStyleFromID(ttmlStyling, id);\n if (cueStyle) {\n // Process the style for the cue in CSS form.\n // Send a copy of the style object, so it does not modify the original by cleaning it.\n var stylesFromId = processStyle(JSON.parse(JSON.stringify(cueStyle)), cellUnit);\n styles = styles.concat(stylesFromId);\n }\n });\n return styles;\n }\n\n /**\n * Processing of layout information:\n * - processRegion: return an array of strings with the cue region under a CSS style form.\n * - findRegionFromID: Return the unprocessed region from TTMLLayout corresponding to the ID researched.\n * - getProcessedRegion: Return the processed region(s) from the ID(s) received in entry.\n ***/\n\n // Compute the region properties to return an array with the cleaned properties.\n function processRegion(cueRegion, cellUnit) {\n var properties = [];\n\n // Clean up from the xml2json parsing:\n for (var key in cueRegion) {\n //Clean the properties from the parsing.\n var newKey = key.replace('tts:', '');\n newKey = newKey.replace('xml:', '');\n\n // Clean the properties' names.\n newKey = camelCaseToDash(newKey);\n cueRegion[newKey] = cueRegion[key];\n if (newKey !== key) {\n delete cueRegion[key];\n }\n }\n // Extent property corresponds to width and height\n if ('extent' in cueRegion) {\n var coordsExtent = cueRegion.extent.split(/\\s/);\n properties.push('width: ' + coordsExtent[0] + ';');\n properties.push('height: ' + coordsExtent[1] + ';');\n }\n // Origin property corresponds to top and left\n if ('origin' in cueRegion) {\n var coordsOrigin = cueRegion.origin.split(/\\s/);\n properties.push('left: ' + coordsOrigin[0] + ';');\n properties.push('top: ' + coordsOrigin[1] + ';');\n }\n // DisplayAlign property corresponds to vertical-align\n if ('display-align' in cueRegion) {\n properties.push(displayAlign[cueRegion['display-align']]);\n }\n // WritingMode is not yet implemented (for CSS3, to come)\n if ('writing-mode' in cueRegion) {\n properties.push(writingMode[cueRegion['writing-mode']]);\n }\n // Style will give to the region the style properties from the style selected\n if ('style' in cueRegion) {\n var styleFromID = getProcessedStyle(cueRegion.style, cellUnit);\n properties = properties.concat(styleFromID);\n }\n\n // Standard properties identical to CSS.\n\n if ('padding' in cueRegion) {\n properties.push('padding:' + cueRegion.padding + ';');\n }\n if ('overflow' in cueRegion) {\n properties.push('overflow:' + cueRegion.overflow + ';');\n }\n if ('show-background' in cueRegion) {\n properties.push('show-background:' + cueRegion['show-background'] + ';');\n }\n if ('id' in cueRegion) {\n properties.push('regionID:' + cueRegion.id + ';');\n }\n\n return properties;\n }\n\n // Find the region set by comparing the region IDs available.\n // Return null if no region is found\n function findRegionFromID(ttmlLayout, cueRegionID) {\n // For every region available, search the corresponding style in ttmlLayout.\n for (var j = 0; j < ttmlLayout.length; j++) {\n var currReg = ttmlLayout[j];\n if (currReg['xml:id'] === cueRegionID || currReg.id === cueRegionID) {\n // Return the region corresponding to the ID in parameter.\n return currReg;\n }\n }\n return null;\n }\n\n // Return the computed region from a certain ID.\n function getProcessedRegion(reference, cellUnit) {\n var regions = [];\n var ids = reference.match(/\\S+/g);\n ids.forEach(function (id) {\n // Find the region for each id received.\n var cueRegion = findRegionFromID(ttmlLayout, id);\n if (cueRegion) {\n // Process the region for the cue in CSS form.\n // Send a copy of the style object, so it does not modify the original by cleaning it.\n var regionsFromId = processRegion(JSON.parse(JSON.stringify(cueRegion)), cellUnit);\n regions = regions.concat(regionsFromId);\n }\n });\n return regions;\n }\n\n //Return the cellResolution defined by the TTML document.\n function getCellResolution() {\n var defaultCellResolution = [32, 15]; // Default cellResolution.\n if (ttml.tt.hasOwnProperty('ttp:cellResolution')) {\n return ttml.tt['ttp:cellResolution'].split(' ').map(parseFloat);\n } else {\n return defaultCellResolution;\n }\n }\n\n // Return the cue wrapped into a span specifying its linePadding.\n function applyLinePadding(cueHTML, cueStyle) {\n // Extract the linePadding property from cueStyleProperties.\n var linePaddingLeft = getPropertyFromArray('padding-left', cueStyle);\n var linePaddingRight = getPropertyFromArray('padding-right', cueStyle);\n var linePadding = linePaddingLeft.concat(' ' + linePaddingRight);\n\n // Declaration of the HTML elements to be used in the cue innerHTML construction.\n var outerHTMLBeforeBr = '';\n var outerHTMLAfterBr = '';\n var cueInnerHTML = '';\n\n // List all the nodes of the subtitle.\n var nodeList = Array.prototype.slice.call(cueHTML.children);\n // Take a br element as reference.\n var brElement = cueHTML.getElementsByClassName('lineBreak')[0];\n // First index of the first br element.\n var idx = nodeList.indexOf(brElement);\n // array of all the br element indices\n var indices = [];\n // Find all the indices of the br elements.\n while (idx != -1) {\n indices.push(idx);\n idx = nodeList.indexOf(brElement, idx + 1);\n }\n\n // Strings for the cue innerHTML construction.\n var spanStringEnd = '<\\/span>';\n var br = '
';\n var clonePropertyString = '' + outerHTMLBeforeBr;\n }\n // For every element of the list, we compute the element coming after the line break.s\n var styleAfter = '';\n // for each element coming after the line break, we add its HTML.\n for (var k = i + 1; k < nodeList.length; k++) {\n outerHTMLAfterBr += nodeList[k].outerHTML;\n // If this is the last element, we add its style to the wrapper.\n if (k === nodeList.length - 1) {\n styleAfter += linePadding.concat(nodeList[k].style.cssText);\n }\n }\n\n // The before element will comprises the clone property (for line wrapping), the style that\n // need to be applied (ex: background-color) and the rest og the HTML.\n outerHTMLAfterBr = clonePropertyString + styleAfter + '\">' + outerHTMLAfterBr;\n\n // For each line break we must add the before and/or after element to the final cue as well as\n // the line break when needed.\n if (outerHTMLBeforeBr && outerHTMLAfterBr && index === (indices.length - 1)) {\n cueInnerHTML += outerHTMLBeforeBr + spanStringEnd + br + outerHTMLAfterBr + spanStringEnd;\n } else if (outerHTMLBeforeBr && outerHTMLAfterBr && index !== (indices.length - 1)) {\n cueInnerHTML += outerHTMLBeforeBr + spanStringEnd + br + outerHTMLAfterBr + spanStringEnd + br;\n } else if (outerHTMLBeforeBr && !outerHTMLAfterBr) {\n cueInnerHTML += outerHTMLBeforeBr + spanStringEnd;\n } else if (!outerHTMLBeforeBr && outerHTMLAfterBr && index === (indices.length - 1)) {\n cueInnerHTML += outerHTMLAfterBr + spanStringEnd;\n } else if (!outerHTMLBeforeBr && outerHTMLAfterBr && index !== (indices.length - 1)) {\n cueInnerHTML += outerHTMLAfterBr + spanStringEnd + br;\n }\n });\n } else {\n // If there is no line break in the subtitle, we simply wrap cue in a span indicating the linePadding.\n var style = '';\n for (var k = 0; k < nodeList.length; k++) {\n style += nodeList[k].style.cssText;\n }\n cueInnerHTML = clonePropertyString + linePadding + style + '\">' + cueHTML.innerHTML + spanStringEnd;\n }\n return cueInnerHTML;\n }\n\n /*** Create the cue element\n * I. The cues are text only:\n * i) The cue contains a 'br' element\n * ii) The cue contains a span element\n * iii) The cue contains text\n * ***/\n\n function constructCue(cueElements, cellUnit) {\n var cue = document.createElement('div');\n cueElements.forEach(function (el) {\n // If metadata is present, do not process.\n if (el.hasOwnProperty('metadata')) {\n return;\n }\n\n /**\n * If the p element contains spans: create the span elements.\n */\n if (el.hasOwnProperty('span')) {\n\n // Stock the span subtitles in an array (in case there are only one value).\n var spanElements = el.span.__children;\n\n // Create the span element.\n var spanHTMLElement = document.createElement('span');\n // Extract the style of the span.\n if (el.span.hasOwnProperty('style')) {\n var spanStyle = getProcessedStyle(el.span.style, cellUnit);\n spanHTMLElement.className = 'spanPadding ' + el.span.style;\n spanHTMLElement.style.cssText = spanStyle.join(' ');\n }\n\n\n // if the span has more than one element, we check for each of them their nature (br or text).\n spanElements.forEach(function (spanEl) {\n // If metadata is present, do not process.\n if (spanElements.hasOwnProperty('metadata')) {\n return;\n }\n // If the element is a string\n if (spanEl.hasOwnProperty('#text')) {\n var textNode = document.createTextNode(spanEl['#text']);\n spanHTMLElement.appendChild(textNode);\n // If the element is a 'br' tag\n } else if ('br' in spanEl) {\n // To handle br inside span we need to add the current span\n // to the cue and then create a br and add that the cue\n // then create a new span that we use for the next line of\n // text, that is a copy of the current span\n\n // Add the current span to the cue, only if it has childNodes (text)\n if (spanHTMLElement.hasChildNodes()) {\n cue.appendChild(spanHTMLElement);\n }\n\n // Create a br and add that to the cue\n var brEl = document.createElement('br');\n brEl.className = 'lineBreak';\n cue.appendChild(brEl);\n\n // Create an replacement span and copy the style and classname from the old one\n var newSpanHTMLElement = document.createElement('span');\n newSpanHTMLElement.className = spanHTMLElement.className;\n newSpanHTMLElement.style.cssText = spanHTMLElement.style.cssText;\n\n // Replace the current span with the one we just created\n spanHTMLElement = newSpanHTMLElement;\n }\n });\n // We append the element to the cue container.\n cue.appendChild(spanHTMLElement);\n }\n\n /**\n * Create a br element if there is one in the cue.\n */\n else if (el.hasOwnProperty('br')) {\n // We append the line break to the cue container.\n var brEl = document.createElement('br');\n brEl.className = 'lineBreak';\n cue.appendChild(brEl);\n }\n\n /**\n * Add the text that is not in any inline element\n */\n else if (el.hasOwnProperty('#text')) {\n // Add the text to an individual span element (to add line padding if it is defined).\n var textNode = document.createElement('span');\n textNode.textContent = el['#text'];\n\n // We append the element to the cue container.\n cue.appendChild(textNode);\n }\n });\n return cue;\n }\n\n function constructCueRegion(cue, div, cellUnit) {\n var cueRegionProperties = []; // properties to be put in the \"captionRegion\" HTML element\n // Obtain the region ID(s) assigned to the cue.\n var pRegionID = cue.region;\n // If div has a region.\n var divRegionID = div.region;\n\n var divRegion;\n var pRegion;\n\n // If the div element reference a region.\n if (divRegionID) {\n divRegion = getProcessedRegion(divRegionID, cellUnit);\n }\n // If the p element reference a region.\n if (pRegionID) {\n pRegion = cueRegionProperties.concat(getProcessedRegion(pRegionID, cellUnit));\n if (divRegion) {\n cueRegionProperties = mergeArrays(divRegion, pRegion);\n } else {\n cueRegionProperties = pRegion;\n }\n } else if (divRegion) {\n cueRegionProperties = divRegion;\n }\n\n // Add initial/default values to what's not defined in the layout:\n applyDefaultProperties(cueRegionProperties, defaultLayoutProperties);\n\n return cueRegionProperties;\n }\n\n function constructCueStyle(cue, cellUnit) {\n var cueStyleProperties = []; // properties to be put in the \"paragraph\" HTML element\n // Obtain the style ID(s) assigned to the cue.\n var pStyleID = cue.style;\n // If body has a style.\n var bodyStyleID = ttml.tt.body.style;\n // If div has a style.\n var divStyleID = ttml.tt.body.div.style;\n\n var bodyStyle;\n var divStyle;\n var pStyle;\n var styleIDs = '';\n\n // If the body element reference a style.\n if (bodyStyleID) {\n bodyStyle = getProcessedStyle(bodyStyleID, cellUnit);\n styleIDs = 'paragraph ' + bodyStyleID;\n }\n\n // If the div element reference a style.\n if (divStyleID) {\n divStyle = getProcessedStyle(divStyleID, cellUnit);\n if (bodyStyle) {\n divStyle = mergeArrays(bodyStyle, divStyle);\n styleIDs += ' ' + divStyleID;\n } else {\n styleIDs = 'paragraph ' + divStyleID;\n }\n }\n\n // If the p element reference a style.\n if (pStyleID) {\n pStyle = getProcessedStyle(pStyleID, cellUnit);\n if (bodyStyle && divStyle) {\n cueStyleProperties = mergeArrays(divStyle, pStyle);\n styleIDs += ' ' + pStyleID;\n } else if (bodyStyle) {\n cueStyleProperties = mergeArrays(bodyStyle, pStyle);\n styleIDs += ' ' + pStyleID;\n } else if (divStyle) {\n cueStyleProperties = mergeArrays(divStyle, pStyle);\n styleIDs += ' ' + pStyleID;\n } else {\n cueStyleProperties = pStyle;\n styleIDs = 'paragraph ' + pStyleID;\n }\n } else if (bodyStyle && !divStyle) {\n cueStyleProperties = bodyStyle;\n } else if (!bodyStyle && divStyle) {\n cueStyleProperties = divStyle;\n }\n\n\n // Add initial/default values to what's not defined in the styling:\n applyDefaultProperties(cueStyleProperties, defaultStyleProperties);\n\n return [cueStyleProperties, styleIDs];\n }\n\n function applyDefaultProperties(array, defaultProperties) {\n for (var key in defaultProperties) {\n if (defaultProperties.hasOwnProperty(key)) {\n if (!arrayContains(key, array)) {\n array.push(key + ':' + defaultProperties[key]);\n }\n }\n }\n }\n\n instance = {\n parse: parse,\n setConfig: setConfig\n };\n\n setup();\n return instance;\n}\nTTMLParser.__dashjs_factory_name = 'TTMLParser';\nexport default FactoryMaker.getSingletonFactory(TTMLParser);\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport FactoryMaker from '../../core/FactoryMaker.js';\nimport Debug from '../../core/Debug.js';\n\nfunction VTTParser() {\n let context = this.context;\n let log = Debug(context).getInstance().log;\n\n let instance,\n regExNewLine,\n regExToken,\n regExWhiteSpace,\n regExWhiteSpaceWordBoundary;\n\n function setup() {\n regExNewLine = /(?:\\r\\n|\\r|\\n)/gm;\n regExToken = /-->/;\n regExWhiteSpace = /(^[\\s]+|[\\s]+$)/g;\n regExWhiteSpaceWordBoundary = /\\s\\b/g;\n }\n\n function parse(data) {\n var captionArray = [];\n var len,\n lastStartTime;\n\n data = data.split( regExNewLine );\n len = data.length;\n lastStartTime = -1;\n\n for (var i = 0 ; i < len; i++)\n {\n var item = data[i];\n\n if (item.length > 0 && item !== 'WEBVTT')\n {\n if (item.match(regExToken))\n {\n var attributes = parseItemAttributes(item);\n var cuePoints = attributes.cuePoints;\n var styles = attributes.styles;\n var text = getSublines(data, i + 1);\n var startTime = convertCuePointTimes(cuePoints[0].replace(regExWhiteSpace, ''));\n var endTime = convertCuePointTimes(cuePoints[1].replace(regExWhiteSpace, ''));\n\n if ((!isNaN(startTime) && !isNaN(endTime)) && startTime >= lastStartTime && endTime > startTime) {\n if (text !== '') {\n lastStartTime = startTime;\n //TODO Make VO external so other parsers can use.\n captionArray.push({\n start: startTime,\n end: endTime,\n data: text,\n styles: styles\n });\n }\n else {\n log('Skipping cue due to empty/malformed cue text');\n }\n }\n else {\n log('Skipping cue due to incorrect cue timing');\n }\n }\n }\n }\n\n return captionArray;\n }\n\n function convertCuePointTimes(time) {\n var timeArray = time.split(':');\n var len = timeArray.length - 1;\n\n time = parseInt( timeArray[len - 1], 10 ) * 60 + parseFloat( timeArray[len]);\n\n if ( len === 2 ) {\n time += parseInt( timeArray[0], 10 ) * 3600;\n }\n\n return time;\n }\n\n function parseItemAttributes(data) {\n var vttCuePoints = data.split(regExToken);\n var arr = vttCuePoints[1].split(regExWhiteSpaceWordBoundary);\n arr.shift(); //remove first array index it is empty...\n vttCuePoints[1] = arr[0];\n arr.shift();\n return {cuePoints: vttCuePoints, styles: getCaptionStyles(arr)};\n }\n\n function getCaptionStyles(arr) {\n var styleObject = {};\n arr.forEach(function (element) {\n if (element.split(/:/).length > 1) {\n var val = element.split(/:/)[1];\n if (val && val.search(/%/) != -1) {\n val = parseInt(val.replace(/%/, ''), 10);\n }\n if (element.match(/align/) || element.match(/A/)) {\n styleObject.align = val;\n }\n if (element.match(/line/) || element.match(/L/) ) {\n styleObject.line = val;\n }\n if (element.match(/position/) || element.match(/P/) ) {\n styleObject.position = val;\n }\n if (element.match(/size/) || element.match(/S/)) {\n styleObject.size = val;\n }\n }\n });\n\n return styleObject;\n }\n\n /**\n * VTT can have multiple lines to display per cuepoint.\n * */\n function getSublines(data, idx) {\n var i = idx;\n\n var subline = '';\n var lineData = '';\n var lineCount;\n\n while (data[i] !== '' && i < data.length) {\n i++;\n }\n\n lineCount = i - idx;\n if (lineCount > 1) {\n for (var j = 0; j < lineCount; j++) {\n lineData = data[(idx + j)];\n if (!lineData.match(regExToken)) {\n subline += lineData;\n if (j !== lineCount - 1) {\n subline += '\\n';\n }\n }\n else {\n // caption text should not have '-->' in it\n subline = '';\n break;\n }\n }\n } else {\n lineData = data[idx];\n if (!lineData.match(regExToken))\n subline = lineData;\n }\n return decodeURI(subline);\n }\n\n instance = {\n parse: parse\n };\n\n setup();\n return instance;\n}\nVTTParser.__dashjs_factory_name = 'VTTParser';\nexport default FactoryMaker.getSingletonFactory(VTTParser);","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass BitrateInfo {\n constructor() {\n this.mediaType = null;\n this.bitrate = null;\n this.qualityIndex = NaN;\n }\n}\n\nexport default BitrateInfo;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * @class\n * @ignore\n */\nclass DataChunk {\n //Represents a data structure that keep all the necessary info about a single init/media segment\n constructor() {\n this.streamId = null;\n this.mediaInfo = null;\n this.segmentType = null;\n this.quality = NaN;\n this.index = NaN;\n this.bytes = null;\n this.start = NaN;\n this.end = NaN;\n this.duration = NaN;\n }\n}\n\nexport default DataChunk;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass Error {\n constructor(code, message, data) {\n this.code = code || null;\n this.message = message || null;\n this.data = data || null;\n }\n}\n\nexport default Error;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass FragmentRequest {\n constructor() {\n this.action = FragmentRequest.ACTION_DOWNLOAD;\n this.startTime = NaN;\n this.mediaType = null;\n this.mediaInfo = null;\n this.type = null;\n this.duration = NaN;\n this.timescale = NaN;\n this.range = null;\n this.url = null;\n this.requestStartDate = null;\n this.firstByteDate = null;\n this.requestEndDate = null;\n this.quality = NaN;\n this.index = NaN;\n this.availabilityStartTime = null;\n this.availabilityEndTime = null;\n this.wallStartTime = null;\n this.bytesLoaded = NaN;\n this.bytesTotal = NaN;\n this.delayLoadingTime = NaN;\n }\n}\n\nFragmentRequest.ACTION_DOWNLOAD = 'download';\nFragmentRequest.ACTION_COMPLETE = 'complete';\n\nexport default FragmentRequest;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass IsoBox {\n constructor() {\n this.offset = NaN;\n this.type = null;\n this.size = NaN;\n this.isComplete = true;\n }\n}\n\nexport default IsoBox;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass ManifestInfo {\n constructor() {\n this.DVRWindowSize = NaN;\n this.loadedTime = null;\n this.availableFrom = null;\n this.minBufferTime = NaN;\n this.duration = NaN;\n this.isDynamic = false;\n this.maxFragmentDuration = null;\n }\n}\n\nexport default ManifestInfo;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass MediaInfo {\n constructor() {\n this.id = null;\n this.index = null;\n this.type = null;\n this.streamInfo = null;\n this.representationCount = 0;\n this.lang = null;\n this.viewpoint = null;\n this.accessibility = null;\n this.audioChannelConfiguration = null;\n this.roles = null;\n this.codec = null;\n this.mimeType = null;\n this.contentProtection = null;\n this.isText = false;\n this.KID = null;\n this.bitrateList = null;\n }\n}\n\nexport default MediaInfo;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass MetricsList {\n constructor() {\n this.TcpList = [];\n this.HttpList = [];\n this.RepSwitchList = [];\n this.BufferLevel = [];\n this.BufferState = [];\n this.PlayList = [];\n this.DroppedFrames = [];\n this.SchedulingInfo = [];\n this.DVRInfo = [];\n this.ManifestUpdate = [];\n this.RequestsQueue = null;\n this.DVBErrors = [];\n this.BolaState = [];\n }\n}\n\nexport default MetricsList;\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass StreamInfo {\n constructor() {\n this.id = null;\n this.index = null;\n this.start = NaN;\n this.duration = NaN;\n this.manifestInfo = null;\n this.isLast = true;\n }\n}\n\nexport default StreamInfo;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass TextTrackInfo {\n constructor() {\n this.video = null;\n this.captionData = null;\n this.label = null;\n this.lang = null;\n this.defaultTrack = false;\n this.kind = null;\n this.isFragmented = false;\n this.isEmbedded = false;\n }\n}\n\nexport default TextTrackInfo;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass TrackInfo {\n constructor() {\n this.id = null;\n this.quality = null;\n this.DVRWindow = null;\n this.fragmentDuration = null;\n this.mediaInfo = null;\n this.MSETimeOffset = null;\n }\n}\n\nexport default TrackInfo;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass URIFragmentData {\n constructor() {\n this.t = null;\n this.xywh = null;\n this.track = null;\n this.id = null;\n this.s = null;\n }\n}\n\nexport default URIFragmentData;\n\n/*\n From Spec http://www.w3.org/TR/media-frags/\n\n temporal (t) - This dimension denotes a specific time range in the original media, such as \"starting at second 10, continuing until second 20\";\n spatial (xywh) - this dimension denotes a specific range of pixels in the original media, such as \"a rectangle with size (100,100) with its top-left at coordinate (10,10)\";\n Media fragments support also addressing the media along two additional dimensions (in the advanced version defined in Media Fragments 1.0 URI (advanced)):\n track (track) - this dimension denotes one or more tracks in the original media, such as \"the english audio and the video track\";\n id (id) - this dimension denotes a named temporal fragment within the original media, such as \"chapter 2\", and can be seen as a convenient way of specifying a temporal fragment.\n\n\n ## Note\n Akamai is purposing to add #s=X to the ISO standard.\n - (X) Value would be a start time to seek to at startup instead of starting at 0 or live edge\n - Allows for seeking back before the start time unlike a temporal clipping.\n*/","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2016, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass BolaState {\n constructor() {\n /**\n * number\n * @private\n */\n this._s = undefined;\n }\n}\n\nexport default BolaState;\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * @class\n */\nclass BufferLevel {\n /**\n * @description This Object holds reference to the current buffer level and the time it was recorded.\n */\n constructor() {\n /**\n * Real-Time | Time of the measurement of the buffer level.\n * @public\n */\n this.t = null;\n /**\n * Level of the buffer in milliseconds. Indicates the playout duration for which\n * media data of all active media components is available starting from the\n * current playout time.\n * @public\n */\n this.level = null;\n }\n}\n\nexport default BufferLevel;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport BufferController from '../../controllers/BufferController.js';\n/**\n * @class\n */\nclass BufferState {\n /**\n * @description This Object holds reference to the current buffer state of the video element.\n */\n constructor() {\n /**\n * The Buffer Level Target determined by the BufferLevelRule.\n * @public\n */\n this.target = null;\n /**\n * Current buffer state. Will be BufferController.BUFFER_EMPTY or BufferController.BUFFER_LOADED.\n * @public\n */\n this.state = BufferController.BUFFER_EMPTY;\n }\n}\n\nexport default BufferState;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n */\nclass DVRInfo {\n /**\n * @description This Object holds reference to DVR availability window information.\n */\n constructor() {\n\n /**\n * The current time of the video element when this was created.\n * @public\n */\n this.time = null;\n /**\n * The current Segment Availability Range as an object with start and end properties.\n * It's delta defined by the timeShiftBufferDepth MPD attribute.\n * @public\n */\n this.range = null;\n /**\n * Reference to the internal ManifestInfo.js VO.\n * @public\n */\n this.manifestInfo = null;\n }\n}\n\nexport default DVRInfo;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n */\nclass DroppedFrames {\n /**\n * @description This Object holds reference to DroppedFrames count and the time it was recorded.\n */\n constructor()\n {\n /**\n * Real-Time | Time of the measurement of the dropped frames.\n * @public\n */\n this.time = null;\n /**\n * Number of dropped frames\n * @public\n */\n this.droppedFrames = null;\n }\n}\n\nexport default DroppedFrames;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n */\nclass HTTPRequest {\n /**\n * @description This Object holds reference to the HTTPRequest for manifest, fragment and xlink loading.\n */\n constructor() {\n /**\n * Identifier of the TCP connection on which the HTTP request was sent.\n * @public\n */\n this.tcpid = null;\n /**\n * This is an optional parameter and should not be included in HTTP request/response transactions for progressive download.\n * The type of the request:\n * - MPD\n * - XLink expansion\n * - Initialization Fragment\n * - Index Fragment\n * - Media Fragment\n * - Bitstream Switching Fragment\n * - other\n * @public\n */\n this.type = null;\n /**\n * The original URL (before any redirects or failures)\n * @public\n */\n this.url = null;\n /**\n * The actual URL requested, if different from above\n * @public\n */\n this.actualurl = null;\n /**\n * The contents of the byte-range-spec part of the HTTP Range header.\n * @public\n */\n this.range = null;\n /**\n * Real-Time | The real time at which the request was sent.\n * @public\n */\n this.trequest = null;\n /**\n * Real-Time | The real time at which the first byte of the response was received.\n * @public\n */\n this.tresponse = null;\n /**\n * The HTTP response code.\n * @public\n */\n this.responsecode = null;\n /**\n * The duration of the throughput trace intervals (ms), for successful requests only.\n * @public\n */\n this.interval = null;\n /**\n * Throughput traces, for successful requests only.\n * @public\n */\n this.trace = [];\n\n /**\n * Type of stream (\"audio\" | \"video\" etc..)\n * @public\n */\n this._stream = null;\n /**\n * Real-Time | The real time at which the request finished.\n * @public\n */\n this._tfinish = null;\n /**\n * The duration of the media requests, if available, in milliseconds.\n * @public\n */\n this._mediaduration = null;\n /**\n * all the response headers from request.\n * @public\n */\n this._responseHeaders = null;\n }\n}\n\nHTTPRequest.Trace = class {\n /**\n * @description This Object holds reference to the progress of the HTTPRequest.\n */\n constructor() {\n /**\n * Real-Time | Measurement stream start.\n * @public\n */\n this.s = null;\n /**\n * Measurement stream duration (ms).\n * @public\n */\n this.d = null;\n /**\n * List of integers counting the bytes received in each trace interval within the measurement stream.\n * @public\n */\n this.b = [];\n }\n};\n\nHTTPRequest.MPD_TYPE = 'MPD';\nHTTPRequest.XLINK_EXPANSION_TYPE = 'XLinkExpansion';\nHTTPRequest.INIT_SEGMENT_TYPE = 'InitializationSegment';\nHTTPRequest.INDEX_SEGMENT_TYPE = 'IndexSegment';\nHTTPRequest.MEDIA_SEGMENT_TYPE = 'MediaSegment';\nHTTPRequest.BITSTREAM_SWITCHING_SEGMENT_TYPE = 'BitstreamSwitchingSegment';\nHTTPRequest.OTHER_TYPE = 'other';\n\nexport default HTTPRequest;\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n */\nclass ManifestUpdate {\n /**\n * @description This Object holds reference to the manifest update information.\n */\n constructor() {\n\n /**\n * Media Type Video | Audio | FragmentedText\n * @public\n */\n this.mediaType = null;\n /**\n * MPD Type static | dynamic\n * @public\n */\n this.type = null;\n /**\n * When this manifest update was requested\n * @public\n */\n this.requestTime = null;\n /**\n * When this manifest update was received\n * @public\n */\n this.fetchTime = null;\n /**\n * Calculated Availability Start time of the stream.\n * @public\n */\n this.availabilityStartTime = null;\n /**\n * the seek point (liveEdge for dynamic, Stream[0].startTime for static)\n * @public\n */\n this.presentationStartTime = 0;\n /**\n * The calculated difference between the server and client wall clock time\n * @public\n */\n this.clientTimeOffset = 0;\n /**\n * Actual element.currentTime\n * @public\n */\n this.currentTime = null;\n /**\n * Actual element.ranges\n * @public\n */\n this.buffered = null;\n /**\n * Static is fixed value of zero. dynamic should be ((Now-@availabilityStartTime) - elementCurrentTime)\n * @public\n */\n this.latency = 0;\n /**\n * Array holding list of StreamInfo VO Objects\n * @public\n */\n this.streamInfo = [];\n /**\n * Array holding list of TrackInfo VO Objects\n * @public\n */\n this.trackInfo = [];\n\n }\n}\n\nManifestUpdate.StreamInfo = class {\n /**\n * @description This Object holds reference to the current period's stream information when the manifest was updated.\n */\n constructor() {\n /**\n * Stream@id\n * @public\n */\n this.id = null;\n /**\n * Period Index\n * @public\n */\n this.index = null;\n /**\n * Stream@start\n * @public\n */\n this.start = null;\n /**\n * Stream@duration\n * @public\n */\n this.duration = null;\n }\n};\n\nManifestUpdate.TrackInfo = class {\n\n /**\n * @description This Object holds reference to the current representation's info when the manifest was updated.\n */\n constructor() {\n /**\n * Track@id\n * @public\n */\n this.id = null;\n /**\n * Representation Index\n * @public\n */\n this.index = null;\n /**\n * Media Type Video | Audio | FragmentedText\n * @public\n */\n this.mediaType = null;\n /**\n * Which reprenset\n * @public\n */\n this.streamIndex = null;\n /**\n * Holds reference to @presentationTimeOffset\n * @public\n */\n this.presentationTimeOffset = null;\n /**\n * Holds reference to @startNumber\n * @public\n */\n this.startNumber = null;\n /**\n * list|template|timeline\n * @public\n */\n this.fragmentInfoType = null;\n }\n};\n//TODO we need exports for all the sub objects. These should all be class VO\nexport default ManifestUpdate;\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n */\nclass PlayList {\n /**\n * @description This Object holds reference to the playback session information\n */\n constructor() {\n\n /**\n * Timestamp of the user action that starts the playback stream...\n * @public\n */\n this.start = null;\n /**\n * Presentation time at which playout was requested by the user...\n * @public\n */\n this.mstart = null;\n /**\n * Type of user action which triggered playout\n * - New playout request (e.g. initial playout or seeking)\n * - Resume from pause\n * - Other user request (e.g. user-requested quality change)\n * - Start of a metrics collection stream (hence earlier entries in the play list not collected)\n * @public\n */\n this.starttype = null;\n\n /**\n * List of streams of continuous rendering of decoded samples.\n * @public\n */\n this.trace = [];\n\n }\n}\n\nPlayList.Trace = class {\n constructor() {\n /**\n * The value of the Representation@id of the Representation from which the samples were taken.\n * @type {String}\n * @public\n */\n this.representationid = null;\n /**\n * If not present, this metrics concerns the Representation as a whole.\n * If present, subreplevel indicates the greatest value of any\n * Subrepresentation@level being rendered.\n * @type {Number}\n * @public\n */\n this.subreplevel = null;\n /**\n * The time at which the first sample was rendered\n * @type {Number}\n * @public\n */\n this.start = null;\n /**\n * The presentation time of the first sample rendered.\n * @type {Number}\n * @public\n */\n this.mstart = null;\n /**\n * The duration of the continuously presented samples (which is the same in real time and media time). \"Continuously presented\" means that the media clock continued to advance at the playout speed throughout the interval. NOTE: the spec does not call out the units, but all other durations etc are in ms, and we use ms too.\n * @type {Number}\n * @public\n */\n this.duration = null;\n /**\n * The playback speed relative to normal playback speed (i.e.normal forward playback speed is 1.0).\n * @type {Number}\n * @public\n */\n this.playbackspeed = null;\n /**\n * The reason why continuous presentation of this Representation was stopped.\n * representation switch\n * rebuffering\n * user request\n * end of Period\n * end of Stream\n * end of content\n * end of a metrics collection period\n *\n * @type {String}\n * @public\n */\n this.stopreason = null;\n }\n};\n\n\n/* Public Static Constants */\nPlayList.INITIAL_PLAYOUT_START_REASON = 'initial_playout';\nPlayList.SEEK_START_REASON = 'seek';\nPlayList.RESUME_FROM_PAUSE_START_REASON = 'resume';\nPlayList.METRICS_COLLECTION_START_REASON = 'metrics_collection_start';\n\nPlayList.Trace.REPRESENTATION_SWITCH_STOP_REASON = 'representation_switch';\nPlayList.Trace.REBUFFERING_REASON = 'rebuffering';\nPlayList.Trace.USER_REQUEST_STOP_REASON = 'user_request';\nPlayList.Trace.END_OF_PERIOD_STOP_REASON = 'end_of_period';\nPlayList.Trace.END_OF_CONTENT_STOP_REASON = 'end_of_content';\nPlayList.Trace.METRICS_COLLECTION_STOP_REASON = 'metrics_collection_end';\nPlayList.Trace.FAILURE_STOP_REASON = 'failure';\n\nexport default PlayList;\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n */\nclass RepresentationSwitch {\n /**\n * @description This Object holds reference to the info at quality switch between two representations.\n */\n constructor() {\n\n /**\n * Time of the switch event.\n * @public\n */\n this.t = null;\n /**\n * The media presentation time of the earliest access unit\n * (out of all media content components) played out from\n * the Representation.\n *\n * @public\n */\n this.mt = null;\n /**\n * Value of Representation@id identifying the switch-to Representation.\n * @public\n */\n this.to = null;\n /**\n * If not present, this metrics concerns the Representation as a whole.\n * If present, lto indicates the value of SubRepresentation@level within\n * Representation identifying the switch-to level of the Representation.\n *\n * @public\n */\n this.lto = null;\n\n }\n}\n\nexport default RepresentationSwitch;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n */\nclass RequestsQueue {\n /**\n * @description This Object holds reference to Fragment Model's request queues\n */\n constructor() {\n\n /**\n * Array of all of the requests that have begun to load\n * This request may not make it into the executed queue if it is abandon due to ABR rules for example.\n * @public\n */\n this.loadingRequests = [];\n /**\n * Array of the The requests that have completed\n * @public\n */\n this.executedRequests = [];\n }\n}\n\nexport default RequestsQueue;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n */\nclass SchedulingInfo {\n /**\n * @description This Object holds reference to the index handling of the current fragment being loaded or executed.\n */\n constructor() {\n\n /**\n * Type of stream Audio | Video | FragmentedText\n * @public\n */\n this.mediaType = null;\n /**\n * Time of the scheduling event.\n * @public\n */\n this.t = null;\n\n /**\n * Type of fragment (initialization | media)\n * @public\n */\n this.type = null;\n /**\n * Presentation start time of fragment\n * @public\n */\n this.startTime = null;\n /**\n * Availability start time of fragment\n * @public\n */\n this.availabilityStartTime = null;\n /**\n * Duration of fragment\n * @public\n */\n this.duration = null;\n /**\n * Bit Rate Quality of fragment\n * @public\n */\n this.quality = null;\n /**\n * Range of fragment\n * @public\n */\n this.range = null;\n\n /**\n * Current state of fragment\n * @public\n */\n this.state = null;\n }\n}\n\nexport default SchedulingInfo;","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n */\nclass TCPConnection {\n /**\n * @description This Object holds reference to the current tcp connection\n */\n constructor() {\n\n /**\n * Identifier of the TCP connection on which the HTTP request was sent.\n * @public\n */\n this.tcpid = null;\n /**\n * IP Address of the interface over which the client is receiving the TCP data.\n * @public\n */\n this.dest = null;\n /**\n * Real-Time | The time at which the connection was opened (sending time of the initial SYN or connect socket operation).\n * @public\n */\n this.topen = null;\n /**\n * Real-Time | The time at which the connection was closed (sending or reception time of FIN or RST or close socket operation).\n * @public\n */\n this.tclose = null;\n /**\n * Connect time in ms (time from sending the initial SYN to receiving the ACK or completion of the connect socket operation).\n * @public\n */\n this.tconnect = null;\n\n }\n}\n\nexport default TCPConnection;"]}