mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 10:47:18 +00:00 
			
		
		
		
	Make sure we increase the timestamp between digits (bug #3675)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5097 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		
							
								
								
									
										11
									
								
								rtp.c
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								rtp.c
									
									
									
									
									
								
							| @@ -85,6 +85,7 @@ struct ast_rtp { | ||||
| 	int dtmfcount; | ||||
| 	unsigned int dtmfduration; | ||||
| 	int nat; | ||||
| 	int digitssent; | ||||
| 	int flags; | ||||
| 	struct sockaddr_in us; | ||||
| 	struct sockaddr_in them; | ||||
| @@ -1010,6 +1011,7 @@ void ast_rtp_reset(struct ast_rtp *rtp) | ||||
| 	memset(&rtp->dtmfmute, 0, sizeof(rtp->dtmfmute)); | ||||
| 	rtp->lastts = 0; | ||||
| 	rtp->lastrxts = 0; | ||||
| 	rtp->digitssent = 0; | ||||
| 	rtp->lastividtimestamp = 0; | ||||
| 	rtp->lastovidtimestamp = 0; | ||||
| 	rtp->lasteventseqn = 0; | ||||
| @@ -1101,10 +1103,14 @@ int ast_rtp_senddigit(struct ast_rtp *rtp, char digit) | ||||
| 	 | ||||
| 	/* Get a pointer to the header */ | ||||
| 	rtpheader = (unsigned int *)data; | ||||
| 	rtpheader[0] = htonl((2 << 30) | (1 << 23) | (payload << 16) | (rtp->seqno++)); | ||||
| 	rtpheader[1] = htonl(rtp->lastts); | ||||
| 	rtpheader[0] = htonl((2 << 30) | (1 << 23) | (payload << 16) | rtp->seqno); | ||||
| 	rtpheader[1] = htonl(rtp->lastts + (rtp->digitssent * 160)); | ||||
| 	rtpheader[2] = htonl(rtp->ssrc);  | ||||
| 	rtpheader[3] = htonl((digit << 24) | (0xa << 16) | (0)); | ||||
|  | ||||
| 	rtp->seqno++; | ||||
| 	rtp->digitssent++; | ||||
|  | ||||
| 	for (x=0;x<6;x++) { | ||||
| 		if (rtp->them.sin_port && rtp->them.sin_addr.s_addr) { | ||||
| 			res = sendto(rtp->s, (void *)rtpheader, hdrlen + 4, 0, (struct sockaddr *)&rtp->them, sizeof(rtp->them)); | ||||
| @@ -1272,6 +1278,7 @@ static int ast_rtp_raw_write(struct ast_rtp *rtp, struct ast_frame *f, int codec | ||||
| 	put_uint32(rtpheader + 4, htonl(rtp->lastts)); | ||||
| 	put_uint32(rtpheader + 8, htonl(rtp->ssrc));  | ||||
|  | ||||
| 	rtp->digitssent = 0; | ||||
| 	rtp->seqno++; | ||||
|  | ||||
| 	if (rtp->them.sin_port && rtp->them.sin_addr.s_addr) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user