Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Morlunk/Jumble.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Comminos <andrewcomminos@gmail.com>2014-08-18 02:42:00 +0400
committerAndrew Comminos <andrewcomminos@gmail.com>2014-08-18 02:42:00 +0400
commite1fafc14e80124b18edb03c0691895f74925b4cb (patch)
tree56470afa1e2b3ddf67109ba8635fa8887595545a
parentd601621770d1417c563a56d43d80de2af9b00ec3 (diff)
Add option for disabling speex preprocessor.
-rw-r--r--src/main/java/com/morlunk/jumble/JumbleService.java4
-rw-r--r--src/main/java/com/morlunk/jumble/audio/AudioInput.java16
-rw-r--r--src/main/java/com/morlunk/jumble/protocol/AudioHandler.java11
3 files changed, 26 insertions, 5 deletions
diff --git a/src/main/java/com/morlunk/jumble/JumbleService.java b/src/main/java/com/morlunk/jumble/JumbleService.java
index 07d0979..7947e31 100644
--- a/src/main/java/com/morlunk/jumble/JumbleService.java
+++ b/src/main/java/com/morlunk/jumble/JumbleService.java
@@ -91,6 +91,7 @@ public class JumbleService extends Service implements JumbleConnection.JumbleCon
public static final String EXTRAS_LOCAL_MUTE_HISTORY = "local_mute_history";
/** A list of users that should be local ignored upon connection. */
public static final String EXTRAS_LOCAL_IGNORE_HISTORY = "local_ignore_history";
+ public static final String EXTRAS_ENABLE_PREPROCESSOR = "enable_preprocessor";
public static final String ACTION_DISCONNECT = "com.morlunk.jumble.DISCONNECT";
@@ -119,6 +120,7 @@ public class JumbleService extends Service implements JumbleConnection.JumbleCon
private boolean mHalfDuplex;
private List<Integer> mLocalMuteHistory;
private List<Integer> mLocalIgnoreHistory;
+ private boolean mEnablePreprocessor;
private PowerManager.WakeLock mWakeLock;
private Handler mHandler;
@@ -208,6 +210,7 @@ public class JumbleService extends Service implements JumbleConnection.JumbleCon
mHalfDuplex = extras.getBoolean(EXTRAS_HALF_DUPLEX);
mLocalMuteHistory = extras.getIntegerArrayList(EXTRAS_LOCAL_MUTE_HISTORY);
mLocalIgnoreHistory = extras.getIntegerArrayList(EXTRAS_LOCAL_IGNORE_HISTORY);
+ mEnablePreprocessor = extras.getBoolean(EXTRAS_ENABLE_PREPROCESSOR, true);
connect();
}
@@ -260,6 +263,7 @@ public class JumbleService extends Service implements JumbleConnection.JumbleCon
mAudioHandler.setFramesPerPacket(mFramesPerPacket);
mAudioHandler.setSampleRate(mInputRate);
mAudioHandler.setHalfDuplex(mHalfDuplex);
+ mAudioHandler.setPreprocessorEnabled(mEnablePreprocessor);
mConnection.addTCPMessageHandlers(mModelHandler, mAudioHandler);
mConnection.addUDPMessageHandlers(mAudioHandler);
diff --git a/src/main/java/com/morlunk/jumble/audio/AudioInput.java b/src/main/java/com/morlunk/jumble/audio/AudioInput.java
index 1a7f607..181cb1e 100644
--- a/src/main/java/com/morlunk/jumble/audio/AudioInput.java
+++ b/src/main/java/com/morlunk/jumble/audio/AudioInput.java
@@ -118,9 +118,7 @@ public class AudioInput implements Runnable {
mResampleBuffer = new short[mMicFrameSize];
}
- if(mUsePreprocessor) {
- configurePreprocessState();
- }
+ configurePreprocessState();
}
/**
@@ -262,6 +260,10 @@ public class AudioInput implements Runnable {
if(mEncoder != null) mEncoder.setBitrate(bitrate);
}
+ public void setPreprocessorEnabled(boolean preprocessorEnabled) {
+ mUsePreprocessor = preprocessorEnabled;
+ }
+
/**
* Stops the record loop and waits on it to finish.
* Releases native audio resources.
@@ -338,10 +340,14 @@ public class AudioInput implements Runnable {
mFrameCounter++;
// Resample if necessary
- if(mResampler != null) mResampler.resample(mResampleBuffer, mAudioBuffer);
+ if(mResampler != null) {
+ mResampler.resample(mResampleBuffer, mAudioBuffer);
+ }
// Run preprocessor on audio data. TODO echo!
- mPreprocessState.preprocess(mAudioBuffer);
+ if (mUsePreprocessor) {
+ mPreprocessState.preprocess(mAudioBuffer);
+ }
// Boost/reduce amplitude based on user preference
if(mAmplitudeBoost != 1.0f) {
diff --git a/src/main/java/com/morlunk/jumble/protocol/AudioHandler.java b/src/main/java/com/morlunk/jumble/protocol/AudioHandler.java
index 3358963..55a9cb8 100644
--- a/src/main/java/com/morlunk/jumble/protocol/AudioHandler.java
+++ b/src/main/java/com/morlunk/jumble/protocol/AudioHandler.java
@@ -69,6 +69,7 @@ public class AudioHandler extends JumbleNetworkListener {
private boolean mInitialized;
private boolean mBluetoothOn;
private boolean mHalfDuplex;
+ private boolean mPreprocessorEnabled;
private BroadcastReceiver mBluetoothReceiver = new BroadcastReceiver() {
@Override
@@ -315,6 +316,16 @@ public class AudioHandler extends JumbleNetworkListener {
}
/**
+ * Sets whether to enable the Speex preprocessor.
+ * Does not require input thread recreation.
+ * @param preprocessorEnabled Whether to enable the Speex preprocessor.
+ */
+ public void setPreprocessorEnabled(boolean preprocessorEnabled) {
+ mPreprocessorEnabled = preprocessorEnabled;
+ if (mInitialized) mInput.setPreprocessorEnabled(preprocessorEnabled);
+ }
+
+ /**
* Shuts down the audio handler, halting input and output.
* The handler may still be reinitialized with {@link AudioHandler#initialize()} after.
*/