Developer highlights for Roku OS 7.5

OS 7.5

Roku OS 7.5 focuses primarily on making SceneGraph development more intuitive, as well as supporting text-to-speech functionality for CVAA compliance. The OS will be sent to all Roku devices in phases throughout the coming months.

OS 7.5 — System Update

Below is a high-level overview of developer updates in OS 7.5. For our full developer documentation, visit our SDK docs and developer GitHub page.

To read release notes for Roku customers, visit the Roku blog.

Major changes

  • Observer callbacks are now handled immediately and get the field value at the time the corresponding setField() occurs. In the past, callbacks were deferred and queued until the first one completed (Handling Application Events, Recursive Callback Model)
  • Developers can now set the version of SceneGraph their channel uses by declaring it in the manifest (“rsg_version=1.0”). This is meant to be a short-term fix for existing channels that were built around the old approach to handling observer callbacks. If no RSG version is declared, the channel will default to the most current version of the framework (Queued Callback Model)
  • SceneGraph channels can now download and use unsigned component libraries, allowing for the implementation of custom libraries across channels (ComponentLibrary)
  • Telnet ports 8089-8093 have been closed. A multi-thread aware debugger has been introduced at port 8085 (8087 for screensaver) (Testing and Debugging Roku Channels)
  • Functional fields have been added as a mechanism for SceneGraph channels to create procedural functions that can be called on components directly (Handling Application EventsFunctional Fields)
  • The BrightScript roAudioGuide component has been introduced to ease integration of text to speech functionality for channels that must be CVAA compliant (roAudioGuide, ifAudioGuide)
  • Roku now supports live DASH streams
  • ECP Search enables an external client to drive the Roku Search UI on the box. It supports finding content and optionally launching an available provider (ECP Search examples)
  • The new built-in SceneGraph TargetGroup node class allows developers to add non-linear layouts and focus effects to their channel UI (TargetGroup)

Video Player changes

  • New ‘AdaptiveMinStartBitrate’ and ‘AdaptiveMaxStartBitrate’ metadata values allow for pre-setting the startup bitrate (Playback Configuration Attributes)
  • Introduced a new content meta-data attribute ‘ignoreStreamErrors’ to skip to the next item in a content list when an item fails due to a streaming related error (Playback Configuration Attributes)
  • The ‘PlayStart’ and ‘BookmarkPosition’ content meta-data attributes have been modified: BookmarkPosition can be overridden by a seek operation, whereas PlayStart can not. Channels can use PlayStart and PlayDuration to split one content piece into multiple clips and insert these clips with other content (typically advertisements) into one content list (Playback Configuration Attributes)
  • The description returned by GetMessage on isStreamSegmentInfo now reads “Stream segment info” as opposed to the old “HLS segment info” to reflect the added support for DASH and Smooth streams
  • ‘ClipIdx’ and ‘Ignored’ attributes added in the GetInfo object of isRequestFailed (roVideoPlayerEvent)
  • ‘ClipIdx’ and ‘ClipPos’ attributes added in the GetInfo object of isPlaybackPosition (roVideoPlayerEvent)
  • ‘roVideoPlayer::Play’ starts playback at the seek position if seek was called prior to play. If seek was not called, the player advances its current position to the next item in the content list and starts playing that item
  • ‘roVideoPlayer::Stop’ stops playback and resets the seek position, keeping the player’s current position unchanged
  • ‘roVideoPlayer::SetContentList’ sets the content to be played by the roVideoPlayer and resets the current player position. roVideoPlayer also prefetches the next item in the content list while the current item is playing with no buffer time, depending on network throughput
  • The URL failover attribute inside Stream/Streams content meta data has been deprecated since adaptive streaming protocols provide their own failover scheme (Playback Configuration Attributes)

OS improvements

  • The Roku MediaPlayer now automatically detects and plays a video even if the file type is not specified. All major file types — HLS, DASH, Smooth and MP4 — are detected
  • Video player automatically scales when changing to a different stream with different ratios

SceneGraph improvements

  • ChannelStore node commands have been serialized to ensure that one command finishes before the next begins
  • ‘roArray’ type interface field added to RSG (<interface>)
  • A soundEffects node has been added to allow for custom sound effects or to turn off built-in SG sound effects
  • Poster bitmapWidth and bitmapHeight have been exposed through boundingRect()
  • The thread rendezvous now waits indefinitely so that the task threads wait until the scene returns (SceneGraph Threads)

BrightScript improvements

  • Fast Video Start can now prebuffer from non-zero positions, allowing for prebuffering of content in “Continue Watching” lists (Fast Video Start)
  • findNode() arguments and nodeType fields are now case insensitive
  • Items() accessor added to roAssociativeArray that returns an array of associative arrays with the keys and values and can be iterated over (ifAssociativeArray)
  • GetRemoteID() method added to roUniversalControlEvent to distinguish between multiple remote and ECP events (roUniversalControlEvent)
This entry was posted in News and tagged , , , , , , . Bookmark the permalink.
  • EnTerr

    What about the change in handling the thread rendezvous? That is a BFD

  • EnTerr

    Please do NOT call “functional fields” whatever 7.5 is adding!

    It is a misnomer to call them “fields” because they aren’t fields – they do not support any of the ifSGNodeField calls, hence not a field.

  • Larryo

    Are there plans to add channel grid to Playstation Vue?

    • John Moody

      That’s not the roku. That Sony.

  • Serge Brule

    Is there a way to manually install 7.5? We have a commercial app running on 7.2, 7.5 broke the app, We’d like our developers to iron out the issues.

    • EnTerr

      Roku has an early access Beta program, which allowed specified players to receive pre-release 7.5 – did you see and enroll in that?

  • Use of Play on Roku using ecp to input/15985 no longer works with 7.5. The Play on Roku (POR) splash screen flashes and then POR exits. I can’t find any information on changes that were made to POR, although there is a lot of discussion that it was changed. How can I track down a fix for this breaking change?

    • Martin Lehmann

      I can confirm this issue. Any alternative? Please help!

    • We never got a response from Roku to out open support incident or emails to developer@roku.com, but were able to find a solution ourselves using a lot of packet sniffing. We were able to correct for the breaking change by including the new, required k parameter in the ecp command. It is no longer optional.

      The successful ecp URL we used is http://rokuIP:8060/input/15985?t=v&u=urlOfMedia&videoname=nameAndDescriptionOfVideo&videoFormat=mp4&k=urlOfSplashScreenImage&h=(null)

      • EnTerr

        Kudos for reverse-engineering this, i don’t think it was ever publicly documented, so “legally” the did not break it. Or am i mistaken – was “PoR” invocation ever documented?

    • As part of this research we documented several of parameters used by POR, as follows:

      t=Type – Values of ‘v’ for video, ‘a’ for audio, ‘p’ for photo/image (required)
      u=URL – Full, html-encoded URL or media (e.g. video) to play (required)
      k=URL – Full, html-encoded URL of image to display before launch of media. We use a 1024×720 png, but I don’t know the specific requirements (required)
      videoname=Text – Name, including possible description, to be displayed during media startup (optional)
      videoformat=Format – Format of video. I use only mp4, but I believe there are options for mp4, mkv, mov, and wmv (optional)
      videoresolution=VideoHeight – Video resolution height (e.g. 1080) (optional)
      framerate=FramesPerSecond – Video frame rate (fps, e.g. 30) (optional)
      a=Action – Action. Known values are ‘sta’ for start, ‘sto’ for stop (optional)
      h=URL – URL of the web server to receive status callbacks from POR. I don’t believe this is currently supported (optional, probably obsolete)

      I hope this is helpful for someone else, since Roku doesn’t seem to provide any support in this area, even for a breaking change.

  • Serge Brule

    PlayReadyLicenseAcquisitionAndChallenge support seems to be broken as well. How do we report and track these issue?

  • Is anyone from Roku technical support involved in these blogs? I don’t see any response for about a week.

    • EnTerr

      Not really – not even their “developer relations” people. Go figure: relators failing to relate.

  • SoN9ne

    Really wish you would fix your documentation for Roku. It’s nice you are extending and “improving” Roku OS but your developer docs are incomplete and wrong in many areas. I spent too much time on your forum working with other devs to build apps because your support doesn’t exist for developers. This is your biggest downfall and the reason I stopped developing for Roku. One of the worst systems I’ve ever had to develop on. When will you get your act together?

    • EnTerr

      Nobody is in charge lately, from what i can tell. So last few months docs were abandoned smeared between GitHub (a new location nobody asked for) and sdkdocs.roku.com (where the majority and more reliable docs are).

      I gather the overall attitude at RokuCo is they are and will remain a “boutique” for only video “whales”, who get personal service with happy ending – whereas the “dolphins” and “minnows” be left to their own devices to “sink or swim”. The ones that dream Roku would be as (or _more_) open as AppleTV/FireTV/AndroidTV, we have another thing coming…

  • EnTerr

    Unified console considered harmful!

    The irony of it is that multiplexing the debugger telnets was supposed to simplify debugging multithreaded apps, which all Roku Scene Graph are. Just the opposite however happened – now the console is practically useless for RSG apps! It’s unclear in which thread i am typing – but the real injury is that roSgNode fields cannot be queried from the console anymore, because the render thread should be running for that to work.

    How can we turn off that ill-advised, crippling feature and get back independent threads to independent telnet ports?

  • Sue McVey Schanz

    We have a ROKU XR player, a bit older but has functioned OK. Specs say its an N1101. We just experienced an issue I have never encountered. Effective February 16th until current, we have no volume only on CBSN new videos. We can hear and see all videos prior to that date on CBSN, but not after the 16th. Picture is there but no audio and we can hear all other stations. We have other players such as Firestick and a Roku stick on other machines in the house, and they are all OK. We hooked up our Firestick on that same TV, and we can hear all the CBSN videos. Any one have any suggestions? I completely reset the ROKU device, and we still have the same issues. Thank you. Sue

  • This version is a joke…
    3 months working in what?
    I know many roku lovers still waiting, good luck with that.

    I put in the garbage the Roku Ultra, the company doesn’t answer, nobody say nothing, nothing to do. I do not recommend buy any Roku product.