diff --git a/Limelight/Stream/Connection.m b/Limelight/Stream/Connection.m index 630ac06..63d6f59 100644 --- a/Limelight/Stream/Connection.m +++ b/Limelight/Stream/Connection.m @@ -447,6 +447,11 @@ void ClConnectionStatusUpdate(int status) if (config.enableHdr) { config.allowHevc = YES; } + + // Streaming at resolutions above 4K requires HEVC + if (config.width > 4096 || config.height > 4096) { + config.allowHevc = YES; + } // On iOS 11, we can use HEVC if the server supports encoding it // and this device has hardware decode for it (A9 and later). diff --git a/Limelight/Stream/StreamManager.m b/Limelight/Stream/StreamManager.m index 3e9a354..4f4a269 100644 --- a/Limelight/Stream/StreamManager.m +++ b/Limelight/Stream/StreamManager.m @@ -65,6 +65,16 @@ return; } + if (_config.width > 4096 || _config.height > 4096) { + // Pascal added support for 8K HEVC encoding support. Maxwell 2 could encode HEVC but only up to 4K. + // We can't directly identify Pascal, but we can look for HEVC Main10 which was added in the same generation. + NSString* codecSupport = [serverInfoResp getStringTag:@"ServerCodecModeSupport"]; + if (codecSupport == nil || !([codecSupport intValue] & 0x200)) { + [_callbacks launchFailed:@"Your host PC's GPU doesn't support streaming video resolutions over 4K."]; + return; + } + } + // resumeApp and launchApp handle calling launchFailed if ([serverState hasSuffix:@"_SERVER_BUSY"]) { // App already running, resume it