fix: remove trailer data source layer leaking for normal playback

This commit is contained in:
tapframe 2026-04-07 01:30:39 +05:30
parent f4e6b7fef1
commit b7e12cb26a
6 changed files with 22 additions and 4 deletions

View file

@ -1,9 +1,17 @@
package com.nuvio.app.features.player
import androidx.media3.datasource.DataSource
import androidx.media3.datasource.DefaultHttpDataSource
import com.nuvio.app.features.trailer.YoutubeChunkedDataSourceFactory
internal object PlatformPlaybackDataSourceFactory {
fun create(defaultRequestHeaders: Map<String, String>): DataSource.Factory =
YoutubeChunkedDataSourceFactory(defaultRequestHeaders = defaultRequestHeaders)
fun create(
defaultRequestHeaders: Map<String, String>,
useYoutubeChunkedPlayback: Boolean,
): DataSource.Factory =
if (useYoutubeChunkedPlayback) {
YoutubeChunkedDataSourceFactory(defaultRequestHeaders = defaultRequestHeaders)
} else {
DefaultHttpDataSource.Factory().setDefaultRequestProperties(defaultRequestHeaders)
}
}

View file

@ -63,6 +63,7 @@ actual fun PlatformPlayerSurface(
sourceUrl: String,
sourceAudioUrl: String?,
sourceHeaders: Map<String, String>,
useYoutubeChunkedPlayback: Boolean,
modifier: Modifier,
playWhenReady: Boolean,
resizeMode: PlayerResizeMode,
@ -116,7 +117,10 @@ actual fun PlatformPlayerSurface(
.setTsExtractorTimestampSearchBytes(1500 * TsExtractor.TS_PACKET_SIZE)
val mediaSourceFactory = DefaultMediaSourceFactory(
PlatformPlaybackDataSourceFactory.create(defaultRequestHeaders = sanitizedSourceHeaders),
PlatformPlaybackDataSourceFactory.create(
defaultRequestHeaders = sanitizedSourceHeaders,
useYoutubeChunkedPlayback = useYoutubeChunkedPlayback,
),
extractorsFactory,
)

View file

@ -4,6 +4,9 @@ import androidx.media3.datasource.DataSource
import androidx.media3.datasource.DefaultHttpDataSource
internal object PlatformPlaybackDataSourceFactory {
fun create(defaultRequestHeaders: Map<String, String>): DataSource.Factory =
fun create(
defaultRequestHeaders: Map<String, String>,
useYoutubeChunkedPlayback: Boolean,
): DataSource.Factory =
DefaultHttpDataSource.Factory().setDefaultRequestProperties(defaultRequestHeaders)
}

View file

@ -170,6 +170,7 @@ fun TrailerPlayerPopup(
PlatformPlayerSurface(
sourceUrl = playbackSource.videoUrl,
sourceAudioUrl = playbackSource.audioUrl,
useYoutubeChunkedPlayback = true,
modifier = Modifier.fillMaxWidth(),
playWhenReady = true,
resizeMode = PlayerResizeMode.Fit,

View file

@ -40,6 +40,7 @@ expect fun PlatformPlayerSurface(
sourceUrl: String,
sourceAudioUrl: String? = null,
sourceHeaders: Map<String, String> = emptyMap(),
useYoutubeChunkedPlayback: Boolean = false,
modifier: Modifier = Modifier,
playWhenReady: Boolean = true,
resizeMode: PlayerResizeMode = PlayerResizeMode.Fit,

View file

@ -23,6 +23,7 @@ actual fun PlatformPlayerSurface(
sourceUrl: String,
sourceAudioUrl: String?,
sourceHeaders: Map<String, String>,
useYoutubeChunkedPlayback: Boolean,
modifier: Modifier,
playWhenReady: Boolean,
resizeMode: PlayerResizeMode,