Implemented new "Speed" parameter which allows to set initial playback
speed.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@2514 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/java/src/com/tightvnc/rfbplayer/ButtonPanel.java b/java/src/com/tightvnc/rfbplayer/ButtonPanel.java
index 222c519..0a67090 100644
--- a/java/src/com/tightvnc/rfbplayer/ButtonPanel.java
+++ b/java/src/com/tightvnc/rfbplayer/ButtonPanel.java
@@ -47,7 +47,7 @@
add(new Label(" Speed:"));
timeScaleText = new TextField(5);
- timeScaleText.setText("1.0");
+ timeScaleText.setText(String.valueOf(player.getSpeed()));
add(timeScaleText);
timeScaleText.addActionListener(this);
}
@@ -87,7 +87,11 @@
} else if (evt.getSource() == posText) {
player.setPos(Integer.parseInt(posText.getText()));
} else if (evt.getSource() == timeScaleText) {
- player.setSpeed(Double.parseDouble(timeScaleText.getText()));
+ double speed = Double.parseDouble(timeScaleText.getText());
+ if (speed <= 0.0)
+ speed = 1.0;
+ timeScaleText.setText(String.valueOf(speed));
+ player.setSpeed(speed);
}
}
}
diff --git a/java/src/com/tightvnc/rfbplayer/README b/java/src/com/tightvnc/rfbplayer/README
index 1661652..67a28d2 100644
--- a/java/src/com/tightvnc/rfbplayer/README
+++ b/java/src/com/tightvnc/rfbplayer/README
@@ -58,6 +58,15 @@
coalesce several small updates into one drawing operation, improving CPU
usage. Set this parameter to 0 to disable deferred updates.
+--> "Speed"
+
+ Value: positive fixed-point or floating-point number.
+ Default: "1.0".
+
+ Sets playback speed where 1 is normal speed, 2 is double speed,
+ and 0.5 is half speed etc. Both number formats like 0.2 and 2e-1
+ are acceptable.
+
Licensing Terms
===============
diff --git a/java/src/com/tightvnc/rfbplayer/RfbPlayer.java b/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
index 55ac568..a47220a 100644
--- a/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
+++ b/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
@@ -60,6 +60,7 @@
String sessionURL;
long initialTimeOffset;
+ double playbackSpeed;
boolean showControls;
int deferScreenUpdates;
@@ -161,6 +162,7 @@
try {
setPaused(true);
fbsStream.setTimeOffset(initialTimeOffset);
+ fbsStream.setSpeed(playbackSpeed);
vc.processNormalProtocol();
} catch (EOFException e) {
initialTimeOffset = 0;
@@ -191,7 +193,12 @@
}
}
+ public double getSpeed() {
+ return playbackSpeed;
+ }
+
public void setSpeed(double speed) {
+ playbackSpeed = speed;
fbsStream.setSpeed(speed);
}
@@ -216,6 +223,11 @@
sessionURL = readParameter("URL", true);
initialTimeOffset = readLongParameter("Position", 0);
+ if (initialTimeOffset < 0)
+ initialTimeOffset = 0;
+ playbackSpeed = readDoubleParameter("Speed", 1.0);
+ if (playbackSpeed <= 0.0)
+ playbackSpeed = 1.0;
showControls = true;
String str = readParameter("Show Controls", false);
@@ -272,6 +284,17 @@
return result;
}
+ double readDoubleParameter(String name, double defaultValue) {
+ String str = readParameter(name, false);
+ double result = defaultValue;
+ if (str != null) {
+ try {
+ result = Double.parseDouble(str);
+ } catch (NumberFormatException e) { }
+ }
+ return result;
+ }
+
//
// fatalError() - print out a fatal error message.
//