diff --git a/app/src/main/kotlin/com/tutpro/baresip/ConfigActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/ConfigActivity.kt
index 8ced7425..b1de6462 100644
--- a/app/src/main/kotlin/com/tutpro/baresip/ConfigActivity.kt
+++ b/app/src/main/kotlin/com/tutpro/baresip/ConfigActivity.kt
@@ -25,6 +25,7 @@ class ConfigActivity : AppCompatActivity() {
internal lateinit var caFile: CheckBox
internal lateinit var aec: CheckBox
internal lateinit var opusBitRate: EditText
+ internal lateinit var opusPacketLoss: EditText
internal lateinit var iceLite: CheckBox
internal lateinit var debug: CheckBox
internal lateinit var reset: CheckBox
@@ -37,6 +38,7 @@ class ConfigActivity : AppCompatActivity() {
private var oldCAFile = false
private var oldAec = false
private var oldOpusBitrate = ""
+ private var oldOpusPacketLoss = ""
private var oldIceMode = ""
private var oldLogLevel = ""
private var callVolume = BaresipService.callVolume
@@ -95,6 +97,11 @@ class ConfigActivity : AppCompatActivity() {
oldOpusBitrate = if (obCv.size == 0) "28000" else obCv[0]
opusBitRate.setText(oldOpusBitrate)
+ opusPacketLoss = findViewById(R.id.OpusPacketLoss) as EditText
+ val oplCv = Config.variable("opus_packet_loss")
+ oldOpusPacketLoss = if (oplCv.size == 0) "0" else oplCv[0]
+ opusPacketLoss.setText(oldOpusPacketLoss)
+
iceLite = findViewById(R.id.IceLite) as CheckBox
val imCv = Config.variable("ice_mode")
oldIceMode = if (imCv.size == 0) "full" else imCv[0]
@@ -277,6 +284,23 @@ class ConfigActivity : AppCompatActivity() {
restart = true
}
+ val opusPacketLoss = opusPacketLoss.text.toString().trim()
+ if (opusPacketLoss != oldOpusPacketLoss) {
+ if (!checkOpusPacketLoss(opusPacketLoss)) {
+ Utils.alertView(this, "Notice",
+ "Invalid Opus Packet Loss Percentage: $opusPacketLoss")
+ return false
+ }
+ Config.remove("opus_inbandfec")
+ Config.remove("opus_packet_loss")
+ if (opusPacketLoss != "0") {
+ Config.add("opus_inbandfec", "yes")
+ Config.add("opus_bitrate", opusPacketLoss)
+ }
+ save = true
+ restart = true
+ }
+
var iceModeString = "full"
if (iceLite.isChecked) iceModeString = "lite"
if (oldIceMode != iceModeString) {
@@ -357,6 +381,10 @@ class ConfigActivity : AppCompatActivity() {
Utils.alertView(this, getString(R.string.opus_bit_rate),
getString(R.string.opus_bit_rate_help))
}
+ findViewById(R.id.OpusPacketLossTitle) as TextView-> {
+ Utils.alertView(this, getString(R.string.opus_packet_loss),
+ getString(R.string.opus_packet_loss_help))
+ }
findViewById(R.id.IceLiteTitle) as TextView-> {
Utils.alertView(this, getString(R.string.ice_lite_mode),
getString(R.string.ice_lite_mode_help))
@@ -385,7 +413,13 @@ class ConfigActivity : AppCompatActivity() {
private fun checkOpusBitRate(opusBitRate: String): Boolean {
val number = opusBitRate.toIntOrNull()
if (number == null) return false
- return (number >=6000) && (number <= 510000)
+ return (number >= 6000) && (number <= 510000)
+ }
+
+ private fun checkOpusPacketLoss(opusPacketLoss: String): Boolean {
+ val number = opusPacketLoss.toIntOrNull()
+ if (number == null) return false
+ return (number >= 0) && (number <= 100)
}
private fun addMissingPorts(addressList: String): String {
diff --git a/app/src/main/res/layout/activity_config.xml b/app/src/main/res/layout/activity_config.xml
index 4688330a..5ebcdb17 100644
--- a/app/src/main/res/layout/activity_config.xml
+++ b/app/src/main/res/layout/activity_config.xml
@@ -196,11 +196,10 @@
-
+
+
+
+
+
+
+
+ Odotettu Opus pakettihäviö
+ Odotettu Opus audio virran pakettihäviö prosentteina.
+ Mahdolliset arvot ovat 0-100. Oletusarvo on 0, jolloin ennakoiva virheenkorjaus
+ ei ole käytössä.
+ 0
ICE Lite-moodi
Jos merkitty, ICE Lite-moodi on
käytössä.
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 1e313c53..6a350f51 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -178,6 +178,11 @@ Check Apps → baresip → Permissions → Storage and that file \'accounts.bs\'
Average maximum bit rate used by Opus audio stream.
Valid values are 6000-510000. Factory default is 28000.
28000
+ Opus Expected Packet Loss
+ Expected Opus audio stream packet loss percentage.
+ Valid values are 0-100. Factory default is 0, which disables Opus Forward Error
+ Correction (FEC).
+ 0
ICE Lite Mode
If checked, ICE Lite Mode is used.
Default Call Volume