diff --git a/res/res_rtp_asterisk.c b/res/res_rtp_asterisk.c index b0fab6c4354bf175c8a90a9a1289f5cb55f8f141..33ac842a810851ea55d6061d7e2f4a355df3e590 100644 --- a/res/res_rtp_asterisk.c +++ b/res/res_rtp_asterisk.c @@ -5126,7 +5126,12 @@ static int rtp_raw_write(struct ast_rtp_instance *instance, struct ast_frame *fr rtp->ssrc = frame->ssrc; } - put_unaligned_uint32(rtpheader, htonl((2 << 30) | (ext << 28) | (codec << 16) | (frame->seqno ? frame->seqno : seqno) | (mark << 23))); + if (frame->seqno) + rtp->seqno = frame->seqno; + else + rtp->seqno++; + + put_unaligned_uint32(rtpheader, htonl((2 << 30) | (ext << 28) | (codec << 16) | (rtp->seqno) | (mark << 23))); put_unaligned_uint32(rtpheader + 4, htonl(frame->ts ? frame->ts : rtp->lastts)); put_unaligned_uint32(rtpheader + 8, htonl(rtp->ssrc));