Question / Help What is automatic low latency tuning?

danjustkidding

New Member
I am curious as to what is automatic low latency tuning is aswell as what changing the value of the "Latency tuning factor" does.

The estimator only says to change the "Minimize Network Impact" if you get high ping so im curious as to what this does and If I should have both "Automatic low latency Mode" and "Minimize Network Impact" on at the same time or just be using one.

Thanks!
 

R1CH

Forum Admin
Developer
You don't need to use it if you're not having a problem, that's why it's an advanced option. I can't really tell you what it does because the effects vary depending on the problem you're having.
 

Bensam123

Member
I've asked and still wonder the same thing. All I got was 'it's on a need to know basis and you don't need to know' sort of answer. It's hard to use a option when you don't know exactly what it does. Even if it's 'varied' I'd still like to know what it does.
 

R1CH

Forum Admin
Developer
It adjusts the per-packet spacing to an automatic value to try to send MTU sized segments at the fastest interval. The effects of this will vary wildly depending on your network setup. Don't enable it if you don't need to since it's likely to cause problems.
 

danjustkidding

New Member
Im asking because I get ping spikes and although the Minimize Network Impact option helped, it did not completely solve my ping spike issue, so im asking you for a simple answer as to what that option did and if I should be using it to solve my ping issue.

Didn't have to be so secretive about it
 

R1CH

Forum Admin
Developer
I developed the low latency options, and the two advanced options are basically debug options to fine tune the algorithm which aren't meant to be used if everything is working OK which is why I asked if you are having an issue. Obviously there is no way to completely remove the impact of streaming without active queue management, so the minimize network impact will never be perfect. What kind of results are you seeing?

If you do wish to tweak with it, I would not recommend using the automatic mode right away, but instead try raising the factor in increments of 5 or so up to about 40 to see if it helps. This may make your stream less stable so be sure to stream to a reliable server. Everything depends a lot on your connection type, upload speed, TCP options and where the queuing is occurring as to what works best.

And yes, I do have to be somewhat secretive about it. Past experience has shown users will randomly touch all kinds of advanced options and cause problems for themselves, then come and ask for support.
 

Bensam123

Member
Not everyone is a child or a 'user'. I touch buttons and tweak knobs to make things better, if I break things in the process I simply revert to older settings or reinstall the program. Troubleshooting 101.

I also asked a few different times because automatic mode does help elevate spikes I get (which happen every 10s or so), but I wanted to know what tuning did so I could try to improve on this. I thought tuning actually was part of the automatic option, not a completely different one. So raising tuning increases aggressiveness of what? Is it completely unrelated to the automatic option?

Sometimes people break things because they aren't properly explained too.
 

Lain

Forum Admin
Lain
Forum Moderator
Developer
No one is calling you a child, bensam. You are obviously an intelligent individual. However R1CH has good reasoning behind what he is saying.

Let me give you some insight into our line of thinking: Sometimes I don't explain certain features in the advanced section myself because they are fixes for very specific circumstances that work in a very specific way and I just do not want them to be used outside of a specific scenario. This is usually pretty much the entirety of the advanced section. It's a section that's only meant to be used under certain/rare circumstances. Sometimes I can't explain something without having to whip out definitions upon definitions and then creating even more questions from the answers.

For example, "Sync audio to video time". Sounds like some sort of sync fix right? Well, the actual answer is it a total code hack, it completely throws away all returned desktop audio timestamps from WASAPI (desktop audio timestamps are the base for all audio timing in the audio subsystem) and instead uses the timestamp received from the latest video frame as a base and then smooths out the rest of the timestamp values between frames using approximations of the returned audio data size. It's meant as an experimental fix for device drivers that return bad/slightly off timestamps (though lately it hasn't been needed because it I made it automatically turn on by itself now, so the feature is now actually sort of redundant). Or the Mic QPC timestamps in the latest test. I could explain that, but even if I put that into the description, 99.9% of people are going to look at me with a blank expression and go "whhhuuhh..?"

Of course if you -really- want to know what a feature does specifically you could always just look at the code. It's completely open source you know, its exact function is completely visible and known to all if you really wanted to know.

Sometimes I can't explain to people when they should use it of their own volition. Sometimes it's a feature that's only meant to be used when we tell someone to use it. Like Mic QPC timestamps, like sync audio to video time, like triple buffering, like automatic low latency mode. Sometimes they are experimental features for very specific circumstances that may or may not be removed at a later time. Like "use negative CTS". These features aren't necessarily meant for "power users", but often meant as "features that should really only be used if we ask you to use them"

We can't really help if a user wants to mess with a feature without knowing what it is. The only thing we can do is put it separate in an advanced section and simply pray that people will -hopefully- think twice before using it. Some of these features are meant to be used only to be used when we tell people to use it.
 

Bensam123

Member
Those features do help some people and they are in the build for a reason correct?

There are two different lines of reasoning here. One is people shouldn't use a option because they break things and the other is they should use the option because it fixes things. How can people properly use or understand a option without it being explained?

I understand what the Sync to video time is as you explained it a few different times across different posts and it makes sense. The name doesn't make sense and you end up needing to explain it regardless so people understand when exactly to turn it on. A better title would be "Alternative audio time sync" and a definition of "Used to fix audio sync errors.". Very simple and straight forward and also tells users what it does and when they should implement it.

If options really are that experimental and most likely to cause errors, they should be command line switches. But since they're in the UI I'm guessing you guys want people to use them because they can fix errors (which is entirely true). That also means you need to sometimes explain things and it seems like you guys are more frustrated with the explaining portion then people breaking things. I've been on the forums since November and I've helped and also read through quite a few posts in the bug and help forums, I don't think I've seen any problems that were solely reliant on advanced options. There are a lot of people with bitrate set wrong, but that's pretty much it.

I'm not trying to be disrespectful, it just seems like there is starting to be a gap forming between what you guys consider 'users' which don't actually need to know what they're doing (and you try to keep it that way) and staff members.

If these options were explained in the UI you more then likely wouldn't hear about it on the forums unless clarification is needed as well. Back in Nov pretty much every option in OBS had helpful text and was labeled appropriately. It was easy to understand and intuitive. Now we have options which aren't described, have cryptic labeling which isn't even relevant to what they do (like your sync option), and/or people refuse to explain them when asked multiple times 'Because it's need to know'. I think this is actually very counterproductive to educating users and helping them learn how to properly use the program. It's a good way to keep them in line and dependent upon other people who 'know' and make sure they continue coming back here for help, if that's your objective.

Obviously that's a bit extreme as we're simply talking about the advanced options, but I've met quite a few people who think buffer size shouldn't be touched, audio shouldn't be set higher then 128, fps higher then 30 shouldn't be used, or there is a absolute bitrate or maximum for a certain resolution and there are quite a few circumstances when none of the above are applicable or correct. I've seen this happen before to other open and free tools. I really appreciate what is happening here and hope you guys don't lock users in to being dependent upon you.
 

Lain

Forum Admin
Lain
Forum Moderator
Developer
Bensam.. Listen. Everything is transparent here. The code is completely open source. You want to know EXACTLY what a feature does? It's right there in the code. Don't react negatively just because I don't explain exactly what every single advanced option does. I just.. I just please for the love of god don't do this to me, okay? Don't. I'm begging you. I am literally on my knees begging you. I mean, seriously, I have enough to worry about as it is. I haven't even had the time to update my super out-of-date help file in ages. The thing is ancient from like version 0.32a. The first version.

I mean seriously, please, don't do this to me. Don't do this to us. I understand the option names aren't always named the best, I understand that the app isn't perfect, I understand that we don't actually always document every single one of these advanced features in their entirety or use the best names for them, but we're human. The way I work on things and schedule and prioritize things isn't perfect. The application isn't perfect, probably never will be perfect. Nothing is perfect.

I would love to make it so that no one has to mess with a single option ever and never even needs to have a single worry about these things, or worry about their app crashing, or worry about their device working, but every single god forsaken computer on this planet uses different hardware, different devices, every single one of them having some flaw or another, every app (including my own) having some flaw or another. Every driver having some flaw or another. I try my best to deal with all these situations and have to update this stuff and think about these things all the time. I have literally at least a dozen things I have to work on at any given time, and that doesn't even include major features.

I would love to educate people on all the details about streaming, the details of x264 (which I don't even know myself entirely at all), I try my best to when I can or when they come in to ask questions, and we DO and HAVE answered your questions about these advanced features when you really want to know.

I am not running a company. I am just a guy, who was bored, who loves to code, who made an app that just happened to be at least semi-useful for some people when it's working as intended. So cut us some slack.
 

Skeebo

New Member
Just had to say, I really don't care much about the stressful side of the topic. But, thanks for this topic anyways! I learned a lot from it and I am grateful. Not only to learn more advanced details of this software, but I'm also grateful that you put in the effort you do for all these people to stream video games. Thanks Rich, Jim, and whoever else is on your team... seriously lol...someone should thank you guys at least. So, I made this account to do just that. Goodnight bud
 

evets90

New Member
Please get back on topic (the amount of off topic "go find it yourself" ranting is unacceptable) and explain what this does. I would like to know as I am having ping problems with OBS.
 
Top