diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/playback/PlaybackViewModel.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/playback/PlaybackViewModel.kt index 1951d1d9..931ac551 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/playback/PlaybackViewModel.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/playback/PlaybackViewModel.kt @@ -207,7 +207,11 @@ class PlaybackViewModel jobs.forEach { it.cancel() } } - private suspend fun createPlayer(isHdr: Boolean) { + private suspend fun createPlayer( + isHdr: Boolean, + is4k: Boolean, + ) { + val softwareDecoding = !preferences.appPreferences.playbackPreferences.mpvOptions.enableHardwareDecoding val playerBackend = when (preferences.appPreferences.playbackPreferences.playerBackend) { PlayerBackend.UNRECOGNIZED, @@ -216,7 +220,7 @@ class PlaybackViewModel PlayerBackend.MPV -> PlayerBackend.MPV - PlayerBackend.PREFER_MPV -> if (isHdr) PlayerBackend.EXO_PLAYER else PlayerBackend.MPV + PlayerBackend.PREFER_MPV -> if (isHdr || (is4k && softwareDecoding)) PlayerBackend.EXO_PLAYER else PlayerBackend.MPV } Timber.d("Selected backend: %s", playerBackend) @@ -428,11 +432,13 @@ class PlaybackViewModel val isHdr = it.videoRange == VideoRange.HDR || (it.videoRangeType != VideoRangeType.SDR && it.videoRangeType != VideoRangeType.UNKNOWN) - SimpleVideoStream(it.index, isHdr) + // Often times 4k movies have a wider aspect ratio so the height is lower even though the width is still 3840 + val is4k = (it.width ?: 0) > 2560 || (it.height ?: 0) > 1440 + SimpleVideoStream(it.index, isHdr, is4k) } // Create the correct player for the media - createPlayer(videoStream?.hdr == true) + createPlayer(videoStream?.hdr == true, videoStream?.is4k == true) val subtitleStreams = mediaSource.mediaStreams diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/playback/SimpleMediaStream.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/playback/SimpleMediaStream.kt index f63e91b2..6444a268 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/playback/SimpleMediaStream.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/playback/SimpleMediaStream.kt @@ -27,4 +27,5 @@ data class SimpleMediaStream( data class SimpleVideoStream( val index: Int, val hdr: Boolean, + val is4k: Boolean, )