|
|
@ -93,6 +93,7 @@ struct ast_rtp {
|
|
|
|
struct ast_frame f;
|
|
|
|
struct ast_frame f;
|
|
|
|
unsigned char rawdata[8192 + AST_FRIENDLY_OFFSET];
|
|
|
|
unsigned char rawdata[8192 + AST_FRIENDLY_OFFSET];
|
|
|
|
unsigned int ssrc; /*!< Synchronization source, RFC 3550, page 10. */
|
|
|
|
unsigned int ssrc; /*!< Synchronization source, RFC 3550, page 10. */
|
|
|
|
|
|
|
|
unsigned int rxssrc;
|
|
|
|
unsigned int lastts;
|
|
|
|
unsigned int lastts;
|
|
|
|
unsigned int lastdigitts;
|
|
|
|
unsigned int lastdigitts;
|
|
|
|
unsigned int lastrxts;
|
|
|
|
unsigned int lastrxts;
|
|
|
@ -430,6 +431,7 @@ struct ast_frame *ast_rtp_read(struct ast_rtp *rtp)
|
|
|
|
int ext;
|
|
|
|
int ext;
|
|
|
|
int x;
|
|
|
|
int x;
|
|
|
|
char iabuf[INET_ADDRSTRLEN];
|
|
|
|
char iabuf[INET_ADDRSTRLEN];
|
|
|
|
|
|
|
|
unsigned int ssrc;
|
|
|
|
unsigned int timestamp;
|
|
|
|
unsigned int timestamp;
|
|
|
|
unsigned int *rtpheader;
|
|
|
|
unsigned int *rtpheader;
|
|
|
|
struct rtpPayloadType rtpPT;
|
|
|
|
struct rtpPayloadType rtpPT;
|
|
|
@ -485,6 +487,14 @@ struct ast_frame *ast_rtp_read(struct ast_rtp *rtp)
|
|
|
|
ext = seqno & (1 << 28);
|
|
|
|
ext = seqno & (1 << 28);
|
|
|
|
seqno &= 0xffff;
|
|
|
|
seqno &= 0xffff;
|
|
|
|
timestamp = ntohl(rtpheader[1]);
|
|
|
|
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) {
|
|
|
|
if (padding) {
|
|
|
|
/* Remove padding bytes */
|
|
|
|
/* Remove padding bytes */
|
|
|
|