Skip to content

Commit 3f1b42b

Browse files
committed
fix: prepare sabr cache misses
1 parent 0ccdc5c commit 3f1b42b

2 files changed

Lines changed: 5 additions & 6 deletions

File tree

src/main/kotlin/dev/typetype/server/services/SabrSessionPump.kt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ internal class SabrSessionPump {
3737
return@withLock segment
3838
}
3939
if (holder.session.isBeyondEnd(request)) return@withLock null
40-
if (!request.isInitializationSegment) holder.session.prepareForForwardJump(request)
40+
holder.session.prepareForRequestedSegment(request)
4141
runCatching { holder.session.fetchSegment(request, localization) }
4242
.getOrNull()
4343
?.also { holder.markServed(it) }
@@ -93,10 +93,7 @@ internal class SabrSessionPump {
9393

9494
private fun YoutubeSabrSession.prepareForRequestedSegment(request: SabrSegmentRequest) {
9595
if (request.isInitializationSegment) return
96-
val max = streamState.getMaxSegment(request.format)
97-
when {
98-
request.sequenceNumber <= max -> prepareForRewind(request)
99-
request.sequenceNumber > max + 1 -> prepareForForwardJump(request)
100-
}
96+
prepareForRewind(request)
97+
prepareForForwardJump(request)
10198
}
10299
}

src/test/kotlin/dev/typetype/server/services/SabrSessionPumpTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class SabrSessionPumpTest {
3030
val segment = mediaSegment(startMs, durationMs)
3131
every { session.getCachedSegment(request) } returns null
3232
every { session.isBeyondEnd(request) } returns false
33+
every { session.prepareForRewind(request) } returns Unit
3334
every { session.prepareForForwardJump(request) } returns Unit
3435
every { session.fetchSegment(request, any<Localization>()) } returns segment
3536
every { session.setPlayHeadMs(startMs + durationMs) } returns Unit
@@ -45,6 +46,7 @@ class SabrSessionPumpTest {
4546
val fetched = SabrSessionPump().fetchSegment(holder, request)
4647

4748
assertSame(segment, fetched)
49+
verify { session.prepareForRewind(request) }
4850
verify { session.prepareForForwardJump(request) }
4951
verify { session.fetchSegment(request, any<Localization>()) }
5052
verify { session.setPlayHeadMs(startMs + durationMs) }

0 commit comments

Comments
 (0)