MNCC: use codec_mapping, drop mgcp_codec_to_mncc_payload_msg_type()

Change-Id: I8995ef43b9f79bc1db5672362c6433e4d96dd9e0
diff --git a/src/libmsc/mncc_call.c b/src/libmsc/mncc_call.c
index c9a6d56..fbf96f3 100644
--- a/src/libmsc/mncc_call.c
+++ b/src/libmsc/mncc_call.c
@@ -35,6 +35,7 @@
 #include <osmocom/msc/rtp_stream.h>
 #include <osmocom/msc/msub.h>
 #include <osmocom/msc/vlr.h>
+#include <osmocom/msc/codec_mapping.h>
 
 struct osmo_fsm mncc_call_fsm;
 static bool mncc_call_tx_rtp_create(struct mncc_call *mncc_call);
@@ -274,25 +275,6 @@
 	return mncc_call_tx_rtp_create(mncc_call);
 }
 
-/* Convert enum mgcp_codecs to an gsm_mncc_rtp->payload_msg_type value. */
-uint32_t mgcp_codec_to_mncc_payload_msg_type(enum mgcp_codecs codec)
-{
-	switch (codec) {
-	default:
-		/* disclaimer: i have no idea what i'm doing. */
-	case CODEC_GSM_8000_1:
-		return GSM_TCHF_FRAME;
-	case CODEC_GSMEFR_8000_1:
-		return GSM_TCHF_FRAME_EFR;
-	case CODEC_GSMHR_8000_1:
-		return GSM_TCHH_FRAME;
-	case CODEC_AMR_8000_1:
-	case CODEC_AMRWB_16000_1:
-		//return GSM_TCHF_FRAME;
-		return GSM_TCH_FRAME_AMR;
-	}
-}
-
 static bool mncc_call_tx_rtp_create(struct mncc_call *mncc_call)
 {
 	if (!mncc_call->rtps || !osmo_sockaddr_str_is_nonzero(&mncc_call->rtps->local)) {
@@ -314,8 +296,15 @@
 	}
 
 	if (mncc_call->rtps->codec_known) {
-		mncc_msg.rtp.payload_type = 0; /* ??? */
-		mncc_msg.rtp.payload_msg_type = mgcp_codec_to_mncc_payload_msg_type(mncc_call->rtps->codec);
+		const struct codec_mapping *m = codec_mapping_by_mgcp_codec(mncc_call->rtps->codec);
+
+		if (!m) {
+			mncc_call_error(mncc_call, "Failed to resolve audio codec '%s'\n",
+					osmo_mgcpc_codec_name(mncc_call->rtps->codec));
+			return false;
+		}
+		mncc_msg.rtp.payload_type = m->sdp.payload_type;
+		mncc_msg.rtp.payload_msg_type = m->mncc_payload_msg_type;
 	}
 
 	if (mncc_call_tx(mncc_call, &mncc_msg))