From 59d087adf5f1b09a2d18445ede5a1f5b7b7e6c90 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sat, 28 Jul 2018 00:25:52 -0700 Subject: [PATCH] Add function for querying maximum supported streaming frame rate --- app/settings/streamingpreferences.cpp | 26 ++++++++++++++++++++++++++ app/settings/streamingpreferences.h | 2 ++ 2 files changed, 28 insertions(+) diff --git a/app/settings/streamingpreferences.cpp b/app/settings/streamingpreferences.cpp index 1b499c82..2d37252b 100644 --- a/app/settings/streamingpreferences.cpp +++ b/app/settings/streamingpreferences.cpp @@ -67,6 +67,32 @@ bool StreamingPreferences::hasAnyHardwareAcceleration() 1920, 1080, 60); } +int StreamingPreferences::getMaximumStreamingFrameRate() +{ + // Never let the maximum drop below 60 FPS + int maxFrameRate = 60; + + if (SDL_InitSubSystem(SDL_INIT_VIDEO) != 0) { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, + "SDL_InitSubSystem(SDL_INIT_VIDEO) failed: %s", + SDL_GetError()); + return maxFrameRate; + } + + for (int i = 0; i < SDL_GetNumVideoDisplays(); i++) { + SDL_DisplayMode mode; + if (SDL_GetCurrentDisplayMode(i, &mode) == 0) { + // Cap the frame rate at 90 FPS, since I can't seem to get + // much more out of GFE even with the game rendering at > 300 FPS. + maxFrameRate = qMax(maxFrameRate, qMin(90, mode.refresh_rate)); + } + } + + SDL_QuitSubSystem(SDL_INIT_VIDEO); + + return maxFrameRate; +} + int StreamingPreferences::getDefaultBitrate(int width, int height, int fps) { if (width * height * fps <= 1280 * 720 * 30) { diff --git a/app/settings/streamingpreferences.h b/app/settings/streamingpreferences.h index b622758d..8ec44d36 100644 --- a/app/settings/streamingpreferences.h +++ b/app/settings/streamingpreferences.h @@ -16,6 +16,8 @@ public: Q_INVOKABLE static bool hasAnyHardwareAcceleration(); + Q_INVOKABLE static int getMaximumStreamingFrameRate(); + void reload(); enum AudioConfig