diff options
author | Andrew Comminos <andrewcomminos@gmail.com> | 2014-08-18 02:42:00 +0400 |
---|---|---|
committer | Andrew Comminos <andrewcomminos@gmail.com> | 2014-08-18 02:42:00 +0400 |
commit | e1fafc14e80124b18edb03c0691895f74925b4cb (patch) | |
tree | 56470afa1e2b3ddf67109ba8635fa8887595545a | |
parent | d601621770d1417c563a56d43d80de2af9b00ec3 (diff) |
Add option for disabling speex preprocessor.
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. */ |