<p>Mykola Shchetinin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/12390">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">iuup_cn_node.c: make it work for AMR 12.2k codec<br><br>rx_data: prepend hardcoded AMR 12.2 header "0xf03c" to the front of RTP<br>payload<br>osmo_iuup_cn_tx_payload: strip AMR header (2 bytes) from the front of RTP<br>payload<br><br>Change-Id: I244c4c4778798912c818812a15709695d3251f87<br>---<br>M src/libosmo-mgcp/iuup_cn_node.c<br>M tests/iuup/iuup_test.c<br>M tests/iuup/iuup_test.ok<br>3 files changed, 17 insertions(+), 14 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-mgw refs/changes/90/12390/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/libosmo-mgcp/iuup_cn_node.c b/src/libosmo-mgcp/iuup_cn_node.c</span><br><span>index f555e36..fda7a7a 100644</span><br><span>--- a/src/libosmo-mgcp/iuup_cn_node.c</span><br><span>+++ b/src/libosmo-mgcp/iuup_cn_node.c</span><br><span>@@ -85,10 +85,12 @@</span><br><span>              struct osmo_iuup_hdr_data *hdr)</span><br><span> {</span><br><span>      /* Remove the IuUP bit from the middle of the buffer by writing the RTP header forward. */</span><br><span style="color: hsl(120, 100%, 40%);">+    /* And append AMR 12.2k header "0xf03c". - AD HOC fix */</span><br><span>   unsigned int pre_hdr_len = ((uint8_t*)hdr) - pdu->data;</span><br><span style="color: hsl(0, 100%, 40%);">-      memmove(pdu->data + sizeof(*hdr), pdu->data, pre_hdr_len);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        msgb_pull(pdu, sizeof(*hdr));</span><br><span style="color: hsl(120, 100%, 40%);">+ memmove(pdu->data + sizeof(*hdr) - 2, pdu->data, pre_hdr_len);</span><br><span style="color: hsl(120, 100%, 40%);">+  ((uint8_t*)hdr)[2] = 0xf0;</span><br><span style="color: hsl(120, 100%, 40%);">+    ((uint8_t*)hdr)[3] = 0x3c;</span><br><span style="color: hsl(120, 100%, 40%);">+    msgb_pull(pdu, sizeof(*hdr) - 2);</span><br><span> </span><br><span>        LOGP(DIUUP, LOGL_DEBUG, "(%s) IuUP stripping IuUP header from RTP data\n", cn->name);</span><br><span>   cn->cfg.rx_payload(pdu, cn->cfg.node_priv);</span><br><span>@@ -191,7 +193,8 @@</span><br><span>      rtp_was = (void*)pdu->data;</span><br><span> </span><br><span>   /* copy the RTP header part backwards by the size needed for the IuUP header */</span><br><span style="color: hsl(0, 100%, 40%);">- rtp = (void*)msgb_push(pdu, sizeof(*iuup_hdr));</span><br><span style="color: hsl(120, 100%, 40%);">+       /* also strips 2 bytes from the front of RTP payload - AMR header - AD HOC fix */</span><br><span style="color: hsl(120, 100%, 40%);">+     rtp = (void*)msgb_push(pdu, sizeof(*iuup_hdr) - 2);</span><br><span>  memmove(rtp, rtp_was, sizeof(*rtp));</span><br><span> </span><br><span>     /* Send the same payload type to the peer (erm...) */</span><br><span>diff --git a/tests/iuup/iuup_test.c b/tests/iuup/iuup_test.c</span><br><span>index 8d96f06..e6f2ca5 100644</span><br><span>--- a/tests/iuup/iuup_test.c</span><br><span>+++ b/tests/iuup/iuup_test.c</span><br><span>@@ -111,7 +111,7 @@</span><br><span> #define RTP_PAYLOAD "6cfb23bc46d18180c3e5ffe040045600005a7d35b625b80005fff03214ced0"</span><br><span>   printf("\nReceive payload encapsulated in IuUP. Expecting rx_payload() of just RTP packet\n");</span><br><span>     printf("i.e. should strip away " IUUP_HEADER "\n");</span><br><span style="color: hsl(0, 100%, 40%);">- expect_rx_payload = RTP_HEADER RTP_PAYLOAD;</span><br><span style="color: hsl(120, 100%, 40%);">+   expect_rx_payload = RTP_HEADER "f03c" RTP_PAYLOAD;</span><br><span>         rx_pdu(cn,</span><br><span>          msgb_from_hex("IuUP-Data",</span><br><span>                       RTP_HEADER IUUP_HEADER RTP_PAYLOAD));</span><br><span>@@ -119,18 +119,18 @@</span><br><span>   printf("\nTransmit RTP. Expecting tx_msg() with inserted IuUP header\n");</span><br><span>  expect_tx_msg = RTP_HEADER "000002b3" RTP_PAYLOAD;</span><br><span>         tx_payload(cn,</span><br><span style="color: hsl(0, 100%, 40%);">-             msgb_from_hex("RTP data", RTP_HEADER RTP_PAYLOAD));</span><br><span style="color: hsl(120, 100%, 40%);">+                 msgb_from_hex("RTP data", RTP_HEADER "f03c" RTP_PAYLOAD));</span><br><span> </span><br><span>        printf("\nMore RTP, each time the Frame Nr advances, causing a new header CRC.\n");</span><br><span>        expect_tx_msg = RTP_HEADER "0100e2b3" RTP_PAYLOAD;</span><br><span>         tx_payload(cn,</span><br><span style="color: hsl(0, 100%, 40%);">-             msgb_from_hex("RTP data", RTP_HEADER RTP_PAYLOAD));</span><br><span style="color: hsl(120, 100%, 40%);">+                 msgb_from_hex("RTP data", RTP_HEADER "f03c" RTP_PAYLOAD));</span><br><span>    expect_tx_msg = RTP_HEADER "02007eb3" RTP_PAYLOAD;</span><br><span>         tx_payload(cn,</span><br><span style="color: hsl(0, 100%, 40%);">-             msgb_from_hex("RTP data", RTP_HEADER RTP_PAYLOAD));</span><br><span style="color: hsl(120, 100%, 40%);">+                 msgb_from_hex("RTP data", RTP_HEADER "f03c" RTP_PAYLOAD));</span><br><span>    expect_tx_msg = RTP_HEADER "03009eb3" RTP_PAYLOAD;</span><br><span>         tx_payload(cn,</span><br><span style="color: hsl(0, 100%, 40%);">-             msgb_from_hex("RTP data", RTP_HEADER RTP_PAYLOAD));</span><br><span style="color: hsl(120, 100%, 40%);">+                 msgb_from_hex("RTP data", RTP_HEADER "f03c" RTP_PAYLOAD));</span><br><span> </span><br><span>        printf("All done.\n");</span><br><span> }</span><br><span>diff --git a/tests/iuup/iuup_test.ok b/tests/iuup/iuup_test.ok</span><br><span>index 2b09c66..8c473d6 100644</span><br><span>--- a/tests/iuup/iuup_test.ok</span><br><span>+++ b/tests/iuup/iuup_test.ok</span><br><span>@@ -15,14 +15,14 @@</span><br><span> 8060944c6256042c000101020100e2b36cfb23bc46d18180c3e5ffe040045600005a7d35b625b80005fff03214ced0</span><br><span> rx_payload() invoked by iuup_cn!</span><br><span>         [IuUP] -RTP-></span><br><span style="color: hsl(0, 100%, 40%);">-8060944c6256042c000101026cfb23bc46d18180c3e5ffe040045600005a7d35b625b80005fff03214ced0</span><br><span style="color: hsl(120, 100%, 40%);">+8060944c6256042c00010102f03c6cfb23bc46d18180c3e5ffe040045600005a7d35b625b80005fff03214ced0</span><br><span> node_priv=0x2342</span><br><span> ok: matches expected msg</span><br><span> rc=0</span><br><span> </span><br><span> Transmit RTP. Expecting tx_msg() with inserted IuUP header</span><br><span>         [IuUP] <-RTP-</span><br><span style="color: hsl(0, 100%, 40%);">-8060944c6256042c000101026cfb23bc46d18180c3e5ffe040045600005a7d35b625b80005fff03214ced0</span><br><span style="color: hsl(120, 100%, 40%);">+8060944c6256042c00010102f03c6cfb23bc46d18180c3e5ffe040045600005a7d35b625b80005fff03214ced0</span><br><span> tx_msg() invoked by iuup_cn!</span><br><span>  <-PDU- [IuUP]</span><br><span> 8060944c6256042c00010102000002b36cfb23bc46d18180c3e5ffe040045600005a7d35b625b80005fff03214ced0</span><br><span>@@ -32,7 +32,7 @@</span><br><span> </span><br><span> More RTP, each time the Frame Nr advances, causing a new header CRC.</span><br><span>         [IuUP] <-RTP-</span><br><span style="color: hsl(0, 100%, 40%);">-8060944c6256042c000101026cfb23bc46d18180c3e5ffe040045600005a7d35b625b80005fff03214ced0</span><br><span style="color: hsl(120, 100%, 40%);">+8060944c6256042c00010102f03c6cfb23bc46d18180c3e5ffe040045600005a7d35b625b80005fff03214ced0</span><br><span> tx_msg() invoked by iuup_cn!</span><br><span>  <-PDU- [IuUP]</span><br><span> 8060944c6256042c000101020100e2b36cfb23bc46d18180c3e5ffe040045600005a7d35b625b80005fff03214ced0</span><br><span>@@ -40,7 +40,7 @@</span><br><span> ok: matches expected msg</span><br><span> rc=0</span><br><span>         [IuUP] <-RTP-</span><br><span style="color: hsl(0, 100%, 40%);">-8060944c6256042c000101026cfb23bc46d18180c3e5ffe040045600005a7d35b625b80005fff03214ced0</span><br><span style="color: hsl(120, 100%, 40%);">+8060944c6256042c00010102f03c6cfb23bc46d18180c3e5ffe040045600005a7d35b625b80005fff03214ced0</span><br><span> tx_msg() invoked by iuup_cn!</span><br><span>  <-PDU- [IuUP]</span><br><span> 8060944c6256042c0001010202007eb36cfb23bc46d18180c3e5ffe040045600005a7d35b625b80005fff03214ced0</span><br><span>@@ -48,7 +48,7 @@</span><br><span> ok: matches expected msg</span><br><span> rc=0</span><br><span>         [IuUP] <-RTP-</span><br><span style="color: hsl(0, 100%, 40%);">-8060944c6256042c000101026cfb23bc46d18180c3e5ffe040045600005a7d35b625b80005fff03214ced0</span><br><span style="color: hsl(120, 100%, 40%);">+8060944c6256042c00010102f03c6cfb23bc46d18180c3e5ffe040045600005a7d35b625b80005fff03214ced0</span><br><span> tx_msg() invoked by iuup_cn!</span><br><span>  <-PDU- [IuUP]</span><br><span> 8060944c6256042c0001010203009eb36cfb23bc46d18180c3e5ffe040045600005a7d35b625b80005fff03214ced0</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/12390">change 12390</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/12390"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-mgw </div>
<div style="display:none"> Gerrit-Branch: neels/iuup </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I244c4c4778798912c818812a15709695d3251f87 </div>
<div style="display:none"> Gerrit-Change-Number: 12390 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Mykola Shchetinin <mykola@pentonet.com> </div>