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 byte[] _recordBitBuffer;
|
||||||
private final short[] _playbackAudioBuffer;
|
private final short[] _playbackAudioBuffer;
|
||||||
private final byte[] _playbackBitBuffer;
|
private final byte[] _playbackBitBuffer;
|
||||||
|
private final int _samplesPerSymbol;
|
||||||
|
|
||||||
private final Context _context;
|
private final Context _context;
|
||||||
private final SharedPreferences _sharedPreferences;
|
private final SharedPreferences _sharedPreferences;
|
||||||
|
@ -54,6 +55,7 @@ public class SoundModem implements Transport {
|
||||||
_recordBitBuffer = new byte[Codec2.fskDemodBitsBufSize(_fskModem)];
|
_recordBitBuffer = new byte[Codec2.fskDemodBitsBufSize(_fskModem)];
|
||||||
_playbackAudioBuffer = new short[Codec2.fskModSamplesBufSize(_fskModem)];
|
_playbackAudioBuffer = new short[Codec2.fskModSamplesBufSize(_fskModem)];
|
||||||
_playbackBitBuffer = new byte[Codec2.fskModBitsBufSize(_fskModem)];
|
_playbackBitBuffer = new byte[Codec2.fskModBitsBufSize(_fskModem)];
|
||||||
|
_samplesPerSymbol = Codec2.fskSamplesPerSymbol(_fskModem);
|
||||||
|
|
||||||
constructSystemAudioDevices();
|
constructSystemAudioDevices();
|
||||||
}
|
}
|
||||||
|
@ -118,8 +120,11 @@ public class SoundModem implements Transport {
|
||||||
}
|
}
|
||||||
_playbackBitBuffer[j] = dataBytesAsBits[i];
|
_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();
|
_systemAudioPlayer.play();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -108,6 +108,11 @@ namespace Java_com_ustadmobile_codec2_Codec2 {
|
||||||
return conFsk->Nbits;
|
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) {
|
static jint destroy(JNIEnv *env, jclass clazz, jlong n) {
|
||||||
Context *con = getContext(n);
|
Context *con = getContext(n);
|
||||||
codec2_destroy(con->c2);
|
codec2_destroy(con->c2);
|
||||||
|
@ -203,7 +208,8 @@ namespace Java_com_ustadmobile_codec2_Codec2 {
|
||||||
{"fskDemodBitsBufSize","(J)I", (void *) fskDemodBitsBufSize},
|
{"fskDemodBitsBufSize","(J)I", (void *) fskDemodBitsBufSize},
|
||||||
{"fskModSamplesBufSize","(J)I", (void *) fskModSamplesBufSize},
|
{"fskModSamplesBufSize","(J)I", (void *) fskModSamplesBufSize},
|
||||||
{"fskDemodSamplesBufSize","(J)I", (void *) fskDemodSamplesBufSize},
|
{"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 fskModSamplesBufSize(long conFsk);
|
||||||
public native static int fskDemodSamplesBufSize(long conFsk);
|
public native static int fskDemodSamplesBufSize(long conFsk);
|
||||||
public native static int fskModBitsBufSize(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 fskModulate(long conFsk, short[] outputSamples, byte[] inputBits);
|
||||||
public native static long fskDemodulate(long conFsk, short[] inputSamples, byte[] outputBits);
|
public native static long fskDemodulate(long conFsk, short[] inputSamples, byte[] outputBits);
|
||||||
|
|
Ładowanie…
Reference in New Issue