From a18c6378172c67bbbee99fa297a0ddf9420c71f5 Mon Sep 17 00:00:00 2001 From: efistokl Date: Tue, 25 Dec 2018 14:52:30 +0200 Subject: [PATCH] cosmetic: update comments, replace magic numbers with constants --- src/libosmo-mgcp/iuup_cn_node.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/libosmo-mgcp/iuup_cn_node.c b/src/libosmo-mgcp/iuup_cn_node.c index bb6cf4bbf..1c5599b57 100644 --- a/src/libosmo-mgcp/iuup_cn_node.c +++ b/src/libosmo-mgcp/iuup_cn_node.c @@ -41,6 +41,9 @@ #define LOG_IUUP_CN(cn, level, fmt, args...) \ LOGP(DIUUP, level, "(%s) " fmt, (cn)->name, ## args) +#define AMR_HEADER_LENGTH 2 +#define AMR_COMFORT_NOISE_PAYLOAD_LENGTH 5 + struct osmo_iuup_cn { struct osmo_iuup_cn_cfg cfg; char *name; @@ -84,16 +87,17 @@ void osmo_iuup_cn_free(struct osmo_iuup_cn *cn) static int rx_data(struct osmo_iuup_cn *cn, struct msgb *pdu, struct osmo_iuup_hdr_data *hdr) { - /* Remove the IuUP bit from the middle of the buffer by writing the RTP header forward. */ - /* And append AMR 12.2k header "0xf03c". - AD HOC fix */ + /* Strip the IuUP bits from the middle of the buffer by writing the RTP + * header forward by the length of IuUP header minus the length of AMR + * header. Replace the rest of IuUP header with AMR header */ unsigned int pre_hdr_len = ((uint8_t*)hdr) - pdu->data; - int is_comfort_noise = ((pdu->len - pre_hdr_len) == 9); + int is_comfort_noise = ((pdu->len - pre_hdr_len - sizeof(*hdr)) == AMR_COMFORT_NOISE_PAYLOAD_LENGTH); - memmove(pdu->data + sizeof(*hdr) - 2, pdu->data, pre_hdr_len); + memmove(pdu->data + sizeof(*hdr) - AMR_HEADER_LENGTH, pdu->data, pre_hdr_len); ((uint8_t*)hdr)[2] = 0x70; ((uint8_t*)hdr)[3] = is_comfort_noise ? 0x44 : 0x3c; - msgb_pull(pdu, sizeof(*hdr) - 2); + msgb_pull(pdu, sizeof(*hdr) - AMR_HEADER_LENGTH); LOGP(DIUUP, LOGL_DEBUG, "(%s) IuUP stripping IuUP header from RTP data\n", cn->name); cn->cfg.rx_payload(pdu, cn->cfg.node_priv); @@ -195,9 +199,9 @@ int osmo_iuup_cn_tx_payload(struct osmo_iuup_cn *cn, struct msgb *pdu) /* Splice an IuUP header in between RTP header and payload data */ rtp_was = (void*)pdu->data; - /* copy the RTP header part backwards by the size needed for the IuUP header */ - /* also strips 2 bytes from the front of RTP payload - AMR header - AD HOC fix */ - rtp = (void*)msgb_push(pdu, sizeof(*iuup_hdr) - 2); + /* copy the RTP header part backwards by the size needed for the IuUP header + * minus AMR header bytes from the front of RTP payload */ + rtp = (void*)msgb_push(pdu, sizeof(*iuup_hdr) - AMR_HEADER_LENGTH); memmove(rtp, rtp_was, sizeof(*rtp)); /* Send the same payload type to the peer (erm...) */