@@ -5,7 +5,6 @@ import kotlinx.coroutines.sync.withLock
55import org.schabi.newpipe.extractor.localization.Localization
66import org.schabi.newpipe.extractor.services.youtube.sabr.SabrMediaSegment
77import org.schabi.newpipe.extractor.services.youtube.sabr.SabrSegmentRequest
8- import org.schabi.newpipe.extractor.services.youtube.sabr.YoutubeSabrSession
98import java.time.Instant
109
1110internal class SabrSessionPump {
@@ -37,7 +36,7 @@ internal class SabrSessionPump {
3736 return @withLock segment
3837 }
3938 if (holder.session.isBeyondEnd(request)) return @withLock null
40- holder.session.prepareForRequestedSegment(holder, request)
39+ holder.session.prepareForRequestedSegment(holder, request, localization )
4140 runCatching { holder.session.fetchSegment(request, localization) }
4241 .getOrNull()
4342 ?.also { holder.markServed(it) }
@@ -55,7 +54,7 @@ internal class SabrSessionPump {
5554 return @withLock
5655 }
5756 signal?.let {
58- holder.session.prepareForRequestedSegment(holder, signal)
57+ holder.session.prepareForRequestedSegment(holder, signal, localization )
5958 holder.pendingSignals.remove(signal)
6059 }
6160 holder.session.evictPlayed()
@@ -90,27 +89,4 @@ internal class SabrSessionPump {
9089 }
9190 }
9291 }
93-
94- private fun YoutubeSabrSession.prepareForRequestedSegment (holder : SabrSessionHolder , request : SabrSegmentRequest ) {
95- if (request.isInitializationSegment) return
96- prepareForRewind(request)
97- prepareForForwardJump(request)
98- streamState.setBufferedRangesOverride(emptyList())
99- val startMs = streamState.getSegmentStartMs(request.format, request.sequenceNumber).coerceAtLeast(0L )
100- streamState.setPlayerTimeMs(if (startMs == 0L ) 0L else startMs + 1L )
101- if (request.format.isAudio) {
102- streamState.setRequestTrackMode(AUDIO_ONLY_TRACKS , true , false )
103- streamState.setFullyBuffered(holder.videoFormat, true )
104- streamState.setFullyBuffered(holder.audioFormat, false )
105- } else {
106- streamState.setRequestTrackMode(VIDEO_ONLY_TRACKS , false , true )
107- streamState.setFullyBuffered(holder.audioFormat, true )
108- streamState.setFullyBuffered(holder.videoFormat, false )
109- }
110- }
111-
112- private companion object {
113- const val AUDIO_ONLY_TRACKS = 1
114- const val VIDEO_ONLY_TRACKS = 2
115- }
11692}
0 commit comments