mirror of
https://github.com/libre-tube/LibreTube.git
synced 2024-12-14 22:30:30 +05:30
Improve track selector parameters logic
This commit is contained in:
parent
a2296802f0
commit
73a7e62e57
@ -1,6 +1,10 @@
|
|||||||
package com.github.libretube.extensions
|
package com.github.libretube.extensions
|
||||||
|
|
||||||
import com.google.android.exoplayer2.trackselection.TrackSelector
|
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector
|
||||||
|
|
||||||
fun TrackSelector.updateParameters() {
|
fun DefaultTrackSelector.updateParameters(
|
||||||
|
actions: DefaultTrackSelector.Parameters.Builder.() -> Unit
|
||||||
|
) = apply {
|
||||||
|
val params = buildUponParameters().apply(actions)
|
||||||
|
setParameters(params)
|
||||||
}
|
}
|
||||||
|
@ -59,6 +59,7 @@ import com.github.libretube.extensions.hideKeyboard
|
|||||||
import com.github.libretube.extensions.query
|
import com.github.libretube.extensions.query
|
||||||
import com.github.libretube.extensions.toID
|
import com.github.libretube.extensions.toID
|
||||||
import com.github.libretube.extensions.toStreamItem
|
import com.github.libretube.extensions.toStreamItem
|
||||||
|
import com.github.libretube.extensions.updateParameters
|
||||||
import com.github.libretube.obj.ShareData
|
import com.github.libretube.obj.ShareData
|
||||||
import com.github.libretube.obj.VideoResolution
|
import com.github.libretube.obj.VideoResolution
|
||||||
import com.github.libretube.services.BackgroundMode
|
import com.github.libretube.services.BackgroundMode
|
||||||
@ -1195,9 +1196,10 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun setPlayerResolution(resolution: Int) {
|
private fun setPlayerResolution(resolution: Int) {
|
||||||
val params = trackSelector.buildUponParameters()
|
trackSelector.updateParameters {
|
||||||
params.setMaxVideoSize(Int.MAX_VALUE, resolution).setMinVideoSize(Int.MIN_VALUE, resolution)
|
setMaxVideoSize(Int.MAX_VALUE, resolution)
|
||||||
trackSelector.setParameters(params)
|
setMinVideoSize(Int.MIN_VALUE, resolution)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setStreamSource() {
|
private fun setStreamSource() {
|
||||||
@ -1257,10 +1259,11 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions {
|
|||||||
// control for the track sources like subtitles and audio source
|
// control for the track sources like subtitles and audio source
|
||||||
trackSelector = DefaultTrackSelector(requireContext())
|
trackSelector = DefaultTrackSelector(requireContext())
|
||||||
|
|
||||||
val params = trackSelector.buildUponParameters().setPreferredAudioLanguage(
|
val params = trackSelector.updateParameters {
|
||||||
|
setPreferredAudioLanguage(
|
||||||
Locale.getDefault().language.lowercase().substring(0, 2)
|
Locale.getDefault().language.lowercase().substring(0, 2)
|
||||||
)
|
)
|
||||||
trackSelector.setParameters(params)
|
}
|
||||||
|
|
||||||
exoPlayer = ExoPlayer.Builder(requireContext())
|
exoPlayer = ExoPlayer.Builder(requireContext())
|
||||||
.setMediaSourceFactory(DefaultMediaSourceFactory(dataSourceFactory))
|
.setMediaSourceFactory(DefaultMediaSourceFactory(dataSourceFactory))
|
||||||
@ -1355,9 +1358,9 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions {
|
|||||||
.setSimpleItems(audioLanguages) { index ->
|
.setSimpleItems(audioLanguages) { index ->
|
||||||
val audioStreams = audioGroups.values.elementAt(index)
|
val audioStreams = audioGroups.values.elementAt(index)
|
||||||
val lang = audioStreams.firstOrNull()?.audioTrackId?.substring(0, 2)
|
val lang = audioStreams.firstOrNull()?.audioTrackId?.substring(0, 2)
|
||||||
val newParams = trackSelector.buildUponParameters()
|
trackSelector.updateParameters {
|
||||||
.setPreferredAudioLanguage(lang)
|
setPreferredAudioLanguage(lang)
|
||||||
trackSelector.setParameters(newParams)
|
}
|
||||||
}
|
}
|
||||||
.show(childFragmentManager)
|
.show(childFragmentManager)
|
||||||
}
|
}
|
||||||
@ -1407,10 +1410,10 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun updateCaptionsLanguage(language: String?) {
|
private fun updateCaptionsLanguage(language: String?) {
|
||||||
val params = trackSelector.buildUponParameters()
|
trackSelector.updateParameters {
|
||||||
.setPreferredTextRoleFlags(C.ROLE_FLAG_CAPTION)
|
setPreferredTextRoleFlags(C.ROLE_FLAG_CAPTION)
|
||||||
.setPreferredTextLanguage(language)
|
setPreferredTextLanguage(language)
|
||||||
trackSelector.setParameters(params)
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onUserLeaveHint() {
|
fun onUserLeaveHint() {
|
||||||
|
Loading…
Reference in New Issue
Block a user