Change in ...osmo-msc[master]: mncc: send payload type matching chosen codec

neels gerrit-no-reply at lists.osmocom.org
Wed Aug 28 21:22:45 UTC 2019


neels has submitted this change and it was merged. ( https://gerrit.osmocom.org/c/osmo-msc/+/15060 )

Change subject: mncc: send payload type matching chosen codec
......................................................................

mncc: send payload type matching chosen codec

Change-Id: Id32f32d77d24b753adb96b5393c0363439e312c2
---
M include/osmocom/msc/mncc_call.h
M src/libmsc/gsm_04_08_cc.c
2 files changed, 27 insertions(+), 12 deletions(-)

Approvals:
  laforge: Looks good to me, approved
  keith: Looks good to me, but someone else must approve
  Jenkins Builder: Verified



diff --git a/include/osmocom/msc/mncc_call.h b/include/osmocom/msc/mncc_call.h
index ad0f0f8..e887cbe 100644
--- a/include/osmocom/msc/mncc_call.h
+++ b/include/osmocom/msc/mncc_call.h
@@ -22,6 +22,7 @@
  */
 #pragma once
 
+#include <osmocom/mgcp_client/mgcp_client.h>
 #include <osmocom/msc/mncc.h>
 #include <osmocom/msc/mncc_call.h>
 
@@ -138,3 +139,5 @@
 struct mncc_call *mncc_call_find_by_callref(uint32_t callref);
 
 void mncc_call_release(struct mncc_call *mncc_call);
+
+uint32_t mgcp_codec_to_mncc_payload_msg_type(enum mgcp_codecs codec);
diff --git a/src/libmsc/gsm_04_08_cc.c b/src/libmsc/gsm_04_08_cc.c
index 34d95f6..f974e90 100644
--- a/src/libmsc/gsm_04_08_cc.c
+++ b/src/libmsc/gsm_04_08_cc.c
@@ -30,6 +30,8 @@
 #include <regex.h>
 #include <sys/types.h>
 
+#include <osmocom/mgcp_client/mgcp_client_endpoint_fsm.h>
+
 #include <osmocom/msc/db.h>
 #include <osmocom/msc/debug.h>
 #include <osmocom/msc/gsm_data.h>
@@ -1667,18 +1669,28 @@
 	struct gsm_network *net = msc_a_net(msc_a);
 	struct call_leg *cl = msc_a->cc.call_leg;
 	struct osmo_sockaddr_str *rtp_cn_local;
-	/* FIXME: This has to be set to some meaningful value,
-	 * before the MSC-Split, this value was pulled from
-	 * lchan->abis_ip.rtp_payload */
-	uint32_t payload_type = 0;
-	int msg_type;
+	struct rtp_stream *rtp_cn = cl ? cl->rtp[RTP_TO_CN] : NULL;
+	uint32_t payload_type;
+	int payload_msg_type;
+	const struct mgcp_conn_peer *mgcp_info;
 
-	/* FIXME This has to be set to some meaningful value.
-	 * Possible options are:
-	 * GSM_TCHF_FRAME, GSM_TCHF_FRAME_EFR,
-	 * GSM_TCHH_FRAME, GSM_TCH_FRAME_AMR
-	 * (0 if unknown) */
-	msg_type = GSM_TCHF_FRAME;
+	if (!rtp_cn) {
+		LOG_TRANS_CAT(trans, DMNCC, LOGL_ERROR, "Cannot RTP CREATE to MNCC, no RTP set up for the CN side\n");
+		return -EINVAL;
+	}
+
+	if (!rtp_cn->codec_known) {
+		LOG_TRANS_CAT(trans, DMNCC, LOGL_ERROR,
+			      "Cannot RTP CREATE to MNCC, no codec set up for the RTP CN side\n");
+		return -EINVAL;
+	}
+
+	/* Codec */
+	payload_msg_type = mgcp_codec_to_mncc_payload_msg_type(rtp_cn->codec);
+
+	/* Payload Type number */
+	mgcp_info = osmo_mgcpc_ep_ci_get_rtp_info(rtp_cn->ci);
+	payload_type = map_codec_to_pt(mgcp_info->ptmap, mgcp_info->ptmap_len, rtp_cn->codec);
 
 	rtp_cn_local = call_leg_local_ip(cl, RTP_TO_CN);
 	if (!rtp_cn_local) {
@@ -1686,7 +1698,7 @@
 		return -EINVAL;
 	}
 
-	return mncc_recv_rtp(net, trans, trans->callref, MNCC_RTP_CREATE, rtp_cn_local, payload_type, msg_type);
+	return mncc_recv_rtp(net, trans, trans->callref, MNCC_RTP_CREATE, rtp_cn_local, payload_type, payload_msg_type);
 }
 
 static int tch_rtp_connect(struct gsm_network *net, const struct gsm_mncc_rtp *rtp)

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-msc/+/15060
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-Change-Id: Id32f32d77d24b753adb96b5393c0363439e312c2
Gerrit-Change-Number: 15060
Gerrit-PatchSet: 3
Gerrit-Owner: neels <nhofmeyr at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: keith <keith at rhizomatica.org>
Gerrit-Reviewer: laforge <laforge at gnumonks.org>
Gerrit-Reviewer: neels <nhofmeyr at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20190828/9eb1f54d/attachment.html>


More information about the gerrit-log mailing list