kopia lustrzana https://github.com/sh123/codec2_talkie
Refactoring
rodzic
e1720262fa
commit
8d1cf2534f
|
@ -34,6 +34,7 @@ public class SoundModem implements Transport {
|
|||
private final byte[] _recordBitBuffer;
|
||||
private final short[] _playbackAudioBuffer;
|
||||
private final byte[] _playbackBitBuffer;
|
||||
private final int _samplesPerSymbol;
|
||||
|
||||
private final Context _context;
|
||||
private final SharedPreferences _sharedPreferences;
|
||||
|
@ -54,6 +55,7 @@ public class SoundModem implements Transport {
|
|||
_recordBitBuffer = new byte[Codec2.fskDemodBitsBufSize(_fskModem)];
|
||||
_playbackAudioBuffer = new short[Codec2.fskModSamplesBufSize(_fskModem)];
|
||||
_playbackBitBuffer = new byte[Codec2.fskModBitsBufSize(_fskModem)];
|
||||
_samplesPerSymbol = Codec2.fskSamplesPerSymbol(_fskModem);
|
||||
|
||||
constructSystemAudioDevices();
|
||||
}
|
||||
|
@ -118,8 +120,11 @@ public class SoundModem implements Transport {
|
|||
}
|
||||
_playbackBitBuffer[j] = dataBytesAsBits[i];
|
||||
}
|
||||
Codec2.fskModulate(_fskModem, _playbackAudioBuffer, Arrays.copyOf(_playbackBitBuffer, j));
|
||||
int r = _systemAudioPlayer.write(_playbackAudioBuffer, 0, _playbackAudioBuffer.length);
|
||||
|
||||
// process tail
|
||||
byte [] bitBufferTail = Arrays.copyOf(_playbackBitBuffer, j);
|
||||
Codec2.fskModulate(_fskModem, _playbackAudioBuffer, bitBufferTail);
|
||||
_systemAudioPlayer.write(_playbackAudioBuffer, 0, bitBufferTail.length * _samplesPerSymbol);
|
||||
_systemAudioPlayer.play();
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -108,6 +108,11 @@ namespace Java_com_ustadmobile_codec2_Codec2 {
|
|||
return conFsk->Nbits;
|
||||
}
|
||||
|
||||
static jint fskSamplesPerSymbol(JNIEnv * env, jclass clazz, jlong n) {
|
||||
ContextFsk *conFsk = getContextFsk(n);
|
||||
return conFsk->Ts;
|
||||
}
|
||||
|
||||
static jint destroy(JNIEnv *env, jclass clazz, jlong n) {
|
||||
Context *con = getContext(n);
|
||||
codec2_destroy(con->c2);
|
||||
|
@ -203,7 +208,8 @@ namespace Java_com_ustadmobile_codec2_Codec2 {
|
|||
{"fskDemodBitsBufSize","(J)I", (void *) fskDemodBitsBufSize},
|
||||
{"fskModSamplesBufSize","(J)I", (void *) fskModSamplesBufSize},
|
||||
{"fskDemodSamplesBufSize","(J)I", (void *) fskDemodSamplesBufSize},
|
||||
{"fskModBitsBufSize", "(J)I", (void *) fskModBitsBufSize}
|
||||
{"fskModBitsBufSize", "(J)I", (void *) fskModBitsBufSize},
|
||||
{"fskSamplesPerSymbol","(J)I", (void *) fskSamplesPerSymbol}
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -42,6 +42,7 @@ public class Codec2 {
|
|||
public native static int fskModSamplesBufSize(long conFsk);
|
||||
public native static int fskDemodSamplesBufSize(long conFsk);
|
||||
public native static int fskModBitsBufSize(long conFsk);
|
||||
public native static int fskSamplesPerSymbol(long conFsk);
|
||||
|
||||
public native static long fskModulate(long conFsk, short[] outputSamples, byte[] inputBits);
|
||||
public native static long fskDemodulate(long conFsk, short[] inputSamples, byte[] outputBits);
|
||||
|
|
Ładowanie…
Reference in New Issue