diff --git a/CHANGELOG.md b/CHANGELOG.md index bfcf626f58..5d05fdc831 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -229,6 +229,7 @@ - Build: chiaki's build script starts the native build clean when chiaki's build files change. The OpenSSL upgrade otherwise failed on a machine that had built before (old configured headers left in the cache). ## Unreleased +- **PS5 up to 100 Mbps (Saleh: PXPlay does 100, MoonCast stopped at 50):** Settings, PlayStation: Bitrate has 50, 80 and 100 too, and Custom goes from 2 to 100 Mbps (home and away), on the handheld and the TV. MoonCast's own 50 Mbps cap is gone; chiaki hands the number to the PS5 as it is. The row warns that 80–100 Mbps needs a strong 5 GHz / 6 GHz link (or cable). Auto is unchanged (30 or 20 Mbps by the link). - CONTRIBUTING.md: how to report problems, build, and send changes (one topic per pull request, CHANGELOG in each, lint and CI, the chiaki-ng submodule, no game pictures or secrets, licences). SECURITY.md: report privately through GitHub's security advisories, and what MoonCast keeps where. - README: rewritten for MoonCast (it was still Moonlight's). It covers what the two apps play and how, the features, install and Sunshine's gamepad setting, building with the chiaki-ng submodule, the licences and the credits. diff --git a/app/src/handheld/java/com/limelight/handheld/HandheldHomeActivity.kt b/app/src/handheld/java/com/limelight/handheld/HandheldHomeActivity.kt index acae3aee50..316868bcd1 100644 --- a/app/src/handheld/java/com/limelight/handheld/HandheldHomeActivity.kt +++ b/app/src/handheld/java/com/limelight/handheld/HandheldHomeActivity.kt @@ -1631,11 +1631,11 @@ class HandheldHomeActivity : Activity() { choice(list, stream, "ps5_resolution", "Resolution", "The PS5 streams up to 1080p", listOf("720p" to "720", "1080p" to "1080"), "1080") choice(list, stream, "ps5_fps_home", "Frame rate", "60 fps is smoother; 30 fps lets a weak link keep up", listOf("60 fps" to "60", "30 fps" to "30"), "60") // PS5: 30 or 60 only (#39) - choice(list, stream, "ps5_bitrate_home", "Bitrate", "Auto: 30 Mbps on fast Wi-Fi, 20 otherwise", - listOf("Auto" to "auto", "10" to "10", "15" to "15", "20" to "20", "30" to "30", "Custom" to "custom"), "auto", - onPick = { if (it == "custom") customDialog(stream, "ps5_bitrate_home", "Custom bitrate", "Mbps", 2, 50, 20) }) + choice(list, stream, "ps5_bitrate_home", "Bitrate", "Auto: 30 Mbps on fast Wi-Fi, 20 otherwise. 80–100 Mbps needs a strong 5 GHz / 6 GHz link", + listOf("Auto" to "auto", "10" to "10", "15" to "15", "20" to "20", "30" to "30", "50" to "50", "80" to "80", "100" to "100", "Custom" to "custom"), "auto", + onPick = { if (it == "custom") customDialog(stream, "ps5_bitrate_home", "Custom bitrate", "Mbps", 2, 100, 20) }) if (stream.getString("ps5_bitrate_home", "auto") == "custom") - customNumber(list, stream, "ps5_bitrate_home", "Custom bitrate", "2 to 50 Mbps", "Mbps", 2, 50, 20) + customNumber(list, stream, "ps5_bitrate_home", "Custom bitrate", "2 to 100 Mbps. 80–100 needs a strong 5 GHz / 6 GHz link", "Mbps", 2, 100, 20) choice(list, stream, "ps5_codec", "Video codec", "HEVC looks better at the same bitrate", listOf("H.264" to "h264", "HEVC" to "h265"), "h265") } if (mode != "home") { @@ -1645,9 +1645,9 @@ class HandheldHomeActivity : Activity() { listOf("60 fps" to "60", "30 fps" to "30"), "60") // PS5: 30 or 60 only (#39) choice(list, stream, "away_bitrate", "Bitrate", "Auto: capped by the Wi-Fi link", listOf("Auto" to "auto", "8" to "8", "10" to "10", "15" to "15", "Custom" to "custom"), "auto", - onPick = { if (it == "custom") customDialog(stream, "away_bitrate", "Custom bitrate", "Mbps", 2, 50, 10) }) + onPick = { if (it == "custom") customDialog(stream, "away_bitrate", "Custom bitrate", "Mbps", 2, 100, 10) }) if (stream.getString("away_bitrate", "auto") == "custom") - customNumber(list, stream, "away_bitrate", "Custom bitrate", "2 to 50 Mbps", "Mbps", 2, 50, 10) + customNumber(list, stream, "away_bitrate", "Custom bitrate", "2 to 100 Mbps (the internet path rarely carries more than 30)", "Mbps", 2, 100, 10) choice(list, stream, "away_codec", "Video codec", "HEVC looks better at the same bitrate", listOf("H.264" to "h264", "HEVC" to "h265"), "h265") } choice(list, stream, "ps5_on_disconnect", "When I disconnect", "What happens to the PS5 after you leave a game", diff --git a/app/src/main/java/com/limelight/Ps5StreamActivity.kt b/app/src/main/java/com/limelight/Ps5StreamActivity.kt index 8eb72705b5..abb46385f9 100644 --- a/app/src/main/java/com/limelight/Ps5StreamActivity.kt +++ b/app/src/main/java/com/limelight/Ps5StreamActivity.kt @@ -171,10 +171,11 @@ class Ps5StreamActivity : Activity(), SurfaceHolder.Callback, com.limelight.home if (h264) Codec.CODEC_H264 else Codec.CODEC_H265 ) // Home network: Auto = 30 or 20 Mbps from this device's own link (chiaki's 1080p preset is 15), or the - // number picked in Settings, or a Custom value (2-50 Mbps). Over the internet keep the preset - the PS5 backs off by itself. + // number picked in Settings, or a Custom value (2-100 Mbps; chiaki passes it to the PS5 as is, PXPlay runs 100). + // Over the internet keep the preset - the PS5 backs off by itself. // ~30 % of the link is what a busy 2.4 GHz channel really delivers without queueing val linkCap = if (link > 0) (link * 300).coerceIn(5000, 30000) else 30000 - fun customKbps(key: String, def: Int) = (prefs.getString("${key}_custom", def.toString())?.toIntOrNull() ?: def).coerceIn(2, 50) * 1000 + fun customKbps(key: String, def: Int) = (prefs.getString("${key}_custom", def.toString())?.toIntOrNull() ?: def).coerceIn(2, 100) * 1000 val homeSel = prefs.getString("ps5_bitrate_home", "auto") ?: "auto" val homeKbps = when (homeSel) { "custom" -> customKbps("ps5_bitrate_home", 20) diff --git a/app/src/tv/java/com/limelight/home/HomeActivity.kt b/app/src/tv/java/com/limelight/home/HomeActivity.kt index 465e52e84d..8ff0cb68bb 100644 --- a/app/src/tv/java/com/limelight/home/HomeActivity.kt +++ b/app/src/tv/java/com/limelight/home/HomeActivity.kt @@ -1091,11 +1091,11 @@ class HomeActivity : Activity(), PhoneLink.Listener { // The PS5 streams at 30 or 60 fps only, so no Custom here (#39) choice(list, "ps5_fps_home", "Frame rate", "60 fps is smoother; 30 fps lets a weak link keep up", listOf("60 fps" to "60", "30 fps" to "30"), "60") - choice(list, "ps5_bitrate_home", "Bitrate", "Auto: 30 Mbps on fast Wi-Fi or cable, 20 otherwise", - listOf("Auto" to "auto", "10" to "10", "15" to "15", "20" to "20", "30" to "30", "Custom" to "custom"), "auto", - onPick = { if (it == "custom") customDialog("ps5_bitrate_home", "Custom bitrate", "Mbps", 2, 50, 20, cancelTo = "auto") }) + choice(list, "ps5_bitrate_home", "Bitrate", "Auto: 30 Mbps on fast Wi-Fi or cable, 20 otherwise. 80–100 Mbps needs cable or a strong 5 GHz / 6 GHz link", + listOf("Auto" to "auto", "10" to "10", "15" to "15", "20" to "20", "30" to "30", "50" to "50", "80" to "80", "100" to "100", "Custom" to "custom"), "auto", + onPick = { if (it == "custom") customDialog("ps5_bitrate_home", "Custom bitrate", "Mbps", 2, 100, 20, cancelTo = "auto") }) if (stream.getString("ps5_bitrate_home", "auto") == "custom") - customNumber(list, "ps5_bitrate_home", "Custom bitrate", "2 to 50 Mbps", "Mbps", 2, 50, 20) + customNumber(list, "ps5_bitrate_home", "Custom bitrate", "2 to 100 Mbps. 80–100 needs cable or a strong 5 GHz / 6 GHz link", "Mbps", 2, 100, 20) choice(list, "ps5_codec", "Video codec", "HEVC looks better at the same bitrate", listOf("H.264" to "h264", "HEVC" to "h265"), "h265") } if (mode != "home") { @@ -1105,9 +1105,9 @@ class HomeActivity : Activity(), PhoneLink.Listener { listOf("60 fps" to "60", "30 fps" to "30"), "60") choice(list, "away_bitrate", "Bitrate", "Auto: capped by this TV's Wi-Fi link", listOf("Auto" to "auto", "8" to "8", "10" to "10", "15" to "15", "Custom" to "custom"), "auto", - onPick = { if (it == "custom") customDialog("away_bitrate", "Custom bitrate", "Mbps", 2, 50, 10, cancelTo = "auto") }) + onPick = { if (it == "custom") customDialog("away_bitrate", "Custom bitrate", "Mbps", 2, 100, 10, cancelTo = "auto") }) if (stream.getString("away_bitrate", "auto") == "custom") - customNumber(list, "away_bitrate", "Custom bitrate", "2 to 50 Mbps", "Mbps", 2, 50, 10) + customNumber(list, "away_bitrate", "Custom bitrate", "2 to 100 Mbps (the internet path rarely carries more than 30)", "Mbps", 2, 100, 10) choice(list, "away_codec", "Video codec", "HEVC looks better at the same bitrate", listOf("H.264" to "h264", "HEVC" to "h265"), "h265") } choice(list, "ps5_on_disconnect", "When I disconnect", "What happens to the PS5 after you leave a game",