Added "RTCP Multiplexing" account setting
This commit is contained in:
@@ -948,6 +948,19 @@ Java_com_tutpro_baresip_Api_account_1set_1answermode(JNIEnv *env, jobject thiz,
|
|||||||
return account_set_answermode((struct account *)acc, mode);
|
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
|
JNIEXPORT jint JNICALL
|
||||||
Java_com_tutpro_baresip_Api_account_1dtmfmode(JNIEnv *env, jobject thiz, jlong acc)
|
Java_com_tutpro_baresip_Api_account_1dtmfmode(JNIEnv *env, jobject thiz, jlong acc)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ class Account(val accp: Long) {
|
|||||||
var videoCodec = ArrayList<String>()
|
var videoCodec = ArrayList<String>()
|
||||||
var regint = Api.account_regint(accp)
|
var regint = Api.account_regint(accp)
|
||||||
var mediaEnc = Api.account_mediaenc(accp)
|
var mediaEnc = Api.account_mediaenc(accp)
|
||||||
|
var rtcpMux = Api.account_rtcp_mux(accp)
|
||||||
var dtmfMode = Api.account_dtmfmode(accp)
|
var dtmfMode = Api.account_dtmfmode(accp)
|
||||||
var answerMode = Api.account_answermode(accp)
|
var answerMode = Api.account_answermode(accp)
|
||||||
var vmUri = Api.account_vm_uri(accp)
|
var vmUri = Api.account_vm_uri(accp)
|
||||||
@@ -117,6 +118,9 @@ class Account(val accp: Long) {
|
|||||||
|
|
||||||
if (mediaEnc != "") res += ";mediaenc=${mediaEnc}"
|
if (mediaEnc != "") res += ";mediaenc=${mediaEnc}"
|
||||||
|
|
||||||
|
if (rtcpMux)
|
||||||
|
res += ";rtcp_mux=yes"
|
||||||
|
|
||||||
res = if (vmUri == "")
|
res = if (vmUri == "")
|
||||||
"$res;mwi=no"
|
"$res;mwi=no"
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ class AccountActivity : AppCompatActivity() {
|
|||||||
private lateinit var mediaNatSpinner: Spinner
|
private lateinit var mediaNatSpinner: Spinner
|
||||||
private lateinit var mediaEnc: String
|
private lateinit var mediaEnc: String
|
||||||
private lateinit var mediaEncSpinner: Spinner
|
private lateinit var mediaEncSpinner: Spinner
|
||||||
|
private lateinit var rtcpCheck: CheckBox
|
||||||
private var dtmfMode = Api.DTMFMODE_RTP_EVENT
|
private var dtmfMode = Api.DTMFMODE_RTP_EVENT
|
||||||
private lateinit var dtmfModeSpinner: Spinner
|
private lateinit var dtmfModeSpinner: Spinner
|
||||||
private var answerMode = Api.ANSWERMODE_MANUAL
|
private var answerMode = Api.ANSWERMODE_MANUAL
|
||||||
@@ -89,6 +90,7 @@ class AccountActivity : AppCompatActivity() {
|
|||||||
stunUser = binding.StunUser
|
stunUser = binding.StunUser
|
||||||
stunPass = binding.StunPass
|
stunPass = binding.StunPass
|
||||||
mediaEncSpinner = binding.mediaEncSpinner
|
mediaEncSpinner = binding.mediaEncSpinner
|
||||||
|
rtcpCheck = binding.RtcpMux
|
||||||
dtmfModeSpinner = binding.dtmfModeSpinner
|
dtmfModeSpinner = binding.dtmfModeSpinner
|
||||||
answerModeSpinner = binding.answerModeSpinner
|
answerModeSpinner = binding.answerModeSpinner
|
||||||
vmUri = binding.voicemailUri
|
vmUri = binding.voicemailUri
|
||||||
@@ -179,6 +181,8 @@ class AccountActivity : AppCompatActivity() {
|
|||||||
"stun-turn-server" ->
|
"stun-turn-server" ->
|
||||||
if (text.isNotEmpty())
|
if (text.isNotEmpty())
|
||||||
acc.stunServer = text
|
acc.stunServer = text
|
||||||
|
"rtcp-mux" ->
|
||||||
|
acc.rtcpMux = text == "yes"
|
||||||
"dtmf-mode" ->
|
"dtmf-mode" ->
|
||||||
if (text in arrayOf("rtp-event", "sip-info")) {
|
if (text in arrayOf("rtp-event", "sip-info")) {
|
||||||
acc.dtmfMode = if (text == "rtp-event")
|
acc.dtmfMode = if (text == "rtp-event")
|
||||||
@@ -289,6 +293,8 @@ class AccountActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rtcpCheck.isChecked = acc.rtcpMux
|
||||||
|
|
||||||
dtmfMode = acc.dtmfMode
|
dtmfMode = acc.dtmfMode
|
||||||
val dtmfModeKeys = arrayListOf(Api.DTMFMODE_RTP_EVENT, Api.DTMFMODE_SIP_INFO)
|
val dtmfModeKeys = arrayListOf(Api.DTMFMODE_RTP_EVENT, Api.DTMFMODE_SIP_INFO)
|
||||||
val dtmfModeVals = arrayListOf(getString(R.string.dtmf_inband), getString(R.string.dtmf_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 (dtmfMode != acc.dtmfMode) {
|
||||||
if (Api.account_set_dtmfmode(acc.accp, dtmfMode) == 0) {
|
if (Api.account_set_dtmfmode(acc.accp, dtmfMode) == 0) {
|
||||||
acc.dtmfMode = Api.account_dtmfmode(acc.accp)
|
acc.dtmfMode = Api.account_dtmfmode(acc.accp)
|
||||||
@@ -750,6 +765,12 @@ class AccountActivity : AppCompatActivity() {
|
|||||||
getString(R.string.media_encryption_help)
|
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 {
|
binding.DtmfModeTitle.setOnClickListener {
|
||||||
Utils.alertView(
|
Utils.alertView(
|
||||||
this, getString(R.string.dtmf_mode),
|
this, getString(R.string.dtmf_mode),
|
||||||
|
|||||||
@@ -46,6 +46,8 @@ object Api {
|
|||||||
external fun account_vm_uri(acc: Long): String
|
external fun account_vm_uri(acc: Long): String
|
||||||
external fun account_answermode(acc: Long): Int
|
external fun account_answermode(acc: Long): Int
|
||||||
external fun account_set_answermode(acc: Long, mode: Int): 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_dtmfmode(acc: Long): Int
|
||||||
external fun account_set_dtmfmode(acc: Long, mode: Int): Int
|
external fun account_set_dtmfmode(acc: Long, mode: Int): Int
|
||||||
external fun account_extra(acc: Long): String
|
external fun account_extra(acc: Long): String
|
||||||
|
|||||||
@@ -278,6 +278,31 @@
|
|||||||
|
|
||||||
</LinearLayout>
|
</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
|
<TextView
|
||||||
android:id="@+id/DtmfModeTitle"
|
android:id="@+id/DtmfModeTitle"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|||||||
@@ -181,6 +181,10 @@
|
|||||||
se on käytettävissä), jos puhelun molempien osapuolten tukemaa mediaprotokollaa
|
se on käytettävissä), jos puhelun molempien osapuolten tukemaa mediaprotokollaa
|
||||||
ei saada automaattisesti selvitettyä.
|
ei saada automaattisesti selvitettyä.
|
||||||
</string>
|
</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">DTMF-moodi</string>
|
||||||
<string name="dtmf_mode_help">Valitsee tavan, miten DTMF-merkit 0–9, #, * ja A-D lähetetään.</string>
|
<string name="dtmf_mode_help">Valitsee tavan, miten DTMF-merkit 0–9, #, * ja A-D lähetetään.</string>
|
||||||
<string name="dtmf_inband">RTP</string>
|
<string name="dtmf_inband">RTP</string>
|
||||||
|
|||||||
@@ -177,6 +177,8 @@
|
|||||||
</string>
|
</string>
|
||||||
<string name="prefer_ipv6_media">Prefer IPv6 Media</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="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">DTMF Mode</string>
|
||||||
<string name="dtmf_mode_help">Selects how DTMF tones 0–9, #, *, and A-D are sent.</string>
|
<string name="dtmf_mode_help">Selects how DTMF tones 0–9, #, *, and A-D are sent.</string>
|
||||||
<string name="dtmf_inband">In-band RTP Events</string>
|
<string name="dtmf_inband">In-band RTP Events</string>
|
||||||
|
|||||||
Reference in New Issue
Block a user