drop estimateContentLength from stream URLs

The server's byte estimate can be shorter than the transcoded stream, so the player stops at Content-Length and some tracks end early. Let the server stream the true length instead.
This commit is contained in:
austinried
2026-10-04 00:29:59 +00:00
parent 95216143dc
commit 258dde6c86
2 changed files with 2 additions and 4 deletions
@@ -136,8 +136,6 @@ class SubsonicSource(
"stream",
buildMap {
put("id", songId)
val transcodes = maxBitrate > 0 || !streamFormat.isNullOrEmpty()
if (transcodes) put("estimateContentLength", "true")
if (maxBitrate > 0) put("maxBitRate", maxBitrate.toString())
streamFormat?.takeIf { it.isNotEmpty() }?.let { put("format", it) }
},
@@ -416,7 +416,7 @@ class SubsonicSourceTest {
val uri = SubsonicSource(1, client(), maxBitrate = 128).streamUri("s1").toString()
assertTrue(uri, uri.contains("maxBitRate=128"))
assertTrue(uri, uri.contains("estimateContentLength=true"))
assertFalse(uri, uri.contains("estimateContentLength"))
}
@Test
@@ -433,7 +433,7 @@ class SubsonicSourceTest {
val uri = SubsonicSource(1, client(), streamFormat = "opus").streamUri("s1").toString()
assertTrue(uri, uri.contains("format=opus"))
assertTrue(uri, uri.contains("estimateContentLength=true"))
assertFalse(uri, uri.contains("estimateContentLength"))
}
private fun client() =