diff --git a/app/build.gradle b/app/build.gradle
index cf6b8c9a..813a6a42 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -11,8 +11,8 @@ android {
minSdkVersion 16
targetSdkVersion 23
- versionName "3.1.13"
- versionCode = 72
+ versionName "3.5-beta4"
+ versionCode = 73
}
productFlavors {
diff --git a/app/libs/limelight-common.jar b/app/libs/limelight-common.jar
index b42c5b75..e7d0030c 100644
Binary files a/app/libs/limelight-common.jar and b/app/libs/limelight-common.jar differ
diff --git a/app/src/main/java/com/limelight/Game.java b/app/src/main/java/com/limelight/Game.java
index e4e6e2ba..759a5be6 100644
--- a/app/src/main/java/com/limelight/Game.java
+++ b/app/src/main/java/com/limelight/Game.java
@@ -221,6 +221,9 @@ public class Game extends Activity implements SurfaceHolder.Callback,
.enableLocalAudioPlayback(prefConfig.playHostAudio)
.setMaxPacketSize(remote ? 1024 : 1292)
.setRemote(remote)
+ .setAudioConfiguration(prefConfig.enable51Surround ?
+ StreamConfiguration.AUDIO_CONFIGURATION_5_1 :
+ StreamConfiguration.AUDIO_CONFIGURATION_STEREO)
.build();
// Initialize the connection
diff --git a/app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java b/app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java
index e0b9b5ff..f1d9091e 100644
--- a/app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java
+++ b/app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java
@@ -19,12 +19,15 @@ public class PreferenceConfiguration {
private static final String LIST_MODE_PREF_STRING = "checkbox_list_mode";
private static final String SMALL_ICONS_PREF_STRING = "checkbox_small_icon_mode";
private static final String MULTI_CONTROLLER_PREF_STRING = "checkbox_multi_controller";
+ private static final String ENABLE_51_SURROUND_PREF_STRING = "checkbox_51_surround";
private static final String USB_DRIVER_PREF_SRING = "checkbox_usb_driver";
private static final int BITRATE_DEFAULT_720_30 = 5;
private static final int BITRATE_DEFAULT_720_60 = 10;
private static final int BITRATE_DEFAULT_1080_30 = 10;
private static final int BITRATE_DEFAULT_1080_60 = 20;
+ private static final int BITRATE_DEFAULT_4K_30 = 40;
+ private static final int BITRATE_DEFAULT_4K_60 = 80;
private static final String DEFAULT_RES_FPS = "720p60";
private static final String DEFAULT_DECODER = "auto";
@@ -37,6 +40,7 @@ public class PreferenceConfiguration {
public static final String DEFAULT_LANGUAGE = "default";
private static final boolean DEFAULT_LIST_MODE = false;
private static final boolean DEFAULT_MULTI_CONTROLLER = true;
+ private static final boolean DEFAULT_ENABLE_51_SURROUND = false;
private static final boolean DEFAULT_USB_DRIVER = true;
public static final int FORCE_HARDWARE_DECODER = -1;
@@ -49,7 +53,7 @@ public class PreferenceConfiguration {
public int deadzonePercentage;
public boolean stretchVideo, enableSops, playHostAudio, disableWarnings;
public String language;
- public boolean listMode, smallIconMode, multiController, usbDriver;
+ public boolean listMode, smallIconMode, multiController, enable51Surround, usbDriver;
public static int getDefaultBitrate(String resFpsString) {
if (resFpsString.equals("720p30")) {
@@ -64,6 +68,12 @@ public class PreferenceConfiguration {
else if (resFpsString.equals("1080p60")) {
return BITRATE_DEFAULT_1080_60;
}
+ else if (resFpsString.equals("4K30")) {
+ return BITRATE_DEFAULT_4K_30;
+ }
+ else if (resFpsString.equals("4K60")) {
+ return BITRATE_DEFAULT_4K_60;
+ }
else {
// Should never get here
return DEFAULT_BITRATE;
@@ -140,6 +150,16 @@ public class PreferenceConfiguration {
config.height = 1080;
config.fps = 60;
}
+ else if (str.equals("4K30")) {
+ config.width = 3840;
+ config.height = 2160;
+ config.fps = 30;
+ }
+ else if (str.equals("4K60")) {
+ config.width = 3840;
+ config.height = 2160;
+ config.fps = 60;
+ }
else {
// Should never get here
config.width = 1280;
@@ -161,6 +181,7 @@ public class PreferenceConfiguration {
config.listMode = prefs.getBoolean(LIST_MODE_PREF_STRING, DEFAULT_LIST_MODE);
config.smallIconMode = prefs.getBoolean(SMALL_ICONS_PREF_STRING, getDefaultSmallMode(context));
config.multiController = prefs.getBoolean(MULTI_CONTROLLER_PREF_STRING, DEFAULT_MULTI_CONTROLLER);
+ config.enable51Surround = prefs.getBoolean(ENABLE_51_SURROUND_PREF_STRING, DEFAULT_ENABLE_51_SURROUND);
config.usbDriver = prefs.getBoolean(USB_DRIVER_PREF_SRING, DEFAULT_USB_DRIVER);
return config;
diff --git a/app/src/main/res/values-it/arrays.xml b/app/src/main/res/values-it/arrays.xml
index 24bbc7b9..f7d470a8 100644
--- a/app/src/main/res/values-it/arrays.xml
+++ b/app/src/main/res/values-it/arrays.xml
@@ -5,6 +5,8 @@
- 720p - 60 FPS
- 1080p - 30 FPS
- 1080p - 60 FPS
+ - 4K - 30 FPS
+ - 4K - 60 FPS
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index 44a32405..ec7c150c 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -5,12 +5,16 @@
- 720p 60 FPS
- 1080p 30 FPS
- 1080p 60 FPS
+ - 4K 30 FPS
+ - 4K 60 FPS
- 720p30
- 720p60
- 1080p30
- 1080p60
+ - 4K30
+ - 4K60
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 8690cd3b..d633c26a 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -94,6 +94,10 @@
Disable warning messages
Disable on-screen connection warning messages while streaming
+ Audio Settings
+ Enable 5.1 surround sound
+ Uncheck if you experience audio issues. Requires GFE 2.7 or higher.
+
Gamepad Settings
Multiple controller support
When unchecked, all controllers appear as one
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index a4bf1eb3..7b9a3b3d 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -26,6 +26,13 @@
android:summary="@string/summary_checkbox_disable_warnings"
android:defaultValue="false" />
+
+
+