From 368cd8808da6e4c13bc365caf2d6855b4952eeaa Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Wed, 7 May 2014 02:11:10 -0400 Subject: [PATCH] Add support for selecting stream bitrate. --- gen/com/limelight/R.java | 21 +++++---- libs/limelight-common.jar | Bin 190281 -> 197906 bytes res/layout/activity_connection.xml | 23 +++++++++- src/com/limelight/Connection.java | 69 +++++++++++++++++++++++++++-- src/com/limelight/Game.java | 19 +++++++- 5 files changed, 115 insertions(+), 17 deletions(-) diff --git a/gen/com/limelight/R.java b/gen/com/limelight/R.java index 0f98dead..8a61712a 100644 --- a/gen/com/limelight/R.java +++ b/gen/com/limelight/R.java @@ -35,18 +35,21 @@ or to a theme attribute in the form "?[package:][type:]na public static final int ic_launcher=0x7f020000; } public static final class id { - public static final int autoDec=0x7f080005; - public static final int config1080p30Selected=0x7f080009; - public static final int config1080p60Selected=0x7f08000a; - public static final int config720p30Selected=0x7f080007; - public static final int config720p60Selected=0x7f080008; - public static final int hardwareDec=0x7f080006; + public static final int autoDec=0x7f080006; + public static final int bitrateLabel=0x7f08000c; + public static final int bitrateSeekBar=0x7f08000d; + public static final int config1080p30Selected=0x7f08000a; + public static final int config1080p60Selected=0x7f08000b; + public static final int config720p30Selected=0x7f080008; + public static final int config720p60Selected=0x7f080009; + public static final int decoderConfigGroup=0x7f080003; + public static final int hardwareDec=0x7f080007; public static final int hostTextView=0x7f080000; public static final int pairButton=0x7f080002; - public static final int softwareDec=0x7f080004; + public static final int softwareDec=0x7f080005; public static final int statusButton=0x7f080001; - public static final int streamConfigGroup=0x7f080003; - public static final int surfaceView=0x7f08000b; + public static final int streamConfigGroup=0x7f080004; + public static final int surfaceView=0x7f08000e; } public static final class layout { public static final int activity_connection=0x7f030000; diff --git a/libs/limelight-common.jar b/libs/limelight-common.jar index 4dad3c62cdb174914c420c852bbfc4ab1f9629c4..ae7f3b41d40325e57ba56f231839fb29dc6ca252 100644 GIT binary patch delta 40191 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 WvVruQGng|t2s1G3`N+h;zyJVsfjBY% delta 32180 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 I69WSS0BL1X;s5{u diff --git a/res/layout/activity_connection.xml b/res/layout/activity_connection.xml index d8eabccc..580f562d 100644 --- a/res/layout/activity_connection.xml +++ b/res/layout/activity_connection.xml @@ -45,12 +45,13 @@ android:text="Pair with PC" /> + + + + diff --git a/src/com/limelight/Connection.java b/src/com/limelight/Connection.java index 57288c36..e2fbab37 100644 --- a/src/com/limelight/Connection.java +++ b/src/com/limelight/Connection.java @@ -20,6 +20,8 @@ import android.widget.Button; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.RadioButton; +import android.widget.SeekBar; +import android.widget.SeekBar.OnSeekBarChangeListener; import android.widget.TextView; import android.widget.Toast; import android.app.Activity; @@ -33,6 +35,8 @@ public class Connection extends Activity { private SharedPreferences prefs; private RadioButton rbutton720p30, rbutton720p60, rbutton1080p30, rbutton1080p60; private RadioButton forceSoftDec, autoDec, forceHardDec; + private SeekBar bitrateSlider; + private TextView bitrateLabel; private static final String DEFAULT_HOST = ""; public static final String HOST_KEY = "hostText"; @@ -42,6 +46,7 @@ public class Connection extends Activity { SharedPreferences.Editor editor = prefs.edit(); editor.putString(Connection.HOST_KEY, this.hostText.getText().toString()); + editor.putInt(Game.BITRATE_PREF_STRING, bitrateSlider.getProgress()); editor.apply(); super.onPause(); @@ -66,12 +71,18 @@ public class Connection extends Activity { this.forceSoftDec = (RadioButton) findViewById(R.id.softwareDec); this.autoDec = (RadioButton) findViewById(R.id.autoDec); this.forceHardDec = (RadioButton) findViewById(R.id.hardwareDec); + this.bitrateLabel = (TextView) findViewById(R.id.bitrateLabel); + this.bitrateSlider = (SeekBar) findViewById(R.id.bitrateSeekBar); prefs = getSharedPreferences(Game.PREFS_FILE_NAME, Context.MODE_MULTI_PROCESS); this.hostText.setText(prefs.getString(Connection.HOST_KEY, Connection.DEFAULT_HOST)); boolean res720p = prefs.getInt(Game.HEIGHT_PREF_STRING, Game.DEFAULT_HEIGHT) == 720; boolean fps30 = prefs.getInt(Game.REFRESH_RATE_PREF_STRING, Game.DEFAULT_REFRESH_RATE) == 30; + + bitrateSlider.setMax(Game.BITRATE_CEILING); + bitrateSlider.setProgress(prefs.getInt(Game.BITRATE_PREF_STRING, Game.DEFAULT_BITRATE)); + updateBitrateLabel(); rbutton720p30.setChecked(false); rbutton720p60.setChecked(false); @@ -124,22 +135,30 @@ public class Connection extends Activity { if (buttonView == rbutton720p30) { prefs.edit().putInt(Game.WIDTH_PREF_STRING, 1280). putInt(Game.HEIGHT_PREF_STRING, 720). - putInt(Game.REFRESH_RATE_PREF_STRING, 30).commit(); + putInt(Game.REFRESH_RATE_PREF_STRING, 30). + putInt(Game.BITRATE_PREF_STRING, Game.BITRATE_DEFAULT_720_30).commit(); + bitrateSlider.setProgress(Game.BITRATE_DEFAULT_720_30); } else if (buttonView == rbutton720p60) { prefs.edit().putInt(Game.WIDTH_PREF_STRING, 1280). putInt(Game.HEIGHT_PREF_STRING, 720). - putInt(Game.REFRESH_RATE_PREF_STRING, 60).commit(); + putInt(Game.REFRESH_RATE_PREF_STRING, 60). + putInt(Game.BITRATE_PREF_STRING, Game.BITRATE_DEFAULT_720_60).commit(); + bitrateSlider.setProgress(Game.BITRATE_DEFAULT_720_60); } else if (buttonView == rbutton1080p30) { prefs.edit().putInt(Game.WIDTH_PREF_STRING, 1920). putInt(Game.HEIGHT_PREF_STRING, 1080). - putInt(Game.REFRESH_RATE_PREF_STRING, 30).commit(); + putInt(Game.REFRESH_RATE_PREF_STRING, 30). + putInt(Game.BITRATE_PREF_STRING, Game.BITRATE_DEFAULT_1080_30).commit(); + bitrateSlider.setProgress(Game.BITRATE_DEFAULT_1080_30); } else if (buttonView == rbutton1080p60) { prefs.edit().putInt(Game.WIDTH_PREF_STRING, 1920). putInt(Game.HEIGHT_PREF_STRING, 1080). - putInt(Game.REFRESH_RATE_PREF_STRING, 60).commit(); + putInt(Game.REFRESH_RATE_PREF_STRING, 60). + putInt(Game.BITRATE_PREF_STRING, Game.BITRATE_DEFAULT_1080_60).commit(); + bitrateSlider.setProgress(Game.BITRATE_DEFAULT_1080_60); } else if (buttonView == forceSoftDec) { prefs.edit().putInt(Game.DECODER_PREF_STRING, Game.FORCE_SOFTWARE_DECODER).commit(); @@ -160,6 +179,45 @@ public class Connection extends Activity { forceHardDec.setOnCheckedChangeListener(occl); autoDec.setOnCheckedChangeListener(occl); + this.bitrateSlider.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { + @Override + public void onProgressChanged(SeekBar seekBar, int progress, + boolean fromUser) { + + // Verify the user's selection + if (fromUser) { + int floor; + if (rbutton720p30.isChecked()) { + floor = Game.BITRATE_FLOOR_720_30; + } + else if (rbutton720p60.isChecked()){ + floor = Game.BITRATE_FLOOR_720_60; + } + else if (rbutton1080p30.isChecked()){ + floor = Game.BITRATE_FLOOR_1080_30; + } + else /*if (rbutton1080p60.isChecked())*/ { + floor = Game.BITRATE_FLOOR_1080_60; + } + + if (progress < floor) { + seekBar.setProgress(floor); + return; + } + } + + updateBitrateLabel(); + } + + @Override + public void onStartTrackingTouch(SeekBar seekBar) { + } + + @Override + public void onStopTrackingTouch(SeekBar seekBar) { + } + }); + this.statusButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { @@ -240,4 +298,7 @@ public class Connection extends Activity { } + private void updateBitrateLabel() { + bitrateLabel.setText(bitrateSlider.getProgress()+" Mbps"); + } } diff --git a/src/com/limelight/Game.java b/src/com/limelight/Game.java index b151e810..fbf2f269 100644 --- a/src/com/limelight/Game.java +++ b/src/com/limelight/Game.java @@ -63,11 +63,25 @@ public class Game extends Activity implements SurfaceHolder.Callback, OnGenericM public static final String HEIGHT_PREF_STRING = "ResV"; public static final String REFRESH_RATE_PREF_STRING = "FPS"; public static final String DECODER_PREF_STRING = "Decoder"; + public static final String BITRATE_PREF_STRING = "Bitrate"; + + public static final int BITRATE_FLOOR_720_30 = 4; + public static final int BITRATE_FLOOR_720_60 = 8; + public static final int BITRATE_FLOOR_1080_30 = 10; + public static final int BITRATE_FLOOR_1080_60 = 20; + + public static final int BITRATE_DEFAULT_720_30 = 7; + public static final int BITRATE_DEFAULT_720_60 = 10; + public static final int BITRATE_DEFAULT_1080_30 = 16; + public static final int BITRATE_DEFAULT_1080_60 = 30; + + public static final int BITRATE_CEILING = 50; public static final int DEFAULT_WIDTH = 1280; public static final int DEFAULT_HEIGHT = 720; public static final int DEFAULT_REFRESH_RATE = 60; public static final int DEFAULT_DECODER = 0; + public static final int DEFAULT_BITRATE = BITRATE_DEFAULT_720_60; public static final int FORCE_HARDWARE_DECODER = -1; public static final int AUTOSELECT_DECODER = 0; @@ -116,10 +130,11 @@ public class Game extends Activity implements SurfaceHolder.Callback, OnGenericM break; } - int refreshRate; + int refreshRate, bitrate; width = prefs.getInt(WIDTH_PREF_STRING, DEFAULT_WIDTH); height = prefs.getInt(HEIGHT_PREF_STRING, DEFAULT_HEIGHT); refreshRate = prefs.getInt(REFRESH_RATE_PREF_STRING, DEFAULT_REFRESH_RATE); + bitrate = prefs.getInt(BITRATE_PREF_STRING, DEFAULT_BITRATE); sh.setFixedSize(width, height); Display display = getWindowManager().getDefaultDisplay(); @@ -130,7 +145,7 @@ public class Game extends Activity implements SurfaceHolder.Callback, OnGenericM // Start the connection conn = new NvConnection(Game.this.getIntent().getStringExtra("host"), Game.this, - new StreamConfiguration(width, height, refreshRate)); + new StreamConfiguration(width, height, refreshRate, bitrate * 1000)); keybTranslator = new KeyboardTranslator(conn); controllerHandler = new ControllerHandler(conn);