mirror of
https://github.com/JustinZeus/Wholphin.git
synced 2026-07-09 16:11:20 +02:00
Add toggles to override direct playback (#24)
Fixes #10
Adds toggles to disable direct play of AC3 audio, ASS subtitles, and PGS
subtitles. Also a toggle to force down mixing audio to stereo.
This copies the behavior from the official client. I'm not sure if there
is a way to determine if direct playing AC3 is possible because it can
depend on devices other than the Android TV device such as a sound bar.
So it's up to the user to toggle off support if necessary.
Attribution: This PR uses on [code from the official
client](c775603df4/app/src/main/java/org/jellyfin/androidtv/util/profile/deviceProfile.kt).
This commit is contained in:
parent
bd4d4d5092
commit
f220aeee44
7 changed files with 190 additions and 10 deletions
|
|
@ -313,6 +313,51 @@ sealed interface AppPreference<T> {
|
|||
},
|
||||
)
|
||||
|
||||
val Ac3Supported =
|
||||
AppSwitchPreference(
|
||||
title = R.string.ac3_supported,
|
||||
defaultValue = true,
|
||||
getter = { it.playbackPreferences.overrides.ac3Supported },
|
||||
setter = { prefs, value ->
|
||||
prefs.updatePlaybackOverrides { ac3Supported = value }
|
||||
},
|
||||
summaryOn = R.string.enabled,
|
||||
summaryOff = R.string.disabled,
|
||||
)
|
||||
val DownMixStereo =
|
||||
AppSwitchPreference(
|
||||
title = R.string.downmix_stereo,
|
||||
defaultValue = false,
|
||||
getter = { it.playbackPreferences.overrides.downmixStereo },
|
||||
setter = { prefs, value ->
|
||||
prefs.updatePlaybackOverrides { downmixStereo = value }
|
||||
},
|
||||
summaryOn = R.string.enabled,
|
||||
summaryOff = R.string.disabled,
|
||||
)
|
||||
val DirectPlayAss =
|
||||
AppSwitchPreference(
|
||||
title = R.string.direct_play_ass,
|
||||
defaultValue = true,
|
||||
getter = { it.playbackPreferences.overrides.directPlayAss },
|
||||
setter = { prefs, value ->
|
||||
prefs.updatePlaybackOverrides { directPlayAss = value }
|
||||
},
|
||||
summaryOn = R.string.enabled,
|
||||
summaryOff = R.string.disabled,
|
||||
)
|
||||
val DirectPlayPgs =
|
||||
AppSwitchPreference(
|
||||
title = R.string.direct_play_pgs,
|
||||
defaultValue = true,
|
||||
getter = { it.playbackPreferences.overrides.directPlayPgs },
|
||||
setter = { prefs, value ->
|
||||
prefs.updatePlaybackOverrides { directPlayPgs = value }
|
||||
},
|
||||
summaryOn = R.string.enabled,
|
||||
summaryOff = R.string.disabled,
|
||||
)
|
||||
|
||||
val RememberSelectedTab =
|
||||
AppSwitchPreference(
|
||||
title = R.string.remember_selected_tab,
|
||||
|
|
@ -521,6 +566,16 @@ val advancedPreferences =
|
|||
AppPreference.PlaybackDebugInfo,
|
||||
),
|
||||
),
|
||||
PreferenceGroup(
|
||||
title = R.string.playback_overrides,
|
||||
preferences =
|
||||
listOf(
|
||||
AppPreference.DownMixStereo,
|
||||
AppPreference.Ac3Supported,
|
||||
AppPreference.DirectPlayAss,
|
||||
AppPreference.DirectPlayPgs,
|
||||
),
|
||||
),
|
||||
PreferenceGroup(
|
||||
title = R.string.updates,
|
||||
preferences =
|
||||
|
|
|
|||
|
|
@ -42,6 +42,16 @@ class AppPreferencesSerializer
|
|||
skipCommercials = AppPreference.SkipCommercials.defaultValue
|
||||
skipPreviews = AppPreference.SkipPreviews.defaultValue
|
||||
skipRecaps = AppPreference.SkipRecaps.defaultValue
|
||||
|
||||
overrides =
|
||||
PlaybackOverrides
|
||||
.newBuilder()
|
||||
.apply {
|
||||
ac3Supported = AppPreference.Ac3Supported.defaultValue
|
||||
downmixStereo = AppPreference.DownMixStereo.defaultValue
|
||||
directPlayAss = AppPreference.DirectPlayAss.defaultValue
|
||||
directPlayPgs = AppPreference.DirectPlayPgs.defaultValue
|
||||
}.build()
|
||||
}.build()
|
||||
homePagePreferences =
|
||||
HomePagePreferences
|
||||
|
|
@ -81,6 +91,11 @@ inline fun AppPreferences.updatePlaybackPreferences(block: PlaybackPreferences.B
|
|||
playbackPreferences = playbackPreferences.toBuilder().apply(block).build()
|
||||
}
|
||||
|
||||
inline fun AppPreferences.updatePlaybackOverrides(block: PlaybackOverrides.Builder.() -> Unit): AppPreferences =
|
||||
updatePlaybackPreferences {
|
||||
overrides = overrides.toBuilder().apply(block).build()
|
||||
}
|
||||
|
||||
inline fun AppPreferences.updateHomePagePreferences(block: HomePagePreferences.Builder.() -> Unit): AppPreferences =
|
||||
update {
|
||||
homePagePreferences = homePagePreferences.toBuilder().apply(block).build()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue