Members
(static, constant) TRICKPLAYBAR_POSITION_LABEL_INDEX
Child index for position label in Roku's built-in trickPlayBar component. The trickPlayBar is part of the Video node and doesn't expose child IDs, so we must access by index. Fallback search logic exists if Roku changes the structure. Defined at module level (BrighterScript const requirement) to provide immutability and enable reuse across multiple helper functions if needed.
- Default Value
- 8
Methods
(static) announceNowPlaying() → {object}
Returns the metadata in the response — main.bs's transport dispatcher calls roAppManager.SetNowPlayingContentMetaData() on the MAIN thread (roAppManager can't be created on the render thread, where this callFunc executes).
- Type:
- object
(static) availSubtitleTrackIdx(tracknameToFind) → {integer}
availSubtitleTrackIdx: Returns Roku's index for requested subtitle track
| Name | Type | Description |
|---|---|---|
tracknameToFind | string | TrackName for subtitle we're looking to match |
indicating Roku's index for requested subtitle track. Returns SubtitleSelection.NONE if not found
- Type:
- integer
(static) bufferCheck() → {void}
Check the the buffering has not hung
- Type:
- void
(static) checkMediaSegments() → {void}
Check media segments and trigger appropriate actions based on current playback position
- Type:
- void
(static) checkTimeToDisplayNextEpisode() → {void}
Checks if we need to display the Next Episode button
- Type:
- void
(static) findTrickPlayBarPositionLabel() → {dynamic}
findTrickPlayBarPositionLabel: Defensively finds the position text label in trickPlayBar
Tries multiple strategies to find the Label that displays seek position:
- Expected child index (8) - fast path for current Roku OS
- Search for FIRST Label child - position text comes before remaining time
- Return invalid if not found - feature gracefully degrades
- Label node or invalid if not found
- Type:
- dynamic
(static) forceFinishPlayback() → {void}
Forces playback to finished state for proper watched-status and auto-play. Triggers synchronous teardown (onState -> ViewCreator -> popScene -> onDestroy), invalidating all m. references. Callers MUST return immediately after calling.
- Type:
- void
(static) getCurrentChapterIndex() → {integer}
getCurrentChapterIndex: Finds current chapter index
indicating index of current chapter within chapter data or 0 if chapter lookup fails
- Type:
- integer
(static) getInstantReplaySeconds() → {integer}
- Type:
- integer
(static) handleChapterListAction() → {void}
handleChapterListAction: Handles action to show chapter list
- Type:
- void
(static) handleChapterSkipAction(action) → {void}
handleChapterSkipAction: Handles user command to skip chapters in playing video
| Name | Type | Description |
|---|---|---|
action | string |
- Type:
- void
(static) handleGoToLiveAction() → {void}
- Type:
- void
(static) handleHideAction(resume) → {void}
handleHideAction: Handles action to hide OSD menu
| Name | Type | Description |
|---|---|---|
resume | boolean | controls whether or not to resume video playback when sub is called |
- Type:
- void
(static) handleItemSkipAction(action) → {void}
handleItemSkipAction: Handles user command to skip items
| Name | Type | Description |
|---|---|---|
action | string | skip action to take |
- Type:
- void
(static) handleShowAudioMenuAction() → {void}
handleShowAudioMenuAction: Handles action to show audio selection menu
- Type:
- void
(static) handleShowSubtitleMenuAction() → {void}
handleShowSubtitleMenuAction: Handles action to show subtitle selection menu
- Type:
- void
(static) handleShowVideoInfoPopupAction() → {void}
handleShowVideoInfoPopupAction: Handles action to show video info popup
- Type:
- void
(static) handleShowVideoSourceMenuAction() → {void}
handleShowVideoSourceMenuAction: Handles action to show video source selection menu
- Type:
- void
(static) handleTransport(evt) → {object}
handleTransport: Roku voice transport handler. Called from source/main.bs when an roInputEvent with info.type = "transport" arrives and the active scene is this player.
Returns { status: "" } per roInput.EventResponse() — Roku OS uses the status to render the appropriate HUD message. Codes used here:
- success / success.seek-start / success.seek-end — op completed (with bounds note)
- error.redundant — state already matches request (e.g. pause-while-paused)
- error.generic — op semantically unsupported in this context
- unhandled — command we don't recognize; lets Roku show "Command not available"
See https://github.com/rokudev/dev-doc — docs/DEVELOPER/media-playback/voice-controls/transport-controls.md
| Name | Type | Description |
|---|---|---|
evt | object |
- Type:
- object
(static) handleVideoPlayPauseAction() → {void}
handleVideoPlayPauseAction: Handles action to either play or pause the video content
- Type:
- void
(static) handleVoiceNextItem() → {object}
Reuse the OSD itemNext code path so Live-TV channel advance, queue advance, and Episode→next-Episode all behave identically to pressing the on-screen Next button.
- Type:
- object
(static) handleVoiceSeekCommand(evt) → {object}
| Name | Type | Description |
|---|---|---|
evt | object |
- Type:
- object
(static) hideNextEpisodeButton() → {void}
Hide the Next Episode notification
- Type:
- void
(static) init() → {void}
- Type:
- void
(static) isLiveTvPlayback() → {boolean}
- Type:
- boolean
(static) isNotificationVisible(notification) → {boolean}
Check if a VideoNotification is visually present (including during fade-out animation)
| Name | Type | Description |
|---|---|---|
notification | object |
- Type:
- boolean
(static) loadCaption() → {void}
Set caption url to server subtitle track and run the fetch task
- Type:
- void
(static) loadChannelListForQueue() → {void}
- Type:
- void
(static) onAllowCaptionsChange() → {void}
Only setup caption items if captions are allowed
- Type:
- void
(static) onAudioIndexChange() → {void}
Event handler for when audioIndex changes. For direct play: switches audio track directly using Roku's availableAudioTracks (no stop/reload needed since all tracks are in the container). For transcoded — or when the newly-selected stream exceeds the device's audio capability (e.g. switching from stereo back to an 8ch track on a stereo Roku) — must reload so the server transcodes the new selection.
- Type:
- void
(static) onChannelListLoaded() → {void}
- Type:
- void
(static) onContentChange() → {void}
Event handler for when video content field changes
- Type:
- void
(static) onDestroy() → {void}
onDestroy: Full teardown releasing all resources before component removal Called by SceneManager when popping this scene
- Type:
- void
(static) onKeyEvent(key, press) → {boolean}
| Name | Type | Description |
|---|---|---|
key | string | |
press | boolean |
- Type:
- boolean
(static) onLiveTvMetadataRefreshed() → {void}
- Type:
- void
(static) onNextEpisodeDataLoaded() → {void}
- Type:
- void
(static) onNextEpisodeNotificationAction() → {void}
Handler for Next Episode notification action
- Type:
- void
(static) onNotificationStateChanged() → {void}
Safety net: ensure focus isn't orphaned after notification dismissal animation completes
- Type:
- void
(static) onOSDAction() → {void}
onOSDAction: Process action events from OSD to their respective handlers
- Type:
- void
(static) onPlaybackErrorButtonSelected(msg) → {void}
| Name | Type | Description |
|---|---|---|
msg | dynamic |
- Type:
- void
(static) onPlaybackErrorDialogClosed(msg) → {void}
| Name | Type | Description |
|---|---|---|
msg | dynamic |
- Type:
- void
(static) onPositionChanged() → {void}
When Video Player state changes
- Type:
- void
(static) onSegmentNotificationAction() → {void}
Handler for segment notification action
- Type:
- void
(static) onState() → {void}
When Video Player state changes
- Type:
- void
(static) onSubtitleChange() → {void}
Event handler for when selectedSubtitle changes
- Type:
- void
(static) onTrickPlayBarTextChange() → {void}
Called when Roku's trickPlayBar position text changes Parses the time string to get seek position and syncs our carousel This ensures carousel stays in sync with Roku's authoritative seek position
- Type:
- void
(static) onVideoContentLoaded() → {void}
- Type:
- void
(static) onVideoSourceChange() → {void}
onVideoSourceChange: Handles video source switching from OSD Saves position, stops playback, re-selects audio for the new source's streams, and reloads video content with the new MediaSource ID.
- Type:
- void
(static) populateChapterMenu() → {void}
populateChapterMenu: ' Parse chapter data from API and appeand to chapter list menu
- Type:
- void
(static) reportPlayback(stateopt) → {void}
Report playback to server
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
state | string | <optional> | "update" |
- Type:
- void
(static) retryPlayback(bypassDovi, forceTranscode) → {void}
retryPlayback: Re-runs the content loader from the current position with updated task flags. Used by error handlers to retry without exiting the player.
| Name | Type | Description |
|---|---|---|
bypassDovi | boolean | skips DoVi container profile so the server can grant direct play |
forceTranscode | boolean | disables direct play so the server returns a transcode URL |
- Type:
- void
(static) seekRelativeWithBounds(deltaSeconds) → {object}
| Name | Type | Description |
|---|---|---|
deltaSeconds | integer |
- Type:
- object
(static) seekToWithBounds(targetSeconds) → {object}
30s end-slack matches the Roku transport-controls reference example for video — clamping shy of duration prevents the player from firing end-of-content immediately.
| Name | Type | Description |
|---|---|---|
targetSeconds | float |
- Type:
- object
(static) setFavorite(isLike) → {object}
| Name | Type | Description |
|---|---|---|
isLike | boolean |
- Type:
- object
(static) shouldUseCustomSubtitlesForCurrentSelection() → {boolean}
Determines if custom subtitles should be used for the current selection Custom subtitles should only be used for external subtitles when the user has enabled the setting
- Type:
- boolean
(static) showChannelSwitchSpinner(nextItem) → {void}
| Name | Type | Description |
|---|---|---|
nextItem | object |
- Type:
- void
(static) showNextEpisodeButton() → {void}
Show the Next Episode notification with countdown text
- Type:
- void
(static) showPlaybackErrorDialog(errorMessageopt) → {void}
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
errorMessage | string | <optional> | "" |
- Type:
- void
(static) stateAllowsOSD() → {boolean}
stateAllowsOSD: Check if current video state allows showing the OSD
indicating if video state allows the OSD to show
- Type:
- boolean
(static) switchToQueueItem(queueManager, targetPosition) → {void}
m.isSwitchingChannel prevents the old view's onState("stopped") from hiding the spinner before the new VideoPlayerView finishes loading.
| Name | Type | Description |
|---|---|---|
queueManager | object | |
targetPosition | integer |
- Type:
- void
(static) toggleCaption() → {void}
Toggles visibility of custom subtitles and sets captionTask's player state
- Type:
- void
(static) triggerLiveTvMetadataRefresh() → {void}
- Type:
- void
(static) tryActiveSegmentSkip() → {boolean}
Skip an active media segment (intro/recap/etc.) if one is currently in-window. Returns true if a segment was skipped, false if no active segment.
- Type:
- boolean
(static) updateCaption() → {void}
Removes old subtitle lines and adds new subtitle lines
- Type:
- void
(static) updateNextEpisodeCount() → {void}
Update Next Episode countdown text
- Type:
- void
(static) updateTrickplayCarousel(position) → {void}
Updates trickplay carousel with index calculated from video position Snaps to thumbnail boundaries for cleaner UX
| Name | Type | Description |
|---|---|---|
position | Float | Video position in seconds |
- Type:
- void