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

gitlab.com/quite/humla.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/morlunk')
-rw-r--r--src/main/java/com/morlunk/jumble/audio/AudioInput.java2
-rw-r--r--src/main/java/com/morlunk/jumble/audio/AudioOutputSpeech.java31
-rw-r--r--src/main/java/com/morlunk/jumble/audio/javacpp/CELT11.java4
-rw-r--r--src/main/java/com/morlunk/jumble/audio/javacpp/CELT7.java4
-rw-r--r--src/main/java/com/morlunk/jumble/audio/javacpp/Opus.java6
5 files changed, 21 insertions, 26 deletions
diff --git a/src/main/java/com/morlunk/jumble/audio/AudioInput.java b/src/main/java/com/morlunk/jumble/audio/AudioInput.java
index 8991f6d..5c55892 100644
--- a/src/main/java/com/morlunk/jumble/audio/AudioInput.java
+++ b/src/main/java/com/morlunk/jumble/audio/AudioInput.java
@@ -58,8 +58,6 @@ public class AudioInput extends ProtocolHandler implements Runnable {
public void onTalkStateChanged(boolean talking);
- // Debug methods
-
/**
* Called after a frame is passed into the speex preprocessor.
* @param prob The probability of speech, from 0 to 1.
diff --git a/src/main/java/com/morlunk/jumble/audio/AudioOutputSpeech.java b/src/main/java/com/morlunk/jumble/audio/AudioOutputSpeech.java
index e98daf5..95f086e 100644
--- a/src/main/java/com/morlunk/jumble/audio/AudioOutputSpeech.java
+++ b/src/main/java/com/morlunk/jumble/audio/AudioOutputSpeech.java
@@ -29,6 +29,7 @@ import com.morlunk.jumble.model.User;
import com.morlunk.jumble.net.JumbleUDPMessageType;
import com.morlunk.jumble.net.PacketDataStream;
+import java.util.Arrays;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
@@ -54,7 +55,7 @@ public class AudioOutputSpeech {
private float[] mBuffer;
private float[] mFadeOut;
private float[] mFadeIn;
- private Queue<BytePointer> mFrames = new ConcurrentLinkedQueue<BytePointer>();
+ private Queue<byte[]> mFrames = new ConcurrentLinkedQueue<byte[]>();
private int mMissCount = 0;
private float mAverageAvailable = 0;
private boolean mHasTerminator = false;
@@ -151,8 +152,7 @@ public class AudioOutputSpeech {
if(mBufferFilled >= num)
return mLastAlive;
- FloatPointer out = new FloatPointer(mAudioBufferSize);
- out.fill(0);
+ float[] out = new float[mAudioBufferSize];
boolean nextAlive = mLastAlive;
while(mBufferFilled < num) {
@@ -160,7 +160,7 @@ public class AudioOutputSpeech {
resizeBuffer(mBufferFilled + mAudioBufferSize);
if(!mLastAlive)
- out.fill(0);
+ Arrays.fill(out, 0);
else {
IntPointer avail = new IntPointer(1);
avail.put(0);
@@ -207,14 +207,14 @@ public class AudioOutputSpeech {
int size = (int) (header & ((1 << 13) - 1));
mHasTerminator = (header & (1 << 13)) > 0;
- BytePointer audioData = new BytePointer(pds.dataBlock(size));
+ byte[] audioData = pds.dataBlock(size);
mFrames.add(audioData);
} else {
int header;
do {
header = pds.next() & 0xFF;
if(header > 0)
- mFrames.add(new BytePointer(pds.dataBlock(header & 0x7f)));
+ mFrames.add(pds.dataBlock(header & 0x7f));
else
mHasTerminator = true;
} while ((header & 0x80) > 0 && pds.isValid());
@@ -238,23 +238,23 @@ public class AudioOutputSpeech {
}
if(!mFrames.isEmpty()) {
- BytePointer data = mFrames.poll();
+ byte[] data = mFrames.poll();
if(mCodec == JumbleUDPMessageType.UDPVoiceCELTAlpha) {
CELT7.celt_decode_float(mCELTAlphaDecoder,
data,
- data.capacity(),
+ data.length,
out);
} else if(mCodec == JumbleUDPMessageType.UDPVoiceCELTBeta) {
CELT11.celt_decode_float(mCELTBetaDecoder,
data,
- data.capacity(),
+ data.length,
out,
Audio.FRAME_SIZE);
} else if(mCodec == JumbleUDPMessageType.UDPVoiceOpus) {
decodedSamples = Opus.opus_decode_float(mOpusDecoder,
data,
- data.capacity(),
+ data.length,
out,
mAudioBufferSize,
0);
@@ -266,12 +266,9 @@ public class AudioOutputSpeech {
// Speex.speex_decode(mSpeexDecoder, mSpeexBits, out);
// }
for(int i = 0; i < Audio.FRAME_SIZE; i++)
- out.put(i, out.get(i) * (1.0f / 32767.f));
+ out[i] *= (1.0f / 32767.f);
}
- data.deallocate();
-
-
if(mFrames.isEmpty())
synchronized (mJitterBuffer) {
mJitterBuffer.updateDelay(null, new IntPointer(1));
@@ -295,11 +292,11 @@ public class AudioOutputSpeech {
if (!nextAlive) {
for (int i = 0; i < Audio.FRAME_SIZE; i++) {
- out.put(i, out.get(i) * mFadeOut[i]);
+ out[i] *= mFadeOut[i];
}
} else if (ts == 0) {
for (int i = 0; i < Audio.FRAME_SIZE; i++) {
- out.put(i, out.get(i) * mFadeIn[i]);
+ out[i] *= mFadeIn[i];
}
}
@@ -309,7 +306,7 @@ public class AudioOutputSpeech {
}
}
- out.get(mBuffer, mBufferFilled, decodedSamples);
+ System.arraycopy(out, 0, mBuffer, mBufferFilled, decodedSamples);
mBufferFilled += decodedSamples;
}
diff --git a/src/main/java/com/morlunk/jumble/audio/javacpp/CELT11.java b/src/main/java/com/morlunk/jumble/audio/javacpp/CELT11.java
index 66dd219..f2c7cf7 100644
--- a/src/main/java/com/morlunk/jumble/audio/javacpp/CELT11.java
+++ b/src/main/java/com/morlunk/jumble/audio/javacpp/CELT11.java
@@ -43,8 +43,8 @@ public class CELT11 {
public static native void celt_mode_destroy(@Cast("CELTMode*") Pointer mode);
public static native @NoDeallocator Pointer celt_decoder_create(int sampleRate, int channels, IntPointer error);
- public static native int celt_decode(@Cast("CELTDecoder*") Pointer st, @Cast("const unsigned char*") BytePointer data, int len, ShortPointer pcm, int frameSize);
- public static native int celt_decode_float(@Cast("CELTDecoder*") Pointer st, @Cast("const unsigned char*") BytePointer data, int len, FloatPointer pcm, int frameSize);
+ public static native int celt_decode(@Cast("CELTDecoder*") Pointer st, @Cast("const unsigned char*") byte[] data, int len, short[] pcm, int frameSize);
+ public static native int celt_decode_float(@Cast("CELTDecoder*") Pointer st, @Cast("const unsigned char*") byte[] data, int len, float[] pcm, int frameSize);
public static native int celt_decoder_ctl(@Cast("CELTDecoder*") Pointer st, int request, Pointer val);
public static native void celt_decoder_destroy(@Cast("CELTDecoder*") Pointer st);
diff --git a/src/main/java/com/morlunk/jumble/audio/javacpp/CELT7.java b/src/main/java/com/morlunk/jumble/audio/javacpp/CELT7.java
index dd5b737..e180db4 100644
--- a/src/main/java/com/morlunk/jumble/audio/javacpp/CELT7.java
+++ b/src/main/java/com/morlunk/jumble/audio/javacpp/CELT7.java
@@ -43,8 +43,8 @@ public class CELT7 {
public static native void celt_mode_destroy(@Cast("CELTMode*") Pointer mode);
public static native @NoDeallocator Pointer celt_decoder_create(@Cast("CELTMode*") Pointer mode, int channels, IntPointer error);
- public static native int celt_decode(@Cast("CELTDecoder*") Pointer st, @Cast("const unsigned char*") BytePointer data, int len, ShortPointer pcm);
- public static native int celt_decode_float(@Cast("CELTDecoder*") Pointer st, @Cast("const unsigned char*") BytePointer data, int len, FloatPointer pcm);
+ public static native int celt_decode(@Cast("CELTDecoder*") Pointer st, @Cast("const unsigned char*") byte[] data, int len, short[] pcm);
+ public static native int celt_decode_float(@Cast("CELTDecoder*") Pointer st, @Cast("const unsigned char*") byte[] data, int len, float[] pcm);
public static native int celt_decoder_ctl(@Cast("CELTDecoder*") Pointer st, int request, Pointer val);
public static native void celt_decoder_destroy(@Cast("CELTDecoder*") Pointer st);
diff --git a/src/main/java/com/morlunk/jumble/audio/javacpp/Opus.java b/src/main/java/com/morlunk/jumble/audio/javacpp/Opus.java
index 962a2f5..df06fb8 100644
--- a/src/main/java/com/morlunk/jumble/audio/javacpp/Opus.java
+++ b/src/main/java/com/morlunk/jumble/audio/javacpp/Opus.java
@@ -46,8 +46,8 @@ public class Opus {
public static native int opus_decoder_get_size(int channels);
public static native @NoDeallocator Pointer opus_decoder_create(int fs, int channels, IntPointer error);
public static native int opus_decoder_init(@Cast("OpusDecoder*") Pointer st, int fs, int channels);
- public static native int opus_decode(@Cast("OpusDecoder*") Pointer st, @Cast("const unsigned char*") BytePointer data, int len, ShortPointer out, int frameSize, int decodeFec);
- public static native int opus_decode_float(@Cast("OpusDecoder*") Pointer st, @Cast("const unsigned char*") BytePointer data, int len, FloatPointer out, int frameSize, int decodeFec);
+ public static native int opus_decode(@Cast("OpusDecoder*") Pointer st, @Cast("const unsigned char*") byte[] data, int len, short[] out, int frameSize, int decodeFec);
+ public static native int opus_decode_float(@Cast("OpusDecoder*") Pointer st, @Cast("const unsigned char*") byte[] data, int len, float[] out, int frameSize, int decodeFec);
//public static native int opus_decoder_ctl(@Cast("OpusDecoder*") Pointer st, int request);
public static native void opus_decoder_destroy(@Cast("OpusDecoder*") Pointer st);
//public static native int opus_packet_parse(@Cast("const unsigned char*") BytePointer data, int len, ...
@@ -62,7 +62,7 @@ public class Opus {
public static native @NoDeallocator Pointer opus_encoder_create(int fs, int channels, int application, IntPointer error);
public static native int opus_encoder_init(@Cast("OpusEncoder*") Pointer st, int fs, int channels, int application);
public static native int opus_encode(@Cast("OpusEncoder*") Pointer st, @Cast("const short*") short[] pcm, int frameSize, @Cast("unsigned char*") byte[] data, int maxDataBytes);
- public static native int opus_encode_float(@Cast("OpusEncoder*") Pointer st, @Cast("const float*") FloatPointer pcm, int frameSize, @Cast("unsigned char*") BytePointer data, int maxDataBytes);
+ public static native int opus_encode_float(@Cast("OpusEncoder*") Pointer st, @Cast("const float*") float[] pcm, int frameSize, @Cast("unsigned char*") byte[] data, int maxDataBytes);
public static native void opus_encoder_destroy(@Cast("OpusEncoder*") Pointer st);
public static native int opus_encoder_ctl(@Cast("OpusEncoder*") Pointer st, int request, Pointer value);
}