Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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") {
Expand All @@ -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",
Expand Down
5 changes: 3 additions & 2 deletions app/src/main/java/com/limelight/Ps5StreamActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
12 changes: 6 additions & 6 deletions app/src/tv/java/com/limelight/home/HomeActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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") {
Expand All @@ -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",
Expand Down