mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	Minor RTP video fixes, be more careful about closing fd's in meetme (bug #1743)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3111 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		| @@ -465,7 +465,8 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, int c | ||||
| 	int firstpass = 0; | ||||
| 	int ret = -1; | ||||
| 	int x; | ||||
|         int menu_active = 0; | ||||
| 	int menu_active = 0; | ||||
| 	int using_pseudo = 0; | ||||
|  | ||||
| 	struct ast_app *app; | ||||
| 	char *agifile; | ||||
| @@ -561,6 +562,7 @@ zapretry: | ||||
| 			ast_log(LOG_WARNING, "Unable to open pseudo channel: %s\n", strerror(errno)); | ||||
| 			goto outrun; | ||||
| 		} | ||||
| 		using_pseudo = 1; | ||||
| 		/* Make non-blocking */ | ||||
| 		flags = fcntl(fd, F_GETFL); | ||||
| 		if (flags < 0) { | ||||
| @@ -885,7 +887,7 @@ zapretry: | ||||
| 		} | ||||
| 	} | ||||
| 	} | ||||
| 	if (fd != chan->fds[0]) | ||||
| 	if (using_pseudo) | ||||
| 		close(fd); | ||||
| 	else { | ||||
| 		/* Take out of conference */ | ||||
|   | ||||
							
								
								
									
										16
									
								
								rtp.c
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								rtp.c
									
									
									
									
									
								
							| @@ -544,6 +544,8 @@ struct ast_frame *ast_rtp_read(struct ast_rtp *rtp) | ||||
| 			rtp->lastividtimestamp = timestamp; | ||||
| 		rtp->f.samples = timestamp - rtp->lastividtimestamp; | ||||
| 		rtp->lastividtimestamp = timestamp; | ||||
| 		rtp->f.delivery.tv_sec = 0; | ||||
| 		rtp->f.delivery.tv_usec = 0; | ||||
| 		if (mark) | ||||
| 			rtp->f.subclass |= 0x1; | ||||
| 		 | ||||
| @@ -1043,12 +1045,14 @@ static int ast_rtp_raw_write(struct ast_rtp *rtp, struct ast_frame *f, int codec | ||||
| 		/* Re-calculate last TS */ | ||||
| 		rtp->lastts = rtp->lastts + ms * 90; | ||||
| 		/* If it's close to our prediction, go for it */ | ||||
| 		if (abs(rtp->lastts - pred) < 7200) { | ||||
| 			rtp->lastts = pred; | ||||
| 			rtp->lastovidtimestamp += f->samples; | ||||
| 		} else { | ||||
| 			ast_log(LOG_DEBUG, "Difference is %d, ms is %d\n", abs(rtp->lastts - pred), ms); | ||||
| 			rtp->lastovidtimestamp = rtp->lastts; | ||||
| 		if (!f->delivery.tv_sec && !f->delivery.tv_usec) { | ||||
| 			if (abs(rtp->lastts - pred) < 7200) { | ||||
| 				rtp->lastts = pred; | ||||
| 				rtp->lastovidtimestamp += f->samples; | ||||
| 			} else { | ||||
| 				ast_log(LOG_DEBUG, "Difference is %d, ms is %d (%d), pred/ts/samples %d/%d/%d\n", abs(rtp->lastts - pred), ms, ms * 90, rtp->lastts, pred, f->samples); | ||||
| 				rtp->lastovidtimestamp = rtp->lastts; | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	/* Get a pointer to the header */ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user