Added "RTCP Multiplexing" account setting

This commit is contained in:
Juha Heinanen
2022-12-10 01:09:50 +02:00
parent fe295762d0
commit 364c19333b
7 changed files with 71 additions and 0 deletions

View File

@ -948,6 +948,19 @@ Java_com_tutpro_baresip_Api_account_1set_1answermode(JNIEnv *env, jobject thiz,
return account_set_answermode((struct account *)acc, mode);
}
JNIEXPORT jboolean JNICALL
Java_com_tutpro_baresip_Api_account_1rtcp_1mux(JNIEnv *env, jobject thiz, jlong acc)
{
return account_rtcp_mux((struct account *)acc);
}
JNIEXPORT jint JNICALL
Java_com_tutpro_baresip_Api_account_1set_1rtcp_1mux(JNIEnv *env, jobject thiz, jlong acc,
jboolean value)
{
return account_set_rtcp_mux((struct account *)acc, value);
}
JNIEXPORT jint JNICALL
Java_com_tutpro_baresip_Api_account_1dtmfmode(JNIEnv *env, jobject thiz, jlong acc)
{

View File

@ -23,6 +23,7 @@ class Account(val accp: Long) {
var videoCodec = ArrayList<String>()
var regint = Api.account_regint(accp)
var mediaEnc = Api.account_mediaenc(accp)
var rtcpMux = Api.account_rtcp_mux(accp)
var dtmfMode = Api.account_dtmfmode(accp)
var answerMode = Api.account_answermode(accp)
var vmUri = Api.account_vm_uri(accp)
@ -117,6 +118,9 @@ class Account(val accp: Long) {
if (mediaEnc != "") res += ";mediaenc=${mediaEnc}"
if (rtcpMux)
res += ";rtcp_mux=yes"
res = if (vmUri == "")
"$res;mwi=no"
else

View File

@ -43,6 +43,7 @@ class AccountActivity : AppCompatActivity() {
private lateinit var mediaNatSpinner: Spinner
private lateinit var mediaEnc: String
private lateinit var mediaEncSpinner: Spinner
private lateinit var rtcpCheck: CheckBox
private var dtmfMode = Api.DTMFMODE_RTP_EVENT
private lateinit var dtmfModeSpinner: Spinner
private var answerMode = Api.ANSWERMODE_MANUAL
@ -89,6 +90,7 @@ class AccountActivity : AppCompatActivity() {
stunUser = binding.StunUser
stunPass = binding.StunPass
mediaEncSpinner = binding.mediaEncSpinner
rtcpCheck = binding.RtcpMux
dtmfModeSpinner = binding.dtmfModeSpinner
answerModeSpinner = binding.answerModeSpinner
vmUri = binding.voicemailUri
@ -179,6 +181,8 @@ class AccountActivity : AppCompatActivity() {
"stun-turn-server" ->
if (text.isNotEmpty())
acc.stunServer = text
"rtcp-mux" ->
acc.rtcpMux = text == "yes"
"dtmf-mode" ->
if (text in arrayOf("rtp-event", "sip-info")) {
acc.dtmfMode = if (text == "rtp-event")
@ -289,6 +293,8 @@ class AccountActivity : AppCompatActivity() {
}
}
rtcpCheck.isChecked = acc.rtcpMux
dtmfMode = acc.dtmfMode
val dtmfModeKeys = arrayListOf(Api.DTMFMODE_RTP_EVENT, Api.DTMFMODE_SIP_INFO)
val dtmfModeVals = arrayListOf(getString(R.string.dtmf_inband), getString(R.string.dtmf_info))
@ -577,6 +583,15 @@ class AccountActivity : AppCompatActivity() {
}
}
if (rtcpCheck.isChecked != acc.rtcpMux)
if (Api.account_set_rtcp_mux(acc.accp, rtcpCheck.isChecked) == 0) {
acc.rtcpMux = Api.account_rtcp_mux(acc.accp)
Log.d(TAG, "New rtcpMux is ${acc.rtcpMux}")
save = true
} else {
Log.e(TAG, "Setting of account_rtc_mux failed")
}
if (dtmfMode != acc.dtmfMode) {
if (Api.account_set_dtmfmode(acc.accp, dtmfMode) == 0) {
acc.dtmfMode = Api.account_dtmfmode(acc.accp)
@ -750,6 +765,12 @@ class AccountActivity : AppCompatActivity() {
getString(R.string.media_encryption_help)
)
}
binding.RtcpMuxTitle.setOnClickListener {
Utils.alertView(
this, getString(R.string.rtcp_mux),
getString(R.string.rtcp_mux_help)
)
}
binding.DtmfModeTitle.setOnClickListener {
Utils.alertView(
this, getString(R.string.dtmf_mode),

View File

@ -46,6 +46,8 @@ object Api {
external fun account_vm_uri(acc: Long): String
external fun account_answermode(acc: Long): Int
external fun account_set_answermode(acc: Long, mode: Int): Int
external fun account_rtcp_mux(acc: Long): Boolean
external fun account_set_rtcp_mux(acc: Long, value: Boolean): Int
external fun account_dtmfmode(acc: Long): Int
external fun account_set_dtmfmode(acc: Long, mode: Int): Int
external fun account_extra(acc: Long): String

View File

@ -278,6 +278,31 @@
</LinearLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/RtcpMuxTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_toStartOf="@id/RtcpMux"
android:textSize="18sp"
android:text="@string/rtcp_mux" >
</TextView>
<CheckBox
android:id="@+id/RtcpMux"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_gravity="end"
android:layout_centerVertical="true"
android:checked="false" >
</CheckBox>
</RelativeLayout>
<TextView
android:id="@+id/DtmfModeTitle"
android:layout_width="wrap_content"

View File

@ -181,6 +181,10 @@
se on käytettävissä), jos puhelun molempien osapuolten tukemaa mediaprotokollaa
ei saada automaattisesti selvitettyä.
</string>
<string name="rtcp_mux">RTCP-multipleksaus</string>
<string name="rtcp_mux_help">Jos merkitty, RTP- and RTCP-paketit multipleksataan samaan porttiin
(RFC 5761).
</string>
<string name="dtmf_mode">DTMF-moodi</string>
<string name="dtmf_mode_help">Valitsee tavan, miten DTMF-merkit 09, #, * ja A-D lähetetään.</string>
<string name="dtmf_inband">RTP</string>

View File

@ -177,6 +177,8 @@
</string>
<string name="prefer_ipv6_media">Prefer IPv6 Media</string>
<string name="prefer_ipv6_media_help">If checked, offer to use IPv6 media protocol (if available) when media protocol of peer cannot be automatically determined.</string>
<string name="rtcp_mux">RTCP Multiplexing</string>
<string name="rtcp_mux_help">If checked, RTP and RTCP packets are multiplexed on a single port (RFC 5761).</string>
<string name="dtmf_mode">DTMF Mode</string>
<string name="dtmf_mode_help">Selects how DTMF tones 09, #, *, and A-D are sent.</string>
<string name="dtmf_inband">In-band RTP Events</string>