From 3011a5bad7fcb21c67805703dc2628e5146aadc6 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sat, 22 Feb 2020 01:28:41 -0800 Subject: [PATCH] Use the unmodified FPS value when sending the launch request --- app/src/main/java/com/limelight/Game.java | 1 + .../com/limelight/nvstream/ConnectionContext.java | 1 - .../java/com/limelight/nvstream/NvConnection.java | 4 +--- .../com/limelight/nvstream/StreamConfiguration.java | 11 +++++++++++ .../main/java/com/limelight/nvstream/http/NvHTTP.java | 2 +- 5 files changed, 14 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/limelight/Game.java b/app/src/main/java/com/limelight/Game.java index c920269f..72ffe979 100644 --- a/app/src/main/java/com/limelight/Game.java +++ b/app/src/main/java/com/limelight/Game.java @@ -438,6 +438,7 @@ public class Game extends Activity implements SurfaceHolder.Callback, StreamConfiguration config = new StreamConfiguration.Builder() .setResolution(prefConfig.width, prefConfig.height) + .setLaunchRefreshRate(prefConfig.fps) .setRefreshRate(chosenFrameRate) .setApp(new NvApp(appName != null ? appName : "app", appId, willStreamHdr)) .setBitrate(prefConfig.bitrate) diff --git a/app/src/main/java/com/limelight/nvstream/ConnectionContext.java b/app/src/main/java/com/limelight/nvstream/ConnectionContext.java index 05b459eb..2638ded0 100644 --- a/app/src/main/java/com/limelight/nvstream/ConnectionContext.java +++ b/app/src/main/java/com/limelight/nvstream/ConnectionContext.java @@ -17,7 +17,6 @@ public class ConnectionContext { public String serverGfeVersion; public int negotiatedWidth, negotiatedHeight; - public int negotiatedFps; public boolean negotiatedHdr; public int videoCapabilities; diff --git a/app/src/main/java/com/limelight/nvstream/NvConnection.java b/app/src/main/java/com/limelight/nvstream/NvConnection.java index 18d786d4..b3f5b37c 100644 --- a/app/src/main/java/com/limelight/nvstream/NvConnection.java +++ b/app/src/main/java/com/limelight/nvstream/NvConnection.java @@ -121,13 +121,11 @@ public class NvConnection { // Lower resolution to 1080p context.negotiatedWidth = 1920; context.negotiatedHeight = 1080; - context.negotiatedFps = context.streamConfig.getRefreshRate(); } else { // Take what the client wanted context.negotiatedWidth = context.streamConfig.getWidth(); context.negotiatedHeight = context.streamConfig.getHeight(); - context.negotiatedFps = context.streamConfig.getRefreshRate(); } // @@ -263,7 +261,7 @@ public class NvConnection { int ret = MoonBridge.startConnection(context.serverAddress, context.serverAppVersion, context.serverGfeVersion, context.negotiatedWidth, context.negotiatedHeight, - context.negotiatedFps, context.streamConfig.getBitrate(), + context.streamConfig.getRefreshRate(), context.streamConfig.getBitrate(), context.streamConfig.getMaxPacketSize(), context.streamConfig.getRemote(), context.streamConfig.getAudioConfiguration(), context.streamConfig.getHevcSupported(), diff --git a/app/src/main/java/com/limelight/nvstream/StreamConfiguration.java b/app/src/main/java/com/limelight/nvstream/StreamConfiguration.java index be4498f8..4f149b24 100644 --- a/app/src/main/java/com/limelight/nvstream/StreamConfiguration.java +++ b/app/src/main/java/com/limelight/nvstream/StreamConfiguration.java @@ -19,6 +19,7 @@ public class StreamConfiguration { private NvApp app; private int width, height; private int refreshRate; + private int launchRefreshRate; private int clientRefreshRateX100; private int bitrate; private boolean sops; @@ -57,6 +58,11 @@ public class StreamConfiguration { config.refreshRate = refreshRate; return this; } + + public StreamConfiguration.Builder setLaunchRefreshRate(int refreshRate) { + config.launchRefreshRate = refreshRate; + return this; + } public StreamConfiguration.Builder setBitrate(int bitrate) { config.bitrate = bitrate; @@ -147,6 +153,7 @@ public class StreamConfiguration { this.width = 1280; this.height = 720; this.refreshRate = 60; + this.launchRefreshRate = 60; this.bitrate = 10000; this.maxPacketSize = 1024; this.remote = STREAM_CFG_AUTO; @@ -170,6 +177,10 @@ public class StreamConfiguration { public int getRefreshRate() { return refreshRate; } + + public int getLaunchRefreshRate() { + return launchRefreshRate; + } public int getBitrate() { return bitrate; diff --git a/app/src/main/java/com/limelight/nvstream/http/NvHTTP.java b/app/src/main/java/com/limelight/nvstream/http/NvHTTP.java index 8d467f7c..93b62373 100644 --- a/app/src/main/java/com/limelight/nvstream/http/NvHTTP.java +++ b/app/src/main/java/com/limelight/nvstream/http/NvHTTP.java @@ -624,7 +624,7 @@ public class NvHTTP { // 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.negotiatedFps > 60 ? 60 : context.negotiatedFps; + 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