Disable SOPS for streams over 60 FPS for GFE 3.20.3

This commit is contained in:
Cameron Gutman 2020-04-12 12:13:38 -07:00
parent 4cca3ac922
commit 63072aa8e1

View File

@ -621,11 +621,6 @@ public class NvHTTP {
}
public boolean launchApp(ConnectionContext context, int appId, boolean enableHdr) throws IOException, XmlPullParserException {
// Using an FPS value over 60 causes SOPS to default to 720p60,
// so force it to 60 when starting. This won't impact our ability
// to get > 60 FPS while actually streaming though.
int fps = context.streamConfig.getLaunchRefreshRate() > 60 ? 60 : context.streamConfig.getLaunchRefreshRate();
// Using an unsupported resolution (not 720p, 1080p, or 4K) causes
// GFE to force SOPS to 720p60. This is fine for < 720p resolutions like
// 360p or 480p, but it is not ideal for 1440p and other resolutions.
@ -639,10 +634,20 @@ public class NvHTTP {
enableSops = false;
}
// Using SOPS with FPS values over 60 causes GFE to fall back
// to 720p60. On previous GFE versions, we could avoid this by
// forcing the FPS value to 60 when launching the stream, but
// now on GFE 3.20.3 that seems to trigger some sort of
// frame rate limiter that locks the game to 60 FPS.
if (context.streamConfig.getLaunchRefreshRate() > 60) {
LimeLog.info("Disabling SOPS due to high frame rate: "+context.streamConfig.getLaunchRefreshRate());
enableSops = false;
}
String xmlStr = openHttpConnectionToString(baseUrlHttps +
"/launch?" + buildUniqueIdUuidString() +
"&appid=" + appId +
"&mode=" + context.negotiatedWidth + "x" + context.negotiatedHeight + "x" + fps +
"&mode=" + context.negotiatedWidth + "x" + context.negotiatedHeight + "x" + context.streamConfig.getLaunchRefreshRate() +
"&additionalStates=1&sops=" + (enableSops ? 1 : 0) +
"&rikey="+bytesToHex(context.riKey.getEncoded()) +
"&rikeyid="+context.riKeyId +