# Global

##

### Members

#### (constant) comparePlaylistBandwidth

A comparator function to sort two playlist object by bandwidth.

Source:
  - playlist-selectors.js, line 61

#### (constant) comparePlaylistResolution

A comparator function to sort two playlist object by resolution (width).

Source:
  - playlist-selectors.js, line 86

#### (constant) duration

Calculates the duration of a playlist. If a start and end index are specified, the duration will be for the subset of the media timeline between those two indices. The total duration for live playlists is always Infinity.

Source:
  - playlist.js, line 161

#### (constant) getMediaInfoForTime

Determine the index and estimated starting time of the segment that contains a specified playback position in a media playlist.

Source:
  - playlist.js, line 321

#### (constant) isAes

Returns whether the current playlist is an AES encrypted HLS stream

Source:
  - playlist.js, line 419

#### (constant) isFmp4

Returns whether the current playlist contains fMP4

Source:
  - playlist.js, line 433

#### (constant) lastBandwidthSelector

Chooses the appropriate media playlist based on the most recent bandwidth estimate and the player size. Expects to be called within the context of an instance of HlsHandler

Source:
  - playlist-selectors.js, line 241

#### (constant) mediaSegmentRequest

Load all resources and does any processing necessary for a media-segment Features: decrypts the media-segment if it has a key uri and an iv aborts *all* requests if *any* one request fails The segment object, at minimum, has the following format: { resolvedUri: String, [byterange]: { offset: Number, length: Number }, [key]: { resolvedUri: String [byterange]: { offset: Number, length: Number }, iv: { bytes: Uint32Array } }, [map]: { resolvedUri: String, [byterange]: { offset: Number, length: Number }, [bytes]: Uint8Array } } ...where [name] denotes optional properties

Source:
  - media-segment-request.js, line 393

#### (constant) minRebufferMaxBandwidthSelector

Chooses the appropriate media playlist based on the potential to rebuffer

Source:
  - playlist-selectors.js, line 310

#### (constant) movingAverageBandwidthSelector

Chooses the appropriate media playlist based on an exponential-weighted moving average of the bandwidth after filtering for player size. Expects to be called within the context of an instance of HlsHandler

Source:
  - playlist-selectors.js, line 262
See:
  - https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average

#### (constant) seekable

Calculates the interval of time that is currently seekable in a playlist. The returned time ranges are relative to the earliest moment in the specified playlist that is still available. A full seekable implementation for live streams would need to offset these values by the duration of content that has expired from the stream.

Source:
  - playlist.js, line 273

#### (constant) sumDurations

Calculate the time between two indexes in the current playlist neight the start- nor the end-index need to be within the current playlist in which case, the targetDuration of the playlist is used to approximate the durations of the segments

Source:
  - playlist.js, line 201

#### systemBandwidth

`systemBandwidth` is a combination of two serial processes bit-rates. The first is the network bitrate provided by `bandwidth` and the second is the bitrate of the entire process after that - decryption, transmuxing, and appending - provided by `throughput`. Since the two process are serial, the overall system bandwidth is given by: sysBandwidth = 1 / (1 / bandwidth + 1 / throughput)

Source:
  - videojs-contrib-hls.js, line 382

#### (constant) utils

utils to help dump binary data to the console

Source:
  - bin-utils.js, line 81

### Methods

#### abort(done)

Aborts the current segment and resets the segment parser.

##### Parameters:

Name | Type | Description
--- | --- | ---
`done` | function | function to call when done

Source:
  - source-updater.js, line 63
See:
  - http://w3c.github.io/media-source/#widl-SourceBuffer-abort-void

#### abort()

abort anything that is currently doing on with the SegmentLoader and reset to a default state

Source:
  - segment-loader.js, line 158

#### abortAll(activeXhrs)

Abort all requests

##### Parameters:

Name | Type | Description
--- | --- | ---
`activeXhrs` | Object | an object that tracks all XHR requests

Source:
  - media-segment-request.js, line 48

#### appendBuffer(bytes, done)

Queue an update to append an ArrayBuffer.

##### Parameters:

Name | Type | Description
--- | --- | ---
`bytes` | ArrayBuffer |
`done` | function | the function to call when done

Source:
  - source-updater.js, line 78
See:
  - http://www.w3.org/TR/media-source/#widl-SourceBuffer-appendBuffer-void-ArrayBuffer-data

#### backwardDuration(playlist, endSequence)

walk backward until we find a duration we can use or return a failure

##### Parameters:

Name | Type | Description
--- | --- | ---
`playlist` | Playlist | the playlist to walk through
`endSequence` | Number | the mediaSequence to stop walking on

Source:
  - playlist.js, line 27

#### buffered()

Indicates what TimeRanges are buffered in the managed SourceBuffer.

Source:
  - source-updater.js, line 91
See:
  - http://www.w3.org/TR/media-source/#widl-SourceBuffer-buffered

#### buffered_() → {TimeRange}

Indicates which time ranges are buffered

Source:
  - vtt-segment-loader.js, line 42

##### Returns:

TimeRange object representing the current buffered ranges

Type
  TimeRange

#### buffered_() → {TimeRange}

Indicates which time ranges are buffered

Source:
  - segment-loader.js, line 222

##### Returns:

TimeRange object representing the current buffered ranges

Type
  TimeRange

#### bufferIntersection(bufferA, bufferB) → {TimeRanges}

Calculate the intersection of two TimeRanges

##### Parameters:

Name | Type | Description
--- | --- | ---
`bufferA` | TimeRanges |
`bufferB` | TimeRanges |

Source:
  - ranges.js, line 153

##### Returns:

The interesection of `bufferA` with `bufferB`

Type
  TimeRanges

#### byterangeStr(byterange)

Turns segment byterange into a string suitable for use in HTTP Range requests

##### Parameters:

Name | Type | Description
--- | --- | ---
`byterange` | Object | an object with two values defining the start and end of a byte-range

Source:
  - media-segment-request.js, line 17

#### calculateBufferedPercent(segmentRange, referenceRange, currentTime, buffered) → {Number}

Calculates the percentage of `segmentRange` that overlaps the `buffered` time ranges.

##### Parameters:

Name | Type | Description
--- | --- | ---
`segmentRange` | TimeRanges | the time range that the segment covers adjusted according to currentTime
`referenceRange` | TimeRanges | the original time range that the segment covers
`currentTime` | Number | time in seconds where the current playback is at
`buffered` | TimeRanges | the currently buffered time ranges

Source:
  - ranges.js, line 227

##### Returns:

percent of the segment currently buffered

Type
  Number

#### checkBuffer_(buffered, playlist, mediaIndex, hasPlayed, currentTime, syncPoint) → {Object}

Determines what segment request should be made, given current playback state.

##### Parameters:

Name | Type | Description
--- | --- | ---
`buffered` | TimeRanges | the state of the buffer
`playlist` | Object | the playlist object to fetch segments from
`mediaIndex` | Number | the previous mediaIndex fetched or null
`hasPlayed` | Boolean | a flag indicating whether we have played or not
`currentTime` | Number | the playback position in seconds
`syncPoint` | Object | a segment info object that describes the

Source:
  - segment-loader.js, line 589

##### Returns:

a segment request object that describes the segment to load

Type
  Object

#### clamp(num, start, end) → {Number}

Clamps a value to within a range

##### Parameters:

Name | Type | Description
--- | --- | ---
`num` | Number | the value to clamp
`start` | Number | the start of the range to clamp within, inclusive
`end` | Number | the end of the range to clamp within, inclusive

Source:
  - ranges.js, line 20

##### Returns:

Type
  Number

#### createTransferableMessage(message) → {Object}

Creates an object for sending to a web worker modifying properties that are TypedArrays into a new object with seperated properties for the buffer, byteOffset, and byteLength.

##### Parameters:

Name | Type | Description
--- | --- | ---
`message` | Object | Object of properties and values to send to the web worker

Source:
  - bin-utils.js, line 33

##### Returns:

Modified message with TypedArray values expanded

Type
  Object

#### DecrypterWorker(self)

Our web worker interface so that things can talk to aes-decrypter that will be running in a web worker. the scope is passed to this by webworkify.

##### Parameters:

Name | Type | Description
--- | --- | ---
`self` | Object | the scope for the web worker

Source:
  - decrypter-worker.js, line 13

#### decryptSegment(decrypter, segment, doneFn)

Decrypt the segment via the decryption web worker

##### Parameters:

Name | Type | Description
--- | --- | ---
`decrypter` | WebWorker | a WebWorker interface to AES-128 decryption routines
`segment` | Object | a simplified copy of the segmentInfo object from SegmentLoader
`doneFn` | function | a callback that is executed after decryption has completed

Source:
  - media-segment-request.js, line 243

#### detectEndOfStream(playlist, mediaSource, segmentIndex) → {Boolean}

Determines if we should call endOfStream on the media source based on the state of the buffer or if appened segment was the final segment in the playlist.

##### Parameters:

Name | Type | Description
--- | --- | ---
`playlist` | Object | a media playlist object
`mediaSource` | Object | the MediaSource object
`segmentIndex` | Number | the index of segment we last appended

Source:
  - segment-loader.js, line 29

##### Returns:

do we need to call endOfStream on the MediaSource

Type
  Boolean

#### dispose()

dispose of the source updater and the underlying sourceBuffer

Source:
  - source-updater.js, line 162

#### dispose()

dispose of the SegmentLoader and reset to the default state

Source:
  - segment-loader.js, line 144

#### enableFunction(playlist, changePlaylistFn, enableopt) → {Boolean}

Enable/disable playlist function. It is intended to have the first two arguments partially-applied in order to create the final per-playlist function.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`playlist` | PlaylistLoader |  | The rendition or media-playlist
`changePlaylistFn` | function |  | A function to be called after a playlist's enabled-state has been changed. Will NOT be called if a playlist's enabled-state is unchanged
`enable` | Boolean | <optional> | Value to set the playlist enabled-state to or if undefined returns the current enabled-state for the playlist

Source:
  - rendition-mixin.js, line 15

##### Returns:

The current enabled-state of the playlist

Type
  Boolean

#### error(error) → {Error}

set an error on the segment loader and null out any pending segements

##### Parameters:

Name | Type | Description
--- | --- | ---
`error` | Error | the error to set on the SegmentLoader

Source:
  - segment-loader.js, line 201

##### Returns:

the error that was set or that is currently set

Type
  Error

#### estimateSegmentRequestTime(segmentDuration, bandwidth, playlist, bytesReceivedopt) → {Number|NaN}

Estimates the time required to complete a segment download from the specified playlist

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`segmentDuration` | Number |  | Duration of requested segment
`bandwidth` | Number |  | Current measured bandwidth of the player
`playlist` | Object |  | The media playlist object
`bytesReceived` | Number | <optional> | Number of bytes already received for the request. Defaults to 0

Source:
  - playlist.js, line 457

##### Returns:

The estimated time to request the segment. NaN if bandwidth information for the given playlist is unavailable

Type
  Number | NaN

#### findAdCue()

Searches for an ad cue that overlaps with the given mediaTime

Source:
  - ad-cue-tags.js, line 9

#### findGaps(buffered) → {TimeRanges}

Returns gaps within a list of TimeRanges

##### Parameters:

Name | Type | Description
--- | --- | ---
`buffered` | TimeRanges | the TimeRanges object

Source:
  - ranges.js, line 70

##### Returns:

a TimeRanges object of gaps

Type
  TimeRanges

#### findNextRange(timeRanges, time) → {TimeRanges}

Returns the TimeRanges that begin later than the specified time.

##### Parameters:

Name | Type | Description
--- | --- | ---
`timeRanges` | TimeRanges | the TimeRanges object to query
`time` | number | the time to filter on.

Source:
  - ranges.js, line 59

##### Returns:

a new TimeRanges object.

Type
  TimeRanges

#### findRange(buffered, time) → {TimeRanges}

Attempts to find the buffered TimeRange that contains the specified time.

##### Parameters:

Name | Type | Description
--- | --- | ---
`buffered` | TimeRanges | the TimeRanges object to query
`time` | number | the time to filter on.

Source:
  - ranges.js, line 46

##### Returns:

a new TimeRanges object

Type
  TimeRanges

#### findSoleUncommonTimeRangesEnd(original, update) → {Number|null}

Search for a likely end time for the segment that was just appened based on the state of the `buffered` property before and after the append. If we fin only one such uncommon end-point return it.

##### Parameters:

Name | Type | Description
--- | --- | ---
`original` | TimeRanges | the buffered time ranges before the update
`update` | TimeRanges | the buffered time ranges after the update

Source:
  - ranges.js, line 96

##### Returns:

the end time added between `original` and `update`, or null if one cannot be unambiguously determined.

Type
  Number | null

#### formatHexString(e, i)

format a number as hex string

##### Parameters:

Name | Type | Description
--- | --- | ---
`e` | Number | The number
`i` | Number | the iterator

Source:
  - bin-utils.js, line 21

#### forwardDuration(playlist, endSequence)

walk forward until we find a duration we can use or return a failure

##### Parameters:

Name | Type | Description
--- | --- | ---
`playlist` | Playlist | the playlist to walk through
`endSequence` | Number | the mediaSequence to stop walking on

Source:
  - playlist.js, line 69

#### getCodecs(media) → {Object}

Returns a set of codec strings parsed from the playlist or the default codec strings if no codecs were specified in the playlist

##### Parameters:

Name | Type | Description
--- | --- | ---
`media` | Playlist | the current media playlist

Source:
  - master-playlist-controller.js, line 149

##### Returns:

an object with the video and audio codecs

Type
  Object

#### getContainerType(media) → {String}

Returns the type container based on information in the playlist

##### Parameters:

Name | Type | Description
--- | --- | ---
`media` | Playlist | the current media playlist

Source:
  - master-playlist-controller.js, line 132

##### Returns:

a valid media container type

Type
  String

#### getExpiredTime(playlist, duration) → {Number|null}

Calculate the amount of time that has expired off the playlist during playback

##### Parameters:

Name | Type | Description
--- | --- | ---
`playlist` | Playlist | Playlist object to calculate expired from
`duration` | Number | Duration of the MediaSource (Infinity if playling a live source)

Source:
  - sync-controller.js, line 200

##### Returns:

The amount of time that has expired off the playlist during playback. Null if no sync-points for the playlist can be found.

Type
  Number | null

#### getMostImportantError()

The purpose of this function is to get the most pertinent error from the array of errors. For instance if a timeout and two aborts occur, then the aborts were likely triggered by the timeout so return that error object.

Source:
  - media-segment-request.js, line 277

#### getProgressStats(progressEvent)

If possible gather bandwidth stats as a request is in progress

##### Parameters:

Name | Type | Description
--- | --- | ---
`progressEvent` | Event | an event object from an XHR's progress event

Source:
  - media-segment-request.js, line 73

#### getRequestStats(request)

Gather important bandwidth stats once a request has completed

##### Parameters:

Name | Type | Description
--- | --- | ---
`request` | Object | the XHR request from which to gather stats

Source:
  - media-segment-request.js, line 59

#### getSegmentBufferedPercent(startOfSegment, segmentDuration, currentTime, buffered) → {Number}

Return the amount of a range specified by the startOfSegment and segmentDuration overlaps the current buffered content.

##### Parameters:

Name | Type | Description
--- | --- | ---
`startOfSegment` | Number | the time where the segment begins
`segmentDuration` | Number | the duration of the segment in seconds
`currentTime` | Number | time in seconds where the current playback is at
`buffered` | TimeRanges | the state of the buffer

Source:
  - ranges.js, line 278

##### Returns:

percentage of the segment's time range that is already in `buffered`

Type
  Number

#### getSyncPoint(playlist, duration, currentTimeline) → {Object}

Find a sync-point for the playlist specified A sync-point is defined as a known mapping from display-time to a segment-index in the current playlist.

##### Parameters:

Name | Type | Description
--- | --- | ---
`playlist` | Playlist | The playlist that needs a sync-point
`duration` | Number | Duration of the MediaSource (Infinite if playing a live source)
`currentTimeline` | Number | The last timeline from which a segment was loaded

Source:
  - sync-controller.js, line 170

##### Returns:

A sync-point object

Type
  Object

#### getSyncSegmentCandidate_(playlist) → {Number}

The segment loader has no recourse except to fetch a segment in the current playlist and use the internal timestamps in that segment to generate a syncPoint. This function returns a good candidate index for that process.

##### Parameters:

Name | Type | Description
--- | --- | ---
`playlist` | Object | the playlist object to look for a

Source:
  - segment-loader.js, line 684

##### Returns:

An index of a segment from the playlist to load

Type
  Number

#### handleErrors(error, request)

Handle all error conditions in one place and return an object with all the information

##### Parameters:

Name | Type | Description
--- | --- | ---
`error` | Error | null | if non-null signals an error occured with the XHR
`request` | Object | the XHR request that possibly generated the error

Source:
  - media-segment-request.js, line 98

#### handleHlsLoadedMetadata(qualityLevels, hls)

Adds quality levels to list once playlist metadata is available

##### Parameters:

Name | Type | Description
--- | --- | ---
`qualityLevels` | QualityLevelList | The QualityLevelList to attach events to.
`hls` | Object | Hls object to listen to for media events.

Source:
  - videojs-contrib-hls.js, line 101

#### handleHlsMediaChange(qualityLevels, playlistLoader)

Updates the selectedIndex of the QualityLevelList when a mediachange happens in hls.

##### Parameters:

Name | Type | Description
--- | --- | ---
`qualityLevels` | QualityLevelList | The QualityLevelList to update.
`playlistLoader` | PlaylistLoader | PlaylistLoader containing the new media info.

Source:
  - videojs-contrib-hls.js, line 76

#### handleInitSegmentResponse(segment, finishProcessingFn)

Handle init-segment responses

##### Parameters:

Name | Type | Description
--- | --- | ---
`segment` | Object | a simplified copy of the segmentInfo object from SegmentLoader
`finishProcessingFn` | function | a callback to execute to continue processing this request

Source:
  - media-segment-request.js, line 174

#### handleKeyResponse(segment, finishProcessingFn)

Handle responses for key data and convert the key data to the correct format for the decryption step later

##### Parameters:

Name | Type | Description
--- | --- | ---
`segment` | Object | a simplified copy of the segmentInfo object from SegmentLoader
`finishProcessingFn` | function | a callback to execute to continue processing this request

Source:
  - media-segment-request.js, line 138

#### handleProgress(segment, progressFn, event)

Simple progress event callback handler that gathers some stats before executing a provided callback with the `segment` object

##### Parameters:

Name | Type | Description
--- | --- | ---
`segment` | Object | a simplified copy of the segmentInfo object from SegmentLoader
`progressFn` | function | a callback that is executed each time a progress event is received
`event` | Event | the progress event object from XMLHttpRequest

Source:
  - media-segment-request.js, line 334

#### handleSegmentResponse(segment, finishProcessingFn)

Response handler for segment-requests being sure to set the correct property depending on whether the segment is encryped or not Also records and keeps track of stats that are used for ABR purposes

##### Parameters:

Name | Type | Description
--- | --- | ---
`segment` | Object | a simplified copy of the segmentInfo object from SegmentLoader
`finishProcessingFn` | function | a callback to execute to continue processing this request

Source:
  - media-segment-request.js, line 206

#### hasAttribute(attr, playlist) → {Boolean}

Checks if the playlist has a value for the specified attribute

##### Parameters:

Name | Type | Description
--- | --- | ---
`attr` | String | Attribute to check for
`playlist` | Object | The media playlist object

Source:
  - playlist.js, line 442

##### Returns:

Whether the playlist contains a value for the attribute or not

Type
  Boolean

#### HlsSourceHandler()

The Source Handler object, which informs video.js what additional MIME types are supported and sets up playback. It is registered automatically to the appropriate tech based on the capabilities of the browser it is running in. It is not necessary to use or modify this object in normal usage.

Source:
  - videojs-contrib-hls.js, line 568

#### initSegment(map, setopt) → {Object}

Gets and sets init segment for the provided map

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`map` | Object |  |  | The map object representing the init segment to get or set
`set` | Boolean | <optional> | false | If true, the init segment for the provided map should be saved

Source:
  - vtt-segment-loader.js, line 64

##### Returns:

map object for desired init segment

Type
  Object

#### initSegment(map, setopt) → {Object}

Gets and sets init segment for the provided map

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`map` | Object |  |  | The map object representing the init segment to get or set
`set` | Boolean | <optional> | false | If true, the init segment for the provided map should be saved

Source:
  - segment-loader.js, line 240

##### Returns:

map object for desired init segment

Type
  Object

#### initSegmentId()

Returns a unique string identifier for a media initialization segment.

Source:
  - bin-utils.js, line 67

#### intervalDuration(playlist, endSequenceopt, expired) → {Number}

Calculate the media duration from the segments associated with a playlist. The duration of a subinterval of the available segments may be calculated by specifying an end index.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`playlist` | Object |  | a media playlist object
`endSequence` | Number | <optional> | an exclusive upper boundary for the playlist. Defaults to playlist length.
`expired` | Number |  | the amount of time that has dropped off the front of the playlist in a live scenario

Source:
  - playlist.js, line 112

##### Returns:

the duration between the first available segment and end index.

Type
  Number

#### isBlacklisted(playlist) → {boolean}

Check whether the playlist is blacklisted or not.

##### Parameters:

Name | Type | Description
--- | --- | ---
`playlist` | Object | the media playlist object

Source:
  - playlist.js, line 390

##### Returns:

whether the playlist is blacklisted or not

Type
  boolean

#### isEnabled(playlist) → {boolean}

Check whether the playlist is enabled or not.

##### Parameters:

Name | Type | Description
--- | --- | ---
`playlist` | Object | the media playlist object

Source:
  - playlist.js, line 401

##### Returns:

whether the playlist is enabled or not

Type
  boolean

#### load()

load a playlist and start to fill the buffer

Source:
  - segment-loader.js, line 277

#### makeMimeTypeString(type, container, codecs) → {String}

Build a media mime-type string from a set of parameters

##### Parameters:

Name | Type | Description
--- | --- | ---
`type` | String | either 'audio' or 'video'
`container` | String | either 'mp2t' or 'mp4'
`codecs` | Array | an array of codec strings to add

Source:
  - master-playlist-controller.js, line 120

##### Returns:

a valid media mime-type

Type
  String

#### mimeType(mimeType)

create/set the following mimetype on the SourceBuffer through a SourceUpdater

##### Parameters:

Name | Type | Description
--- | --- | ---
`mimeType` | String | the mime type string to use

Source:
  - segment-loader.js, line 426

#### objectChanged(a, b) → {Boolean}

determine if an object a is differnt from and object b. both only having one dimensional properties

##### Parameters:

Name | Type | Description
--- | --- | ---
`a` | Object | object one
`b` | Object | object two

Source:
  - master-playlist-controller.js, line 50

##### Returns:

if the object has changed or not

Type
  Boolean

#### pause()

Prevent the loader from fetching additional segments. If there is a segment request outstanding, it will finish processing before the loader halts. A segment loader can be unpaused by calling load().

Source:
  - segment-loader.js, line 403

#### paused()

Returns whether the segment loader is fetching additional segments when given the opportunity. This property can be modified through calls to pause() and load().

Source:
  - segment-loader.js, line 416

#### playlist(media)

set a playlist on the segment loader

##### Parameters:

Name | Type | Description
--- | --- | ---
`media` | PlaylistLoader | the playlist to set on the segment loader

Source:
  - segment-loader.js, line 325

#### playlistEnd(playlist, expiredopt, useSafeLiveEnd) → {Number}

Calculates the playlist end time

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`playlist` | Object |  | a media playlist object
`expired` | Number | <optional> | the amount of time that has dropped off the front of the playlist in a live scenario
`useSafeLiveEnd` | Boolean | false |  | a boolean value indicating whether or not the playlist end calculation should consider the safe live end (truncate the playlist end by three segments). This is normally used for calculating the end of the playlist's seekable range.

Source:
  - playlist.js, line 222

##### Returns:

the end time of playlist

Type
  Number

#### printableRange(range) → {String}

Gets a human readable string for a TimeRange

##### Parameters:

Name | Type | Description
--- | --- | ---
`range` | TimeRange |

Source:
  - ranges.js, line 327

##### Returns:

a human readable string

Type
  String

#### probeSegmentInfo(segmentInfo)

Probe or inspect a fmp4 or an mpeg2-ts segment to determine the start and end of the segment in it's internal "media time". Used to generate mappings from that internal "media time" to the display time that is shown on the player.

##### Parameters:

Name | Type | Description
--- | --- | ---
`segmentInfo` | SegmentInfo | The current active request information

Source:
  - sync-controller.js, line 360

#### queueCallback_()

Queue a callback to run

Source:
  - source-updater.js, line 140

#### reloadSourceOnError(optionsopt)

Reload the source when an error is detected as long as there wasn't an error previously within the last 30 seconds

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`options` | Object | <optional> | an object with plugin options

Source:
  - reload-source-on-error.js, line 121

#### remove(start, end)

Remove any data in the source buffer between start and end times

##### Parameters:

Name | Type | Description
--- | --- | ---
`start` | Number | the start time of the region to remove from the buffer
`end` | Number | the end time of the region to remove from the buffer

Source:
  - vtt-segment-loader.js, line 139

#### remove(start, end)

Remove any data in the source buffer between start and end times

##### Parameters:

Name | Type | Description
--- | --- | ---
`start` | Number | the start time of the region to remove from the buffer
`end` | Number | the end time of the region to remove from the buffer

Source:
  - segment-loader.js, line 474

#### remove(start, end)

Queue an update to remove a time range from the buffer.

##### Parameters:

Name | Type | Description
--- | --- | ---
`start` | Number | where to start the removal
`end` | Number | where to end the removal

Source:
  - source-updater.js, line 105
See:
  - http://www.w3.org/TR/media-source/#widl-SourceBuffer-remove-void-double-start-unrestricted-double-end

#### renditionSelectionMixin(hlsHandler)

A mixin function that adds the `representations` api to an instance of the HlsHandler class

##### Parameters:

Name | Type | Description
--- | --- | ---
`hlsHandler` | HlsHandler | An instance of HlsHandler to add the representation API into

Source:
  - rendition-mixin.js, line 91

#### reset()

Reset the state of the inspection cache when we do a rendition switch

Source:
  - sync-controller.js, line 348

#### resetEverything()

Delete all the buffered data and reset the SegmentLoader

Source:
  - segment-loader.js, line 442

#### resetLoader()

Force the SegmentLoader to resync and start loading around the currentTime instead of starting at the end of the buffer Useful for fast quality changes

Source:
  - segment-loader.js, line 454

#### resyncLoader()

Force the SegmentLoader to restart synchronization and make a conservative guess before returning to the simple walk-forward method

Source:
  - segment-loader.js, line 463

#### runCallback_()

Run a queued callback

Source:
  - source-updater.js, line 148

#### safeGetComputedStyle(el, the)

Returns the CSS value for the specified property on an element using `getComputedStyle`. Firefox has a long-standing issue where getComputedStyle() may return null when running in an iframe with `display: none`.

##### Parameters:

Name | Type | Description
--- | --- | ---
`el` | HTMLElement | the htmlelement to work on
`the` | string | proprety to get the style for

Source:
  - playlist-selectors.js, line 16
See:
  - https://bugzilla.mozilla.org/show_bug.cgi?id=548397

#### saveExpiredSegmentInfo(oldPlaylist, newPlaylist)

Save any meta-data present on the segments when segments leave the live window to the playlist to allow for synchronization at the playlist level later.

##### Parameters:

Name | Type | Description
--- | --- | ---
`oldPlaylist` | Playlist | The previous active playlist
`newPlaylist` | Playlist | The updated and most current playlist

Source:
  - sync-controller.js, line 310

#### segmentXhrHeaders(segment)

Defines headers for use in the xhr request for a particular segment.

##### Parameters:

Name | Type | Description
--- | --- | ---
`segment` | Object | a simplified copy of the segmentInfo object from SegmentLoader

Source:
  - media-segment-request.js, line 34

#### setDateTimeMapping(playlist)

Save the mapping from playlist's ProgramDateTime to display. This should only ever happen once at the start of playback.

##### Parameters:

Name | Type | Description
--- | --- | ---
`playlist` | Playlist | The currently active playlist

Source:
  - sync-controller.js, line 336

#### simpleSelector(master, playerBandwidth, playerWidth, playerHeight) → {Playlist}

Chooses the appropriate media playlist based on bandwidth and player size

##### Parameters:

Name | Type | Description
--- | --- | ---
`master` | Object | Object representation of the master manifest
`playerBandwidth` | Number | Current calculated bandwidth of the player
`playerWidth` | Number | Current width of the player element
`playerHeight` | Number | Current height of the player element

Source:
  - playlist-selectors.js, line 131

##### Returns:

the highest bitrate playlist less than the currently detected bandwidth, accounting for some amount of bandwidth variance

Type
  Playlist

#### skipEmptySegments_(segmentInfo) → {Object}

Prevents the segment loader from requesting segments we know contain no subtitles by walking forward until we find the next segment that we don't know whether it is empty or not.

##### Parameters:

Name | Type | Description
--- | --- | ---
`segmentInfo` | Object | a segment info object that describes the current segment

Source:
  - vtt-segment-loader.js, line 203

##### Returns:

a segment info object that describes the current segment

Type
  Object

#### stableSort(array, sortFn)

Resuable stable sort function

##### Parameters:

Name | Type | Description
--- | --- | ---
`array` | Playlists |
`sortFn` | function | Different comparators

Source:
  - playlist-selectors.js, line 31

#### textRange(range, i)

convert a TimeRange to text

##### Parameters:

Name | Type | Description
--- | --- | ---
`range` | TimeRange | the timerange to use for conversion
`i` | Number | the iterator on the range to convert

Source:
  - bin-utils.js, line 11

#### timestampOffset() → {Number}

Set/get the timestampoffset on the SourceBuffer

Source:
  - source-updater.js, line 127

##### Returns:

the timestamp offset

Type
  Number

#### timeUntilRebuffer(buffered, currentTime, playbackRate) → {Number}

Calculates the amount of time left in seconds until the player hits the end of the buffer and causes a rebuffer

##### Parameters:

Name | Type | Description
--- | --- | ---
`buffered` | TimeRange | The state of the buffer
`currentTime` | Numnber | The current time of the player
`playbackRate` | Number | The current playback rate of the player. Defaults to 1.

Source:
  - ranges.js, line 341

##### Returns:

Time until the player has to start rebuffering in seconds.

Type
  Number

#### track(track)

Set a subtitle track on the segment loader to add subtitles to

##### Parameters:

Name | Type | Description
--- | --- | ---
`track` | TextTrack | The text track to add loaded subtitles to

Source:
  - vtt-segment-loader.js, line 124

#### updateMaster(master, media) → {Object}

Returns a new master playlist that is the result of merging an updated media playlist into the original version. If the updated media playlist does not match any of the playlist entries in the original master playlist, null is returned.

##### Parameters:

Name | Type | Description
--- | --- | ---
`master` | Object | a parsed master M3U8 object
`media` | Object | a parsed media M3U8 object

Source:
  - playlist-loader.js, line 55

##### Returns:

a new object that represents the original master playlist with the updated media playlist merged in, or null if the merge produced no change.

Type
  Object

#### updateSegments(original, update, offsetopt)

Returns a new array of segments that is the result of merging properties from an older list of segments onto an updated list. No properties on the updated playlist will be overridden.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`original` | Array |  | the outdated list of segments
`update` | Array |  | the updated list of segments
`offset` | Number | <optional> | the index of the first update segment in the original segment list. For non-live playlists, this should always be zero and does not need to be specified. For live playlists, it should be the difference between the media sequence numbers in the original and updated playlists.

Source:
  - playlist-loader.js, line 29

##### Returns:

a list of merged segment objects

#### updating() → {Boolean}

Whether the underlying sourceBuffer is updating or not

Source:
  - source-updater.js, line 118

##### Returns:

the updating status of the SourceBuffer

Type
  Boolean

#### waitForCompletion(activeXhrs, decrypter, doneFn)

This function waits for all XHRs to finish (with either success or failure) before continueing processing via it's callback. The function gathers errors from each request into a single errors array so that the error status for each request can be examined later.

##### Parameters:

Name | Type | Description
--- | --- | ---
`activeXhrs` | Object | an object that tracks all XHR requests
`decrypter` | WebWorker | a WebWorker interface to AES-128 decryption routines
`doneFn` | function | a callback that is executed after all resources have been downloaded and any decryption completed

Source:
  - media-segment-request.js, line 294