From 313ecc5e7b28dee4d30e31782b69ed6958709bbd Mon Sep 17 00:00:00 2001 From: sh123 Date: Tue, 23 Aug 2022 17:09:36 +0300 Subject: [PATCH] Set number of burst for data --- .../com/radio/codec2talkie/protocol/Freedv.java | 4 ++-- .../src/main/res/xml/preferences_sound_modem.xml | 1 - libcodec2-android/src/main/cpp/Codec2JNI.cpp | 14 ++++++++++---- .../main/java/com/ustadmobile/codec2/Codec2.java | 2 +- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Freedv.java b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Freedv.java index 0e95061..6bc3a1b 100644 --- a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Freedv.java +++ b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Freedv.java @@ -53,12 +53,12 @@ public class Freedv implements Protocol { Log.i(TAG, "Using freedv mode " + AudioTools.getFreedvModeAsText(sharedPreferences)); - _freedv = Codec2.freedvCreate(mode, isSquelchEnabled, squelchSnr); + _freedv = Codec2.freedvCreate(mode, isSquelchEnabled, squelchSnr, 0); // unset for speech _modemTxBuffer = new short[Codec2.freedvGetNomModemSamples(_freedv)]; _speechRxBuffer = new short[Codec2.freedvGetMaxSpeechSamples(_freedv)]; _speechSamples = ShortBuffer.allocate(1024*10); - _freedvData = Codec2.freedvCreate(dataMode, isSquelchEnabled, squelchSnr); + _freedvData = Codec2.freedvCreate(dataMode, isSquelchEnabled, squelchSnr, 1); _dataBuffer = new byte[Codec2.freedvGetBitsPerModemFrame(_freedvData) / 8]; _dataSamplesBuffer = new short[Codec2.freedvGetNTxSamples(_freedvData)]; _dataSamples = ShortBuffer.allocate(1024*10); diff --git a/codec2talkie/src/main/res/xml/preferences_sound_modem.xml b/codec2talkie/src/main/res/xml/preferences_sound_modem.xml index 7cd47c1..7914ab1 100644 --- a/codec2talkie/src/main/res/xml/preferences_sound_modem.xml +++ b/codec2talkie/src/main/res/xml/preferences_sound_modem.xml @@ -123,5 +123,4 @@ app:dependency="ports_sound_modem_freedv_enable_squelch" app:defaultValue="0.0"> - \ No newline at end of file diff --git a/libcodec2-android/src/main/cpp/Codec2JNI.cpp b/libcodec2-android/src/main/cpp/Codec2JNI.cpp index 7c5fe9a..8b2c140 100644 --- a/libcodec2-android/src/main/cpp/Codec2JNI.cpp +++ b/libcodec2-android/src/main/cpp/Codec2JNI.cpp @@ -99,7 +99,7 @@ namespace Java_com_ustadmobile_codec2_Codec2 { return reinterpret_cast(conFsk); } - static jlong freedvCreate(JNIEnv *env, jclass clazz, int mode, jboolean isSquelchEnabled, jfloat squelchSnr) { + static jlong freedvCreate(JNIEnv *env, jclass clazz, int mode, jboolean isSquelchEnabled, jfloat squelchSnr, jlong framesPerBurst) { struct ContextFreedv *conFreedv; conFreedv = (struct ContextFreedv *) malloc(sizeof(struct ContextFreedv)); conFreedv->freeDv = freedv_open(mode); @@ -114,8 +114,14 @@ namespace Java_com_ustadmobile_codec2_Codec2 { conFreedv->rawDataSamples = static_cast(malloc( freedv_get_n_tx_modem_samples(conFreedv->freeDv) * sizeof(short))); // squelch - freedv_set_squelch_en(conFreedv->freeDv, isSquelchEnabled); - freedv_set_snr_squelch_thresh(conFreedv->freeDv, squelchSnr); + if (isSquelchEnabled) { + freedv_set_squelch_en(conFreedv->freeDv, isSquelchEnabled); + freedv_set_snr_squelch_thresh(conFreedv->freeDv, squelchSnr); + } + // frames per single burst, 0 - not specified + if (framesPerBurst > 0) { + freedv_set_frames_per_burst(conFreedv->freeDv, framesPerBurst); + } return reinterpret_cast(conFreedv); } @@ -362,7 +368,7 @@ namespace Java_com_ustadmobile_codec2_Codec2 { {"fskSamplesPerSymbol", "(J)I", (void *) fskSamplesPerSymbol}, {"fskNin", "(J)I", (void *) fskNin}, // freedv - {"freedvCreate", "(IZF)J", (void *)freedvCreate}, + {"freedvCreate", "(IZFJ)J", (void *)freedvCreate}, {"freedvDestroy", "(J)I", (void *)freedvDestroy}, {"freedvGetMaxSpeechSamples", "(J)I", (void *)freedvGetMaxSpeechSamples}, {"freedvGetMaxModemSamples", "(J)I", (void *)freedvGetMaxModemSamples}, diff --git a/libcodec2-android/src/main/java/com/ustadmobile/codec2/Codec2.java b/libcodec2-android/src/main/java/com/ustadmobile/codec2/Codec2.java index acb0c53..41c1c76 100644 --- a/libcodec2-android/src/main/java/com/ustadmobile/codec2/Codec2.java +++ b/libcodec2-android/src/main/java/com/ustadmobile/codec2/Codec2.java @@ -63,7 +63,7 @@ public class Codec2 { public native static long fskDemodulate(long conFsk, short[] inputSamples, byte[] outputBits); // freedv - public native static long freedvCreate(int mode, boolean isSquelchEnabled, float squelchSnr); + public native static long freedvCreate(int mode, boolean isSquelchEnabled, float squelchSnr, long framesPerBurst); public native static int freedvDestroy(long conFreedv); public native static int freedvGetMaxSpeechSamples(long conFreedv);