Skip to content

Commit d59f8b1

Browse files
committed
fix: anchor cold sabr seeks on audio
1 parent 90c857a commit d59f8b1

2 files changed

Lines changed: 6 additions & 2 deletions

File tree

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,9 @@ internal class SabrPlaybackSessionService(private val sessionStore: SabrSessionS
166166
generation: Long,
167167
primeSession: Boolean = false,
168168
): Unit {
169-
val sequence = playbackStartSequence(videoFormat, playerTimeMs)
170-
val request = SabrSegmentRequest.media(videoFormat, sequence)
169+
val targetFormat = if (primeSession) audioFormat else videoFormat
170+
val sequence = playbackStartSequence(targetFormat, playerTimeMs)
171+
val request = SabrSegmentRequest.media(targetFormat, sequence)
171172
val startMs = session.streamState.getSegmentStartMs(request.format, request.sequenceNumber).coerceAtLeast(0L)
172173
setReaderPosition(request.format, startMs, generation)
173174
if (startMs < session.streamState.getMinBufferedEndMs()) {

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ class SabrPlaybackSessionServiceTest {
4646
assertEquals(88_168L, result.startTimeMs)
4747
assertFalse(result.ready)
4848
assertEquals(88_168L, holder.playerTimeMs())
49+
val request = holder.consumeForwardSeek()
50+
assertEquals(audio.itag, request?.format?.itag)
51+
assertEquals(9, request?.sequenceNumber)
4952
coVerify(exactly = 0) { store.preflightPlayback(holder, 88_168L) }
5053
verify { store.startPump(holder) }
5154
verify { store.warmPlaybackAsync(holder) }

0 commit comments

Comments
 (0)