From f486595ab58b0594fad81c296f6e53d6d1429fe8 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Tue, 14 Jun 2022 20:01:27 +0200 Subject: [PATCH] buffering goal --- .../com/github/libretube/adapters/ChaptersAdapter.kt | 2 +- .../com/github/libretube/fragments/PlayerFragment.kt | 12 ++++++++++-- app/src/main/res/drawable/ic_timelapse.xml | 10 ++++++++++ app/src/main/res/values/array.xml | 8 ++++++++ app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/advanced_settings.xml | 9 +++++++++ 6 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 app/src/main/res/drawable/ic_timelapse.xml diff --git a/app/src/main/java/com/github/libretube/adapters/ChaptersAdapter.kt b/app/src/main/java/com/github/libretube/adapters/ChaptersAdapter.kt index 66a0d7247..4f625c3aa 100644 --- a/app/src/main/java/com/github/libretube/adapters/ChaptersAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/ChaptersAdapter.kt @@ -32,7 +32,7 @@ class ChaptersAdapter( chapterTitle.text = chapter.title holder.v.setOnClickListener { - val chapterStart = chapter.start!!.toLong() * 1000 // multiply by thousand for ms -> s + val chapterStart = chapter.start!!.toLong() * 1000 // s -> ms exoPlayer.seekTo(chapterStart) } } diff --git a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt index 28d552abb..4c275471d 100644 --- a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt @@ -828,6 +828,10 @@ class PlayerFragment : Fragment() { } private fun createExoPlayer(view: View) { + val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext()) + val playbackSpeed = sharedPreferences.getString("playback_speed", "1F")?.toFloat() + val bufferingGoal = sharedPreferences.getString("buffering_goal", "50")?.toInt()!! + val cronetEngine: CronetEngine = CronetHelper.getCronetEngine() val cronetDataSourceFactory: CronetDataSource.Factory = CronetDataSource.Factory(cronetEngine, Executors.newCachedThreadPool()) @@ -847,6 +851,12 @@ class PlayerFragment : Fragment() { val loadControl = DefaultLoadControl.Builder() // cache the last three minutes .setBackBuffer(1000 * 60 * 3, true) + .setBufferDurationsMs( + DefaultLoadControl.DEFAULT_MIN_BUFFER_MS, + bufferingGoal * 1000, // buffering goal, s -> ms + DefaultLoadControl.DEFAULT_BUFFER_FOR_PLAYBACK_MS, + DefaultLoadControl.DEFAULT_BUFFER_FOR_PLAYBACK_AFTER_REBUFFER_MS + ) .build() exoPlayer = ExoPlayer.Builder(view.context) @@ -858,8 +868,6 @@ class PlayerFragment : Fragment() { exoPlayer.setAudioAttributes(audioAttributes, true) - val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext()) - val playbackSpeed = sharedPreferences.getString("playback_speed", "1F")?.toFloat() exoPlayer.setPlaybackSpeed(playbackSpeed!!) } diff --git a/app/src/main/res/drawable/ic_timelapse.xml b/app/src/main/res/drawable/ic_timelapse.xml new file mode 100644 index 000000000..1bafc2752 --- /dev/null +++ b/app/src/main/res/drawable/ic_timelapse.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/values/array.xml b/app/src/main/res/values/array.xml index 6d1c2b2f0..e1e4cfcac 100644 --- a/app/src/main/res/values/array.xml +++ b/app/src/main/res/values/array.xml @@ -659,4 +659,12 @@ sdcard + + 50 + 100 + 200 + 300 + 450 + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f6f5686b9..70863c848 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -181,4 +181,6 @@ Show related streams to videos. Show chapters Hide chapters + Buffering goal + The amount of seconds videos get preloaded at maximum. diff --git a/app/src/main/res/xml/advanced_settings.xml b/app/src/main/res/xml/advanced_settings.xml index 87546c389..a2337d75f 100644 --- a/app/src/main/res/xml/advanced_settings.xml +++ b/app/src/main/res/xml/advanced_settings.xml @@ -22,6 +22,15 @@ app:title="@string/playback_speed" app:useSimpleSummaryProvider="true" /> + +