Constructor
(export) new DashParser()
Creates a new DASH parser.
- Implements:
- Source:
Members
(private, static, constant) MIN_UPDATE_PERIOD_ :number
Contains the minimum amount of time, in seconds, between manifest update
requests.
Type:
- number
- Source:
(private, non-null) averageUpdateDuration_ :shaka.abr.Ewma
An ewma that tracks how long updates take.
This is to mitigate issues caused by slow parsing on embedded devices.
Type:
- Source:
(private, non-null) manifestUris_ :Array.<string>
Type:
- Array.<string>
- Source:
(private, non-null) periodIds_ :Array.<string>
Type:
- Array.<string>
- Source:
(private, non-null) segmentIndexMap_ :Object.<string, !shaka.media.SegmentIndex>
A map of IDs to SegmentIndex objects.
ID: Period@id,AdaptationSet@id,@Representation@id
e.g.: '1,5,23'
Type:
- Object.<string, !shaka.media.SegmentIndex>
- Source:
(private) updatePeriod_ :number
The update period in seconds, or 0 for no updates.
Type:
- number
- Source:
Methods
(private, static) guessContentType_(mimeType, codecs) → {string}
Guess the content type based on MIME type and codecs.
Parameters:
Name | Type | Description |
---|---|---|
mimeType |
string | |
codecs |
string |
- Source:
Returns:
- Type
- string
(export) configure(config)
Called by the Player to provide an updated configuration any time the
configuration changes. Will be called at least once before start().
Parameters:
Name | Type | Description |
---|---|---|
config |
shakaExtern.ManifestConfiguration |
- Implements:
- Source:
(private) createFrame_(elemnon-null, parentnullable, baseUris) → {shaka.dash.DashParser.InheritanceFrame}
Creates a new inheritance frame for the given element.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
elem |
Element | ||
parent |
shaka.dash.DashParser.InheritanceFrame |
<nullable> |
|
baseUris |
Array.<string> |
- Source:
Returns:
(private) createVariants_(audionullable, videonullable, variantsnon-null)
Combines Streams into Variants
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
audio |
shaka.dash.DashParser.AdaptationInfo |
<nullable> |
|
video |
shaka.dash.DashParser.AdaptationInfo |
<nullable> |
|
variants |
Array.<shakaExtern.Variant> | New variants are pushed onto this array. |
- Source:
(private) getSetsOfType_(adaptationSetsnon-null, type) → (non-null) {Array.<!shaka.dash.DashParser.AdaptationInfo>}
Parameters:
Name | Type | Description |
---|---|---|
adaptationSets |
Array.<!shaka.dash.DashParser.AdaptationInfo> | |
type |
string |
- Source:
Returns:
- Type
- Array.<!shaka.dash.DashParser.AdaptationInfo>
(export) onExpirationUpdated(sessionId, expiration)
Tells the parser that the expiration time of an EME session has changed.
Implementing this is optional.
Parameters:
Name | Type | Description |
---|---|---|
sessionId |
string | |
expiration |
number |
- Implements:
- Source:
(private) onUpdate_()
Called when the update timer ticks.
- Source:
(private) parseAdaptationSet_(context, elemnon-null) → (nullable) {shaka.dash.DashParser.AdaptationInfo}
Parses an AdaptationSet XML element.
Parameters:
Name | Type | Description |
---|---|---|
context |
shaka.dash.DashParser.Context | |
elem |
Element | The AdaptationSet element. |
- Source:
Throws:
shaka.util.Error When there is a parsing error.
Returns:
(private) parseAudioChannels_(audioChannelConfigsnon-null) → (nullable) {number}
Parameters:
Name | Type | Description |
---|---|---|
audioChannelConfigs |
Array.<!Element> | An array of AudioChannelConfiguration elements. |
- Source:
Returns:
The number of audio channels, or null if unknown.
- Type
- number
(private) parseEventStream_(periodStart, periodDurationnullable, elemnon-null)
Parses an EventStream element.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
periodStart |
number | ||
periodDuration |
number |
<nullable> |
|
elem |
Element |
- Source:
(private) parseManifest_(data, finalManifestUri) → (non-null) {Promise}
Parses the manifest XML. This also handles updates and will update the
stored manifest.
Parameters:
Name | Type | Description |
---|---|---|
data |
ArrayBuffer | |
finalManifestUri |
string | The final manifest URI, which may differ from this.manifestUri_ if there has been a redirect. |
- Source:
Throws:
shaka.util.Error When there is a parsing error.
Returns:
- Type
- Promise
(private) parsePeriod_(context, baseUrisnon-null, periodInfo) → {shakaExtern.Period}
Parses a Period XML element. Unlike the other parse methods, this is not
given the Node; it is given a PeriodInfo structure. Also, partial parsing
was done before this was called so start and duration are valid.
Parameters:
Name | Type | Description |
---|---|---|
context |
shaka.dash.DashParser.Context | |
baseUris |
Array.<string> | |
periodInfo |
shaka.dash.DashParser.PeriodInfo |
- Source:
Throws:
shaka.util.Error When there is a parsing error.
Returns:
- Type
- shakaExtern.Period
(private) parsePeriods_(context, baseUrisnon-null, mpdnon-null) → {{periods: !Array.<shakaExtern.Period>, duration: ?number, durationDerivedFromPeriods: boolean}}
Reads and parses the periods from the manifest. This first does some
partial parsing so the start and duration is available when parsing children.
Parameters:
Name | Type | Description |
---|---|---|
context |
shaka.dash.DashParser.Context | |
baseUris |
Array.<string> | |
mpd |
Element |
- Source:
Returns:
- Type
- {periods: !Array.<shakaExtern.Period>, duration: ?number, durationDerivedFromPeriods: boolean}
(private) parseRepresentation_(context, contentProtection, kind, language, label, isPrimary, rolesnon-null, nodenon-null) → (nullable) {shakaExtern.Stream}
Parses a Representation XML element.
Parameters:
Name | Type | Description |
---|---|---|
context |
shaka.dash.DashParser.Context | |
contentProtection |
shaka.dash.ContentProtection.Context | |
kind |
string | undefined | |
language |
string | |
label |
string | |
isPrimary |
boolean | |
roles |
Array.<string> | |
node |
Element |
- Source:
Throws:
shaka.util.Error When there is a parsing error.
Returns:
The Stream, or null when there is a
non-critical parsing error.
- Type
- shakaExtern.Stream
(private) parseUtcTiming_(baseUrisnon-null, elemsnon-null, isLive) → (non-null) {Promise.<number>}
Parses an array of UTCTiming elements.
Parameters:
Name | Type | Description |
---|---|---|
baseUris |
Array.<string> | |
elems |
Array.<!Element> | |
isLive |
boolean |
- Source:
Returns:
- Type
- Promise.<number>
(private) processManifest_(mpdnon-null, finalManifestUri) → (non-null) {Promise}
Takes a formatted MPD and converts it into a manifest.
Parameters:
Name | Type | Description |
---|---|---|
mpd |
Element | |
finalManifestUri |
string | The final manifest URI, which may differ from this.manifestUri_ if there has been a redirect. |
- Source:
Throws:
shaka.util.Error When there is a parsing error.
Returns:
- Type
- Promise
(private) requestForTiming_(baseUrisnon-null, uri, method) → (non-null) {Promise.<number>}
Makes a request to the given URI and calculates the clock offset.
Parameters:
Name | Type | Description |
---|---|---|
baseUris |
Array.<string> | |
uri |
string | |
method |
string |
- Source:
Returns:
- Type
- Promise.<number>
(private) requestInitSegment_(urisnon-null, startBytenullable, endBytenullable) → (non-null) {Promise.<!ArrayBuffer>}
Makes a network request on behalf of SegmentBase.createStream.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
uris |
Array.<string> | ||
startByte |
number |
<nullable> |
|
endByte |
number |
<nullable> |
- Source:
Returns:
- Type
- Promise.<!ArrayBuffer>
(private) requestManifest_() → (non-null) {Promise.<number>}
Makes a network request for the manifest and parses the resulting data.
- Source:
Returns:
Resolves with the time it took, in seconds, to
fulfill the request and parse the data.
- Type
- Promise.<number>
(private) setUpdateTimer_(offset)
Sets the update timer. Does nothing if the manifest does not specify an
update period.
Parameters:
Name | Type | Description |
---|---|---|
offset |
number | An offset, in seconds, to apply to the manifest's update period. |
- Source:
(export) start(uri, playerInterface) → (non-null) {Promise.<shakaExtern.Manifest>}
Parses the given manifest data into a Manifest object and starts any
background timers that are needed. This will only be called once.
Parameters:
Name | Type | Description |
---|---|---|
uri |
string | The URI of the manifest. |
playerInterface |
shakaExtern.ManifestParser.PlayerInterface | Contains the interface to the Player. |
- Implements:
- Source:
Returns:
- Type
- Promise.<shakaExtern.Manifest>
(export) stop() → (non-null) {Promise}
Stops any background timers and frees any objects held by this instance.
This will only be called after a successful call to start. This will only
be called once.
- Implements:
- Source:
Returns:
- Type
- Promise
(export) update()
Tells the parser to do a manual manifest update. Implementing this is
optional. This is only called when 'emsg' boxes are present.
- Implements:
- Source:
(private) verifyRepresentation_(frame) → {boolean}
Verifies that a Representation has exactly one Segment* element. Prints
warnings if there is a problem.
Parameters:
Name | Type | Description |
---|---|---|
frame |
shaka.dash.DashParser.InheritanceFrame |
- Source:
Returns:
True if the Representation is usable; otherwise return
false.
- Type
- boolean
Type Definitions
AdaptationInfo
Contains information about an AdaptationSet element.
Type:
- {id: string, contentType: ?string, language: string, main: boolean, streams: !Array.<shakaExtern.Stream>, drmInfos: !Array.<shakaExtern.DrmInfo>, trickModeFor: ?string, representationIds: !Array.<string>}
Properties:
Name | Type | Attributes | Description |
---|---|---|---|
id |
string | The unique ID of the adaptation set. | |
contentType |
string |
<nullable> |
The content type of the AdaptationSet. |
language |
string | The language of the AdaptationSet. | |
main |
boolean | Whether the AdaptationSet has the 'main' type. | |
streams |
Array.<shakaExtern.Stream> | The streams this AdaptationSet contains. | |
drmInfos |
Array.<shakaExtern.DrmInfo> | The DRM info for the AdaptationSet. | |
trickModeFor |
string |
<nullable> |
If non-null, this AdaptationInfo represents trick mode tracks. This property is the ID of the normal AdaptationSet these tracks should be associated with. |
representationIds |
Array.<string> | An array of the IDs of the Representations this AdaptationSet contains. |
- Source:
Context
Contains context data for the streams.
Type:
- {dynamic: boolean, presentationTimeline: !shaka.media.PresentationTimeline, period: ?shaka.dash.DashParser.InheritanceFrame, periodInfo: ?shaka.dash.DashParser.PeriodInfo, adaptationSet: ?shaka.dash.DashParser.InheritanceFrame, representation: ?shaka.dash.DashParser.InheritanceFrame, bandwidth: number, indexRangeWarningGiven: boolean}
Properties:
Name | Type | Attributes | Description |
---|---|---|---|
dynamic |
boolean | True if the MPD is dynamic (not all segments available at once) | |
presentationTimeline |
shaka.media.PresentationTimeline | The PresentationTimeline. | |
period |
shaka.dash.DashParser.InheritanceFrame |
<nullable> |
The inheritance from the Period element. |
periodInfo |
shaka.dash.DashParser.PeriodInfo |
<nullable> |
The Period info for the current Period. |
adaptationSet |
shaka.dash.DashParser.InheritanceFrame |
<nullable> |
The inheritance from the AdaptationSet element. |
representation |
shaka.dash.DashParser.InheritanceFrame |
<nullable> |
The inheritance from the Representation element. |
bandwidth |
number | The bandwidth of the Representation, or zero if missing. | |
indexRangeWarningGiven |
boolean | True if the warning about SegmentURL@indexRange has been printed. |
- Source:
InheritanceFrame
A collection of elements and properties which are inherited across levels
of a DASH manifest.
Type:
- {segmentBase: Element, segmentList: Element, segmentTemplate: Element, baseUris: !Array.<string>, width: (number|undefined), height: (number|undefined), contentType: string, mimeType: string, codecs: string, frameRate: (number|undefined), containsEmsgBoxes: boolean, id: string, numChannels: ?number}
Properties:
Name | Type | Attributes | Description |
---|---|---|---|
segmentBase |
Element | The XML node for SegmentBase. | |
segmentList |
Element | The XML node for SegmentList. | |
segmentTemplate |
Element | The XML node for SegmentTemplate. | |
baseUris |
Array.<string> | An array of absolute base URIs for the frame. | |
width |
number | undefined | The inherited width value. | |
height |
number | undefined | The inherited height value. | |
contentType |
string | The inherited media type. | |
mimeType |
string | The inherited MIME type value. | |
codecs |
string | The inherited codecs value. | |
frameRate |
number | undefined | The inherited framerate value. | |
containsEmsgBoxes |
boolean | Whether there are 'emsg' boxes. | |
id |
string | The ID of the element. | |
numChannels |
number |
<nullable> |
The number of audio channels, or null if unknown. |
- Source:
PeriodInfo
Contains information about a Period element.
Type:
- {start: number, duration: ?number, node: !Element, index: number, isLastPeriod: boolean}
Properties:
Name | Type | Attributes | Description |
---|---|---|---|
start |
number | The start time of the period. | |
duration |
number |
<nullable> |
The duration of the period; or null if the duration is not given. This will be non-null for all periods except the last. |
node |
Element | The XML Node for the Period. | |
index |
number | The 0-base index of this Period within the manifest. | |
isLastPeriod |
boolean | Whether this Period is the last one in the manifest. |
- Source:
RequestInitSegmentCallback
Type:
- function(!Array.<string>, ?number, ?number): !Promise.<!ArrayBuffer>
- Source:
SegmentIndexFunctions
Contains functions used to create and find segment references. Used as
a return value, to temporarily store them before StreamInfo is created.
Type:
- {createSegmentIndex: shakaExtern.CreateSegmentIndexFunction, findSegmentPosition: shakaExtern.FindSegmentPositionFunction, getSegmentReference: shakaExtern.GetSegmentReferenceFunction}
Properties:
Name | Type | Description |
---|---|---|
createSegmentIndex |
shakaExtern.CreateSegmentIndexFunction | The createSegmentIndex function. |
findSegmentPosition |
shakaExtern.FindSegmentPositionFunction | The findSegmentPosition function. |
getSegmentReference |
shakaExtern.GetSegmentReferenceFunction | The getSegmentReference function. |
- Source:
StreamInfo
Contains information about a Stream. This is passed from the createStream
methods.
Type:
- {createSegmentIndex: shakaExtern.CreateSegmentIndexFunction, findSegmentPosition: shakaExtern.FindSegmentPositionFunction, getSegmentReference: shakaExtern.GetSegmentReferenceFunction, initSegmentReference: shaka.media.InitSegmentReference, scaledPresentationTimeOffset: number}
Properties:
Name | Type | Description |
---|---|---|
createSegmentIndex |
shakaExtern.CreateSegmentIndexFunction | The createSegmentIndex function for the stream. |
findSegmentPosition |
shakaExtern.FindSegmentPositionFunction | The findSegmentPosition function for the stream. |
getSegmentReference |
shakaExtern.GetSegmentReferenceFunction | The getSegmentReference function for the stream. |
initSegmentReference |
shaka.media.InitSegmentReference | The init segment for the stream. |
scaledPresentationTimeOffset |
number | The presentation time offset for the stream, in seconds. |
- Source: