fix(player): Save, read and display audio/sub delay correctly (#1183)

This commit is contained in:
Abdallah 2023-10-29 11:44:38 +01:00 committed by GitHub
parent 509ecedb3a
commit d8327e872d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 32 additions and 15 deletions

View file

@ -540,17 +540,19 @@ class PlayerActivity : BaseActivity() {
}
private fun setupPlayerAudio() {
with(playerPreferences) {
audioManager = getSystemService(Context.AUDIO_SERVICE) as AudioManager
val useDeviceVolume = playerPreferences.playerVolumeValue().get() == -1.0F || !playerPreferences.rememberPlayerVolume().get()
val useDeviceVolume = playerVolumeValue().get() == -1.0F || !rememberPlayerVolume().get()
fineVolume = if (useDeviceVolume) {
audioManager!!.getStreamVolume(AudioManager.STREAM_MUSIC).toFloat()
} else {
playerPreferences.playerVolumeValue().get()
playerVolumeValue().get()
}
if (playerPreferences.rememberAudioDelay().get()) {
MPVLib.setPropertyDouble("audio-delay", (playerPreferences.audioDelay().get() / 1000).toDouble())
if (rememberAudioDelay().get()) {
MPVLib.setPropertyDouble("audio-delay", (audioDelay().get() / 1000.0))
}
}
verticalScrollRight(0F)
@ -568,7 +570,7 @@ class PlayerActivity : BaseActivity() {
MPVLib.setPropertyString("sub-ass-override", overrideType)
if (rememberSubtitlesDelay().get()) {
MPVLib.setPropertyDouble("sub-delay", subtitlesDelay().get().toDouble())
MPVLib.setPropertyDouble("sub-delay", subtitlesDelay().get() / 1000.0)
}
MPVLib.setPropertyString("sub-bold", if (boldSubtitles().get()) "yes" else "no")

View file

@ -10,6 +10,8 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
@ -27,7 +29,18 @@ fun SubtitleDelayPage(
Column(verticalArrangement = Arrangement.spacedBy(MaterialTheme.padding.tiny)) {
val audioDelay by remember { mutableStateOf(screenModel.preferences.rememberAudioDelay()) }
val subDelay by remember { mutableStateOf(screenModel.preferences.rememberSubtitlesDelay()) }
var currentSubDelay by rememberSaveable {
mutableStateOf(
(MPVLib.getPropertyDouble(Tracks.SUBTITLES.mpvProperty) * 1000)
.toInt(),
)
}
var currentAudioDelay by rememberSaveable {
mutableStateOf(
(MPVLib.getPropertyDouble(Tracks.AUDIO.mpvProperty) * 1000)
.toInt(),
)
}
screenModel.ToggleableRow(
textRes = R.string.player_audio_remember_delay,
isChecked = audioDelay.collectAsState().value,
@ -43,11 +56,12 @@ fun SubtitleDelayPage(
label = stringResource(id = R.string.player_audio_delay),
placeholder = "0",
suffix = "ms",
value = (MPVLib.getPropertyDouble(Tracks.AUDIO.mpvProperty) * 1000).toInt(),
value = currentAudioDelay,
step = 100,
onValueChanged = {
MPVLib.setPropertyDouble(Tracks.AUDIO.mpvProperty, (it / 1000).toDouble())
MPVLib.setPropertyDouble(Tracks.AUDIO.mpvProperty, it / 1000.0)
screenModel.preferences.audioDelay().set(it)
currentAudioDelay = it
},
)
}
@ -69,11 +83,12 @@ fun SubtitleDelayPage(
label = stringResource(id = R.string.player_subtitle_delay),
placeholder = "0",
suffix = "ms",
value = (MPVLib.getPropertyDouble(Tracks.SUBTITLES.mpvProperty) * 1000).toInt(),
value = currentSubDelay,
step = 100,
onValueChanged = {
MPVLib.setPropertyDouble(Tracks.SUBTITLES.mpvProperty, (it / 1000).toDouble())
MPVLib.setPropertyDouble(Tracks.SUBTITLES.mpvProperty, it / 1000.0)
screenModel.preferences.subtitlesDelay().set(it)
currentSubDelay = it
},
)
}