Forum Discussion

adamkaz's avatar
adamkaz
Channel Surfer
10 years ago

Older Rokus not correctly reporting display mode

We just published an update to our app that provides customers with an SD stream in addition to our HD stream. This is to avoid letterboxing on devices set to 4:3 mode or 16:9 mode, and reduces unnecessary bandwidth for the customer.

Since "quality" is set to true for the HD stream, if I attempt to play that stream on a device in SD mode, it will fail to play. This is the expected behavior.

After publishing the update, we have received a number of complaints of videos not working (attempting to play HD streams in SD display mode). After some troubleshooting, I found that if I have customers switch their display mode (say 4:3 to 16:9) and then back again, it works fine. This looks like a bug in the Roku firmware to me, where these devices are getting into a state where they are not properly reporting the video mode.

Here is the function I am using to determine which stream to use:

Function CanPlayHD()
device = createobject("rodeviceinfo")
vm = device.getvideomode()
if vm = "480i" or vm = "480p" or vm = "576p60"
return false
else
return true
end if
End Function


Roku already told us we can just play HD streams in letterbox mode by setting the quality to false, but that is not our desired behavior.
  • Any idea in what way the reported mode is wrong? I.e. what do the "bad" devices report. Is it possible to coax complainer into running a beta that reports you back roDeviceInfo tidbits
  • adamkaz's avatar
    adamkaz
    Channel Surfer
    I considered begging a customer to ship me one while in the bad state. I'm going to play around next week and see if I can replicate. Will post back with results.
  • Not sure why the Roku would be reporting the wrong display mode, but is there any reason you couldn't use one of the other roDeviceInfo methods to determine if the device supports HD or not? e.g.,
    displayIsHD = (deviceInfo.GetDisplayType() = "HDTV")
  • adamkaz's avatar
    adamkaz
    Channel Surfer
    TheEndless: Because, for whatever reason, Roku didn't update GetDisplayType to cover 4K (and our channel offers 4K).

    Just tested it again to be sure: on my Roku 4K TV -> GetDisplayType() = "HDTV". I didn't show all of the code in my example, but with GetVideoMode, you can figure out if you are in SD, HD, or 4K mode in one call.

    😄