Page 4 of 4

Re: RTSS vs in-engine framerate capping

Posted: 30 Jun 2017, 19:54
by jorimt
tygeezy wrote:Okay, I should really go through the entire article from cover to cover before I come back with more questions. Thanks for answering everything I've thrown your guys way and I appreciate all the work you guys have out in. There are tons of false information that seems to float around forums and reddit regarding vsync, gsync ect.

I'm glad it's not just me that gets these random frametime spikes. Although cs go (source engine) appears to be a particularly bad offender. Overwatch is really a lot smoother and more consistent with a better framerate capper. It is newer, so I guess that's to be expected.
Sure thing, I'll be happy to answer any follow-up questions you might have after you read through the series more thoroughly.

Re: RTSS vs in-engine framerate capping

Posted: 16 Jan 2018, 15:35
by tygeezy
Alright, bumping this thread again because i'm thinking of getting a steam link and I want to have the least amount of latency possible. My guess would be to find out whatever my televisions refreshrate is and subtract .007 fps from that in RTSS.

From what I gather steamlink puts on vsync and this can't be disabled. My pc will be connected via wire to the router, but my tv is downstairs, and i'm not running a wire that far. I'll probably also test it in my bedroom with both the steamlink and pc being wired to the router.

This probably isn't the best section, but could anybody recommend a good router? Right now i'm just using comcasts tele router, but I wanted to put that in bridge mode and pick up a good wireless router to help avoid ping spikes when other people stream. I figured I can put the steamlink on the 5ghz band and everything else on the 2.4 ghz.

Re: RTSS vs in-engine framerate capping

Posted: 16 Jan 2018, 17:11
by Chief Blur Buster
tygeezy wrote:My guess would be to find out whatever my televisions refreshrate is and subtract .007 fps from that in RTSS.
You need to measure the refresh rate via http://www.testufo.com/refreshrate in a compatible web browser (with VSYNC support).

Unfortuantely, you cannot control refresh rate via steamlink....but you might be able to slightly reduce the codec lag on the PC-side. No guarantees.

It depends on whether the HOWTO: Low Lag VSYNC ON allows delivery of frames sooner to the video encoder for streaming games -- it might reduce streaming lag by 1 frame, but unfortunately no guarantees -- streaming codecs vary quite a lot on how they begin to encode frames. This only works if it is running in mirroring mode (e.g. displayed locally on your monitor concurrently with streaming to the TV). In this case, don't worry about the TV refresh rate, instead worry about the PC refresh rate. Even that may not work. You can also attempt an arbitrary number such as 59.9 since some game streaming use a hardcode of "60.0" with no refresh rate sync -- and see if that reduces streaming lag by 1 frame (~1/60sec).

For low lag streaming, get a high performance router. And preferably Ethernet hardwire instead of WiFi. This will be more important in households that do other things at the same time (e.g. streaming netflix at the same time as you're streaming gameplay).

Certainly, this is not CS:GO stuff or heavy competitive stuff, as there will always be a codec lag, but it can be usable for solo games in situations where you can't run a 100 foot HDMI run. (There's fiber optic HDMI cables now, as another option that has less lag than streaming).

Re: RTSS vs in-engine framerate capping

Posted: 16 Jan 2018, 17:50
by tygeezy
Chief Blur Buster wrote:
tygeezy wrote:My guess would be to find out whatever my televisions refreshrate is and subtract .007 fps from that in RTSS.
You need to measure the refresh rate via http://www.testufo.com/refreshrate in a compatible web browser (with VSYNC support).

Unfortuantely, you cannot control refresh rate via steamlink....but you might be able to slightly reduce the codec lag on the PC-side. No guarantees.

It depends on whether the HOWTO: Low Lag VSYNC ON allows delivery of frames sooner to the video encoder for streaming games -- it might reduce streaming lag by 1 frame, but unfortunately no guarantees -- streaming codecs vary quite a lot on how they begin to encode frames. This only works if it is running in mirroring mode (e.g. displayed locally on your monitor concurrently with streaming to the TV). In this case, don't worry about the TV refresh rate, instead worry about the PC refresh rate. Even that may not work. You can also attempt an arbitrary number such as 59.9 since some game streaming use a hardcode of "60.0" with no refresh rate sync -- and see if that reduces streaming lag by 1 frame (~1/60sec).

For low lag streaming, get a high performance router. And preferably Ethernet hardwire instead of WiFi. This will be more important in households that do other things at the same time (e.g. streaming netflix at the same time as you're streaming gameplay).

Certainly, this is not CS:GO stuff or heavy competitive stuff, as there will always be a codec lag, but it can be usable for solo games in situations where you can't run a 100 foot HDMI run. (There's fiber optic HDMI cables now, as another option that has less lag than streaming).
I certainly don't plan to play competitive games this way. I might try something like battlefield, but it will mostly be for single player games using a steam controller.

Are there any routers in particular you had in mind? I would probably have to do wireless for the steam-link because the router would be upstairs and I don't want to run wires that far.

Re: RTSS vs in-engine framerate capping

Posted: 16 Jan 2018, 19:48
by RealNC
I thought with steam link you can just disable vsync? The screen capture is going to only grab whole frames anyway? I think? It uses the same method as NVidia Shadowplay (or whatever it's called these days), which never tears.

So try vsync off with RTSS set to the exact Hz of the TV to minimize micro-stutter. Worth a try. If that works, then it's going to give you the lowest input lag possible.

Re: RTSS vs in-engine framerate capping

Posted: 17 Jan 2018, 02:27
by tygeezy
RealNC wrote:I thought with steam link you can just disable vsync? The screen capture is going to only grab whole frames anyway? I think? It uses the same method as NVidia Shadowplay (or whatever it's called these days), which never tears.

So try vsync off with RTSS set to the exact Hz of the TV to minimize micro-stutter. Worth a try. If that works, then it's going to give you the lowest input lag possible.
According to battlenonsense he was unable to turn off vsync when using the steam link. Then again, the video is old, so maybe changes have been made, and the official steam page suggests turning off vsync.

Which makes me think that finding my TVs refreshrate and subtracting .007 FPS and capping it at that value will give me the smoothest possible picture with lower input lag.

You certainly shouldn’t be getting over 140 ms of input lag at 60 hz with the correct settings.

https://youtu.be/ogNT6w4bzIs


Sent from my iPhone using Tapatalk

Re: RTSS vs in-engine framerate capping

Posted: 17 Jan 2018, 14:50
by Chief Blur Buster
tygeezy wrote:Which makes me think that finding my TVs refreshrate and subtracting .007 FPS and capping it at that value will give me the smoothest possible picture with lower input lag.
tygeezy, that is not how things work for streaming situations.

....."Finding my TV's refresh rate"

Streaming fully decouples the originating streaming rate from destination refresh rate!
As a result, there's no such thing as "finding my TVs refresh rate" from the relative perspective of the PC sending a stream.

Often, stream players will play at a frame rate independent of the TV's refresh rate, which means things like 59.976164 frames per second may be played on 60.00012367 Hertz signal. That's what happens with YouTube videos. The camera frame rate is often decoupled from end user's display refresh rates. Compensation (matching) is often by slightly slowing down/speeding up the frame rate, or simply by frame dropping (once every few seconds or few minutes). Occasionally, a few streaming boxes will switch refresh rates to match frame rates of the real-time video stream, but this is exceedingly rare, especially with Linux-powered streaming boxes which usually do not "genlock" the destination display to the originating display over a stream. Even if it did genlock, the best approach is to genlock to the ORIGINATING system's rate, not the DESTINATION display's rate.

So a person is asking the wrong question when you say "I want to find my TV's refresh rate" when it's pretty much decoupled and won't help the Low-lag VSYNC ON howto if you're doing a streaming method. Basically the TV's refresh rate tends to become useless for the Low-Lag VSYNC ON HOWTO, when streaming is involved.

The PROPER approach for reducing streaming lag (by about 1 frame) is usually either (A) or (B).

(A) Sync at the originating end, not the destination end of streaming
(basically the originating PC refresh rate)

--or--

(B) Cap at a frame rate slightly lower than the codec frame rate.
(basically the streaming codec refresh rate)


Additional Tip: VSYNC is decoupled, but it can still reduce lag slightly if you do it anyway. If you can, then also turn VSYNC OFF in the video game and drivers, even if the streaming is VSYNC ON on destination display. That way, the streaming codec can intercept framebuffers slightly more quickly. Basically VSYNC OFF on originating end (local display) even though VSYNC ON forced on the destination end (remote display) = can be lower lag with certain kinds of streaming software (more likely to happen with Steam streams rather than ShadowPlay streams).
Similar Situation: Metaphorically, it is similar behavior as Windows compositing. VSYNC OFF in windowed mode has no tearing because the next framebuffer layers is VSYNC ON (Windows Desktop Manager). But turning the earlier framebuffer step VSYNC OFF still reduces lag anyway (even in games that cap to 60fps). Same thing can happen with certain kinds of streaming codecs. Also some streaming codecs (not all) will also work with Fast Sync style modes, simply picking 1 frame every 1/60sec, to stream a 60fps stream from an ultra-high frame rate. Other times, certain streaming codecs behaves as a forced frame rate cap (60 frames per second) with no way to go higher. Different streaming codecs behave differently (e.g. ShadowPlay vs Steam vs Others).

Makes better sense? ;)

Re: RTSS vs in-engine framerate capping

Posted: 17 Jan 2018, 16:04
by tygeezy
<STREAMING-SPECIFIC>
Chief Blur Buster wrote:
tygeezy wrote:Which makes me think that finding my TVs refreshrate and subtracting .007 FPS and capping it at that value will give me the smoothest possible picture with lower input lag.
tygeezy, that is not how things work for streaming situations.

....."Finding my TV's refresh rate"

Streaming fully decouples the originating streaming rate from destination refresh rate!
As a result, there's no such thing as "finding my TVs refresh rate" from the relative perspective of the PC sending a stream.

Often, stream players will play at a frame rate independent of the TV's refresh rate, which means things like 59.976164 frames per second may be played on 60.00012367 Hertz signal. That's what happens with YouTube videos. The camera frame rate is often decoupled from end user's display refresh rates. Compensation (matching) is often by slightly slowing down/speeding up the frame rate, or simply by frame dropping (once every few seconds or few minutes). Occasionally, a few streaming boxes will switch refresh rates to match frame rates of the real-time video stream, but this is exceedingly rare, especially with Linux-powered streaming boxes which usually do not "genlock" the destination display to the originating display over a stream. Even if it did genlock, the best approach is to genlock to the ORIGINATING system's rate, not the DESTINATION display's rate.

So a person is asking the wrong question when you say "I want to find my TV's refresh rate" when it's pretty much decoupled and won't help the Low-lag VSYNC ON howto if you're doing a streaming method. Basically the TV's refresh rate tends to become useless for the Low-Lag VSYNC ON HOWTO, when streaming is involved.

The PROPER approach for reducing streaming lag (by about 1 frame) is usually either (A) or (B).

(A) Sync at the originating end, not the destination end of streaming
(basically the originating PC refresh rate)

--or--

(B) Cap at a frame rate slightly lower than the codec frame rate.
(basically the streaming codec refresh rate)


Additional Tip: VSYNC is decoupled, but it can still reduce lag slightly if you do it anyway. If you can, then also turn VSYNC OFF in the video game and drivers, even if the streaming is VSYNC ON on destination display. That way, the streaming codec can intercept framebuffers slightly more quickly. Basically VSYNC OFF on originating end (local display) even though VSYNC ON forced on the destination end (remote display) = can be lower lag with certain kinds of streaming software (more likely to happen with Steam streams rather than ShadowPlay streams).
Similar Situation: Metaphorically, it is similar behavior as Windows compositing. VSYNC OFF in windowed mode has no tearing because the next framebuffer layers is VSYNC ON (Windows Desktop Manager). But turning the earlier framebuffer step VSYNC OFF still reduces lag anyway (even in games that cap to 60fps). Same thing can happen with certain kinds of streaming codecs. Also some streaming codecs (not all) will also work with Fast Sync style modes, simply picking 1 frame every 1/60sec, to stream a 60fps stream from an ultra-high frame rate. Other times, certain streaming codecs behaves as a forced frame rate cap (60 frames per second) with no way to go higher. Different streaming codecs behave differently (e.g. ShadowPlay vs Steam vs Others).

Makes better sense? ;)
This makes much more sense now. Thanks for breaking it down for me. For what it's worth, my originating system has a 144hz gsync display. I actually keep vsync on at all times after reading the in-depth guide here. The frame tearing that I noticed with vsync off and gsync on (specifically in street fighter 4 ultra) is all gone.

After reading this, it seems that the best option would be to completely disable vsync fro mthe drivers and make sure it isn't running in game. My destination is likely a 60 hz television. We may get a new tv sometime soon, but it will most likely still be 60z 4k hdr oled type deal.

</STREAMING-SPECIFIC>

Re: RTSS vs in-engine framerate capping

Posted: 17 Jan 2018, 16:37
by Chief Blur Buster
<STREAMING-SPECIFIC>

Question:

Some streamers can let frame rates run uncapped on the originating system, despite running at a lower frame rate on the destination system. This is beneficial for reducing lag.

Is your streamimg software already capping our framerate at the originating end?

If YES: The streaming software is capping for you. Try letting it do the job. Set game to VSYNC OFF since there's no use for VSYNC ON since there's no effect on streaming tearing effects. You may attempt to use an in-game frame rate cap to try to reduce lag a bit (use 0.1fps below or so). RTSS probably will not peform better than the streamer's intentional built-in capping.

If NO: Instructions will vary but usually it's beneficial to let it run unthrottled. It's behaving like Fast Sync, where higher frame rates will lower lag of a lower frame rate (including 60fps on destination 60Hz displays for streaming).
RealNC wrote:So try vsync off with RTSS set to the exact Hz of the TV to minimize micro-stutter. Worth a try. If that works, then it's going to give you the lowest input lag possible.
Yes, this is correct advice when it comes to streaming that doesn't have built-in capping.

I am not sure which ones does it -- but some streaming software has built-in capping to throttle it to 60fps to allow it to stream at 60fps. That said, VSYNC OFF still is the correct way to handle this situation too.

At this stage, I'm not 100% sure RTSS will reduce lag of streaming of capped streaming software since the streaming is already behaving like RTSS in capping to 60 frames per second. I'm not sure which streaming software has a built-in 60fps-capper on the originating end. The only way to get less lag than RTSS capping is an in-game cap (e.g. CS:GO, Overwatch, etc). However, if streaming has no cap and behaves like a Fast Sync implementation (uncapped on originating end, low-lag tear-free 60Hz on destination end), it may be preferable to let it do that job unless you hate Fast-Sync-style microstuters.

Capping to 60fps using in-game or RTSS (preferably barely below Hz) will fix those microstutters in uncapped streaming software. I understand that ShadowPlay is uncapped, but I don't know about Steam.

</STREAMING-SPECIFIC>

Re: RTSS vs in-engine framerate capping

Posted: 18 Jan 2018, 01:20
by Sparky
For streaming, an option that should be tested is to cap framerate at the highest maintainable multiple of the stream framerate.