Update codec2 related interfaces

master
sh123 2023-12-09 13:33:32 +02:00
rodzic 4d56b32c55
commit 2f949aa501
5 zmienionych plików z 37 dodań i 15 usunięć

Wyświetl plik

@ -97,7 +97,7 @@ public class AppWorker extends Thread {
_stationItemRepository = new StationItemRepository((Application)context); _stationItemRepository = new StationItemRepository((Application)context);
_transport = TransportFactory.create(transportType, context); _transport = TransportFactory.create(transportType, context);
_protocol = ProtocolFactory.create(_codec2Mode, context); _protocol = ProtocolFactory.create(context);
_processPeriodicTimer = new Timer(); _processPeriodicTimer = new Timer();

Wyświetl plik

@ -1,9 +1,13 @@
package com.radio.codec2talkie.protocol; package com.radio.codec2talkie.protocol;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences;
import com.radio.codec2talkie.R;
import com.radio.codec2talkie.protocol.message.TextMessage; import com.radio.codec2talkie.protocol.message.TextMessage;
import com.radio.codec2talkie.protocol.position.Position; import com.radio.codec2talkie.protocol.position.Position;
import com.radio.codec2talkie.settings.PreferenceKeys;
import com.radio.codec2talkie.tools.AudioTools;
import com.radio.codec2talkie.transport.Transport; import com.radio.codec2talkie.transport.Transport;
import com.ustadmobile.codec2.Codec2; import com.ustadmobile.codec2.Codec2;
@ -19,18 +23,23 @@ public class AudioCodec2 implements Protocol {
private char[] _recordAudioEncodedBuffer; private char[] _recordAudioEncodedBuffer;
private short[] _playbackAudioBuffer; private short[] _playbackAudioBuffer;
private final SharedPreferences _sharedPreferences;
private ProtocolCallback _parentProtocolCallback; private ProtocolCallback _parentProtocolCallback;
public AudioCodec2(Protocol childProtocol, int codec2ModeId) { public AudioCodec2(Protocol childProtocol, SharedPreferences sharedPreferences) {
_childProtocol = childProtocol; _childProtocol = childProtocol;
_codec2Con = 0; _codec2Con = 0;
constructCodec2(codec2ModeId); _sharedPreferences = sharedPreferences;
} }
@Override @Override
public void initialize(Transport transport, Context context, ProtocolCallback protocolCallback) throws IOException { public void initialize(Transport transport, Context context, ProtocolCallback protocolCallback) throws IOException {
_parentProtocolCallback = protocolCallback; _parentProtocolCallback = protocolCallback;
_childProtocol.initialize(transport, context, _protocolCallback); _childProtocol.initialize(transport, context, _protocolCallback);
String codec2ModeName = _sharedPreferences.getString(PreferenceKeys.CODEC2_MODE, context.getResources().getStringArray(R.array.codec2_modes)[0]);
int codec2ModeId = AudioTools.extractCodec2ModeId(codec2ModeName);
constructCodec2(codec2ModeId);
} }
@Override @Override

Wyświetl plik

@ -6,9 +6,11 @@ import android.util.Log;
import androidx.preference.PreferenceManager; import androidx.preference.PreferenceManager;
import com.radio.codec2talkie.R;
import com.radio.codec2talkie.protocol.message.TextMessage; import com.radio.codec2talkie.protocol.message.TextMessage;
import com.radio.codec2talkie.protocol.position.Position; import com.radio.codec2talkie.protocol.position.Position;
import com.radio.codec2talkie.settings.PreferenceKeys; import com.radio.codec2talkie.settings.PreferenceKeys;
import com.radio.codec2talkie.tools.AudioTools;
import com.radio.codec2talkie.transport.Transport; import com.radio.codec2talkie.transport.Transport;
import com.ustadmobile.codec2.Codec2; import com.ustadmobile.codec2.Codec2;
@ -25,19 +27,18 @@ public class AudioFrameAggregator implements Protocol {
private int _outputBufferPos; private int _outputBufferPos;
private byte[] _outputBuffer; private byte[] _outputBuffer;
private final int _codec2FrameSize; private int _codec2FrameSize;
private final int _codec2ModeId;
private String _lastSrc; private String _lastSrc;
private String _lastDst; private String _lastDst;
private int _lastCodec2Mode; private int _lastCodec2Mode;
private final SharedPreferences _sharedPreferences;
private ProtocolCallback _parentProtocolCallback; private ProtocolCallback _parentProtocolCallback;
public AudioFrameAggregator(Protocol childProtocol, int codec2ModeId) { public AudioFrameAggregator(Protocol childProtocol, SharedPreferences sharedPreferences) {
_childProtocol = childProtocol; _childProtocol = childProtocol;
_codec2ModeId = codec2ModeId; _sharedPreferences = sharedPreferences;
_codec2FrameSize = getPcmAudioBufferSize(codec2ModeId);
} }
@Override @Override
@ -48,6 +49,10 @@ public class AudioFrameAggregator implements Protocol {
_outputBuffer = new byte[_outputBufferSize]; _outputBuffer = new byte[_outputBufferSize];
_outputBufferPos = 0; _outputBufferPos = 0;
_childProtocol.initialize(transport, context, _protocolCallback); _childProtocol.initialize(transport, context, _protocolCallback);
String codec2ModeName = _sharedPreferences.getString(PreferenceKeys.CODEC2_MODE, context.getResources().getStringArray(R.array.codec2_modes)[0]);
int codec2ModeId = AudioTools.extractCodec2ModeId(codec2ModeName);
_codec2FrameSize = getPcmAudioBufferSize(codec2ModeId);
} }
@Override @Override

Wyświetl plik

@ -59,7 +59,7 @@ public class ProtocolFactory {
return protocolType; return protocolType;
} }
public static Protocol create(int codec2ModeId, Context context) { public static Protocol create(Context context) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context); SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
@ -104,11 +104,11 @@ public class ProtocolFactory {
} }
if (!freedvEnabled) { if (!freedvEnabled) {
if (recordingEnabled) { if (recordingEnabled) {
proto = new Recorder(proto, codec2ModeId); proto = new Recorder(proto, sharedPreferences);
} }
proto = new AudioFrameAggregator(proto, codec2ModeId); proto = new AudioFrameAggregator(proto, sharedPreferences);
proto = new AudioCodec2(proto, codec2ModeId); proto = new AudioCodec2(proto, sharedPreferences);
} }
if (aprsEnabled) { if (aprsEnabled) {

Wyświetl plik

@ -1,12 +1,16 @@
package com.radio.codec2talkie.protocol; package com.radio.codec2talkie.protocol;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import com.radio.codec2talkie.MainActivity; import com.radio.codec2talkie.MainActivity;
import com.radio.codec2talkie.R;
import com.radio.codec2talkie.protocol.message.TextMessage; import com.radio.codec2talkie.protocol.message.TextMessage;
import com.radio.codec2talkie.protocol.position.Position; import com.radio.codec2talkie.protocol.position.Position;
import com.radio.codec2talkie.settings.PreferenceKeys;
import com.radio.codec2talkie.tools.AudioTools;
import com.radio.codec2talkie.tools.StorageTools; import com.radio.codec2talkie.tools.StorageTools;
import com.radio.codec2talkie.transport.Transport; import com.radio.codec2talkie.transport.Transport;
@ -31,16 +35,17 @@ public class Recorder implements Protocol {
private Timer _fileRotationTimer; private Timer _fileRotationTimer;
final Protocol _childProtocol; final Protocol _childProtocol;
final int _codec2ModeId; int _codec2ModeId;
private String _prevSrcCallsign; private String _prevSrcCallsign;
private String _prevDstCallsign; private String _prevDstCallsign;
private final SharedPreferences _sharedPreferences;
private ProtocolCallback _parentProtocolCallback; private ProtocolCallback _parentProtocolCallback;
public Recorder(Protocol childProtocol, int codec2ModeId) { public Recorder(Protocol childProtocol, SharedPreferences sharedPreferences) {
_childProtocol = childProtocol; _childProtocol = childProtocol;
_codec2ModeId = codec2ModeId; _sharedPreferences = sharedPreferences;
_prevSrcCallsign = null; _prevSrcCallsign = null;
_prevDstCallsign = null; _prevDstCallsign = null;
@ -51,6 +56,9 @@ public class Recorder implements Protocol {
_parentProtocolCallback = protocolCallback; _parentProtocolCallback = protocolCallback;
_storage = StorageTools.getStorage(context); _storage = StorageTools.getStorage(context);
_childProtocol.initialize(transport, context, _protocolCallback); _childProtocol.initialize(transport, context, _protocolCallback);
String codec2ModeName = _sharedPreferences.getString(PreferenceKeys.CODEC2_MODE, context.getResources().getStringArray(R.array.codec2_modes)[0]);
_codec2ModeId = AudioTools.extractCodec2ModeId(codec2ModeName);
} }
@Override @Override