mirror of
https://github.com/gabehf/Fladder.git
synced 2026-03-07 13:38:13 -08:00
fix: Disable media tunneling by default with the option to enable it (#515)
Co-authored-by: PartyDonut <PartyDonut@users.noreply.github.com>
This commit is contained in:
parent
3ce0ed6dbc
commit
1942738fe4
16 changed files with 256 additions and 199 deletions
|
|
@ -93,6 +93,7 @@ enum class SegmentSkip(val raw: Int) {
|
|||
|
||||
/** Generated class from Pigeon that represents data sent in messages. */
|
||||
data class PlayerSettings (
|
||||
val enableTunneling: Boolean,
|
||||
val skipTypes: Map<SegmentType, SegmentSkip>,
|
||||
val skipForward: Long,
|
||||
val skipBackward: Long
|
||||
|
|
@ -100,14 +101,16 @@ data class PlayerSettings (
|
|||
{
|
||||
companion object {
|
||||
fun fromList(pigeonVar_list: List<Any?>): PlayerSettings {
|
||||
val skipTypes = pigeonVar_list[0] as Map<SegmentType, SegmentSkip>
|
||||
val skipForward = pigeonVar_list[1] as Long
|
||||
val skipBackward = pigeonVar_list[2] as Long
|
||||
return PlayerSettings(skipTypes, skipForward, skipBackward)
|
||||
val enableTunneling = pigeonVar_list[0] as Boolean
|
||||
val skipTypes = pigeonVar_list[1] as Map<SegmentType, SegmentSkip>
|
||||
val skipForward = pigeonVar_list[2] as Long
|
||||
val skipBackward = pigeonVar_list[3] as Long
|
||||
return PlayerSettings(enableTunneling, skipTypes, skipForward, skipBackward)
|
||||
}
|
||||
}
|
||||
fun toList(): List<Any?> {
|
||||
return listOf(
|
||||
enableTunneling,
|
||||
skipTypes,
|
||||
skipForward,
|
||||
skipBackward,
|
||||
|
|
|
|||
|
|
@ -32,8 +32,8 @@ fun ItemHeader(state: PlayableData?) {
|
|||
contentDescription = title ?: "logo",
|
||||
alignment = Alignment.CenterStart,
|
||||
modifier = Modifier
|
||||
.fillMaxHeight(0.25f)
|
||||
.fillMaxWidth(0.5f)
|
||||
.fillMaxHeight(0.20f)
|
||||
.fillMaxWidth(0.45f)
|
||||
)
|
||||
} else {
|
||||
title?.let {
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ import androidx.core.content.getSystemService
|
|||
import androidx.media3.common.AudioAttributes
|
||||
import androidx.media3.common.C
|
||||
import androidx.media3.common.Player
|
||||
import androidx.media3.common.TrackSelectionParameters
|
||||
import androidx.media3.common.Tracks
|
||||
import androidx.media3.common.util.UnstableApi
|
||||
import androidx.media3.datasource.DataSource
|
||||
|
|
@ -41,6 +40,7 @@ import androidx.media3.ui.PlayerView
|
|||
import io.github.peerless2012.ass.media.kt.buildWithAssSupport
|
||||
import io.github.peerless2012.ass.media.type.AssRenderType
|
||||
import nl.jknaapen.fladder.messengers.properlySetSubAndAudioTracks
|
||||
import nl.jknaapen.fladder.objects.PlayerSettingsObject
|
||||
import nl.jknaapen.fladder.objects.VideoPlayerObject
|
||||
import nl.jknaapen.fladder.utility.getAudioTracks
|
||||
import nl.jknaapen.fladder.utility.getSubtitleTracks
|
||||
|
|
@ -76,41 +76,37 @@ internal fun ExoPlayer(
|
|||
|
||||
val audioAttributes = AudioAttributes.Builder()
|
||||
.setUsage(C.USAGE_MEDIA)
|
||||
.setContentType(C.AUDIO_CONTENT_TYPE_MOVIE)
|
||||
.build()
|
||||
|
||||
val renderersFactory = DefaultRenderersFactory(context)
|
||||
.setExtensionRendererMode(DefaultRenderersFactory.EXTENSION_RENDERER_MODE_ON)
|
||||
.setEnableDecoderFallback(true)
|
||||
|
||||
val trackSelector = DefaultTrackSelector(context).apply {
|
||||
setParameters(buildUponParameters().apply {
|
||||
setTunnelingEnabled(PlayerSettingsObject.settings.value?.enableTunneling ?: false)
|
||||
setAllowInvalidateSelectionsOnRendererCapabilitiesChange(true)
|
||||
})
|
||||
}
|
||||
|
||||
val exoPlayer = remember {
|
||||
ExoPlayer.Builder(context, renderersFactory)
|
||||
.setTrackSelector(DefaultTrackSelector(context).apply {
|
||||
setParameters(buildUponParameters().apply {
|
||||
setAudioOffloadPreferences(
|
||||
TrackSelectionParameters.AudioOffloadPreferences.DEFAULT.buildUpon().apply {
|
||||
setAudioOffloadMode(TrackSelectionParameters.AudioOffloadPreferences.AUDIO_OFFLOAD_MODE_ENABLED)
|
||||
}.build()
|
||||
)
|
||||
setAllowInvalidateSelectionsOnRendererCapabilitiesChange(true)
|
||||
setTunnelingEnabled(true)
|
||||
})
|
||||
})
|
||||
.setMediaSourceFactory(
|
||||
DefaultMediaSourceFactory(
|
||||
videoCache,
|
||||
extractorsFactory
|
||||
),
|
||||
)
|
||||
.setTrackSelector(trackSelector)
|
||||
.setMediaSourceFactory(DefaultMediaSourceFactory(videoCache, extractorsFactory))
|
||||
.setAudioAttributes(audioAttributes, true)
|
||||
.setHandleAudioBecomingNoisy(true)
|
||||
.setPauseAtEndOfMediaItems(true)
|
||||
.setVideoScalingMode(C.VIDEO_SCALING_MODE_SCALE_TO_FIT)
|
||||
.buildWithAssSupport(context, AssRenderType.LEGACY)
|
||||
.buildWithAssSupport(
|
||||
context,
|
||||
renderersFactory = renderersFactory,
|
||||
renderType = AssRenderType.LEGACY
|
||||
)
|
||||
}
|
||||
|
||||
DisposableEffect(exoPlayer) {
|
||||
val listener = object : Player.Listener {
|
||||
|
||||
override fun onPlaybackStateChanged(playbackState: Int) {
|
||||
videoHost.setPlaybackState(
|
||||
PlaybackState(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue