pespin has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-mgw/+/29861 )


Change subject: Rename and move func checking if amr mode is explicitly 
configured
......................................................................

Rename and move func checking if amr mode is explicitly configured

The previous naming was quite confusing, since the function is not
really checking whether a conversion is needed, but rather whether the
codec has the AMR RTP mode defined explicitly and hence forced.

The previous naming didn't harm because the amr_oa_bwe_convert also
supports the conversion path OA<->OA and BE<->BE.
Hence nowadays the amr_oa_bwe_convert() function is called always if the
dst conn has its codec with AMR RTP mode explicitly set, no matter if
the src and dst conn have the same mode.

Related: SYS#6161
Change-Id: I8dce3038ebccf5e1e37e2908070a67d66693a96f
---
M include/osmocom/mgcp/mgcp_codec.h
M src/libosmo-mgcp/mgcp_codec.c
M src/libosmo-mgcp/mgcp_network.c
3 files changed, 15 insertions(+), 16 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-mgw refs/changes/61/29861/1

diff --git a/include/osmocom/mgcp/mgcp_codec.h 
b/include/osmocom/mgcp/mgcp_codec.h
index 97e6b8d..a460809 100644
--- a/include/osmocom/mgcp/mgcp_codec.h
+++ b/include/osmocom/mgcp/mgcp_codec.h
@@ -17,4 +17,5 @@
 int mgcp_codec_pt_translate(struct mgcp_conn_rtp *conn_src, struct 
mgcp_conn_rtp *conn_dst, int payload_type);
 const struct mgcp_rtp_codec *mgcp_codec_pt_find_by_subtype_name(struct 
mgcp_conn_rtp *conn,
                                                                const char 
*subtype_name, unsigned int match_nr);
+bool mgcp_codec_amr_mode_is_indicated(const struct mgcp_rtp_codec *codec);
 bool mgcp_codec_amr_is_octet_aligned(const struct mgcp_rtp_codec *codec);
diff --git a/src/libosmo-mgcp/mgcp_codec.c b/src/libosmo-mgcp/mgcp_codec.c
index 38aa0a7..184ca43 100644
--- a/src/libosmo-mgcp/mgcp_codec.c
+++ b/src/libosmo-mgcp/mgcp_codec.c
@@ -345,6 +345,18 @@
        return -EINVAL;
 }

+/* Check if the codec has a specific AMR mode (octet-aligned or 
bandwith-efficient) set. */
+bool mgcp_codec_amr_mode_is_indicated(const struct mgcp_rtp_codec *codec)
+{
+       if (codec->param_present == false)
+               return false;
+       if (!codec->param.amr_octet_aligned_present)
+               return false;
+       if (strcmp(codec->subtype_name, "AMR") != 0)
+               return false;
+       return true;
+}
+
 /* Return true if octet-aligned is set in the given codec. Default to 
octet-aligned=0, i.e. bandwidth-efficient mode.
  * See RFC4867 "RTP Payload Format for AMR and AMR-WB" sections "8.1. AMR 
Media Type Registration" and "8.2. AMR-WB
  * Media Type Registration":
diff --git a/src/libosmo-mgcp/mgcp_network.c b/src/libosmo-mgcp/mgcp_network.c
index 4ca4914..f9c7a01 100644
--- a/src/libosmo-mgcp/mgcp_network.c
+++ b/src/libosmo-mgcp/mgcp_network.c
@@ -769,20 +769,6 @@
        return msgb_trim(msg, rc + sizeof(struct rtp_hdr));
 }

-/* Check if a conversion between octet-aligned and bandwith-efficient mode is
- * indicated. */
-static bool amr_oa_bwe_convert_indicated(struct mgcp_rtp_codec *codec)
-{
-       if (codec->param_present == false)
-               return false;
-       if (!codec->param.amr_octet_aligned_present)
-               return false;
-       if (strcmp(codec->subtype_name, "AMR") != 0)
-               return false;
-       return true;
-}
-
-
 /* Return whether an RTP packet with AMR payload is in octet-aligned mode.
  * Return 0 if in bandwidth-efficient mode, 1 for octet-aligned mode, and 
negative if the RTP data is invalid. */
 static int amr_oa_check(char *data, int len)
@@ -1217,7 +1203,7 @@

                        if (mgcp_conn_rtp_is_iuup(conn_dst) || 
mgcp_conn_rtp_is_iuup(conn_src)) {
                                /* the iuup code will correctly transform to 
the correct AMR mode */
-                       } else if 
(amr_oa_bwe_convert_indicated(conn_dst->end.codec)) {
+                       } else if 
(mgcp_codec_amr_mode_is_indicated(conn_dst->end.codec)) {
                                rc = amr_oa_bwe_convert(endp, msg,
                                                        
conn_dst->end.codec->param.amr_octet_aligned);
                                if (rc < 0) {
@@ -1531,7 +1517,7 @@
         * defined, then we check if the incoming payload matches that
         * expectation. */
        if (mc->proto == MGCP_PROTO_RTP &&
-           amr_oa_bwe_convert_indicated(conn_src->end.codec)) {
+           mgcp_codec_amr_mode_is_indicated(conn_src->end.codec)) {
                int oa = amr_oa_check((char*)msgb_data(msg), msgb_length(msg));
                if (oa < 0)
                        return -1;

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

Gerrit-Project: osmo-mgw
Gerrit-Branch: master
Gerrit-Change-Id: I8dce3038ebccf5e1e37e2908070a67d66693a96f
Gerrit-Change-Number: 29861
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pes...@sysmocom.de>
Gerrit-MessageType: newchange

Reply via email to