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