diff --git a/app/src/main/java/com/limelight/binding/video/MediaCodecDecoderRenderer.java b/app/src/main/java/com/limelight/binding/video/MediaCodecDecoderRenderer.java
index 4f1e9f74..0f945ba7 100644
--- a/app/src/main/java/com/limelight/binding/video/MediaCodecDecoderRenderer.java
+++ b/app/src/main/java/com/limelight/binding/video/MediaCodecDecoderRenderer.java
@@ -1,7 +1,6 @@
package com.limelight.binding.video;
import java.nio.ByteBuffer;
-import java.util.Arrays;
import java.util.Locale;
import org.jcodec.codecs.h264.H264Utils;
@@ -41,7 +40,6 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer {
private MediaCodec videoDecoder;
private Thread rendererThread;
- private Thread[] spinnerThreads;
private boolean needsSpsBitstreamFixup, isExynos4;
private boolean adaptivePlayback, directSubmit;
private boolean constrainedHighProfile;
@@ -132,14 +130,6 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer {
this.consecutiveCrashCount = consecutiveCrashCount;
this.glRenderer = glRenderer;
- // Disable spinner threads in battery saver mode or 4K
- if (prefs.batterySaver || prefs.height >= 2160) {
- spinnerThreads = new Thread[0];
- }
- else {
- spinnerThreads = new Thread[Runtime.getRuntime().availableProcessors()];
- }
-
avcDecoder = findAvcDecoder();
if (avcDecoder != null) {
LimeLog.info("Selected AVC decoder: "+avcDecoder.getName());
@@ -217,15 +207,10 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer {
}
public void notifyVideoForeground() {
- startSpinnerThreads();
foreground = true;
}
public void notifyVideoBackground() {
- // Signal the spinner threads to stop but
- // don't wait for them to terminate to avoid
- // delaying the state transition
- signalSpinnerStop();
foreground = false;
}
@@ -462,73 +447,6 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer {
rendererThread.start();
}
- private void startSpinnerThread(final int i) {
- spinnerThreads[i] = new Thread() {
- @Override
- public void run() {
- // This thread exists to keep the CPU at a higher DVFS state on devices
- // where the governor scales clock speed sporadically, causing dropped frames.
- //
- // Run until we notice our thread has been removed from the spinner threads
- // array. Even if we don't notice immediately, we'll notice soon enough.
- // This will also ensure we terminate even if someone has restarted spinning
- // before we realized we should stop.
- while (this == spinnerThreads[i]) {
- try {
- Thread.sleep(0, 1);
- } catch (InterruptedException e) {
- break;
- }
- }
- }
- };
- spinnerThreads[i].setName("Spinner-"+i);
- spinnerThreads[i].setPriority(Thread.MIN_PRIORITY);
- spinnerThreads[i].start();
- }
-
- private void startSpinnerThreads() {
- LimeLog.info("Using "+spinnerThreads.length+" spinner threads");
- for (int i = 0; i < spinnerThreads.length; i++) {
- if (spinnerThreads[i] != null) {
- continue;
- }
-
- startSpinnerThread(i);
- }
- }
-
- private Thread[] signalSpinnerStop() {
- // Capture current running threads
- Thread[] runningThreads = Arrays.copyOf(spinnerThreads, spinnerThreads.length);
-
- // Clear the spinner threads to signal their termination
- for (int i = 0; i < spinnerThreads.length; i++) {
- spinnerThreads[i] = null;
- }
-
- // Interrupt the threads
- for (int i = 0; i < runningThreads.length; i++) {
- if (runningThreads[i] != null) {
- runningThreads[i].interrupt();
- }
- }
-
- return runningThreads;
- }
-
- private void stopSpinnerThreads() {
- // Signal and wait for the threads to stop
- Thread[] runningThreads = signalSpinnerStop();
- for (int i = 0; i < runningThreads.length; i++) {
- if (runningThreads[i] != null) {
- try {
- runningThreads[i].join();
- } catch (InterruptedException ignored) { }
- }
- }
- }
-
private int dequeueInputBuffer() {
int index = -1;
long startTime;
@@ -570,7 +488,6 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer {
@Override
public void start() {
startRendererThread();
- startSpinnerThreads();
}
// !!! May be called even if setup()/start() fails !!!
@@ -593,9 +510,6 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer {
try {
rendererThread.join();
} catch (InterruptedException ignored) { }
-
- // Halt the spinner threads
- stopSpinnerThreads();
}
@Override
diff --git a/app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java b/app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java
index ba751023..b1b47b23 100644
--- a/app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java
+++ b/app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java
@@ -24,7 +24,6 @@ public class PreferenceConfiguration {
private static final String VIDEO_FORMAT_PREF_STRING = "video_format";
private static final String ONSCREEN_CONTROLLER_PREF_STRING = "checkbox_show_onscreen_controls";
private static final String ONLY_L3_R3_PREF_STRING = "checkbox_only_show_L3R3";
- private static final String BATTERY_SAVER_PREF_STRING = "checkbox_battery_saver";
private static final String DISABLE_FRAME_DROP_PREF_STRING = "checkbox_disable_frame_drop";
private static final String ENABLE_HDR_PREF_STRING = "checkbox_enable_hdr";
private static final String ENABLE_PIP_PREF_STRING = "checkbox_enable_pip";
@@ -75,7 +74,6 @@ public class PreferenceConfiguration {
public boolean listMode, smallIconMode, multiController, enable51Surround, usbDriver;
public boolean onscreenController;
public boolean onlyL3R3;
- public boolean batterySaver;
public boolean disableFrameDrop;
public boolean enableHdr;
public boolean enablePip;
@@ -244,7 +242,6 @@ public class PreferenceConfiguration {
config.usbDriver = prefs.getBoolean(USB_DRIVER_PREF_SRING, DEFAULT_USB_DRIVER);
config.onscreenController = prefs.getBoolean(ONSCREEN_CONTROLLER_PREF_STRING, ONSCREEN_CONTROLLER_DEFAULT);
config.onlyL3R3 = prefs.getBoolean(ONLY_L3_R3_PREF_STRING, ONLY_L3_R3_DEFAULT);
- config.batterySaver = prefs.getBoolean(BATTERY_SAVER_PREF_STRING, DEFAULT_BATTERY_SAVER);
config.disableFrameDrop = prefs.getBoolean(DISABLE_FRAME_DROP_PREF_STRING, DEFAULT_DISABLE_FRAME_DROP);
config.enableHdr = prefs.getBoolean(ENABLE_HDR_PREF_STRING, DEFAULT_ENABLE_HDR);
config.enablePip = prefs.getBoolean(ENABLE_PIP_PREF_STRING, DEFAULT_ENABLE_PIP);
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 783c716b..73c8d82b 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -110,8 +110,6 @@
Forza video a schermo intero
Disabilita messaggi di warning
Disabilita i messaggi di warning sullo schermo durante lo streaming
- Risparmio batteria
- Usa meno batteria, ma può aumentare lo stuttering
Abilita modalità spettatore Picture-in-Picture
Permette di osservare (ma non di controllare) la stream in multitasking
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index 8915c69d..f40517d4 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -142,8 +142,6 @@
Видео декодер Вашего устройства давал сбои с выбранными настройками. Настройки трансляции были сброшены до значений по умолчанию.
USB доступ запрещен администратором устройства. Проверьте настройки Knox или MDM.
Адрес указан неверно. Вы должны ввести публичный IP-адрес Вашего роутера для передачи через интернет.
- Экономия батареи
- Использует меньше заряда батареи, но может увеличить зависания
Включить просмотр в режиме \"Картинка в картинке\"
Позволяет просматривать трансляцию (но не управлять ей) во время работы в других приложениях
Переопределить поддержку контроллеров Android
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 9743fd02..cec76b72 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -113,8 +113,6 @@
Stretch video to full-screen
Disable warning messages
Disable on-screen connection warning messages while streaming
- Battery saver
- Uses less battery, but may increase stuttering
Enable Picture-in-Picture observer mode
Allows the stream to be viewed (but not controlled) while multitasking
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index 5590d474..8e6c7cd6 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -24,11 +24,6 @@
android:key="checkbox_stretch_video"
android:title="@string/title_checkbox_stretch_video"
android:defaultValue="false" />
-