|Table of Contents|
SDK Update Release Notes: version 9 - 10/23/2018
Roku OS 9 introduces a new manifest flag which adds drastic improvements to the memory footprint and launch times of Roku SceneGraph (RSG) channels. All RSG channels should set the "
rsg_version=1.2" manifest entry to run the new, higher performing SceneGraph update. This update also adds memory profiling capabilities to the BrightScript Profiler tool, enabling developers to better identify memory leaks in their channels.
Roku TV models are expected to receive the update in early 2019.
Below is a list of new APIs, tools, performance enhancements, and media updates for developers.
- New manifest flag for "
rsg_version=1.2" — By adding this new manifest entry, developers enable tremendous memory savings and app launch time improvements in RSG channels. The "
rsg_version=1.2" manifest entry enables a new internal mechanism for processing component
<script>tags that optimizes the resulting compiled script code. This results in a major reduction in the channel's initial startup time and uses dramatically less memory while preserving total compatibility. Initial startup time is typically reduced by approximately 30% when this manifest flag is set. Memory savings range from 10 - 20MiB in a moderately complex channel, with up to 40MiB saved in a complex channel with extensive component hierarchies.
eval() is no longer supported for "
rsg_version=1.2" — In order to realize the load time performance and memory benefits enabled by the "
rsg_version=1.2" entry, eval() can no longer be supported. Any use of eval() will cause compilation and runtime errors if "
rsg_version=1.2" is in the channel’s manifest.
Faster AssociativeArray access — Read and write access into and out of AssociativeArray fields on nodes, and retrieval of AssociativeArrays using roSGNodeEvent.getData() has been made 5x faster. The semantics of AssociativeArray fields are copy on read and write, and copy on roSGNodeEvent.getData(). Channels that heavily use AAs can expect dramatic speed increases that directly translate to user-perceivable operations.
Faster rendezvous — This change enables an auxiliary thread to handle rendezvous operations when the render thread is occupied with tasks that don't need rendezvous protection. The result is dramatic speed-ups for rendezvous operations, particularly on Roku devices with lesser processing power.
Faster component creation — Node creation times have been improved in Roku OS 9.
ZoomRowList component — ZoomRowList, a RowList component where the focused item is zoomed in, is now available for developers.
roSGNode.threadInfo() method — A new diagnostic function, threadInfo(), has been added to the ifSGNodeField interface. With few exceptions, this function may be called from any component, on any thread, in any function, at any time.
New BrightScript Profiler features
The BrightScript Profiler now includes a memory profiling tool that can be used to help developers identify memory leaks or memory that is allocated during channel operation without ever being freed. Roku OS 9 also adds support for streaming of profiling data to a local network host.
Media, DRM, and content meta-data updates
- Dash EventStream - Dash EventStream elements are supported in Roku OS 9.
- [BETA] Opening Widevine DRM CBCS decryption mode — Roku OS 9 adds CBCS decryption support for Widevine DRM in DASH and HLS streams. At this stage, Widevine support is considered in beta on the Roku platform.
- [BETA] DASH XLink support - Roku OS 9 adds DASH XLink support, including EventStream events that are surfaced to the app through the timedMetaData field.
- Widevine key rotation - Roku OS 9 also adds support for Widevine key rotation and license renewal for Dash and HLS content.
- New manifest entry for a "game" channel — Developers can now set the "game" manifest entry (
game=1) to avoid audio delays in their game channels.
- roList indexing is no longer disturbed by array index access — The behavior of roList indexing has been modified to yield more intuitive results and resolve bugs. As of Roku OS 9, when implementing roList, ifEnum enumeration and ifList enumeration will use a separate and independent internal 'pointers' to the current element, instead of a "current integer index" variable. This has been done to ensure the ifList index position does not corrupt the roList index when the array read/write operators are used.
- Programmatic access to BIFs through BrightScript — Two new fields,
nearestFrame, have been added to the BifDisplay component so that developers can now access BIFs programmatically in their channels. Previously a BrightScript channel had to use the built-in trickplay UI to access these BIFs.
For an overview of the consumer features added in Roku OS 9, visit the Roku Blog.
SDK Update Release Notes: version 8.2 - 09/26/2018
Roku OS 8.2 is a firmware update focused primarily on firmware optimizations and bug fixes, along with new features that will enable Roku TV models to work seamlessly with the upcoming Roku TV Wireless Speakers. This update introduces no new features, APIs, console logs, or tooling about which developers should be mindful.
SDK Update Release Notes: version 8.1 - 05/1/2018
Media, DRM, and content meta-data updates
- PlayReady 3 Update — All Roku devices with MStar chips update to the PlayReady 3 library with Roku OS 8.1. Previously they included PlayReady 2.5.
- [BETA] Opening Access to Widevine DRM — Roku OS 8.1 adds support for Widevine DRM for DASH streams. At this stage, Widevine support is considered in beta on the Roku platform.
- Digital Rights Management (DRM) control attributes — Content metadata control attributes for DRM have been added to the firmware.
- Media Player content metadata updates — Two content metadata attributes of the Media Player have been updated and three new attributes have been added:
- PlayDuration is no longer used by the media player.
- BookmarkPosition is being deprecated.
- The existing PlayStart attribute should be used instead as it has been modified to allow channels to seek to positions prior to PlayStart. The firmware will continue to support BookmarkPosition to maintain the backward compatibility, but channels should plan a migration to use PlayStart.
- A new content meta-data attribute, ClipStart, sets the clip start position.
- A new content meta-data attribute, ClipEnd, sets the clip end position.
- A new content meta-data attribute, LiveBoundsPauseBehavior, allows a channel to customize Media Player behavior on live streams when playing in the earliest part of a DVR buffer.
- Improvements to the system overlay — The behavior of the Roku system overlay has been modified, such that the system overlay now slides in whenever the * button is pressed, the Video node is in focus, and the app does not have its OnKeyEvent() handler fired. When the Video node is not in focus, the system overlay does not slide in and the OnKeyEvent() handler is fired.
- System overlay notification event — A new notification has been added to roDeviceInfo. Channels can get notified when a system overlay is displayed.
- roDeviceInfoEvent update — A new event, isCaptionModeChangedEvent, has been added to roDeviceInfoEvent to enable developers to check if the user changes the closed caption mode or track.
- Closed caption track selection— It is no longer necessary for a channel to partake in the CC track selection, apart from adding any tracks to the list of available tracks. The firmware now selects a CC track based on the preferred caption language selection in the system preferences. When the selected language is not available, it defaults to the system's UI language.
Case-preserving quoted keys in Associative Arrays — The quoted keys in Associative Array literals are now case-preserving. This change improves the readability of your code and is compatible with JSON usage.
- CEC status events — A roCECStatusEvent has been added for set-top-boxes to determine their active display source status. Channels subscribing to the event will be notified when the active-source status of the device changes per the CEC message traffic.