Home Reference Source
import StreamController from 'hls.js/src/controller/stream-controller.js'
public class | source

StreamController

Extends:

src/task-loop.js~TaskLoopBaseStreamController → StreamController

Constructor Summary

Public Constructor
public

Member Summary

Public Members
public
public
public
public
public
public

config: *

public get
public

demuxer: *

public
public
public
public
public
public
public
public
public
public
public

level: *

public
public

levels: *

public get
public set
public
public

media: *

public
public get
public get
public
public
public
public
public
public
public
public
public
public
public
public set
public get

state: *

public

stats: *

public
Private Members
private
private

_state: *

Method Summary

Public Methods
public

doTick()

public

flushMainBuffer(startOffset: *, endOffset: *)

public

followingBufferedFrag(frag: *): *

public

getBufferedFrag(position: *): *

public
public

on immediate level switch end, after new fragment has been buffered:

  • nudge video decoder by slightly adjusting video currentTime (if currentTime buffered)
  • resume the playback if needed
public

try to switch ASAP without breaking video playback: in order to ensure smooth but quick level switching, we need to find the next flushable buffer range we should take into account new segment fetch time

public
public
public

onBufferAppended(data: *)

public

onBufferCreated(data: *)

public
public

onError(data: *)

public
public

onFragLoaded(data: *)

public

onFragParsed(data: *)

public
public
public
public

onLevelLoaded(data: *)

public

onLevelsUpdated(data: *)

public
public

onManifestParsed(data: *)

public

onMediaAttached(data: *)

public
public
public

startLoad(startPosition: *)

public
public
Private Methods
private
private

Checks the health of the buffer and attempts to resolve playback stalls.

private
private
private

_ensureFragmentAtLivePoint(levelDetails: *, bufferEnd: *, start: *, end: *, fragPrevious: *, fragments: *, fragLen: *): *

private

_fetchPayloadOrEos(pos: *, bufferInfo: *, levelDetails: *)

private

_findFragment(start: *, fragPreviousLoad: *, fragmentIndexRange: *, fragments: *, bufferEnd: *, end: *, levelDetails: *): *

private

_getAudioCodec(currentLevel: *): *

private

_loadFragment(frag: *)

private

_loadKey(frag: *)

private
private

Seeks to the set startPosition if not equal to the mediaElement's current time.

Inherited Summary

From class BaseStreamController
public

demuxer: *

public
public
public
public
public
public
public

state: *

public

computeLivePosition(sliding: *, levelDetails: *): *

public

doTick()

public
public
public
public
public
public
private

_streamEnded(bufferInfo: *, levelDetails: *): boolean

Public Constructors

public constructor() source

Public Members

public altAudio: boolean source

public appended: boolean source

public audioCodecSwap: boolean source

public audioCodecSwitch: * source

public bitrateTest: boolean source

public config: * source

public get currentLevel: * source

public demuxer: * source

Override:

BaseStreamController#demuxer

public forceStartLoad: boolean source

public fragCurrent: * source

Override:

BaseStreamController#fragCurrent

public fragLastKbps: * source

public fragLoadError: number source

public fragPlaying: * source

public fragPrevious: * source

Override:

BaseStreamController#fragPrevious

public fragmentTracker: * source

Override:

BaseStreamController#fragmentTracker

public gapController: * source

public immediateSwitch: boolean source

public lastCurrentTime: * source

Override:

BaseStreamController#lastCurrentTime

public level: * source

public levelLastLoaded: * source

public levels: * source

public get liveSyncPosition: * source

public set liveSyncPosition source

public loadedmetadata: boolean source

public media: * source

public mediaBuffer: * source

public get nextBufferedFrag: * source

public get nextLevel: * source

public nextLoadPosition: * source

Override:

BaseStreamController#nextLoadPosition

public onvended: * source

public onvseeked: * source

public onvseeking: * source

public pendingBuffering: boolean source

public previouslyPaused: * source

public retryDate: * source

public stallReported: boolean source

public stalled: boolean source

public startFragRequested: boolean source

public startPosition: * source

Override:

BaseStreamController#startPosition

public set state source

Override:

BaseStreamController#state

public get state: * source

Override:

BaseStreamController#state

public stats: * source

public videoBuffer: * source

Private Members

private _liveSyncPosition: * source

private _state: * source

Public Methods

public doTick() source

Override:

BaseStreamController#doTick

public flushMainBuffer(startOffset: *, endOffset: *) source

Params:

NameTypeAttributeDescription
startOffset *
endOffset *

public followingBufferedFrag(frag: *): * source

Params:

NameTypeAttributeDescription
frag *

Return:

*

public getBufferedFrag(position: *): * source

Params:

NameTypeAttributeDescription
position *

Return:

*

public immediateLevelSwitch() source

public immediateLevelSwitchEnd() source

on immediate level switch end, after new fragment has been buffered:

  • nudge video decoder by slightly adjusting video currentTime (if currentTime buffered)
  • resume the playback if needed

public nextLevelSwitch() source

try to switch ASAP without breaking video playback: in order to ensure smooth but quick level switching, we need to find the next flushable buffer range we should take into account new segment fetch time

public onAudioTrackSwitched(data: *) source

Params:

NameTypeAttributeDescription
data *

public onAudioTrackSwitching(data: *) source

Params:

NameTypeAttributeDescription
data *

public onBufferAppended(data: *) source

Params:

NameTypeAttributeDescription
data *

public onBufferCreated(data: *) source

Params:

NameTypeAttributeDescription
data *

public onBufferFlushed() source

public onError(data: *) source

Params:

NameTypeAttributeDescription
data *

public onFragLoadEmergencyAborted() source

public onFragLoaded(data: *) source

Params:

NameTypeAttributeDescription
data *

public onFragParsed(data: *) source

Params:

NameTypeAttributeDescription
data *

public onFragParsingData(data: *) source

Params:

NameTypeAttributeDescription
data *

public onFragParsingInitSegment(data: *) source

Params:

NameTypeAttributeDescription
data *

public onKeyLoaded() source

public onLevelLoaded(data: *) source

Params:

NameTypeAttributeDescription
data *

public onLevelsUpdated(data: *) source

Params:

NameTypeAttributeDescription
data *

public onManifestLoading() source

public onManifestParsed(data: *) source

Params:

NameTypeAttributeDescription
data *

public onMediaAttached(data: *) source

Params:

NameTypeAttributeDescription
data *

public onMediaDetaching() source

public onMediaSeeked() source

public startLoad(startPosition: *) source

Override:

BaseStreamController#startLoad

Params:

NameTypeAttributeDescription
startPosition *

public stopLoad() source

Override:

BaseStreamController#stopLoad

public swapAudioCodec() source

Private Methods

private _checkAppendedParsed() source

private _checkBuffer() source

Checks the health of the buffer and attempts to resolve playback stalls.

private _checkFragmentChanged() source

private _doTickIdle() source

private _ensureFragmentAtLivePoint(levelDetails: *, bufferEnd: *, start: *, end: *, fragPrevious: *, fragments: *, fragLen: *): * source

Params:

NameTypeAttributeDescription
levelDetails *
bufferEnd *
start *
end *
fragPrevious *
fragments *
fragLen *

Return:

*

private _fetchPayloadOrEos(pos: *, bufferInfo: *, levelDetails: *) source

Params:

NameTypeAttributeDescription
pos *
bufferInfo *
levelDetails *

private _findFragment(start: *, fragPreviousLoad: *, fragmentIndexRange: *, fragments: *, bufferEnd: *, end: *, levelDetails: *): * source

Params:

NameTypeAttributeDescription
start *
fragPreviousLoad *
fragmentIndexRange *
fragments *
bufferEnd *
end *
levelDetails *

Return:

*

private _getAudioCodec(currentLevel: *): * source

Params:

NameTypeAttributeDescription
currentLevel *

Return:

*

private _loadFragment(frag: *) source

Params:

NameTypeAttributeDescription
frag *

private _loadKey(frag: *) source

Params:

NameTypeAttributeDescription
frag *

private _reduceMaxBufferLength(minLength: *): boolean source

Params:

NameTypeAttributeDescription
minLength *

Return:

boolean

private _seekToStartPos() source

Seeks to the set startPosition if not equal to the mediaElement's current time.