Class: shaka.msf.MSFParser

Members

audioStreams_ :Array<!shaka.extern.Stream>

Type:
Source:

bandwidthSamples_ :Map<string, {bytes: number, readMs: number, group: bigint}>

The in-progress ABR bandwidth sample for each track, keyed by track key. Tracks are accumulated separately because each has its own group sequence.
Type:
  • Map<string, {bytes: number, readMs: number, group: bigint}>
Source:

catalogPromise_ :Promise.PromiseWithResolvers

Type:
  • Promise.PromiseWithResolvers
Source:

globalId_ :number

Type:
  • number
Source:

isFirstVideoSegment_ :boolean

Type:
  • boolean
Source:

publishNamespaces_ :Array<Array<string>>

Type:
  • Array<Array<string>>
Source:

receivedFirstSegment_ :Set<shaka.util.ManifestParserUtils.ContentType>

Tracks whether the first segment has been received for each content type. Used to delay locking the presentation timeline until all expected stream types have started producing data.
Type:
Source:

textStreams_ :Array<!shaka.extern.Stream>

Type:
Source:

unregisterCatalogCallback_ :?function()

Type:
  • ?function()
Source:

unregisterPublishNamespaceCallback_ :?function()

Type:
  • ?function()
Source:

unregisterTracksCallback_ :Map<string, function()>

Type:
  • Map<string, function()>
Source:

variants_ :Array<!shaka.extern.Variant>

Type:
Source:

videoStreams_ :Array<!shaka.extern.Stream>

Type:
Source:

Methods

banLocation(uri)

Tells the parser that a location should be banned. This is called on retry.
Parameters:
Name Type Description
uri string
Implements:
Source:

configure(config, isPreloadFnopt)

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 Attributes Description
config shaka.extern.ManifestConfiguration
isPreloadFn function <optional>
Implements:
Source:

createVariants_()

Source:

fetchCatalog_(namespace) → {Promise}

Fetch the catalog using FETCH (one-shot)
Parameters:
Name Type Description
namespace Array<string>
Source:
Returns:
Type
Promise

getCatalog_(namespace) → {Promise}

Get the catalog in the given namespace
Parameters:
Name Type Description
namespace Array<string>
Source:
Returns:
Type
Promise

getContentProtections_(catalog) → {Map<string, !shaka.extern.DrmInfo>}

Parameters:
Name Type Description
catalog msfCatalog.Catalog
Source:
Returns:
Type
Map<string, !shaka.extern.DrmInfo>

isPreloadFn_()

Source:

listenForAnnouncements_()

Listen for announcements from the server
Source:

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:

onInitialVariantChosen(variant)

Tells the parser that the initial variant has been chosen.
Parameters:
Name Type Description
variant shaka.extern.Variant
Implements:
Source:

processCatalog_(catalog) → {Promise}

Parameters:
Name Type Description
catalog msfCatalog.Catalog
Source:
Returns:
Type
Promise

processTrack_(track, contentProtectionsnon-null, initDataListnon-null)

Parameters:
Name Type Description
track msfCatalog.Track
contentProtections Map<string, !shaka.extern.DrmInfo>
initDataList Map<string, string>
Source:

recordBandwidthSample_(trackKey, location, byteLength, readMs)

Feed the ABR bandwidth estimator. MoQ delivers media as many small per-object (often per-frame) chunks, which are individually too small for the bandwidth estimator to draw a useful throughput sample from. A group is the natural aggregation unit, so accumulate a group's objects and report one sample once the group is complete, which we detect by the object's group changing. The time reported is the sum of the per-object active read durations, not wall clock. A push stream delivers at (roughly) the encoded rate, so wall-clock timing would only ever measure the current variant's bitrate and ABR could never learn there is spare capacity. When the link has headroom the objects sit ready in the transport buffer and read almost instantly, so the active read time reflects the true link speed and lets ABR climb to a variant the connection can actually sustain.
Parameters:
Name Type Description
trackKey string
location shaka.msf.Utils.Location
byteLength number
readMs number Active time spent reading this object from the stream.
Source:

setMediaElement(mediaElement)

Set media element.
Parameters:
Name Type Description
mediaElement HTMLMediaElement
Implements:
Source:

start(uri, playerInterface) → {Promise<shaka.extern.Manifest>}

Initialize and start the parser. When |start| resolves, it should return the initial version of the manifest. |start| will only be called once. If |stop| is called while |start| is pending, |start| should reject.
Parameters:
Name Type Description
uri string The URI of the manifest.
playerInterface shaka.extern.ManifestParser.PlayerInterface The player interface contains the callbacks and members that the parser can use to communicate with the player and outside world.
Implements:
Source:
Returns:
Type
Promise<shaka.extern.Manifest>

stop() → {Promise}

Tell the parser that it must stop and free all internal resources as soon as possible. Only once all internal resources are stopped and freed will the promise resolve. Once stopped a parser will not be started again. The parser should support having |stop| called multiple times and the promise should always resolve.
Implements:
Source:
Returns:
Type
Promise

subscribeToCatalog_(namespace) → {Promise}

Subscribe to the catalog in the given namespace
Parameters:
Name Type Description
namespace Array<string>
Source:
Returns:
Type
Promise

subscribeToTrack(track, trackKey, callback) → {Promise}

Parameters:
Name Type Description
track msfCatalog.Track
trackKey string
callback shaka.msf.Utils.ObjectCallback
Source:
Returns:
Type
Promise

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: