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" />
+
+