kopia lustrzana https://github.com/sh123/codec2_talkie
Debugging
rodzic
77f00b54fd
commit
89a9920373
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
Ładowanie…
Reference in New Issue