diff --git a/app/src/main/java/com/github/damontecres/wholphin/preferences/AppPreference.kt b/app/src/main/java/com/github/damontecres/wholphin/preferences/AppPreference.kt index c15b7bc23..6a4eaa49b 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/preferences/AppPreference.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/preferences/AppPreference.kt @@ -425,6 +425,18 @@ sealed interface AppPreference { summary = R.string.force_dovi_profile_7_summary, ) + val PreferFmp4Container = + AppSwitchPreference( + title = R.string.prefer_fmp4_container, + defaultValue = false, + getter = { it.playbackPreferences.overrides.preferFmp4Container }, + setter = { prefs, value -> + prefs.updatePlaybackOverrides { preferFmp4Container = value } + }, + summaryOn = R.string.enabled, + summaryOff = R.string.disabled, + ) + val RememberSelectedTab = AppSwitchPreference( title = R.string.remember_selected_tab, @@ -1004,6 +1016,7 @@ val advancedPreferences = AppPreference.DirectPlayAss, AppPreference.DirectPlayPgs, AppPreference.DirectPlayDoviProfile7, + AppPreference.PreferFmp4Container, ), ), ConditionalPreferences( diff --git a/app/src/main/java/com/github/damontecres/wholphin/services/DeviceProfileService.kt b/app/src/main/java/com/github/damontecres/wholphin/services/DeviceProfileService.kt index 95cebb3cc..6415e8f86 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/services/DeviceProfileService.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/services/DeviceProfileService.kt @@ -45,6 +45,7 @@ class DeviceProfileService dolbyVisionELDirectPlay = prefs.overrides.directPlayDolbyVisionEL, jellyfinTenEleven = serverVersion != null && serverVersion >= ServerVersion(10, 11, 0), + preferFmp4Container = prefs.overrides.preferFmp4Container, ) if (deviceProfile == null || this@DeviceProfileService.configuration != newConfig) { this@DeviceProfileService.configuration = newConfig @@ -58,6 +59,7 @@ class DeviceProfileService pgsDirectPlay = newConfig.pgsDirectPlay, dolbyVisionELDirectPlay = newConfig.dolbyVisionELDirectPlay, jellyfinTenEleven = newConfig.jellyfinTenEleven, + preferFmp4Container = newConfig.preferFmp4Container, ) } this@DeviceProfileService.deviceProfile!! @@ -76,4 +78,5 @@ data class DeviceProfileConfiguration( val pgsDirectPlay: Boolean, val dolbyVisionELDirectPlay: Boolean, val jellyfinTenEleven: Boolean, + val preferFmp4Container: Boolean, ) diff --git a/app/src/main/java/com/github/damontecres/wholphin/util/profile/DeviceProfileUtils.kt b/app/src/main/java/com/github/damontecres/wholphin/util/profile/DeviceProfileUtils.kt index 0f507fd39..7e8e3f131 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/util/profile/DeviceProfileUtils.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/util/profile/DeviceProfileUtils.kt @@ -68,6 +68,7 @@ fun createDeviceProfile( pgsDirectPlay: Boolean, dolbyVisionELDirectPlay: Boolean, jellyfinTenEleven: Boolean, + preferFmp4Container: Boolean, ) = buildDeviceProfile { val allowedAudioCodecs = when { @@ -128,7 +129,7 @@ fun createDeviceProfile( type = DlnaProfileType.VIDEO context = EncodingContext.STREAMING - container = Codec.Container.TS + container = if (preferFmp4Container) Codec.Container.MP4 else Codec.Container.TS protocol = MediaStreamProtocol.HLS if (supportsHevc) videoCodec(Codec.Video.HEVC) diff --git a/app/src/main/proto/WholphinDataStore.proto b/app/src/main/proto/WholphinDataStore.proto index f68ecae81..9d43369f0 100644 --- a/app/src/main/proto/WholphinDataStore.proto +++ b/app/src/main/proto/WholphinDataStore.proto @@ -46,6 +46,7 @@ message PlaybackOverrides{ bool direct_play_pgs = 4; MediaExtensionStatus media_extensions_enabled = 5; bool direct_play_dolby_vision_e_l = 6; + bool prefer_fmp4_container = 7; } message PlaybackPreferences { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 670264ab6..5d03615c7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -288,6 +288,7 @@ Always downmix to stereo Use FFmpeg decoder module Default content scale + Prefer fMP4 container Install update Installed version Max items on home page rows