Roku Device Features, Settings & Updates

Help configuring Roku device settings, using Roku OS features such as screen mirroring, adjusting display type and audio settings, using Guest Mode, and assistance with software updates.
cancel
Showing results for 
Search instead for 
Did you mean: 
ean611
Level 7

Re: Can a Streaming Stick+ output 23.976Hz instead of 24Hz?

"mike.s" wrote:
Thing is, it's a streaming stick. The upstream source isn't forcing or starving data, some gets buffered and then the stick just throttle it to the rate it needs to keep the buffer full.

So, where does this mismatch which supposedly causes a dupe or skipped frame happen? The stick is just feeding the display a frame at a time, at the rate it's doing. I'm sure it's not keeping two clocks and comparing them, then dupe or skipping to keep them in sync. 

I'll admit not looking into it deeply, but I strongly suspect the display does basically the same thing, and just accepts the frames and deals with it, whether 23.976 or 24 Hz. The HDMI clock is driven by the source, and I doubt any consumer display keeps an independent clock which needs to stay in sync. The difference in speed is insignificant to the viewer.

Edit: the one place it would matter is if trying to combine multiple video sources. But if you're doing that, you need to keep all the devices in sync anyway (simple crystal controlled timing is insufficient), and you'd be using a professional format, like HD-SDI.

24 Hz content vs 30/60 Hz frame rate is different. Actually showing 24 at 30 would result in a very user noticeable speed up of the content, hence the need for 3:2 pulldown.

So, yes, if you mismatch frame rate with refresh rate, you will have frame doubling or frame skipping. It's unavoidable. If you want, I can plot out how this works, but it does not actually feed one frame at a time. The video decoder writes to the frame buffer, which is the part of memory that defines what you see on your screen. This must be done inside of the frame window for redraw, that way you don't see screen tearing (Vsync). If it's running at 24Hz, that means it'll take the frame buffer once every 24 seconds and send it out over HDMI. (Slightly simplified, ignoring buffering, etc). If your content exists at 23.976Hz, it'll update the frame buffer at that rate. Eventually, the time boundary will overflow, and you'll have a case where you show two frames together. 

There is literally no reason not to do this correctly if you're going to enable the feature. As I said, this mismatch will result in a doubled frame every 41.67 seconds. If that doesn't bother you, you'd be like many folks who don't mind running at 59/60Hz all of the time. Most people also have frame smoothing on new TV's turned on, and don't bother to shut that off. 

Since there is a feature for adaptive refresh rate, I would appreciate if it worked correctly. 
0 Kudos
mike_s
Level 8

Re: Can a Streaming Stick+ output 23.976Hz instead of 24Hz?

"ean611" wrote:

So, yes, if you mismatch frame rate with refresh rate, you will have frame doubling or frame skipping. It's unavoidable. If you want, I can plot out how this works, but it does not actually feed one frame at a time. The video decoder writes to the frame buffer, which is the part of memory that defines what you see on your screen. This must be done inside of the frame window for redraw, that way you don't see screen tearing (Vsync). If it's running at 24Hz, that means it'll take the frame buffer once every 24 seconds and send it out over HDMI. (Slightly simplified, ignoring buffering, etc). If your content exists at 23.976Hz, it'll update the frame buffer at that rate. Eventually, the time boundary will overflow, and you'll have a case where you show two frames together. 

Exactly where do you think these different timings originate? You're arguing like the streaming source is getting incoming content at exactly 23.976 Hz, but sending at 24. Nope, it doesn't work that way. The incoming stream is just throttled (it uses TCP) so it can keep up with the outgoing HDMI, it goes faster or slower as needed. You could take an incoming stream meant to be displayed at 23.976 and send it out at 60 Hz if you wanted (and had the necessary processing power, and bandwidth for the incoming stream to keep up). The 23.976 specified by the source is just advice on what speed the stream is intended to be played, it's up to the streaming device on how to handle it. Roku does it by playing the stream an imperceptible bit faster. BTW, you haven't told us how you determined that it's actually, physically sending at 24.000 Hz.

And, on the display side, the frame buffer gets PLL locked to the incoming HDMI clock. If it didn't, you'd have frame slips, because the source and sink clocks can't be perfectly matched. Panel Vsync is just that, synchronization.

What does the EDID for your display say it supports?
0 Kudos
ean611
Level 7

Re: Can a Streaming Stick+ output 23.976Hz instead of 24Hz?

"mike.s" wrote:
"ean611" wrote:

So, yes, if you mismatch frame rate with refresh rate, you will have frame doubling or frame skipping. It's unavoidable. If you want, I can plot out how this works, but it does not actually feed one frame at a time. The video decoder writes to the frame buffer, which is the part of memory that defines what you see on your screen. This must be done inside of the frame window for redraw, that way you don't see screen tearing (Vsync). If it's running at 24Hz, that means it'll take the frame buffer once every 24 seconds and send it out over HDMI. (Slightly simplified, ignoring buffering, etc). If your content exists at 23.976Hz, it'll update the frame buffer at that rate. Eventually, the time boundary will overflow, and you'll have a case where you show two frames together. 

Exactly where do you think these different timings originate? You're arguing like the streaming source is getting incoming content at exactly 23.976 Hz, but sending at 24. Nope, it doesn't work that way. The incoming stream is just throttled so it can keep up with the outgoing HDMI, it goes faster or slower as needed. You could take an incoming stream meant to be displayed at 23.976 and send it out at 60 Hz if you wanted (and had the necessary processing power, and bandwidth for the incoming stream to keep up).
And, on the display side, the frame buffer gets PLL locked to the incoming HDMI clock. If it didn't, you'd have frame slips, because the source and sink clocks can't be perfectly matched. Panel Vsync is just that, synchronization.

What does the EDID for your display say it supports?

I have verified that the source is at 23.976. I use Plex, where I am in full control of source and playback, and my 23.976Hz content is running at 24Hz. The streaming source is not converting their content, the vast majority of it which is at 23.976 to 24Hz. 

I could go into EDID, but sufficed to say I use multiple devices, and I have 23.976 running correctly from a blu ray player and a PC. I would rather not get into your misunderstanding of how streaming H264 or H265 works, but the original MPEG is not converted by the source. Your'e saying "the streaming source is getting incoming content at exactly 23.976 Hz, but sending at 24." That is not what I'm saying at all. The source material that we're enjoying, most TV and virtually all movies, are encoded at 23.976 frames per second. This means that the streaming service is transmitting some form of MPEG (H264, H265, etc) with that material encoded with said frame rate. This must be maintained as you need this timing for Audio sync. The issue here is that despite source content, the output does not match. 

"converting to 60" does not take processing power. There is no conversion. As stated in previous post, you have to alternate 2 and 3 iterations of each frame. This is called juddering, and is ugly. If you're thinking of motion smoothing, the effect that makes all content look like cheap soap operas, that should be shut off, as you cannot invent data that is missing. If a frame exists, you can show it, but you cannot re-interpolate what isn't there with any quality. 
0 Kudos
mike_s
Level 8

Re: Can a Streaming Stick+ output 23.976Hz instead of 24Hz?

"I would rather not get into your misunderstanding of how streaming H264 or H265 works"

Yes, because it's obvious you don't know enough to explain it. You simply don't know what you don't know, so you think you know it better than you do. Plex, too, uses TCP and will not starve the client.

"converting to 60" does not take processing power."

Whoosh.
0 Kudos
ean611
Level 7

Re: Can a Streaming Stick+ output 23.976Hz instead of 24Hz?

"mike.s" wrote:
"I would rather not get into your misunderstanding of how streaming H264 or H265 works"

Yes, because it's obvious you don't know enough to explain it. You simply don't know what you don't know, so you think you know it better than you do. Plex, too, uses TCP and will not starve the client.

"converting to 60" does not take processing power."

Whoosh.

Fine I'll bite. What does TCP have to do with anything? This isn't about starving the client at all, it's internal to the video decode block on the GPU. The entire issue here is how often you take the frame buffer and move it to the output buffer. 

https://en.wikipedia.org/wiki/Framebuffer (for background on what a frame buffer is in context)
Or if you want more complicated:
https://xilinx-wiki.atlassian.net/wiki/ ... ign+2017.3
This is an example of how a frame buffer to output phy can be implemented in a Xilinx FPGA. There is enough background there to be useful if you're interested in learning about how this works from a hardware level. (Unless you'd prefer an example with Altera / Intel PSG or ARM)

This is a technical implementation error. I'm not sure why you're arguing. Is your goal to say that there is nothing wrong? Can you not reproduce this? 
0 Kudos
mike_s
Level 8

Re: Can a Streaming Stick+ output 23.976Hz instead of 24Hz?

Wow, you know just enough to be dangerous. Put down the Google, it doesn't work like you think it works. 24 Hz output of streamed video created at 23.976 Hz does not result in frame slips.
0 Kudos
ean611
Level 7

Re: Can a Streaming Stick+ output 23.976Hz instead of 24Hz?

"mike.s" wrote:
Wow, you know just enough to be dangerous. Put down the Google, it doesn't work like you think it works. 24 Hz output of streamed video created at 23.976 Hz does not result in frame slips.

This is technically correct. It results in frame doubling. Once every 41.67 Seconds you have a frame displayed for 83.3ms as opposed to the normal 41.67ms.

If that does not bother you, that's fine. It's still a bug. If you go to the trouble of not using 60Hz, getting an accurate frame rate may be a priority.
0 Kudos
mike_s
Level 8

Re: Can a Streaming Stick+ output 23.976Hz instead of 24Hz?

" It results in frame doubling."

No, it doesn't. The incoming TCP stream is not isochronous, and bears no timing relationship to the stream client/display timing. You have much to learn, padowan. This has all been recognized and resolved a long, long, time ago. 

BTW, the term "frame slip" is based on "bit slip" from the telecom industry, and goes back decades. It can happen in either direction, and has long ago been solved. But, it's not happening here.

Do tell, because you never have despite claiming it, how you've seen the stick put out an actual 24.000 Hz signal, along with duplicated frames (i.e. frame slip). I'd bet you couldn't tell if there were an inserted frame every 40 seconds even if you had a chain which produced that. Not only don't you know what you're talking about technically, but you're complaining about something you can't even recognize.

You want guaranteed 23.976 Hz output? Stop buying <$100 consumer products which work perfectly fine with regard to timing. [Content removed for Forum Guidelines violation]
0 Kudos
andyo
Level 7

Re: Can a Streaming Stick+ output 23.976Hz instead of 24Hz?

"mike.s" wrote:
Wow, you know just enough to be dangerous. Put down the Google, it doesn't work like you think it works. 24 Hz output of streamed video created at 23.976 Hz does not result in frame slips.

Of course it does, and I'm having the same issue with a Roku Ultra 2016. Right now I've resorted to use it as a secondary device for 24p only content like many Netflix originals and European-mastered movies, because the Apple TV 4K has the exact opposite issue (it does 23.976 but not 24.000).

What you suggest the video pipeline does that it shows a frame per screen refresh and the media player changes the stream speed ever-so-slightly in order to not repeat or drop frames, no media player does that. Because what do you think happens to audio sync then? The media player would either have to resample (for time-stretching) the audio to keep up or it will drift over time. There is a tool called ReClock that does exactly that in Windows.

23.976 and 24.000 fps need to match their exact refresh rate counterparts (or their multiples), or you will get a frame drop or repeat every ~41 seconds. And this is easily demonstrable. There are "test patterns" on Netflix with both framerates that one can test. On the Rokus, the 23.976 test pattern drops a frame periodically when frame rate matching (to 24 Hz).
0 Kudos