legacy
sh123 2022-07-31 18:50:30 +03:00
rodzic 77f00b54fd
commit 89a9920373
3 zmienionych plików z 26 dodań i 3 usunięć

Wyświetl plik

@ -15,6 +15,24 @@ public class DebugTools {
return new String(hexChars);
}
public static String shortsToHex(short[] shorts) {
StringBuilder s = new StringBuilder();
for (short aShort : shorts) {
s.append(String.format("%04x ", aShort));
}
return s.toString();
}
public static String byteBitsToString(byte[] bytesAsBits) {
StringBuilder s = new StringBuilder();
for (int i = 0; i < bytesAsBits.length; i++) {
s.append(bytesAsBits[i]);
if (i % 8 == 7) s.append(' ');
else if (i % 4 == 3) s.append(':');
}
return s.toString();
}
public static boolean isPrintableAscii(byte value)
{
return (value >= 32 ) && (value < 127);

Wyświetl plik

@ -7,11 +7,13 @@ import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.AudioTrack;
import android.media.MediaRecorder;
import android.util.Log;
import androidx.preference.PreferenceManager;
import com.radio.codec2talkie.settings.PreferenceKeys;
import com.radio.codec2talkie.tools.BitTools;
import com.radio.codec2talkie.tools.DebugTools;
import com.ustadmobile.codec2.Codec2;
import java.io.IOException;
@ -21,7 +23,8 @@ public class SoundModem implements Transport {
private static final String TAG = SoundModem.class.getSimpleName();
private static final int AUDIO_SAMPLE_SIZE = 48000;
// NOTE, codec2 library requires that sample_rate % bit_rate == 0
public static final int AUDIO_SAMPLE_SIZE = 24000;
private final String _name;
@ -108,12 +111,16 @@ public class SoundModem implements Transport {
@Override
public int write(byte[] srcDataBytesAsBits) throws IOException {
//Log.i(TAG, DebugTools.byteBitsToString(srcDataBytesAsBits));
byte[] dataBytesAsBits = BitTools.convertToNRZI(srcDataBytesAsBits);
//Log.i(TAG, DebugTools.byteBitsToString(dataBytesAsBits));
int j = 0;
for (int i = 0; i < dataBytesAsBits.length; i++, j++) {
if (j >= _playbackBitBuffer.length) {
//Log.i(TAG, DebugTools.byteBitsToString(_playbackBitBuffer));
Codec2.fskModulate(_fskModem, _playbackAudioBuffer, _playbackBitBuffer);
//Log.i(TAG, DebugTools.shortsToHex(_playbackAudioBuffer));
_systemAudioPlayer.write(_playbackAudioBuffer, 0, _playbackAudioBuffer.length);
_systemAudioPlayer.play();
j = 0;

Wyświetl plik

@ -163,9 +163,7 @@ namespace Java_com_ustadmobile_codec2_Codec2 {
conFsk->modBits[i] = v;
}
env->ReleaseByteArrayElements(inputBits, jbuf, 0);
fsk_mod(conFsk->fsk, conFsk->modBuf, conFsk->modBits, inputBitsSize);
jshort *jOutBuf = env->GetShortArrayElements(outputSamples, nullptr);
for (int i = 0; i < conFsk->N; i++) {
jOutBuf[i] = (int16_t)(conFsk->modBuf[i] * FDMDV_SCALE);