Stats on resolutions, 720 vs 480 vs widescreen 480?

I wonder how many possible resolutions do i have to deal with writing a non-video app (say text and images only). From player setup and RTFM, there are 3 display modes:

  • 720 (HD 16:9)

  • 480 (SD 4:3)

  • widescreen 480

Do you have any statistics, what is the distribution in % between the 3 modes in the wild?

“EnTerr” wrote:
how many possible resolutions do i have to deal with writing a non-video app
That depends entirely on the components you’re using. All of the built-in screen types, with the exception of roImageCanvas, support both SD and HD without you having to do anything special other than provide an HD and an SD asset for the primary theme attributes (overhang, logo, splash screen). The roScreen will automatically scale down to SD, so you’ll only need to do SD adjustments there if you’re not happy with the results at the 4:3 resolution.
“EnTerr” wrote:
Do you have any statistics, what is the distribution in % between the 3 modes in the wild?
RokuJoel recently stated that 40% of the user base is still using SD. Personally, I think that’s an absurd number, and probably boils down to the fact that they don’t include an HDMI cable in the box. Assuming that’s true, I’d bet a large percentage of the 40% is actually running at the “16:9 widescreen” resolution on an HD television, because they don’t know any better.

“TheEndless” wrote:
That depends entirely on the components you’re using. All of the built-in screen types, with the exception of roImageCanvas, support both SD and HD without you having to do anything special other than provide an HD and an SD asset for the primary theme attributes (overhang, logo, splash screen). The roScreen will automatically scale down to SD, so you’ll only need to do SD adjustments there if you’re not happy with the results at the 4:3 resolution. … RokuJoel recently stated that 40% of the user base is still using SD.
I was looking at roScreen in particular, with square pixels. Bear with me and let’s go with no autoscaling, PAR=1:1 (took me a while to guess what PAR=1.1:1 stands for, it’s “pixel aspect ratio”). If i understand it right, player “can only come to me” in only 1 out of 3 modes, which determines my resolution like so:


getDisplayType()  getDisplayMode()  getDisplayAspectRatio()  W x H
----------------  ----------------  -----------------------  --------
"HDTV"              "720p"                "16x9"             1280x720
"4:3 standard"      "480i"                 "4x3"              720x480
"16:9 anamorphic"   "480i"                "16x9"              854x480

…and there are no others, nitpicking aside (Roku3 not supporting SD; the 4th choice in setup - of 1080 that will be 720, etc).

That number you remembered (thanks!) gives us ~60% for “HDTV”, so how do the other 2 modes split the 40%, i wonder?

"> The roScreen will automatically scale down to SD

Endless, under what conditions does this happen? I have a channel and a screensaver for instance, with all roscreens and no attempt to accommodate SD. The screensaver scales down and shows as you would want , but the channel does not.

If I create an roScreen with a specific dimension:

screen=createobject("roscreen",false,1280,720)

Then no matter what the settings are on the device, the screen responds as if it is 1280x720, and screen.getwidth() will always return 1280, screen.getheight() will always return 720.

If on the other hand, I choose to omit the dimensions, then the screen by will be either 1280 x 720 for either HDTV mode, or 720 x 480 for SDTV mode. In short, the developer really never needs to worry about 16x9 mode, except for one thing:, squished or stretched images may occur.

Using the “always 1280” screen dimensions will make a circle into an egg in 4:3 mode, but will look fine in 16:9 mode, and using the “let the system choose roScreen Dimensions” approach will make a circle into an egg in 16:9 mode.

sub main()
	screen=createobject("roscreen",false) 'roScreen dimensions based on device setting
        'screen=createobject("roscreen",false,1280,720) 'roScreen dimensions chosen by developer
	print screen.getwidth(), screen.getheight()
	xcenter=int(screen.getwidth() /2)
	ycenter=int(screen.getheight() /2)
	radius=200
	r2=radius*radius
	for x=-radius to radius
		s=sqr(r2-x*x)+0.5
		y=int(s)
		screen.drawline(xcenter+x,ycenter+y,xcenter+x,ycenter-y,&hffffffff)
	end for
	screen.finish()
	
sleep(5000)
end sub
  • Joel

“squirreltown” wrote:
"> The roScreen will automatically scale down to SD
Endless, under what conditions does this happen? I have a channel and a screensaver for instance, with all roscreens and no attempt to accommodate SD. The screensaver scales down and shows as you would want , but the channel does not.
As Joel pointed out, you have to explicitly specify the screen dimensions to get it to scale for SD, otherwise it’ll use the current screen dimensions. I, generally speaking, always specify 1280x720, and only make adjustments for 4:3 SD mode if there’s a specific need for it (like displaying album covers or peoples’ faces).

Joel, Endless - thank you that worked great, the channel now scales down just fine. Maybe its just me but It seemed counter-intuitive that telling it explicitly to be 1280x720 would make it scale but who cares! It works, thanks. Thats a real (hidden) benefit of roScreen.

@squirrelltown, wasn’t aware of this either before seeing Endless’ post on the subject, previously, I always built HD and SD versions of every channel that used roScreen, including a duplicate set of images, one for each resolution. I decided to test it out after I read your post.

  • Joel

@RokuJoel -
anything on the specific question i asked though?
(% distribution of the 3 modes in which players are set.)

PS. Sure, autoscaling is like when you set computer video card output to a resolution that is not LCD monitor’s “native” resolution; then it shrinks or expands image accordingly. Except it is done by the player and not TV (kind of like DVD players can do in-player upscale with presumably chance of doing better interpolation than the TV). But like i said, “… with square pixels. Bear with me and let’s go with no autoscaling, PAR=1:1”. I want to get the best possible resolution possible for text reading and undistorted images, hence looking at “native” resolutions.

I wasn’t attempting to answer the specific question you asked when I posted, but I’ll see if I can get some stats next week.

  • Joel

In the past few months, I have in my database of devices;
78.6% → HDTV
15.5% → 4:3 Standard
5.7% → 16:9 anamorphic

of a few thousand users.

“RokuJoel” wrote:
I wasn’t attempting to answer the specific question you asked when I posted, but I’ll see if I can get some stats next week.
Any numbers you can share with us yet, RokuJoel?

I have been pinging you on PM every couple of weeks in the last three months and i know you have been holding off to hear on some report. But fancy reports aside, can’t you give 3 simple numbers (say 1-2 digits precision and no guarantee to be exact)? E.g. if your aggregate numbers looked like the ones of 360tv (thank you, 360tv - much obliged!), example answer would be: 79%, 15%, 6%.

RokuJoel ?

The dataset is a little screwy. Of devices that have actually reported which is perhaps 1/2 of all actively used devices:

2110791 HD 16:9
127219 SD 16:9
386 ?? 16:9 (mode is not reported only aspect ratio)
703182 SD 4;3
214 ?? 4:3 (mode is not reported only aspect ratio)
18 SD: ?? (only mode is reported)

I’m not sure how useful or accurate this data is something changed in the reporting system making most devices just not report screen mode except when screen mode is adjusted. For some reason this affected the Roku 2 XS / XD series more than others (only 20k of them reported screen mode data vs 1m Roku3 devices reporting).

  • Joel

Thanks, Joel!
That would be great data because of the breadth (sample size is 100x - 1000x bigger than anyone else could offer), were it not for the quirk in reporting you mention in last paragraph. That bias in player models represented might be skewing the stats.

But data is what it is and that will have to do. Throwing away the noise (0.02% nuts):

  • HD 16:9 = 72%

  • SD 4:3 = 24%

  • SD 16:9 = 4%

Simplifying one step more: the two major native modes on Roku are 1280x720 vs 720x480, in a 3:1 split.

Again, thank you (et al.) for sharing.

Approaching a year later, presumably it has shifted more toward HD, but I wonder how much? Not that it really matters, I just set 1280x720, let it scale if need be.

“Komag” wrote:
Approaching a year later, presumably it has shifted more toward HD, but I wonder how much?
Looking at some stats that TheEndless kindly shared recently, picture seems now:

  • HD 16:9 = 85%

  • SD 4:3 = 11%

  • SD 16:9 = 4%

So 9 out of 10 screens are wide (16:9).
And 6 out of 7 are HD (720+ lines)

The increase for HD is from 72% to 85%, due to two factors: (a) people buying new TVs but also (b) TheEndless survey not including “legacy” player data (i.e. fw3 players were not accounted for).