<p>Alexei Gradinari has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.asterisk.org/10623">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">RTP: need to reset DTMF last seqno/timestamp on voice packet with marker bit<br><br>The marker bit set on the voice packet indicates the start<br>of a new stream and a new time stamp.<br>Need to reset the DTMF last sequence number and the timestamp<br>of the last END packet.<br><br>If the new time stamp is lower then the timestamp of the last DTMF END packet<br>the asterisk drops all DTMF frames as out of order.<br><br>This bug was caught using Cisco ip-phone SPA50X and codec g722.<br>On SIP session update the SPA50X resets stream indicating it with market bit<br>and a new timestamp is twice smaller then the previous.<br><br>ASTERISK-28162 #close<br><br>Change-Id: If9c5742158fa836ad549713a9814d46a5d2b1620<br>---<br>M res/res_rtp_asterisk.c<br>1 file changed, 10 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/23/10623/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/res/res_rtp_asterisk.c b/res/res_rtp_asterisk.c</span><br><span>index 7b006ce..972058e 100644</span><br><span>--- a/res/res_rtp_asterisk.c</span><br><span>+++ b/res/res_rtp_asterisk.c</span><br><span>@@ -5725,6 +5725,16 @@</span><br><span>   switch (ast_format_get_type(rtp->f.subclass.format)) {</span><br><span>    case AST_MEDIA_TYPE_AUDIO:</span><br><span>           rtp->f.frametype = AST_FRAME_VOICE;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+              /* The marker bit set on the voice packet indicates the start</span><br><span style="color: hsl(120, 100%, 40%);">+          * of a new stream and a new time stamp. Need to reset the DTMF</span><br><span style="color: hsl(120, 100%, 40%);">+                * last sequence number and the timestamp of the last END packet.</span><br><span style="color: hsl(120, 100%, 40%);">+              */</span><br><span style="color: hsl(120, 100%, 40%);">+           if (mark) {</span><br><span style="color: hsl(120, 100%, 40%);">+                   rtp->last_seqno = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+                       rtp->last_end_timestamp = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+               }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>          break;</span><br><span>       case AST_MEDIA_TYPE_VIDEO:</span><br><span>           rtp->f.frametype = AST_FRAME_VIDEO;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.asterisk.org/10623">change 10623</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.asterisk.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.asterisk.org/10623"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: asterisk </div>
<div style="display:none"> Gerrit-Branch: 13 </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: If9c5742158fa836ad549713a9814d46a5d2b1620 </div>
<div style="display:none"> Gerrit-Change-Number: 10623 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Alexei Gradinari <alex2grad@gmail.com> </div>