diff -ur asterisk-1.2.6/rtp.c asterisk-1.2.6-rtp-ts/rtp.c --- asterisk-1.2.6/rtp.c 2006-03-15 19:07:06.000000000 +0100 +++ asterisk-1.2.6-rtp-ts/rtp.c 2006-04-15 00:25:23.000000000 +0200 @@ -90,6 +90,7 @@ unsigned char rawdata[8192 + AST_FRIENDLY_OFFSET]; /*! Synchronization source, RFC 3550, page 10. */ unsigned int ssrc; + unsigned int rxssrc; unsigned int lastts; unsigned int lastdigitts; unsigned int lastrxts; @@ -436,6 +437,7 @@ int ext; int x; char iabuf[INET_ADDRSTRLEN]; + unsigned int ssrc; unsigned int timestamp; unsigned int *rtpheader; static struct ast_frame *f, null_frame = { AST_FRAME_NULL, }; @@ -492,6 +494,14 @@ ext = seqno & (1 << 28); seqno &= 0xffff; timestamp = ntohl(rtpheader[1]); + ssrc = ntohl(rtpheader[2]); + + if (!mark && rtp->rxssrc && rtp->rxssrc != ssrc) { + ast_log(LOG_WARNING, "Forcing Marker bit, because SSRC has changed\n"); + mark = 1; + } + + rtp->rxssrc = ssrc; if (padding) { /* Remove padding bytes */