Legacy text rendering for subtitles

This commit is contained in:
Kelvin K
2025-11-27 11:12:40 -06:00
parent efe074d272
commit f2efc603ba
@@ -1,17 +1,22 @@
package com.futo.platformplayer.states package com.futo.platformplayer.states
import android.content.Context import android.content.Context
import android.os.Looper
import android.util.Log import android.util.Log
import androidx.annotation.OptIn import androidx.annotation.OptIn
import androidx.media3.common.C import androidx.media3.common.C
import androidx.media3.common.util.UnstableApi import androidx.media3.common.util.UnstableApi
import androidx.media3.exoplayer.DefaultLoadControl import androidx.media3.exoplayer.DefaultLoadControl
import androidx.media3.exoplayer.DefaultRenderersFactory
import androidx.media3.exoplayer.ExoPlayer import androidx.media3.exoplayer.ExoPlayer
import androidx.media3.exoplayer.Renderer
import androidx.media3.exoplayer.source.DefaultMediaSourceFactory
import androidx.media3.exoplayer.text.TextOutput
import androidx.media3.exoplayer.text.TextRenderer
import androidx.media3.exoplayer.upstream.DefaultAllocator import androidx.media3.exoplayer.upstream.DefaultAllocator
import com.futo.platformplayer.R import com.futo.platformplayer.R
import com.futo.platformplayer.Settings import com.futo.platformplayer.Settings
import com.futo.platformplayer.UIDialogs import com.futo.platformplayer.UIDialogs
import com.futo.platformplayer.api.media.models.playlists.IPlatformPlaylistDetails
import com.futo.platformplayer.api.media.models.video.IPlatformVideo import com.futo.platformplayer.api.media.models.video.IPlatformVideo
import com.futo.platformplayer.api.media.models.video.IPlatformVideoDetails import com.futo.platformplayer.api.media.models.video.IPlatformVideoDetails
import com.futo.platformplayer.api.media.models.video.SerializedPlatformVideo import com.futo.platformplayer.api.media.models.video.SerializedPlatformVideo
@@ -21,8 +26,10 @@ import com.futo.platformplayer.logging.Logger
import com.futo.platformplayer.models.Playlist import com.futo.platformplayer.models.Playlist
import com.futo.platformplayer.services.MediaPlaybackService import com.futo.platformplayer.services.MediaPlaybackService
import com.futo.platformplayer.video.PlayerManager import com.futo.platformplayer.video.PlayerManager
import com.google.common.collect.Iterables
import kotlin.random.Random import kotlin.random.Random
/*** /***
* Used to keep track of queue and other player related stuff * Used to keep track of queue and other player related stuff
*/ */
@@ -662,6 +669,30 @@ class StatePlayer {
@OptIn(UnstableApi::class) @OptIn(UnstableApi::class)
private fun createExoPlayer(context : Context): ExoPlayer { private fun createExoPlayer(context : Context): ExoPlayer {
return ExoPlayer.Builder(context) return ExoPlayer.Builder(context)
.setRenderersFactory(
object : DefaultRenderersFactory(context) {
override fun buildTextRenderers(
context: Context,
output: TextOutput,
outputLooper: Looper,
extensionRendererMode: Int,
out: java.util.ArrayList<Renderer>
) {
super.buildTextRenderers(
context,
output,
outputLooper,
extensionRendererMode,
out
)
(Iterables.getLast<Renderer?>(out) as TextRenderer)
.experimentalSetLegacyDecodingEnabled(true)
}
})
.setMediaSourceFactory(
DefaultMediaSourceFactory(context)
.experimentalParseSubtitlesDuringExtraction(false)
)
.setLoadControl( .setLoadControl(
DefaultLoadControl.Builder() DefaultLoadControl.Builder()
.setAllocator(DefaultAllocator(true, BUFFER_SIZE)) .setAllocator(DefaultAllocator(true, BUFFER_SIZE))