diff --git a/codec2talkie/src/main/java/com/radio/codec2talkie/tools/AudioTools.java b/codec2talkie/src/main/java/com/radio/codec2talkie/tools/AudioTools.java index 3c16554..e1c047b 100644 --- a/codec2talkie/src/main/java/com/radio/codec2talkie/tools/AudioTools.java +++ b/codec2talkie/src/main/java/com/radio/codec2talkie/tools/AudioTools.java @@ -80,7 +80,7 @@ public class AudioTools { // use freedv mode text instead if it is active String freedvModeLabel = getFreedvModeAsText(sharedPreferences); - if (freedvModeLabel != null) return "DV: " + freedvModeLabel; + if (freedvModeLabel != null) return freedvModeLabel; // codec2 speed String speedModeInfo = "C2: " + AudioTools.extractCodec2Speed(codec2ModeName); diff --git a/codec2talkie/src/main/java/com/radio/codec2talkie/transport/SoundModemFsk.java b/codec2talkie/src/main/java/com/radio/codec2talkie/transport/SoundModemFsk.java index 0bef9af..1ca0ac2 100644 --- a/codec2talkie/src/main/java/com/radio/codec2talkie/transport/SoundModemFsk.java +++ b/codec2talkie/src/main/java/com/radio/codec2talkie/transport/SoundModemFsk.java @@ -162,13 +162,7 @@ public class SoundModemFsk implements Transport, Runnable { // read samples to record audio buffer if there is enough data if (_recordAudioSampleBuffer.position() >= nin) { _recordAudioSampleBuffer.flip(); - try { - _recordAudioSampleBuffer.get(_recordAudioBuffer, 0, nin); - } catch (BufferUnderflowException e) { - e.printStackTrace(); - _recordAudioSampleBuffer.clear(); - return 0; - } + _recordAudioSampleBuffer.get(_recordAudioBuffer, 0, nin); _recordAudioSampleBuffer.compact(); //Log.i(TAG, "read " + _recordAudioBuffer.position() + " " +audioSamples.length + " " + DebugTools.shortsToHex(audioSamples)); // otherwise return void to the user @@ -240,12 +234,14 @@ public class SoundModemFsk implements Transport, Runnable { byte [] bitBufferTail = Arrays.copyOf(_playbackBitBuffer, j); Codec2.fskModulate(_fskModem, _playbackAudioBuffer, bitBufferTail); if (_isLoopback) { - for (short sample : _playbackAudioBuffer) { - try { - _recordAudioSampleBuffer.put(sample); - } catch (BufferOverflowException e) { - // client is transmitting and cannot consume the buffer, just discard - _recordAudioSampleBuffer.clear(); + synchronized (_recordAudioSampleBuffer) { + for (short sample : _playbackAudioBuffer) { + try { + _recordAudioSampleBuffer.put(sample); + } catch (BufferOverflowException e) { + // client is transmitting and cannot consume the buffer, just discard + _recordAudioSampleBuffer.clear(); + } } } } else { @@ -289,7 +285,7 @@ public class SoundModemFsk implements Transport, Runnable { Log.w(TAG, "" + readCnt + " != " + readSize); continue; } - synchronized (_recordAudioBuffer) { + synchronized (_recordAudioSampleBuffer) { for (short sample : sampleBuf) { try { _recordAudioSampleBuffer.put(sample); diff --git a/codec2talkie/src/main/res/values/strings.xml b/codec2talkie/src/main/res/values/strings.xml index d8d29e1..31f60a1 100644 --- a/codec2talkie/src/main/res/values/strings.xml +++ b/codec2talkie/src/main/res/values/strings.xml @@ -22,8 +22,8 @@ Loopback STOPPED TRANSMITTING - RECEIVING - (RECEIVING) + (RECEIVING) + RECEIVING RECEIVING\nERROR TRANSMITTING\nERROR