mirror of
https://github.com/austinried/subtracks.git
synced 2026-11-10 15:11:58 +01:00
stop estimating a length for Ogg-based transcodes
Streaming Opus from Navidrome failed the first play with a read out of range, then worked. Ogg seeks by binary-searching for the last page from the end of the file, and the length the app estimates for a transcode overshoots the real output, so that search reads past the data and the server answers 416. Opus, Ogg and Vorbis now get no estimate: seeking falls back to what is buffered, but playback is not scuppered by a length we cannot know. Downloads were unaffected because they never carried the estimate.
This commit is contained in:
@@ -39,6 +39,13 @@ class StreamLengthTest {
|
||||
assertTrue(cdQuality >= 320 * 1_411_200 / 8)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun oggBasedFormatsGetNoEstimateBecauseSeekingReadsFromTheEnd() {
|
||||
assertNull(declaredStreamLength(180_000, StreamQuality(128, "opus")))
|
||||
assertNull(declaredStreamLength(180_000, StreamQuality(128, "ogg")))
|
||||
assertNull(declaredStreamLength(180_000, StreamQuality(128, "vorbis")))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun theLengthSuffixRoundTripsThroughTheFragment() {
|
||||
val uri = "http://host/rest/stream.view?id=s1" + streamLengthSuffix(1_234_567)
|
||||
|
||||
Reference in New Issue
Block a user