[Asterisk-cvs] asterisk frame.c,1.28,1.29

markster at lists.digium.com markster at lists.digium.com
Wed Apr 21 22:57:43 CDT 2004


Update of /usr/cvsroot/asterisk
In directory mongoose.digium.com:/tmp/cvs-serv20794

Modified Files:
	frame.c 
Log Message:
Handle transitions in delivery time and non-delivery time


Index: frame.c
===================================================================
RCS file: /usr/cvsroot/asterisk/frame.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- frame.c	14 Mar 2004 21:01:13 -0000	1.28
+++ frame.c	22 Apr 2004 03:02:27 -0000	1.29
@@ -122,8 +122,9 @@
 		}
 	}
 	memcpy(s->data + s->len, f->data, f->datalen);
-	/* If we're empty, reset delivery time */
-	if (!s->len)
+	/* If either side is empty, reset the delivery time */
+	if (!s->len || (!f->delivery.tv_sec && !f->delivery.tv_usec) ||
+			(!s->delivery.tv_sec && !s->delivery.tv_usec))
 		s->delivery = f->delivery;
 	s->len += f->datalen;
 	return 0;
@@ -166,11 +167,14 @@
 		/* In principle this should all be fine because if we are sending
 		   G.729 VAD, the next timestamp will take over anyawy */
 		memmove(s->data, s->data + len, s->len);
-		s->delivery.tv_sec += (len * s->samplesperbyte) / 8000.0;
-		s->delivery.tv_usec += (((int)(len * s->samplesperbyte)) % 8000) * 125;
-		if (s->delivery.tv_usec > 1000000) {
-			s->delivery.tv_usec -= 1000000;
-			s->delivery.tv_sec += 1;
+		if (s->delivery.tv_sec || s->delivery.tv_usec) {
+			/* If we have delivery time, increment it, otherwise, leave it at 0 */
+			s->delivery.tv_sec += (len * s->samplesperbyte) / 8000.0;
+			s->delivery.tv_usec += (((int)(len * s->samplesperbyte)) % 8000) * 125;
+			if (s->delivery.tv_usec > 1000000) {
+				s->delivery.tv_usec -= 1000000;
+				s->delivery.tv_sec += 1;
+			}
 		}
 	}
 	/* Return frame */




More information about the svn-commits mailing list