Merge pull request #1385 from halibiram/fix/revert-media3-scheduling-optimizations

fix(player): remove experimental Media3 scheduling optimizations
This commit is contained in:
skoruppa 2026-04-15 20:20:16 +02:00 committed by GitHub
commit dc35b955d6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -241,7 +241,6 @@ internal fun PlayerRuntimeController.initializePlayer(
onPlaybackSpeedAwareAudioOutputProviderCreated = { playbackSpeedAwareAudioOutputProvider = it }
).setExtensionRendererMode(playerSettings.decoderPriority)
.setMapDV7ToHevc(playerSettings.mapDV7ToHevc || forceDv7ToHevc)
.enableMediaCodecVideoRendererDurationToProgressUsIfAvailable()
if (showLoadingStatus) _uiState.update { it.copy(loadingMessage = context.getString(R.string.player_loading_building)) }
val buildDefaultPlayer = {
@ -256,7 +255,6 @@ internal fun PlayerRuntimeController.initializePlayer(
.setRenderersFactory(renderersFactory)
.setLoadControl(loadControl)
.setReleaseTimeoutMs(3000)
.enableDynamicSchedulingIfAvailable()
.build()
}
@ -267,7 +265,6 @@ internal fun PlayerRuntimeController.initializePlayer(
.setTrackSelector(trackSelector!!)
.setMediaSourceFactory(DefaultMediaSourceFactory(playerDataSourceFactory, extractorsFactory))
.setReleaseTimeoutMs(3000)
.enableDynamicSchedulingIfAvailable()
.buildWithAssSupportCompat(
context = context,
renderType = libassRenderType,
@ -834,30 +831,3 @@ private class SubtitleOffsetRenderer(
}
}
private fun DefaultRenderersFactory.enableMediaCodecVideoRendererDurationToProgressUsIfAvailable(): DefaultRenderersFactory {
runCatching {
javaClass
.getMethod("setEnableMediaCodecVideoRendererDurationToProgressUs", java.lang.Boolean.TYPE)
.invoke(this, true)
}.onFailure {
Log.d(
PlayerRuntimeController.TAG,
"Media3 duration-to-progress optimization unavailable: ${it.message}"
)
}
return this
}
private fun ExoPlayer.Builder.enableDynamicSchedulingIfAvailable(): ExoPlayer.Builder {
runCatching {
javaClass
.getMethod("experimentalSetDynamicSchedulingEnabled", java.lang.Boolean.TYPE)
.invoke(this, true)
}.onFailure {
Log.d(
PlayerRuntimeController.TAG,
"Media3 dynamic scheduling unavailable: ${it.message}"
)
}
return this
}