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.
Re: Older Rokus not correctly reporting display mode
@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.