legacy
sh123 2022-07-31 14:30:51 +03:00
rodzic e1720262fa
commit 8d1cf2534f
3 zmienionych plików z 15 dodań i 3 usunięć

Wyświetl plik

@ -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;
}

Wyświetl plik

@ -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}
};
}

Wyświetl plik

@ -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);