Constructor
new PresentationTimeline(presentationStartTimenullable, presentationDelay, autoCorrectDriftopt)
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
presentationStartTime |
number |
<nullable> |
The wall-clock time, in seconds, when the presentation started or will start. Only required for live. | |
presentationDelay |
number | The delay to give the presentation, in seconds. Only required for live. | ||
autoCorrectDrift |
boolean |
<optional> |
true | Whether to account for drift when determining the availability window. |
Members
availabilityTimeOffset_ :number
For low latency Dash, availabilityTimeOffset indicates a segment is
available for download earlier than its availability start time.
This field is the minimum availabilityTimeOffset value among the
segments. We reduce the distance from live edge by this value.
Type:
- number
maxSegmentDuration_ :number
The maximum segment duration (in seconds). Can be based on explicitly-
known segments or on signalling in the manifest.
Type:
- number
maxSegmentEndTime_ :number
The maximum segment end time (in seconds, in the presentation timeline)
for segments we explicitly know about.
This is null if we have no explicit descriptions of segments, such as in
DASH when using SegmentTemplate w/ duration. When this is non-null, the
presentation start time is calculated from the segment end times.
Type:
- number
minSegmentStartTime_ :number
The minimum segment start time (in seconds, in the presentation timeline)
for segments we explicitly know about.
This is null if we have no explicit descriptions of segments, such as in
DASH when using SegmentTemplate w/ duration.
Type:
- number
segmentAvailabilityDuration_ :number
Type:
- number
Methods
assertIsValid()
Debug only: assert that the timeline parameters make sense for the type
of presentation (VOD, IPR, live).
getDelay() → {number}
Gets the presentation delay in seconds.
Returns:
- Type
- number
getDuration() → {number}
Returns:
The presentation's duration in seconds.
Infinity indicates that the presentation continues indefinitely.
- Type
- number
getLiveEdge_() → {number}
Returns:
The current presentation time in seconds.
- Type
- number
getMaxSegmentDuration() → {number}
Returns:
The presentation's max segment duration in seconds.
- Type
- number
getPresentationStartTime() → {number}
Returns:
The presentation's start time in seconds.
- Type
- number
getSafeSeekRangeStart(offset) → {number}
Gets the seek range start time, offset by the given amount. This is used
to ensure that we don't "fall" back out of the seek window while we are
buffering.
Parameters:
Name | Type | Description |
---|---|---|
offset |
number | The offset to add to the start time for live streams. |
Returns:
The current seek start time, in seconds, relative to the
start of the presentation.
- Type
- number
getSeekRangeEnd() → {number}
Gets the seek range end.
Returns:
- Type
- number
getSeekRangeStart() → {number}
Gets the seek range start time.
Returns:
- Type
- number
getSegmentAvailabilityEnd() → {number}
Gets the presentation's current segment availability end time. Segments
starting after this time should be assumed to be unavailable.
Returns:
The current segment availability end time, in seconds,
relative to the start of the presentation. For VOD, the availability
end time is the content's duration. If the Player's playRangeEnd
configuration is used, this can override the duration.
- Type
- number
getSegmentAvailabilityStart() → {number}
Gets the presentation's current segment availability start time. Segments
ending at or before this time should be assumed to be unavailable.
Returns:
The current segment availability start time, in seconds,
relative to the start of the presentation.
- Type
- number
isInProgress() → {boolean}
Returns:
True if the presentation is in progress (meaning not
live, but also not completely available); otherwise, return false.
- Type
- boolean
isLive() → {boolean}
Returns:
True if the presentation is live; otherwise, return
false.
- Type
- boolean
lockStartTime()
Lock the presentation timeline's start time. After this is called, no
further adjustments to presentationStartTime_ will be permitted.
This should be called after all Periods have been parsed, and all calls to
notifySegments() from the initial manifest parse have been made.
Without this, we can get assertion failures in SegmentIndex for certain
DAI content. If DAI adds ad segments to the manifest faster than
real-time, adjustments to presentationStartTime_ can cause availability
windows to jump around on updates.
notifyMaxSegmentDuration(maxSegmentDuration)
Gives PresentationTimeline a Stream's maximum segment duration so it can
size and position the segment availability window. This function should be
called once for each Stream (no more, no less), but does not have to be
called if notifySegments() is called instead for a particular stream.
Parameters:
Name | Type | Description |
---|---|---|
maxSegmentDuration |
number | The maximum segment duration for a particular stream. |
notifyMinSegmentStartTime(startTime)
Gives PresentationTimeline a Stream's minimum segment start time.
Parameters:
Name | Type | Description |
---|---|---|
startTime |
number |
notifySegments(referencesnon-null)
Gives PresentationTimeline an array of segments so it can size and position
the segment availability window, and account for missing segment
information. These segments do not necessarily need to all be from the
same stream.
Parameters:
Name | Type | Description |
---|---|---|
references |
Array.<!shaka.media.SegmentReference> |
offset(offset)
Offsets the segment times by the given amount.
Parameters:
Name | Type | Description |
---|---|---|
offset |
number | The number of seconds to offset by. A positive number adjusts the segment times forward. |
setAvailabilityTimeOffset(offset)
Sets the presentation's segment availability time offset. This should be
only set for Low Latency Dash.
The segments are available earlier for download than the availability start
time, so we can move closer to the live edge.
Parameters:
Name | Type | Description |
---|---|---|
offset |
number |
setClockOffset(offset)
Sets the clock offset, which is the difference between the client's clock
and the server's clock, in milliseconds (i.e., serverTime = Date.now() +
clockOffset).
Parameters:
Name | Type | Description |
---|---|---|
offset |
number | The clock offset, in ms. |
setDelay(delay)
Sets the presentation delay in seconds.
Parameters:
Name | Type | Description |
---|---|---|
delay |
number |
setDuration(duration)
Sets the presentation's duration.
Parameters:
Name | Type | Description |
---|---|---|
duration |
number | The presentation's duration in seconds. Infinity indicates that the presentation continues indefinitely. |
setPresentationStartTime(presentationStartTime)
Sets the presentation's start time.
Parameters:
Name | Type | Description |
---|---|---|
presentationStartTime |
number | The wall-clock time, in seconds, when the presentation started or will start. Only required for live. |
setSegmentAvailabilityDuration(segmentAvailabilityDuration)
Sets the presentation's segment availability duration. The segment
availability duration should only be set for live.
Parameters:
Name | Type | Description |
---|---|---|
segmentAvailabilityDuration |
number | The presentation's new segment availability duration in seconds. |
setStatic(isStatic)
Sets the presentation's static flag.
Parameters:
Name | Type | Description |
---|---|---|
isStatic |
boolean | If true, the presentation is static, meaning all segments are available at once. |
setUserSeekStart(time)
Sets the start time of the user-defined seek range. This is only used for
VOD content.
Parameters:
Name | Type | Description |
---|---|---|
time |
number |
usingPresentationStartTime() → {boolean}
True if the presentation start time is being used to calculate the live
edge.
Using the presentation start time means that the stream may be subject to
encoder drift. At runtime, we will avoid using the presentation start time
whenever possible.
Returns:
- Type
- boolean