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