neels has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-msc/+/30115 )

Change subject: MNCC: use codec_mapping, drop 
mgcp_codec_to_mncc_payload_msg_type()
......................................................................

MNCC: use codec_mapping, drop mgcp_codec_to_mncc_payload_msg_type()

Change-Id: I8995ef43b9f79bc1db5672362c6433e4d96dd9e0
---
M src/libmsc/gsm_04_08_cc.c
M src/libmsc/mncc_call.c
2 files changed, 29 insertions(+), 22 deletions(-)

Approvals:
  laforge: Looks good to me, approved
  Jenkins Builder: Verified




diff --git a/src/libmsc/gsm_04_08_cc.c b/src/libmsc/gsm_04_08_cc.c
index 5715429..685bf60 100644
--- a/src/libmsc/gsm_04_08_cc.c
+++ b/src/libmsc/gsm_04_08_cc.c
@@ -56,6 +56,7 @@
 #include <osmocom/msc/mncc_call.h>
 #include <osmocom/msc/msc_t.h>
 #include <osmocom/msc/sdp_msg.h>
+#include <osmocom/msc/codec_mapping.h>

 #include <osmocom/gsm/gsm48.h>
 #include <osmocom/gsm/gsm0480.h>
@@ -1770,6 +1771,7 @@
        uint32_t payload_type;
        int payload_msg_type;
        const struct mgcp_conn_peer *mgcp_info;
+       const struct codec_mapping *m;

        if (!rtp_cn) {
                LOG_TRANS_CAT(trans, DMNCC, LOGL_ERROR, "Cannot RTP CREATE to 
MNCC, no RTP set up for the CN side\n");
@@ -1783,7 +1785,14 @@
        }

        /* Codec */
-       payload_msg_type = mgcp_codec_to_mncc_payload_msg_type(rtp_cn->codec);
+       m = codec_mapping_by_mgcp_codec(rtp_cn->codec);
+       if (!m) {
+               LOG_TRANS_CAT(trans, DMNCC, LOGL_ERROR,
+                             "Cannot RTP CREATE to MNCC, cannot resolve codec 
'%s'\n",
+                             osmo_mgcpc_codec_name(rtp_cn->codec));
+               return -EINVAL;
+       }
+       payload_msg_type = m->mncc_payload_msg_type;

        /* Payload Type number */
        mgcp_info = osmo_mgcpc_ep_ci_get_rtp_info(rtp_cn->ci);
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))

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

Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-Change-Id: I8995ef43b9f79bc1db5672362c6433e4d96dd9e0
Gerrit-Change-Number: 30115
Gerrit-PatchSet: 8
Gerrit-Owner: neels <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-Reviewer: neels <[email protected]>
Gerrit-Reviewer: pespin <[email protected]>
Gerrit-MessageType: merged

Reply via email to