From 7742f67796c5309f05a0e66186b43a55d677979b Mon Sep 17 00:00:00 2001 From: tzugen Date: Tue, 5 Apr 2022 20:58:11 +0200 Subject: [PATCH] Add pref switch for HW offload --- .../org/moire/ultrasonic/playback/PlaybackService.kt | 7 +++++-- .../src/main/kotlin/org/moire/ultrasonic/util/Constants.kt | 5 +---- .../src/main/kotlin/org/moire/ultrasonic/util/Settings.kt | 2 ++ ultrasonic/src/main/res/values/strings.xml | 4 ++++ ultrasonic/src/main/res/xml/settings.xml | 6 ++++++ 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/playback/PlaybackService.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/playback/PlaybackService.kt index 2b3ad224..03f556c5 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/playback/PlaybackService.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/playback/PlaybackService.kt @@ -35,6 +35,7 @@ import org.moire.ultrasonic.activity.NavigationActivity import org.moire.ultrasonic.api.subsonic.SubsonicAPIClient import org.moire.ultrasonic.app.UApp import org.moire.ultrasonic.util.Constants +import org.moire.ultrasonic.util.Settings class PlaybackService : MediaLibraryService(), KoinComponent { private lateinit var player: ExoPlayer @@ -92,7 +93,8 @@ class PlaybackService : MediaLibraryService(), KoinComponent { // Create a renderer with HW rendering support val renderer = DefaultRenderersFactory(this) - renderer.setEnableAudioOffload(true) + + if (Settings.useHwOffload) renderer.setEnableAudioOffload(true) // Create the player player = ExoPlayer.Builder(this) @@ -104,7 +106,8 @@ class PlaybackService : MediaLibraryService(), KoinComponent { .build() // Enable audio offload - player.experimentalSetOffloadSchedulingEnabled(true) + if (Settings.useHwOffload) + player.experimentalSetOffloadSchedulingEnabled(true) // Create browser interface librarySessionCallback = AutoMediaBrowserCallback(player) diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/Constants.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/Constants.kt index 8556eae4..6fb9efeb 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/Constants.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/Constants.kt @@ -71,7 +71,6 @@ object Constants { const val PREFERENCES_KEY_MEDIA_BUTTONS = "mediaButtons" const val PREFERENCES_KEY_SCROBBLE = "scrobble" const val PREFERENCES_KEY_SERVER_SCALING = "serverScaling" - const val PREFERENCES_KEY_REPEAT_MODE = "repeatMode" const val PREFERENCES_KEY_WIFI_REQUIRED_FOR_DOWNLOAD = "wifiRequiredForDownload" const val PREFERENCES_KEY_BUFFER_LENGTH = "bufferLength" const val PREFERENCES_KEY_NETWORK_TIMEOUT = "networkTimeout" @@ -105,13 +104,11 @@ object Constants { const val PREFERENCES_KEY_SHARE_ON_SERVER = "sharingCreateOnServer" const val PREFERENCES_KEY_DEFAULT_SHARE_EXPIRATION = "sharingDefaultExpiration" const val PREFERENCES_KEY_USE_FIVE_STAR_RATING = "use_five_star_rating" + const val PREFERENCES_KEY_HARDWARE_OFFLOAD = "use_hw_offload" const val PREFERENCES_KEY_CATEGORY_NOTIFICATIONS = "notificationsCategory" const val PREFERENCES_KEY_FIRST_RUN_EXECUTED = "firstRunExecuted" const val PREFERENCES_KEY_DEBUG_LOG_TO_FILE = "debugLogToFile" const val PREFERENCES_KEY_OVERRIDE_LANGUAGE = "overrideLanguage" - const val PREFERENCE_VALUE_ALL = 0 - const val PREFERENCE_VALUE_A2DP = 1 - const val PREFERENCE_VALUE_DISABLED = 2 const val FILENAME_PLAYLIST_SER = "downloadstate.ser" const val ALBUM_ART_FILE = "folder.jpeg" const val STARRED = "starred" diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/Settings.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/Settings.kt index 90bba48e..58458f9e 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/Settings.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/Settings.kt @@ -243,6 +243,8 @@ object Settings { var useFiveStarRating by BooleanSetting(Constants.PREFERENCES_KEY_USE_FIVE_STAR_RATING, false) + var useHwOffload by BooleanSetting(Constants.PREFERENCES_KEY_HARDWARE_OFFLOAD, false) + // TODO: Remove in December 2022 fun migrateFeatureStorage() { val sp = appContext.getSharedPreferences("feature_flags", Context.MODE_PRIVATE) diff --git a/ultrasonic/src/main/res/values/strings.xml b/ultrasonic/src/main/res/values/strings.xml index e17ed742..b1b76090 100644 --- a/ultrasonic/src/main/res/values/strings.xml +++ b/ultrasonic/src/main/res/values/strings.xml @@ -484,4 +484,8 @@ Use five star rating for songs Use five star rating system for songs instead of simply starring/unstarring items. + Use hardware playback (experimental) + Try to play the media using the media decoder chip on your phone. This can improve battery usage. + + diff --git a/ultrasonic/src/main/res/xml/settings.xml b/ultrasonic/src/main/res/xml/settings.xml index dfd7bb98..c03bdc62 100644 --- a/ultrasonic/src/main/res/xml/settings.xml +++ b/ultrasonic/src/main/res/xml/settings.xml @@ -96,6 +96,12 @@ a:summary="@string/settings.five_star_rating_description" a:title="@string/settings.five_star_rating_title" app:iconSpaceReserved="false" /> +